Blender 4.0 / Diffeomorphic 1.7.2 - Transfer shapekeys to clothing with max value of only 0.001 units in JCMs

Issue #1839 resolved
Jake created an issue

So I was updating my scenes to 4.0, and was wondering why jcms weren’t working. I thought it was the drivers, but in fact it was because for some reason now Diffeomorphic sets the max unit value of transferred JCM shape keys from the main body to clothing to just 0.001, even though they’re at 1.000 on the main body. Now this wouldn’t be such a huge issue if not for the fact that I would have to fix all of the million shape keys one by one.

Note that I deleted already once all of the shape keys and retransferred and it’s the same. And it’s just the JCMs, every other transferred shape keys is at their intended value.

As title states, I’m using Blender 4.0 and as of writing this the current version of the dev version of Diffeomorphic.

Comments (15)

  1. Thomas Larsson repo owner

    I cannot reproduce this issue, neither with a freshly imported character nor when opening an old blend file. However, you can make a bulk change of slider limits with Advanced Panel > Morphing > Update Slider Limits.

  2. Alessandro Padovani

    My personal advise is don’t do that. 4.0 is very different from 3.x so for production it is better to keep 3.x projects in 3.x and eventually make new projects in 4.x. But I'd wait a couple of releases for 4.x to become more stable.

  3. Jake reporter

    That’s odd, because it only started happening after I updated to 4.0 and use the dev version. I just tried everything, even unselecting all of the extra options in the transfer shapekeys panel and only transferring 1 jcm and normal shape key and it still changes the max value of the single jcm to 0.001. It does it with any object, even a new cube object I made.

    As for the update slider limits function, it seems to only work on the main body morphs in the Diffeomorphic panel, it doesn’t change anything on any other models in the scene even if you select them.

  4. Jake reporter

    Heyyy, I realized what the issue is. All of the JCM morphs have a driver on the max values that is affected by the “Adjust Morph Strength” option. And for some reason all objects where I transfer the morphs into get a max value of just 0.001, even if it’s 1.000 on the main body.

    I’m not sure when that had happened as they were fine before I updated the scene.

  5. Jake reporter

    Also, when I transfer the shape keys, the “Adjust Morph Strength” driver doesn’t get transferred, so when I actually adjust the morph strength slider on the Diffeomorphic panel, it doesn’t affect the transferred shape keys. But when I manually copy-paste the max value driver on the transferred shape key, it gets fixed (because it changes to what’s on the morph strength slider).

    So I believe simply making so that the adjust morph strength drivers on the shapekey max value will fix the issue. I don’t have 3.6 as of writing this so I can’t tell if the max value driver got transferred before.

  6. Jake reporter

    Well, I just checked the old scene prior to updating it to 4.0 on 3.6.5 and the morph strength doesn’t get transferred either, but the max value stays at 1.000. So something on the backend broke with the new patch.

    However, I did notice that in the old version, the transferred jcm gets a strength value of 0.001 and not absolute 0.

  7. Thomas Larsson repo owner

    In previous versions the min and max values of shapekeys were driven by the strength adjuster. That has been removed in the current version, but that doesn't explain why the max value = 0.001. Unless you set the global slider limits to Custom and the Morph Multiplier to 0.001.

    However, the strength adjuster had been lost. It is reinstated in the last commit.

  8. Jake reporter

    I checked the new and old scene and the global adjuster is at 1.000.

    I fear this problem can only be fixed by reimporting all of the driven shape keys I have on the main body and that’s not really an option anymore without starting from pretty much over.

    I’ll check the new version and see if it still sets the transferred driven morphs' msx value to 0.001

  9. Jake reporter

    Just came to note that it’s still not fixed even with version 1.7.3 on Blender 4.0. Brand new outfits ported from Daz keep getting max value of 0.001 with the JCM morphs.

  10. Jake reporter

    But I don’t know if this is because my scene dates back to 2021 originally, which I’ve continuously updated to this date. I tried creating a brand new model, a simple ball with protrusions coming out of it as a shape key, then transferring those with Diffeomorphic to a new ball, where the shape key has a JCM name I picked randomly from the main model. And the morph strength stays at 1.000. If I however transfer any JCM morph from the main model to the new ball model, it gets just .001 max strength. I just wonder if there is any way I can fix this that doesn’t involve rebuilding the entire model.

  11. Jake reporter

    By the way, I was checking the settings panel as I was wondering if something is messed up in the Morphs section. In addition, I noticed that all of the custom properties, except ones listed as facs and eCTRL, in the rig’s Object Data section, have their min and max values set to infinite. It includes both JCMs and also the facial animation morphs with names such as lLipCorner:Loc:0:01 or lSquintInner:Tlo:1:01 and so on. Edit: Well I tried changing pJCMAbdomen2Fwd_40 in the rig object data properties to min 0.000 and max 1.000, then transferring that specific morph from the main model to a ball object and it still had a max value of 0.001.

  12. Jake reporter

    Well, I found a sort of fix for this. This addon allows one to set the default, min and max values for all of the shape keys in an object, that also temporarily fixes the problem I’m having, but the core issue still remains and I have 0 clue what is even causing it. Plus I have to manually fix all objects affected by the issue, eg. any new object that needs JCMs transferred. Plus there’s another issue where my model has some JCMs that by default should have a bit of the max value taken down, as the model has been pre-bent in Daz, which means if I really want to go extra mile, I’d have to subtract the amount the morphs have in Daz from their max value in Blender. And that gets erased if I apply 1.000 max value to all of the morphs each time I import a new outfit from Daz and want to transfer morphs.

  13. Log in to comment