genesis 2 animation to genesis 9 not exact

Issue #1709 closed
bouich jules created an issue

Hi!

Editting this post to make it more clear:

the convert function of diffeo doesn’t properly convert genesis 2 to genesis 9

the pose is not the same

Comments (18)

  1. Alessandro Padovani

    I don’t think pose conversion among various genesis generations is supposed to be “exact“. In general, when bones and proportions are different it is not possible to always get “the same pose”, but results may vary depending on the pose. What we get is a similar pose that we may need to adjust, and that’s what the tool does.

    That said, a request for better conversion is legit, but this is not strictly a bug.

    p.s. Please note that these limitations also apply to full professional retargeting tools, while I understand that Thomas “only“ use remapping that’s not retargeting. So for better results you may want to use a retargeting tool, there are many available for free. But again you will not always get “the same pose”, results will vary.

    https://github.com/Mwni/blender-animation-retargeting

  2. Thomas Larsson repo owner

    I have really only used pose conversion between G3 and G8, and there it works quite well. From G2 to G8, not so much. One problem was that G2 has no twist bones, so the G8 twist bones are not posed. That is fixed now. Another problem is that my conversion algorithm use the rest poses of the bone and its parent, for both G2 and G8, but the parent’s local rotation is ignored.

    Fixing this is not going to be easy, especially for animations where different bones have keys on different frames. However, even if it is done, pose conversion is not going to be perfect, because for some bones we don’t want the same pose in world space. E.g., the G2 zero pose will be G8 shrugging, due to the different orientation of the collar bones.

  3. bouich jules reporter

    Well for some poses there is a huge difference specially for the arms even for a G8

    for some poses/animations a manual tweaking won’t do it, because the difference is really big.

    i think because of the rest pose of G2 and G8/G9

  4. Alessandro Padovani

    version 1.7.2.1775

    pose conversion from G2 to G8 G9

    I believe I got a good conversion from G2 to G8 and G9. Scene included g2-to-g8g9.blend. I did it with constraints mainly copy rotations, you load a pose on G2 and get the equivalent on G8 G9. @Thomas you can look at the scene to check how I used the constraints. Mainly I used copy rotation in local space when I wanted to stay closer to the target “proportions”, and used pose space to stay closer to the source “proportions”, a mix of the two gave a good balance for conversion.

    I checked the whole set of G2 basic poses and they transfer fine with this setup.

    note. limits. Of course figure proportions will affect the final pose, so especially where the figure “touches herself“ the position may be different. Also sliding feet is expected for animation since here we only use copy rotation without true retargeting. That said overall the conversion is quite good.

    p.s. This is a proof of concept, I didn’t add constraints for the fingers and toes so they need to be added, also possibly for jaw and face if we want to.

    bug. G9 with quaternions. This also revealed a bug when we use quaternions with G9. The drivers for twist bones use “auto euler“ that’s not good with quaternions, we have to specify the rotation order, this way the driver works fine both for euler and quaternions. Again you can look at the test scene how this is fixed for legs and arms.

    p.s. jcms. Probably there’s the same issue for G3 G8 G9 jcms drivers with quaternions, I didn’t check. Indeed for jcms sometime we get different values than daz and this may explain why. In any case specifying the rotation order doesn’t harm and works fine both with euler and quaternion, so we may want to always do that for drivers affecting quaternion bones.

    note. how to copy G2 to G8 twist bones. To copy G2 to G8 twist bones I had to use a trick. Basically I added .COPY bones parented to the original bend bones, so the daz rig is not changed. Then first I copy G2 forearm to G8 forearm.COPY for example, then I copy G8 forearm.COPY to G8 forearm.bend for XZ and forearm.twist for Y. Same for arms and legs where there’s twist bones. This is the only way I found to correctly decouple bend and twist, otherwise there are artifacts. This is not necessary for G9 because G9 already does the same with an extra bone, indeed I copied the setup from G9.

    Again you can look at the test scene how this is done.

  5. Thomas Larsson repo owner

    Unfortunately, I don’t think it will get better than this. I have been importing the G2F zero pose to G8F, and the collar and shldr bones are off. As far as I can tell, the formulas are correct and the G2 and G8 bones should be parallel in world space, but they aren’t, so I probably misunderstood something.

  6. Alessandro Padovani

    Let me know for the quaternion bug, that really needs to be fixed or jcms don’t work fine, apart that even base deformations are different from daz.

    As for loading poses, I can’t script python so I used constraints instead. You could do the same: set constraints, then load the pose or animation, then apply/bake the constraints. I mean if you can’t figure out what’s wrong with the code.

  7. Thomas Larsson repo owner

    The quaternion bug was fixed a while ago, I think. The thightwist1 bone has the right driver, and I recall to have fixed the euler order for jcms as well.

  8. Alessandro Padovani

    Not a bug, it is expected that pose conversion among different genesis generations is not exact.

  9. Log in to comment