importing morphs on a posed figure ?

Issue #938 resolved
Alessandro Padovani created an issue

daz studio 4.15.0.30, blender 3.1.2, diffeomorphic 1.6.1.0935

This is reported in the daz forum. It happens that importing morphs on a posed figure may break the pose and/or reset the morphs. If this is a limitation then would be useful to explain it in the docs for the users to be aware of. Or even better show a warning when the user tries to import morphs on a posed figure.

https://www.daz3d.com/forums/discussion/comment/7426036/#Comment_7426036

steps:

  1. load the test scene g8f.duf, merge rigs and make all bones posable
  2. load the body morphs
  3. load the test pose body-pose.duf
  4. load the body morphs again, the pose will be lost

Comments (31)

  1. Alessandro Padovani reporter

    update. In the test case reported above that happens because I didn’t keyframe the pose. If I keyframe the pose then everything works fine. I’ll see if I can get an example where loading morphs can break the pose as reported in the daz forum.

    Meanwhile Thomas I’d like to know if loading morphs on a animated figure has some restrictions, or if we can do it.

  2. Thomas Larsson repo owner

    No restrictions on loading morphs as far as I know. However, transferring morphs to clothes should be done in rest pose.

  3. Alessandro Padovani reporter

    update. I found an issue with flexions that seem to don’t work. If I only import jcms then everything works fine.

    steps:

    1. import g8f.duf and merge rigs
    2. import jcms and flexions, or only flexions
    3. import the “base pose kneeling b” or any pose, the legs geometry will be deformed

  4. Thomas Larsson repo owner

    No, I don’t see anything like this. Can you identify which morph causes the problem? Perhaps you have more morphs than I do. I load the following flexions to G8F:

    • FlexBiceps_L
    • FlexBiceps_R
    • FlexCalf_L
    • FlexCalf_R
    • FlexCollarUpperBack_L
    • FlexCollarUpperBack_R
    • FlexGluteClench_L
    • FlexGluteClench_R
    • FlexHamstring_L
    • FlexHamstring_R
    • FlexQuad_L
    • FlexQuad_R
    • FlexTriceps_L
    • FlexTriceps_R

  5. Alessandro Padovani reporter

    daz studio 4.15.0.30, blender 3.1.2, diffeomorphic 1.6.1.0936

    That’s odd. To be sure that nothing interferes I installed a clean content folder with only g8f and the default resources. I can constantly reproduce the issue. What’s wrong is the FlexQuad flexion. When I rotate lShin in daz studio only FlexHamstring is used, while in blender FlexQuad is driven too with bad values.

    Please Thomas let me know if you can reproduce the issue otherwise I’ll investigate more but I reached a pretty “minimal“ point here. I have the same flexions you listed.

    steps:

    1. import g8f and merge rigs
    2. import flexions
    3. rotate lShin, the driven FlexQuad flexion gets odds values and causes the bad deformation

  6. Alessandro Padovani reporter

    Ok I believe I got what triggers the issue.

    It’s the final limits in the global settings, if I set it to “none” then I get the issue, otherwise with “daz“ everything works fine. If final limits = “daz” is needed for the flexions to work then we may add this information to the docs. Or eventually the final limits option could be removed if setting it other than “daz” causes issues.

  7. Thomas Larsson repo owner

    Bone driven morphs are now clamped with their daz limits, which prevents this from happening. You can still go beyond the daz limits, but not by bending bones alone. You need to add hidden variables for that.

  8. Alessandro Padovani reporter

    Commit 8dce2cb works fine thank you Thomas for the fast fix. I usually keep final = none and multiplier = 2 because I want to “plus” morphs for animation and full control on the sliders as blender does normally.

    Will keep this open because I want to investigate further the original issue of importing morphs on posed figures. Seems to work fine so far. Then if I find nothing will close as resolved.

  9. Alessandro Padovani reporter

    update. ABOUT EMPTY LABELS

    There’s one thing I noticed while testing. There are some morphs that get a empty label. In this case daz studio uses the name for the user interface while blender uses the id. This is confusing for daz users since the morph name in the interface is not the same. Please note that expressions should use the id since the id is provided as a unique identifier for expressions. The label is for the interface. The name is the duf file name but it is used in the interface too if the label is empty.

    Please @Thomas let me know if you can fix it by using the name if the label is empty. Or if there’s some technical reason for using the id instead.

    edit. for info this is the bend control by Zev0 https://www.daz3d.com/bend-control-for-genesis-8-female-s-46267

  10. BlueStar

    Hi so i was initial reporting issues that Alessandro was reporting, im fairly new so part of my issues was my error and frustration(thanks for still helping alessandro) Some of my confusion was the difference about raw and final values, not knowing about the option in settings to show final. I did wonder if that option or a new separate option could be to only show final and have them as there own function slider instead of the raw, i have no need for raw values(even if there still functionating in the background) id rather just look at and use the final as the sliders

    To me and maybe other new people it might be less confusing and advance users can use it like it is now?

    The new report about lable names might also explain some of my confusion abit too

    I was wondering if the tool could perhaps make automatic keyframes for imported poses as there imported to ensure it prevents noobs like my self from not realizing this and having issues when importing morphs over an already posed model. If it could be a toggle option in global settings it would be perfect for people to choose<< Never Mind just realized this is already a thing but off by Default

  11. Alessandro Padovani reporter

    @Thomas We could change the default settings for import pose to clear morphs = off and auto keying = on. This should help inexperienced users to get the new pose right without messing up the rest of the animation.

    @BlueStar As for KneesUp and LegsOut I don’t get any issue here they work fine. You have to keyframe the morphs. If this doesn’t work for you please report the exact steps you’re doing so we can check.

    https://diffeomorphic.blogspot.com/p/morph-panel-version-16.html

    steps:

    1. use KneesUp or any bend control and keyframe
    2. import another pose with clear morphs = off and auto keying = on

  12. BlueStar

    Okay so there keyframed but what is that meant to do as the pose is still broken

    I mean these keyframes are basically the pose, so i dont technically need the pose or to use these really but im looking to understand incase i come across this again

    My process is i import a character model > Import pose with settings > Import those morphs >select them in the morph menu and keyframe them

    Pose still is broken in that the pose is being overridden by these morphs as the morphs are at 0 so its forcing the legs down regardless of the pose wanting them up. I mean simple fix is not import these, but yer id like to know why and if i can infact import them with out this issue incase it comes up again on something i defiantly do want to use but also still want to use poses not ‘broken’ by the morphs

  13. Alessandro Padovani reporter

    That doesn’t happen to me it works fine here. Please exact steps and pictures. You need to be precise.

    Also read the documentation that I linked above about the morph panel and how to use it.

  14. BlueStar

    okay, import character

    Import pose

    Pose loaded

    Import morphs

    Pose now looks like this

    I go to the morph menu and press the keyframe button

    Pose not fixed, I tried this with and without moving the frames in case it mattered

    Im not a animator, im only using poses to test the model to make sure all the sculpting im doing looks good in various poses ect

    I guess because im not an animator and dosnt use this im doing or not doing things im not aware of. I have no interest in animation or posing just sculpting, but i obviously want my work to work with poses and animation so thats why im using them to test stuff

    Is this addon useful btw https://studio.blender.org/blog/rig-with-shape-keys-like-never-before/

  15. Alessandro Padovani reporter

    Yes that happens to me too I can confirm the issue. But have no idea why, may be @Thomas can give some advice.

    As a general rule you should import all the bend control morphs not only some of them because they may be related. Also you should import jcms and flexions first since bend control is supposed to work on them. Also you should check “make all bones posable“. But even if do all those things the issue is there.

    That of course doesn’t happen if you import the morphs first then animate. But this discussion is about importing morphs on a animated figure.

  16. BlueStar

    Okay so it isnt just me that is atleast good to know

    It seems like those morphs specifically control the legs at 0 there down in the default position at 1 there up in the same position as the pose, so it seems like importing them after(maybe making a driver order or something) change that stops the pose from working over the top

    So importing these morphs first then the pose is fine but the other way around some kind of order change in drivers makes the morphs work over the pose(basically making the pose do nothing) as importing other poses they do work but only the bones not affected by the morphs work obviously

  17. Alessandro Padovani reporter

    update. SIMPLE PROCEDURE FOR THOMAS

    I got a much simpler procedure to trigger the issue, using only G8F.

    steps:

    1. import G8F, merge rigs and make all bones posable
    2. import the “base pose kneeling b“ and keyframe it
    3. import the body morphs, the pose is lost

  18. Thomas Larsson repo owner

    No, it is not supposed to work like that. You must make the bones posable after the morphs have been loaded but before the pose. Thus:

    1. Import G8F and merge rigs.
    2. Import body morphs.
    3. Make bones posable (or enable the checkbox in step 2).
    4. Import the pose.

  19. Alessandro Padovani reporter

    Thank you Thomas, we just have to be aware of the limitations, since it’s not clear. So it is not possible to import the body morphs after the pose, right ? That is, you can import any morph type after the pose but not body morphs ? If it is so then we may add a warning if the user tries to import body morphs on a animated figure since this breaks the figure as explained below. Or at least explain this in the docs for the users to be aware of.

    this works:

    1. import g8f and merge rigs
    2. import the pose and keyframe
    3. import jcms and expressions for example (with bones posable), the pose is retained and jcms and expressions work fine
    4. if we import the same pose or another pose it works fine

    this does not work:

    1. import g8f and merge rigs
    2. import the pose and keyframe
    3. import body morphs (with bones posable), the pose is lost
    4. if we import the same pose or another pose it is not imported right, the figure is broken

    Also what about the empty labels as reported above ? Please let us know thank you.

  20. Alessandro Padovani reporter

    Commit 8051f7e works great as for the labels, thank you for the fix.

    Please let us know what you think of body morphs. Otherwise I’ll mark as resolved, assuming that they are different from other morphs and can’t be loaded on a posed figure. Then it may be difficult for the user to distinguish them with custom morphs, since custom morphs can contain body morphs too. So as a general rule it is better to load morphs first then animate, otherwise you risk to break the figure.

    Again this note could be added to the docs for the users to be aware of.

  21. Thomas Larsson repo owner

    The problem was that the driven bones still had keys, but the pose importer does not add new keys for driven bones. Solved by removing any action from the rig when making bones posable.

  22. Alessandro Padovani reporter

    Commit d1a55f8 doesn’t seem to work, unless I miss something.

    steps:

    1. import g8f and merge rigs
    2. import the “kneeling b” pose and keyframe
    3. import body morphs (with bones posable), the pose is lost

  23. Thomas Larsson repo owner

    Yes, what I meant was that if you then do

    4. import the same pose or another pose, it is imported right.

    But I agree that it would be better if the pose were kept. Instead of removing the action completely, remove the f-curves from the driven bones and insert them for the free bones. Will implement that later today.

  24. Alessandro Padovani reporter

    Thank you for the explanation. If it turns out to be too much difficult to implement then it’s ok we just have to be aware of the limitations. Personally I don’t think I’ll ever import morphs on a posed figure I do it before animating. But if possible it may be useful to have.

  25. Thomas Larsson repo owner

    The tool now reassigns the f-curves to the free bones and clears the driven bone transform, so the pose should be intact now.

  26. Log in to comment