Trying to import a facial expression

Issue #227 closed
John Wind created an issue

I have been trying to import a facial expression pose onto my Genesis 8 Female character and it will not work right. I have imported the Face Unit morphs into Daz Importer, but the terminal window keeps saying that some morphs are missing even though they are on the list of Daz Importer Face Unit morphs. Then I looked a little closer at the tooltips that pop up the real name of the morph when you hover the cursor over the label of the morph. For instance, when the terminal window says it is missing the morph “eCTRLEyesSideSide” I find that the morph on the Daz Importer Morph List is really named “ECTRLEyesSideSide”. Perhaps capitalization makes a difference. The morph for “eCTRLJawOut-In” shows up in Daz Importer as “CTRLJawOut-In”. Same with morphs for the Tongue. Several of the Eyes, Jaw, and Tongue morphs are being listed as missing in the terminal window, and they are all misspelled in the Daz Importer List. Some of the other morphs do work when I import the expression pose, but cross checking with Daz Studio what the morphs should be set to versus what they get set to in Daz Importer shows a lot that do not match.

Comments (23)

  1. Thomas Larsson repo owner

    I don’t get any errors when I load face units to a G8F in the development version. Sometimes morphs depend on other morphs in a way that they don’t work unless you import all morphs in this section, but I don’t have any problems neither if I load all morphs or just EyesSideSide.

    Capitalization can be explained if you look inside the file eCTRLEyesSideSide.dsf (it is not encoded): the morph id is “ECTRLEyesSideSide”.

    Are you using the development version?

  2. John Wind reporter

    I am using the latest development version.

    Here is a small sanity check of my problem. Open Daz Studio, create a plain G8F, and save her as a Daz Scene. Export to Blender in order to create the .dbz file. Pose the G8F in Daz Studio by closing her eyes using ONLY the EyesClosed morph under the Pose Controls/Head/Eyes parameter menu. Save the pose as a Daz Studio Pose preset. Now import the G8F you created into Blender via Daz Importer. Do all of the usual setup including importing the Face Unit morphs. Now try importing the pose you saved as a preset before and see if you can get the G8F in Blender to close her eyes like she should. I cannot make this happen.

  3. Thomas Larsson repo owner

    It does indeed seem like capitalization is the issue. The saved pose preset file sets keys for the eCTRL morph, not the ECTRL one . Perhaps one should use the file name or the name field rather than the id field to name the Blender property, but that may lead to other problems, and I don’t dare to try that.

    Instead pose loading is now case insensitive for morph sliders. That seems to work, at least in this case.

  4. engetudouiti

    About daz studio, even though I change ID name from eCtrl to ECtrl in pose preset file, it work.

    So daz studio is case insensitive at least for Pose preset.

    Then it seems logical to use case-insensitive in blender.

    (but do not know if it cause new issue for manage morphs etc ^^;)

  5. John Wind reporter

    it looks like you are seeing what I mean. Now try my little “sanity check” again, only this time pose the G8F in Daz Studio using ONLY the “Jaw Side-Side” morph, under the Pose Controls/Head/Cheeks and Jaw parameter menu. Then save the pose as a Daz Studio Pose preset, and try to import the pose onto a G8F in Blender. It will not work either. The morph is named “eCTRLJawSide-Side”, and it seems to have a morph ID of “CTRLJawSide-Side”. This one isn’t a difference in capitalization, it is a slightly different spelling. This is the problem for both of the Jaw morphs, and for all of the Tongue morphs as well. The plot thickens. 😉

    Edit: I noticed that the morph “eCTRLJawOut-In” has a morph ID of “CTRLJawIn-Out” (a completely different spelling) which causes the problem too.

  6. John Wind reporter

    I had some small success by saving a Daz Studio Pose Preset without compression, and then going in and editing it by hand. I changed the name of all of the problem causing facial expression morphs to their corresponding Morph ID name instead. When I loaded my modified Pose preset file into G8F in Blender, everything worked and no error messages on the terminal screen.

  7. Thomas Larsson repo owner

    Posing morphs should work now, even with misspelled morphs.

    I remember that I ran into this problem long ago, and made a fix for it. However, the code had rottened over time, especially after the introduction of the new morph system, so it needed some cleanup to work again.

  8. Alessandro Padovani

    @Thomas As for the jaw example, I see the dsf file is named after the morph name, then it defines the morph id and the formulas to apply. Then the formulas use the morph id. I see the fix is based on a synonym list specific to G8F, so it may be faulty in other cases. Can’t we use both the name and id as daz does ?

    As for the capitalization, in windows the file system is not case sensitive, so eCTRL or ECTRL or EcTrL will retrieve the dsf anyway.

  9. Thomas Larsson repo owner

    Alessandro, agreed. In the last commit the morph names are stored so they can be used for posing. The synonym list remains for the time being, so old assets don’t break.

  10. Alessandro Padovani

    As for commit a7e5728 I get the error below if I try to import the jaw-side pose. Test file attached.

    Steps to reproduce the issue:

    1. import a standard G8F with the dbz option
    2. add extra face bones
    3. select the g8f armature and import the pose file

  11. Alessandro Padovani

    If I also import units, then I try to import the pose, I get this one. The jaw units themselves work fine though.

  12. Thomas Larsson repo owner

    Ouch. I disabled the creation of this table to make sure that the new code really worked, and then I forgot to enable it again. Fixed now.

  13. Thomas Larsson repo owner

    So I tested with an old character, created before version 1.5 but with converted morphs. An additional fix was needed then.

  14. Alessandro Padovani

    As for commit d599851 I don’t get the errors anymore. And the jaw-side pose loads fine. But I can confirm #235 that poses don’t load fine in general. Below an example with the base pose kneeling B for G8F, first daz studio then blender. In the blender version the legs are closer and the figure is above the ground.

  15. Thomas Larsson repo owner

    Correct posing should be back with the latest commit. At least the kneeling pose looks like in DS. You need to check the new Affect Translations option though.

  16. Alessandro Padovani

    Commit edd8fa4 works better. Now the kneeling pose is on the ground. But the legs are still closer than daz. Since the posing issue is already reported in #235 I’ll not duplicate it here. Eventually I’ll add to #235.

    The jaw expression works fine. May be we could mark this as resolved as far a facial expressions are concerned.

  17. Alessandro Padovani

    This may be a minor note from a technical point of view but I believe it is important for usability.

    I noticed that when reporting missing morphs the plugin uses the full morph name. Then when we select the morphs to import the plugin seems to use the name stripped from the prefix. Then again daz studio uses the morph labels in the user interface rather than the morph names that are only provided in the parameter settings tab. Below an example.

    daz label: “Jaw Side-Side”, daz name: “eCTRLJawSide-Side”

    A typical daz user will know and refer to this morph using the label because this is what he sees in the user interface. So it’s “Jaw Side-Side”. The plugin will list it as “JawSide-Side” in the import units and face units panels, that’s the name stripped from the prefix, then will report it as “eCTRLJawSide-Side” as missing morph, that’s the full name.

    Now this is a happy case because the names are very similar so by intuition we can guess what we’re talking about. In other cases we may not be lucky the same. I guess it may be good for a daz user if the plugin could use the morph labels in the user interface and to report missing morphs. Then internally the daz names and ids can be used to avoid issues in expressions.

    Unless I miss something. And again this is minor since everything works fine. Though a daz user may be confused by the different names.

  18. Log in to comment