- edited description
Convert FACS Morphs To Shapekeys not all working
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)
-
reporter -
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
-
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:
- import G81F and merge rigs
- import facs with “transfer to face meshes”
- merge meshes
- 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.
-
@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.
-
- changed status to open
-
reporter Importing FACS “AND” Face Units works to get most brows and mouth shapekeys.
-
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
-
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.
-
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.
-
reporter No problem. Found an addon called shapekey editor that can change the names in bulk. Thanks
-
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).
-
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.
-
repo owner I had forgotten that this tool has two options:
- Labels As Names: Use the nice morph labels instead of the internal names.
- 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.
-
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):
- easy import G81F with facs
steps (works fine):
- standard import G81F and merge rigs
- 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.
-
reporter Thanks everyone. I will check it out when I get home
-
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",
-
repo owner Limits are added to the shapekey now.
-
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):
- standard import G81F and merge rigs
- select the body mesh and import facs
steps (doesn’t work):
- standard import G81F and merge rigs
- select the rig and import facs
-
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.
-
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.
-
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.
-
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.
-
repo owner Now the plugin doesn’t include submeshes when loading standard morphs.
-
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.
-
- changed status to resolved
- Log in to comment