- edited description
Tongue Morphs on G9 don't work correctly
I tried the “silly” expression on G9 and noticed that the tongue isn’t quite right, first one is Daz and second one is Blender:
Comments (32)
-
reporter -
reporter The culprit seems to be “tongue up”, it simply doesn’t get imported.
-
1.7.4.2082
I can confirm the bug.
-
- changed status to open
-
If I remember correctly, this problem has been there for a long time. I hope it will be solved as soon as possible.
-
repo owner I can see the problem with the Silly morph, but I don’t think Tongue up is the problem. It isn’t a shapekey, but a driver that bends the tongue bones: tongue01 -20 deg, tongue02 -20 deg, tongue03 -10 deg, You need to import the FACS morphs first, because the tongue morphs are not found if you just start with FACS expressions. Again the reason is that the tongue bones are not part of G9 but of G9 mouth.
-
reporter The tongue up driver works but the “silly” expression doesn’t utilize it.
-
repo owner Actually it does. The raw value is zero, but if you turn on Show final morph values you can see the final value, cf the post On raw and final slider values
A stupid question: where are the FACS controls in DS?
-
1.7.4.2082
I did my test with easy import, checking facs with details and expressions + transfer to face, and the issue still applies here. Unless you mean we have to import by hand first facs then facs details then facs expressions, then transfer to face.
In daz studio the facs are available under “pose controls > head”, subdivided in various categories.
-
reporter I don’t think the FACs details are necessary but I tried manually importing FACs first after easy import and then manually import the expression presets but the tongue still doesn’t get lifted up that way.
-
repo owner One bug has been fixed. The jaw left and right properties were not clamped, which doubled the effect of the jaw left-right slider. Something is still off, however. What is really strange is that e.g. the l_cheek bone is not affected by any of the FACS morphs used by the silly expression, but it is still not in the same position when I load it as a dbz file.
-
If you look at “currently used“ you can see that when “silly“ is enabled a number of other facs is adjusted, including for example “mouth smile“ which does move the “l_cheek“ bone. Entering the “parameter settings” under “sub-components“, we can see all the used ERCs including “mouth smile”.
Perhaps the culprit is you don’t have to stop at the first iteration level for facs, or daz morphs in general, but it is recursive, possibly including thus avoiding loops.
p.s. My understanding of this is, daz and blender really work in different ways, especially for morphs daz is a hell. That’s why, instead of trying to do “the same as daz“, we should try to import those morphs we need for animation in blender, and stick with them, eventually by baking so to avoid complex relations. At least this is what I do. So it doesn’t matter to me if my morphs set behaves or not the same as daz, those are what I need. Then I understand this doesn’t work to import daz poses but I’m not too much concerned in importing all the possible daz poses, unless I really need some of them in my project.
In short for an efficient workflow I believe the general rule is: “Use daz to bake what you need, then use blender. Do not expect everything from daz works in blender”.
It is a very inefficient workflow to try to turn blender into a clone of daz studio. It is not.
-
repo owner With the new Show Used Morphs Only setting we can see the the same list of currently used morphs in Blender too. Show Final Morphs Valuees must be turned on too.The question now is why Mouth Smile doesn’t move l_cheek in Blender.
-
repo owner The l_cheek mystery is solved: it has an ERC morph. By setting the ERC method to Armature, and changing the code a little (remove the line disableERC in line 775 of morphing.py), the l_cheek bone end up in the right place. The tongue bones are still misplaced however.
ERC morphs are always disabled for standard morphs, because I didn’t think they matter much in that case. Maybe we should reconsider. At least it is good to know why there is a discrepancy with DS.
-
repo owner There is now a new ERC method, Armature All, which morphs bones for all morphs, including FACS. The old method which only applied to custom morphs is renamed to Armature Custom.
Here is a comparison of the Silly morph, imported with DBZ, before and after morphing armature. Not perfect, but as good as it gets.
-
I updated the last Add-On version and this problem still persists for me. I have shared my global settings and import settings.
-
Commit 2019bdc.
I can confirm that ERCs don’t work fine, even with the new method “armature all“. Below there’s a comparison of the silly expression, ERC vs DBZ, most bones are not moved correctly, this is not limited to the tongue but affects the other facial bones as well.
workaround. If we use “import DBZ morph“ with “ERC by translation“ then everything works fine, but this means to export a dbz for each morph we want in blender.
-
repo owner - attached silly1.duf
Well, I'm stuck. I created a pose preset which is essentially the silly morph, except that it uses the facs morphs directly. It imports fine after morphing armature. So why does the silly morph behave differently?
-
I guess we should compare the currently used morphs in daz and blender and see if there’s any difference. The fact that silly uses a lot of FACS doesn’t help. Will look into this and let you know what I find.
-
repo owner I think I have found the problem. There is a separate facs_ctrl_silly.dsf file for the mouth, located at
\data\Daz 3D\Genesis 9\Genesis 9 Mouth\Morphs\Daz 3D\FACSExpressions
The base facs_ctrl_silly.dsf invokes a large number of FACS morphs, but the mouth facs_ctrl_silly.dsf adds an extra rotation to the tongue01 bone that the plugin is missing.
-
repo owner Finally, the Silly morph works correctly. The ERC method must be Armature All, and the tongue only jumps into place after you press the Morph Armature button.
The fix is that morphs are loaded to all known figures, not only G9 but also the mouth, eyes, etc. This interferes with automatic transfer of shapekeys to face meshes, so that option is disabled by default for now. Need to investigate how to deal with that later.
I would not really recommend to use this feature though, because handling ERC morphs is an extra overhead, and Silly seems to be the only FACS expression for which it matters.
-
The mouth silly morph only adds some bone rotation, I mean no bone translations or mesh shapes are involved. Thus there shouldn’t be any interference with current ERCs. ERC bone rotations can always be loaded as keyframes, they don’t need to change the rest pose. It is only ERC bone translations which need either to change the rest pose or to add a reverse shapekey.
Unless I miss something. Let us know.
note. Silly daz update. Unfortunately DAZ did some messing with G9, releasing before she was ready and then publishing various fixes on the way. Among them there’s a correction on the Silly morph so we have to be sure that the G9 starter pack and the separate G9 expressions do match with the release date.
http://docs.daz3d.com/doku.php/public/read_me/index/86958/start
http://docs.daz3d.com/doku.php/public/read_me/index/86962/start
-
repo owner You don’t need ERC morphs when you load FACS expressions, but they are needed for the base FACS morphs, because they change the pivot points for the tongue bones. Specifically it is the Tongue In morph that does this. Then the ERC method must be set to Armature to display the Morph Armature button, but that could be changed of course.
-
Thank you for the explanation, I was under the misunderstanding that with “ERC All“ you used ERCs for regular morphs too.
-
repo owner Automatic transfer to face meshes is back now. Shapekeys are no longer transferred to the standard face meshes (G9 lashes, eyes, mouth etc), because they are part of the standard figure and the morphs that they need are already loaded.
-
Nope, commit 3fe4d00 doesn’t seem to work fine. Below the comparison ERC vs DBZ, it still has most bones out of place, including the tongue that doesn’t fit. As for the tongue it seems the bones are only rotated but not translated. I did a clean G9 install just to be sure there isn’t any 3rd party error involved, as it may happen in the daz library.
steps:
- set “ERC All“ in the global settings
- easy import G9 with facs + facs details + facs expressions + transfer to face
- dial in the “Silly” expression
- compare with a “Silly” dbz
-
repo owner The tongue looks fine here. The morphed bones are shorter than the dbz ones, but they have the same pivot and orientation which is what matters for deformation. The lower eyelid bones seem to be off, though.
Did you remember to hit Morph Armature after setting the Silly slider? The Auto morph armature option doesn’t do anything until you change frame. It’s for updating the armature during animation.
-
Yes of course, I didn’t hit “morph armature” silly of me thank you. With “morph armature“ there’s a little difference with “l/r_eyelidlower” and “l/r_squint”, but everything else is perfect. Again the difference is minimal if this is hard to fix we may close as resolved since the main pose works fine.
-
I would like to ask a question about ERC, which I am not very familiar with.
I just imported my characters and did all the edits, but I have never used ERC (None selected).
What I want to ask is if ERC is useful. I don't understand what exactly it does (I tested it and it didn't change anything)
If it's useful, I'll import my characters again with the latest plugin version and reorganize them.
-
repo owner Enhanced Remote Control (ERC) are generalized morphs, which in practice come in three types:
- Shapekeys that change the mesh.
- Bone translations, rotations and scale transformations that affect the meshes.
- Changes to the bones' pivot point without affecting the meshes.
The first two types exist in Blender too, but the third does not. So the plugin does some extra tricks to mimic that. This is necessary to mimic the DAZ morphs exactly in Blender, but it comes with a performance cost. See
Morphing Armatures and Rendering
New Way to do Morphing Armatures
-
repo owner It is not possible to use the Translation ERC method for FACS morphs, and the picture below shows why. To make it, I removed line 776 in morphing.py:
disableErc = True
Each individual FACS morph looks reasonably good, but the corrective shapekeys have small errors which seem to pile up for the Silly expression. The conclusion is that the Translation method is approximate and should only be used for a few morphs.
-
Issue
#2019was marked as a duplicate of this issue. - Log in to comment