Convert FACS Morphs To Shapekeys not all working

Issue #1590 resolved
Mike Albert created an issue

Nott sure whats wrong but when I try to convert the morphs only about 25 work even though I select all of them. All the ones for mouth don’t seem to convert as well as some others. Most of the eye morphs convert fine. Thanks

Comments (25)

  1. Mike Albert reporter

    Ok, figured it out. Seems like I need to bring import Face Units AND FACS to make the others work even though they are there when I just import FACS? Strange.

    New question though. Is it possible to change the names of the morphs/shape keys somewhere? Like in a .py file or something? The addon I want to use for facial animation is looking for a specific shapekey name. I would prefer the names to match on import and to not have to change all the names of every character after import. Thanks

  2. Alessandro Padovani

    daz studio 4.21.0.5, blender 3.5.1, diffeomorphic 1.7.1.1621

    bug. I can confirm that only a minimal part of the facs are converted to shapekeys.

    steps:

    1. import G81F and merge rigs
    2. import facs with “transfer to face meshes”
    3. merge meshes
    4. convert morphs to shapekeys with “label as names“ and “delete existing shapekeys“

    As a side note there’s two div2 morphs that are imported with the facs, they shouldn’t appear in the facs list.

  3. Alessandro Padovani

    @Mike I’m not sure what you mean, once you convert to shapekeys you can of course rename them as you like in the blender interface.

  4. Mike Albert reporter

    @ Alessandro Padovani Yes, I know but I didn’t want to have to remane 50+ shapekeys every time I import a character. I was wondering if there was a file somewhere I could just edit the names so every character will have the proper shapekey names upon import. Thanks

  5. Alessandro Padovani

    Face units have nothing to do with FACS, they are separate alternative systems and should not be used together. FACS work just fine without face units and vice versa. If face units are required to convert FACS to shapekeys then this is a bug.

  6. Alessandro Padovani

    No you need a custom script for that, that would allow to read a file with the morph names to be replaced. That wouldn’t be useful to import daz figures so I doubt Thomas will do it just for you. Unless you explain how/why this can be useful to others.

  7. Mike Albert reporter

    No problem. Found an addon called shapekey editor that can change the names in bulk. Thanks

  8. Thomas Larsson repo owner

    The problem with FACS is that they are already shapekeys to a large degree. If the shapekey already exists it remains driven. Examples for G8.1F:

    Mouth Dimple has the internal name facs_ctrl_MouthDimple, and is converted to a shapekey with that name.

    Mouth Dimple Left has the internal name facs_bs_MouthDimpleLeft_div2. This shapekey already exists and is driven. You cannot change it unless you remove drivers (which you probably want to do if you want the shapekeys outside of Blender).

  9. Alessandro Padovani

    If I understand correctly and unless I miss something. The whole point to convert morphs to shapekeys is to remove the drivers and get the baked shapekeys instead. So it would be useful if the tool can handle these cases. What the user expects is to get the drivers removed and a list of equivalent shapekeys.

    I mean if there’s drivers that just drive shapekeys directly then in this case the tool can keep those shapekeys in step 4 above, just renaming them with the label. Let us know.

  10. Thomas Larsson repo owner

    I had forgotten that this tool has two options:

    1. Labels As Names: Use the nice morph labels instead of the internal names.
    2. Delete Existing Shapekeys:

    The default of both options have been changed to enabled. There was also a little bug for facs morphs, or more generally when the morphs are already partly shapekeys. That glitch should be been ironed out now.

  11. Alessandro Padovani

    Commit b311b8b.

    This is much better, thank you for your nice work. Now all the facs are converted to shapekeys so the main issue is fixed. There's some minor bugs left.

    1. DIV2 BUG. If we import facs with easy import then a couple of extra div2 appears in the facs list facs_bs_BrownDownLeft/Right_div2. This doesn't happen if we import facs with standard import. This is also reported above with picture.

    steps (doesn't work):

    1. easy import G81F with facs

    steps (works fine):

    1. standard import G81F and merge rigs
    2. select the body mesh and import facs

    2. MORPH LIMITS BUG. When we convert to shapekeys the morph limits are not converted. I mean for example if we convert facs that go from 0-200% then the shapekeys should go from 0-200% too. This is achieved by setting the range properties in the shapekey.

    note. important. Please note that the morph is baked at 100% value, so the morph and the shapekey will be the same at 100%, but they may differ at other values. This is expected because the interpolation of morphs and shapekeys is different, that is, morphs may interpolate bones while shapekeys don't.

  12. Thomas Larsson repo owner

    Alessandro, for me the extra morphs are created also with standard import. If I only import facs_bs_BrowDownLeft_div2.dsf, two sliders are created. The plugin is confused by this:

            "id" : "facs_BrowDownLeft",
            "name" : "facs_bs_BrowDownLeft_div2",
            "label" : "Brow Down Left",
    

  13. Alessandro Padovani

    Commit 7b56dde works great for the shapekey range, thank you for the fast fix.

    For the div2 bug you have to select the body mesh as step 2 above, if you select the rig then the div2 are created.

    steps (works fine):

    1. standard import G81F and merge rigs
    2. select the body mesh and import facs

    steps (doesn’t work):

    1. standard import G81F and merge rigs
    2. select the rig and import facs

  14. Thomas Larsson repo owner

    When you select the rig morphs are loaded to all recognized meshes, not only the body but also lashes and tears. You can see that if you import facs with the lashes selected. The extra brow down morph comes from the lashes. In the lashes file facs_bs_BrowDownLeft_div2.dsf, the id, name and label of the morph are all facs_bs_BrowDownLeft_div2. Not good, standard morphs should be loaded to the lashes, but transferred from the main mesh. Now morphs are only imported to the main mesh.

    However, there was a reason why the plugin started to recognize lashes and other meshes, but I don’t remember why. It had something to do with G9 which has many more submeshes with recognized topology.

  15. Alessandro Padovani

    The G9 sub-figures are all autofit the same as G8, the only difference is there’s more of them. Sure sub-figures in general may also have morphs of their own, but autofit should transfer from the main mesh.

    Commit a14dbe1 works fine, if Mike has nothing to add we can close as resolved.

  16. Thomas Larsson repo owner

    The reason why the plugin recognizes the submeshes has to do with projection morphs. When transferring morphs to the eyelashes, we compress them so they don’t pick up data from the brows, which may be closer to the tip of the lashes than the eyelids. But that is really not the same thing as loading ordinary morphs.

  17. Alessandro Padovani

    As I understand it, autofit works with unmorphed meshes. That is, for example, the G8 eyelashes have length and curl morphs, autofit (transfer morphs) is computed with morphs = 0, so the eyelashes are close to the eye when autofit is computed and projection works fine, then the length and curl morphs are applied.

    This doesn’t work well with dbz since the eyelashes morphs are baked. Some time ago when we discussed this I proposed as an exception to load the eyelashes always as unmorphed, but don’t know how you ended up with this then. This was way before you implemented baked correctives.

  18. Thomas Larsson repo owner

    Sorry, I didn’t notice your proposal before. Excluding the lashes from baking doesn’t make sense. That would compress the lashes, which is nice, but it would also place the lashes where the unmorphed eyelids would be. The transfer tool does find the projection morphs for G8F lashes, but the brow morphs still move the lashes.

  19. Log in to comment