Genesis 8.1 Face Controls

Issue #477 resolved
Cristian Salina created an issue

Hi,

I’m sorry if this has been asked before, but I couldn’t find any threads regarding the topic.

https://www.youtube.com/watch?v=hGQ198wHaxE

Could adding a face control be possible in Blender? Let’s say you import FACS and then there could be an option to add those arrows to control the FACS, maybe after you’ve converted the model to Rigify or MHX rig.

Let me know what you think of if this has already been discarded.

Thanks.

Comments (23)

  1. Xin

    Yes I agree, this is a good request. I was eventually gonna open an issue for this too. This is a very useful feature for proper animation, unlike the million sliders that daz used to rely on for expressions, which are are ugly to work with for anything other than basic expressions (on top of being quite heavy compared with this system).

    With the FACS system in place, this can be implemented in Blender more easily since the shape keys are already there.

    For Thomas, what needs to be done is basically make a new facial bone layer, where the bones are dials for the FACS shape keys (with limit location/rotation constraints to make it more user friendly). This is how proper facial animations are done outside mocap (although more complex animations have more layers, but this would be a good start), so it would be interesting to have this.

    Even better, we can drive HD normals or vector displacements (see #357) directly with these bones, which would make the system pretty much better than daz system itself (on top of all the flexibility that comes with Blender like the ability to sculpt/edit shape keys on the fly).

    I will upload a .blend showing how this is done whenever I find time, with the drivers set up (at least for a few FACS shape keys).

    For those who are curious, recently someone here (see #408) posted a link to a series of videos that I believe explains the process on Blender (haven’t checked it closely): https://flippednormals.com/downloads/face-rigging-in-blender-tutorial/

  2. Alessandro Padovani

    The FACS controls are in the developer kit folder. You have to apply them to the genesis figure before exporting. That is, the plugin already imports them being them just bones with shapes added to the genesis figure. When I try to pose the FACS controls in blender it seems nothing happens though. That is, the controls move but they don’t affect the figure face.

    As a side note personally I don’t see much of a difference between posing the FACS controls, and posing the face bones directly.

  3. Xin

    Alessandro, when posing face bones, you are only moving the skinned/vertex weighted vertices through the bone transformation, which only works for basic stuff since skinning is quite limited, especially for faces which are quite complex anatomically.

    For complex/non-trivial face deformations, especially if you want them to look good, you need to dial shape keys (moving vertices in arbitrary directions per vertex), which this rig makes easier and more intuitive. Having to dial a lot of shape keys from a list manually is an ugly workflow.

  4. Alessandro Padovani

    Uh you mean the FACS controls also drive HD morphs .. I didn’t notice that. Thank you for the explanation.

  5. Xin

    For Thomas, look into: “…\My DAZ 3D Library\data\Daz 3D\Genesis 8\Genesis 8_1 Face Controls” for the formulas. After loading FACS shape keys, a button could be enabled to import this rig. Or to resolve dependencies easier, maybe as an option when loading FACS Units.

    Also, an option to not create sliders for FACS Units controlled by the rig, and instead only use the rig would be good for performance. The million sliders workflow is just a mess, so it would be better for the user too.

  6. Alessandro Padovani

    I agree this facial rig is more the blender way, if it is possible to make it work. And sliders for the FACS units could be avoided as an option. Then the sliders for FACS expressions are still useful imo if the user imports them.

    I also second Cristian that this would be nice for mhx and rigify. But the “legacy” face bones would be useful as an option, if one doesn’t want to import the face units and just wants a simple rig for the face.

    https://www.youtube.com/watch?v=EZjwKI46Y6c

    edit. Playing with the FACS controls in daz studio. Indeed this seems very powerful, it is easy to get natural expressions and the HD morphs are driven as well as Xin pointed out. Though the underlying mechanics is of course much more complex than using plain face bones.

    The rig provided in the developer kit seems to only work for G8.1, while the one in the shop also works for G8 and G3.

  7. Xin

    Alessandro, in fact you want to keep the original facial bone layer too. Having a layered face rig is quite common.

  8. Eder Rogerio Deana Juliette

    Yes, that is a good request. I dreamed to have it in Blender since the first time I saw it available in Daz. But once I had no idea about how hard would it be to implement this in the addon, and seeing Thomas with so many other issues to deal with, I thought it could wait for a while. But definitively, that would be a great implementation.

  9. Thomas Larsson repo owner

    There is now a first attempt at this.

    1. Apply FACS controls to the figure in DS.
    2. Import into Blender
    3. Merge Rigs
    4. Make Custom Shapes with control mesh selected.
    5. Load FACS units.

    Works reasonably well but there are some issues.

    1. When the control rig is merged with the main rig, there are some warnings about invalid drivers. This happens when copying object drivers, more specifically drivers for the eye control bones. It works if one manually updates these drivers afterwards, but I haven’t figured out how to do it in code.
    2. The rig is unresponsive after merging, even before the FACS morphs have been loaded. Excluding the meshes from the scene improves performance, though.
    3. Sliders are still generated when the FACS morphs are loaded, but they don’t do anything useful anymore.

  10. Xin

    The unresponsiveness is just the 8,1 figure having 2 levels of subdivision in the viewport, you have to lower it to animate.

    There is a problem with some bones disappearing after loading the shapes, like “Mouth_Up_L2”. Even when you skip the loading shapes step, the bone doesn’t work. I will see if I can find its formula.

    EDIT: Ok, the problem is that the addon doesn’t seem to be considering the formulas in the subdirectory “…\Genesis 8_1 Face Controls\Morphs\Daz 3D\Base\”. Those formulas connect some of the bones (like “Mouth_Up_L2”) with the FACS shape keys.

    I think this is a case where you don’t have to completely match daz like you try to do with a generic slider. If you can flatten some of the relationships then do it. The face rig is supposed to be “final” from the addon’s perspective once created after the FACS where imported.

  11. engetudouiti

    Actually use widgt to drive bone and shape key or use slider to drive bone and shape keys is not problem for me at all. (I say I like the idea)

    But If we can not drive those new Fact controller with Expressions, it actually remove Facs meaning. (I suppose yours know how Facs expression and face units are desgined. Then it is important. Though I do not test it now, but anyway keep option, which can use expression slider to move Fact unit. (and user can still make new expression and import when it need) and user can easy adjust it with real value. (if you have seen facs diagram, it must use direct value. like angry 0.3 , + (another expression 0.4) + other face unit value.

    I can not use those real Facs data, . if we only use widgt bone location props and remove slider . because now it have no way to directly input values. At same time I like it as one separate option. (but do not think which is superior or more blender rig like at all, just offer option to controll props by widgt)

  12. Alessandro Padovani

    Commit 2f85fc6 works fine here and this is great as a first step !

    One first issue I notice is that the controls are free to move everywhere. This is not good they have to be limited the same as daz does. For example below I can move the mouth corner far away from the face.

    edit. Never mind, it is my fault I didn’t have the limits selected in the global settings. The controls work fine now.

    edit. The mouth corner inner cross seems to have no effect though, not sure if this is important since it seems I can do the same things with the arrows. But it’s a difference with the daz rig. This time I have limits selected.

  13. Thomas Larsson repo owner

    engetudouiti, of course it is important that the sliders work too. Otherwise it would not be possible to load facs animations, which is super cool. In the last commit both widgets and sliders drive the facs morphs.

    Alessandro, the plugin does not seem to import all locks and limit constraints correctly. Probably it wasn’t important before. Will look into that later. Some widgets don’t drive morphs, probably because of the missed directory that Xin pointed out.

    Xin, thanks for pointing out that the subsurf modifier was the problem. Now my facs animations run at 25 fps without frame dropping.

  14. engetudouiti

    Thomas yes you keep great works about this issue too thanks.

    Then Ideally it may best work all at same time. (all sdier with fact widgt controller)

    I supposed if it is easy improved to make all face unit with controll only without generate slider. (about this case actually you may need not generate UI slider. but may use each bone transform value with the name of facs unit only.

    I actualy catch erroer when use my favor setting for global . then if I do not use show hidden slider, it worked about scene which I add dev kit script (so I might not report it. because yours may hope to concentrate to work widgt facs unit controller.

    So if yours need to remove slider for the widgt to solve some issue, , I only need option to keep all siders work as same as before without generate widgt and new driver relation .

    Then when I hope to pose face units as same as pose bones, I may use the new option without slider.

    As peformance and make things easy , I actually think you may better not add more function which drive same facs props . if it never becom only one option, actually I do not worry about it.. if your recent commtis not work as I supposed I simply not use the option. (then keep morphs sliders as same as before without cool pose widgt) so only hope it may not effect current status, (which we do not add pose bone widgt ) without you confirm it work better than before about many aspect.

  15. Thomas Larsson repo owner

    Not generating the sliders is not really an option; the code was made that why (on your suggestion) and it will probably break if the raw sliders are removed (the fin properties are used even with widgets). An if you don’t want the widgets, there is a very simple solution: don’t add them in DS.

  16. engetudouiti

    Ok I see how you think about Widgt and slider of fact unit. I only hope you keep option witch keep slider as same as before.. (no widgt and new driver) At same time I hope it will be as global option, (because, I added the controller in DS as default g8.1 scene. . then save it as base character .so most of scene now added is already added ctrl. Because about DS I have no issue. I simply hide them if I do not need, or use them as shown.

    Then even though my exported scene added those controller when I import scene, I hope to choose way about Add on case by case without it I need to remove them to use stable version untill you finish and confirm new widgt with driver.

    I think you already notice it,, the daz new widgt bonse not just move each Facs unit. It is more complex than drive Facs only. eg some widgt bone move another widgt too. so I suppose to make it work complete it need plenty of time. I think as same as you finish to import all base morphs.

  17. Alessandro Padovani

    A minor note and question please. In this case the shapes are not designed to be wireframe, so I’d like to switch them to solid. But when I do it I get strange artifacts where the shape is displayed as solid with a triangled wire outline. Any idea why ?

    edit. May be, if possible and as a very minor priority, we could have a couple options for “make custom shapes”, as wire/solid and a color ?

  18. Xin

    Yeah, the shapes could be better, for example, by removing the interior vertices of all original shape meshes and leaving only their boundary vertices. That way the bone wireframe shape looks better. Solid shapes would be quite intrusive since they occlude the geometry. Also, a lot of shapes can be reused, no reason to have one shape for each bone.

    Another thing, the bones of this bone layer shouldn’t be tagged as “Deform” bones. They are not associated with vertex groups, so they should be non-deforming bones.

  19. Xin

    Was this implemented fully? I remember several controls didn’t drive any FACS, like the ones whose formulas where in a subdirectory.

  20. Domiek

    Can someone provide an updated step-by-step for this please? I remember getting the face controls to work a few months ago, but now I can’t get it working after a few hours of attempts. I’ve followed the steps by Thomas here as well as the finishing section of the documentation.

    1. Add 8.1 Female Face Controls onto Vicky 8.1 in Daz

    2. Import to Blender

    3. Merge Rigs

    4. Make Custom Shapes with control mesh selected.

    5. Load FACS where? Doesn’t load onto the face controller and loading them onto the main rig doesn’t seem to influence the face controller at all.

    I’m using the latest developer build of Diffeo, latest Daz and Blender 3.0.

  21. Log in to comment