custom morph aliases ?

Issue #1096 resolved
Alessandro Padovani created an issue

daz studio 4.15.0.30, blender 3.2.1, diffeomorphic 1.6.2.1087

I see that aliases are not well supported and may confuse the plugin making the custom morphs not working. One example is the Big Expressive expressions for G81F. These are FACS morphs for G81F. If I import the morphs without aliases then everything works fine. Otherwise with aliases the sliders don’t work fine, they go from 0 to 1 but don’t go back from 1 to 0.

There is also a minor issue with the sliders even without aliases. In daz studio the sliders go from -1 to 1 and morph from -1 to 1. In blender they go from -1 to 1 but only morph from 0 to 1.

Please Thomas let us know if aliases are supported. If not may be the plugin could ignore them even if the user selects them. Because it may not be easy for the user to distinguish what are aliases and what are not when loading custom morphs.

https://www.daz3d.com/big-expressive-81-for-genesis-81-female

steps:

  1. import G81F and merge rigs
  2. import FACS
  3. import the Big Expressive custom morphs (with or without aliases)

Comments (13)

  1. Alessandro Padovani reporter

    note. Then may be when body part = face the custom morphs could transfer automatically to eyelashes and tears. This will save time and make things easier for the user.

  2. Thomas Larsson repo owner

    Fixed in last commit. The problem was that the alias name was the same as the morph name, and this caused the morph to contribute to itself. You could see that Blender warned about dependency loops in the terminal. Now aliases with the same name as the morph are ignored, and the problem is gone.

    About limits: The BEF morphs lower limit is -1, but they use the FACS morphs which have lower limit 0. I don’t know if DS somehow overrides the FACS limits in this case (I didn’t find where FACS and BEF morphs are located in DS), but you can change the limits in Blender with Advanced Setup > Morphs > Update Slider Limits.

  3. Thomas Larsson repo owner

    And some morphs look really bad at value -1, so you should probably stick to the original limits.

  4. Alessandro Padovani reporter

    Commit 5875da0 works fine.

    Just a note on the slider limits. Please also consider that I know nothing of rigging these things. But BEF02 = -1 in daz studio doesn’t produce the result in your picture. It is a completely different morph. So I suppose somewhat the BEF02 “expression“ should drive the FACS in different ways depending on the positive or negative value.

    Let me know what you think I can mark this one as resolved since the main issue is fixed.

  5. Alessandro Padovani reporter

    As for commit 6b8b98c, now the sliders go from -1 to 1 as in daz studio. But -1 does nothing, that is, the face doesn’t change and we don’t get the same expressions as in daz studio. Again let me know if this is a “known limitation“ for aliases, so I’ll mark as resolved since the main issue is fixed, and positive sliders work fine.

  6. Thomas Larsson repo owner

    This isn’t related to aliases, but happens already if you load the 02.dsf file only. In that file, all contributions from the facs morphs are positive, e.g.

    facs_ctrl_MouthSmile            0.4262295
    facs_bs_MouthSmileRight_div2    0.556338 
    

    So if the BEF value is negative, all facs morphs are limited by zero, so the face shouldn’t move. Some channels are multiplied with negative numbers, but those are only ERC morphs (center_point and end_point).

    The behaviour is quite strange in DS too. If you put BEF02 = -100% and then start increasing the Mouth Smile morph, you see that the left slider follows the combined slider but the right slider lags, by 55.6%.

    So I don’t have a clue why DS behaves like it does.

  7. Thomas Larsson repo owner

    Your idea to automatically transfer shapekeys to face meshes is a good one. Now all tools that load facial morphs, both standard morphs (expressions, facs) and custom morphs with body part = Face, does that by default. It will still be missed if the user forgets to set the body part.

    The way face meshes are identified is not waterproof, though. Currently a mesh that has a vertex group called “head” and whose name contains one of the strings [“eyelash”, “tear”, “beard”, “brow”]. That might miss some face meshes, e.g. if it is called “moustache”. We don’t want to transfer shapekeys to hair or to rigid objects like glasses, so skipping the name test can’t be done either.

  8. Alessandro Padovani reporter

    Unfortunately I really know nothing of the daz morphs. If I go to “currently used“ with “show hidden properties“ in edit mode I see that BEF 02 = -100% gets no morphs, so it should do nothing as you noted. The only thing I noticed is there’s a “nudge” property in each morph, so may be the nudge influences the limits. That is, if the limits go from 0% to 100 % and the nudge is 4%, then may be the real limits are -4% to 104% so a -100% slider will cause a -4% value.

    Let me know if you want to try/verify this. Or I’ll mark as resolved.

    edit. note. I believe the “nudge“ inside the dsf file is the “step size“.

  9. Thomas Larsson repo owner

    That might be it, but I don’t think it is worth bothering about it. The BEF morphs at negative values don’t seem useful to me, and that they make a small movement in DS is almost a bug.

  10. Log in to comment