Wrong eyes after armature morph

Issue #2008 resolved
Alejandro Huerga created an issue

Objective:

I’m trying to load G9 Base figure, with all default morphs, so I can save it as a template and then using the morph armature to load characters depending on needs. So whatever fix that can help on that will be much appreciated.

Tried several approaches and characters, but I’m always getting wrong eyes placement or rotations on FACS for G9

  1. Import DEFAULT G9 with eyes, mouth, etc.
  2. merge armatures
  3. Import FACS
  4. Import Custom Morphs. I’m trying with TX Eleanor, but you can also try using a model that change the height of the character.
  5. Click on morph armature

Issues:

1- First scenario makes all the bones to morph except from several facial bones and the pectorals.

2- Second scenario, morphs the armature properly but the “Eyes Look Side to Side”, “up-down” and “jaw open”, are completely crazy producing crossed eyes and funny faces.

This happens only after using the morph armature button, and It varies depending if you load the FACS before or after loading the custom morph, and before or after applying the Morph Armature, but…

As mentioned before, I would like a solution that allows me to apply the morph armature at the very end, having all jcms, FACS, and etc., loaded before clicking on morph armature button so it’s useful as template to load any character.

Thanks in advance, I love your work and willing to help!

Comments (21)

  1. Alejandro Huerga reporter

    Thank you sir. Just tried with 1.7.4.2081

    I loaded everything from scratch just to be sure. It’s behaving differently, but not solved yet. Now when I transfer the shapekey from the custom morph to eyes, mouth, etc. sometimes it causes a misalignment on the meshes if you transfer with the default settings, that wasn’t there before the update. Also, the eyes and mouth bones are not morphing, exactly as in the previous commit. But looks like the “eyes crossed” is better now, but cannot be sure because the eye bones are not aligned with the mesh yet.

    Please notice that merged bones from grafts are not being morphed. For example the GP bones would move with the pelvis bone, but it keeps in the same place. (see attachment)

    Glad to know you opened for a deep testing

  2. Alessandro Padovani

    Personally I don’t use morphing armatures, as I believe blender is not designed for that and it greatly complicates both the workflow and the rig. But there’s recent improvements, you can now use “ERC by translation“ in the global settings, then load a full custom figure morph with “advanced > morphs > import dbz“. Let us know if this works for you.

    Otherwise please wait for Thomas to reply since I don’t use ERCs so I’m not the right person to test it.

    https://diffeomorphic.blogspot.com/2023/12/new-way-to-do-morphing-armatures.html

  3. Thomas Larsson repo owner

    Blender has a problem with bones that point along the global Y axis. If the rest pose is changed from slightly up to slightly down, the roll angle jumps from 0 to 180 degrees, and morphs start to rotate the bone in the wrong direction. The plugin takes care of that when you load morphs, but it becomes a problem if you change the rest pose after the morph has been loaded, e.g. with the morph armature button.

    Using ERC morphs as translations, as Alessandro suggested, should not have this issue. I personally don’t use ERC morphs either, because my characters keep their shape, or at least the shape is changed so little that shapekeys alone work.

  4. Alejandro Huerga reporter

    Thanks for answering. I’m trying that approach but couldn’t get the results I need. Also the page mention it is not compatible with FACS, which is a bigger problem… Morphing the armature is giving the result I need, except for the positions of the eyes, tongue and gens bones. So maybe just fixing that detail would be enough, however…

    You think there could be another way to create this Template as mentioned?

    • Load G9 default with all FACS, jcm, etc., and save it as a template
    • Merge armatures and geo-grafts (just for being able to convert to MHX, Rigify or custom shapes later)
    • Load morph using whatever method mentioned, or even importing an external obj.
    • Re-pose the bones… maybe copying the location from a second rig. It can be done manually… but it takes a lot of time.

    The reason I need to have this flexibility is because I’m creating a custom rig for G9 default, which I would like to keep after loading custom shapes. I’m able to load the shape using an external obj, I just need a method to reposition the bones, so I’m good to go using any character and keeping my custom rig.

    Thanks

  5. Thomas Larsson repo owner

    What you suggest is beyond the scope of this plugin. The intended use is for scenes where you need to animate a shape-shifting morph, e.g. when dr Jekyll morphs into mr Hyde. In situations where the character keeps his shape, the baked mesh and armature works better. Moreover, ERC morphs don’t work at all with MHX or Rigify.

  6. Thomas Larsson repo owner

    On second thought, I have an idea what the problem might be. Typically (as in 100% of all cases I’ve seen), an ERC morph changes a bone’s center_point and end_point. The center_point is the bone’s head in Blender, but the end_point is not the tail, although it is usually quite close to it. So instead of using the end_point offset for the bone’s tail, we can move both the head and tail with the center_point offset. That should move the entire bone in parallel, keeping its orientation, and hopefully issues caused by changed orientation are avoided.

    Please test the latest commit and report back.

  7. Alejandro Huerga reporter

    You were right, this is going MUCH better! I can see there’s no more need to use the morph armature button. But we still have some little issues.

    1. If we could load the FACS, JCMs, etc. BEFORE the custom morph, it will work as a universal template
    2. If not, it works OK loading the custom morph FIRST, and the FACS AFTER, however… We need a way to fix the rest pose. As you can see in the images, if you click on “apply pose as rest pose” it creates an offset that I wasn’t able to fix.

    Just to mention, if this could work morphing in real time like your Jekyll/Hide example, it will be awesome, but if not, I just need a way to make the rest pose, the same than the final result of the morphing. IDK maybe a little button that only bakes the final morph location as rest pose. So I can continue using my custom rig made on the Default G9 without changing the entire armature because I have a bunch of custom bones and drivers that will be lost.

    I’m very happy, you’re about to nail a big upgrade here.

  8. Alessandro Padovani

    With “ERC by armature” you don’t need to apply the rest pose, because that’s what “morph armature“ does already, it enters edit mode and changes the rest pose. Then yes you can import jcms and facs before ercs, indeed that’s how it is usually done so nothing fancy. Unless I misunderstand what you need.

    https://diffeomorphic.blogspot.com/2021/09/morphing-armatures.html

    p.s. Be aware that, for each custom figure, there’s usually also custom correctives other than the standard, so you need to import those too if you want exactly the same deformations as daz. This may be what “deforms“ your morphs if you don’t load the custom correctives.

    p.p.s. Again, imo working this way is a huge pita, blender does not work as daz studio, luckily, so for a simple workflow you bake in daz then import in blender.

  9. Alejandro Huerga reporter

    Thanks for helping!

    1- What I meant is after using it, the pose and rest pose are not the same so it jumps every time I switch mode.

    2- importing facs before the custom morphs, produces those weird eyes deformations.

    3- No custom correctives, just trying to achieve the right bones offset.

    4- Importing baked armatures would work for sure, but that means I need to add my custom bones and drivers from scratch every time for each character. That’s why I’m trying to create all that in the default G9 and then just move the bones according to the character. Maybe you know a better way to do it. Morphing the armature moves all my custom bones and keep my drivers for any character so it’s almost perfect. But again, if you another way please let me know. I can see morphing armature have the potential to do that automatically.

  10. Thomas Larsson repo owner

    OK, I think I have identified the culprit; it has to do with making bones posable. Try the following workaround.

    1. Load FACS with the Make All Bones Posable option disabled.
    2. Load custom morphs.
    3. Make all bones posable manually.

    I will dig into this later today.

  11. Thomas Larsson repo owner

    Now you should be able to load FACS and custom morphs and make bones posable in any order.

  12. Alejandro Huerga reporter

    Fantastic! The morph now is working perfectly! You’re awesome

    Just one last thing, I would like to keep the final result in place, could you add a button to bake this final result and remove the morph slider? I couldn’t find a way to remove this or any other slider from the custom shapes panel.

    Sorry for bothering, just want to keep the final shape exactly the same for pose and rest pose. If you check they’re still jumping when switching the mode.

    Thank you so much!

  13. Maneki

    It seems to be a bug, there technically is a option but when I select the rig where it’s supposed to be on, I can’t select “Remove Shapekey from Category”. I can select it when I select the mesh but then obviously nothing happens.

  14. Thomas Larsson repo owner

    As the tooltips state, Add and Remove shapekeys from category buttons apply to Mesh categories. If you disable Rig Property Drivers when importing custom morphs, a new option Mesh categories appears. This creates panels which contain the shapekeys themselves, grouped into categories.

    I’m not sure how useful this is, and it doesn’t seem to be documented. Someone (Engetudouiti) requested it long ago, but I never use it myself.

  15. Alejandro Huerga reporter

    Well, we mean there’s no way to delete or bake the custom morph panel after loading. Should be nice to have an option to remove the panels, unload or bake the morphs. But just a suggestion. I guess you can mark this issue as solved.

    Thanks again!

  16. Log in to comment