TUTORIAL: Import FBX animation to DAZ studio Pro & copy it to the G3 character

jari_e41bb06d70jari_e41bb06d70 Posts: 15
edited November 2021 in Daz Studio Discussion

Here is a small tutorial how to get FBX animations to DAZ Studio and copy them to DAZ characters, made for Genesis3 Female.
As the DAZ Studio is very buggy with FBX animation export/import and BVH generally gives sliding problems, here is a workaround which gives precise results.
The following method works only with identical rigs and identical scalings of the characters. If any joint is offsetted, the result will show slidings and strange issues. However, if the rigs are identical, every joint can be animated and there is zero sliding, so the feets sticks to the ground & boobs wiggles. Only thing you need is a animating program like Blender, 3DS Max or Maya + one DAZ script. 

 

Big thanks goes to mCasual/Jacques.
First, download https://sites.google.com/site/mcasualsdazscripts5/mcjcopyposeanim
and install it. Replace the script "mcjCopyPoseAnim.dsa" with the attached one (pelvis rotation added).


Let's start!


1. Fire up Daz Studio and load the character you want to animate.
2. Select the character and export as FBX (You can export with clothings, but remember to zero the figure pose before exporting).
3. Load the FBX to your animation program. Leave the frame 0 as idle pose. Animate from frame 1-> 


DAZ Studio requires very specific keyframing, so when you've done animating, only the following should be keyframed:  Hip: translation & rotation. Rest, only rotation. Parent (example: Genesis3Female) no keyframes. If anything else is keyframed, the FBX will be distorted in DAZ Studio.


4. When animated, delete all clothings and any joints which doesn't belong to the character and leave only the character and it's joints. Export your character skin, joints and animation as FBX.
5. Import your FBX to the original DAZ scene. You might notice positional offset of the characters, ignore it. The FBX animation should look perfect at this stage.

Now we copy it to the original character:


6. Select the original character (animation receiver) and "Select children"
7. Set Edit->Figure->Limits->Limits off
8. Set Edit->Figure->Lock->Unlock selected node(s). This way your joints will rotate as you animated them and they have full rotation freedom.
9. Select the donor (FBX) first, then receiver (your character) second.
10. Browse to mcasual script folder in the Content Library.
11. Load the mcjCopyPoseAnim script, hit DO IT and when done, hit EXIT.
12. Your FBX animation has been copied to your original character, so just delete the imported FBX version of it. Adjust your character to the floor level.


The script doesn't contain facial joints, you can add them manually if you need to. Just add them to the script, the naming comes from the donor structure and the order is important.

EDIT: Bare in mind that body morphs will cause inaccuracy. You can easily see this with graphmate; If the curve is off from the actual point values, that's caused by body morphs and it's painful to fix those. Try this to see the problem; load Victoria 7, make some keyframes with pectorals and see the graphmate: everything matches, key values and the curve. Next, dial voluptous morph to 100% and look at the curve again, it's off from the points.

dsa
dsa
mcjCopyPoseAnim.dsa
13K
Post edited by jari_e41bb06d70 on

Comments

  • BaazarBaazar Posts: 17

    Thank you so much for this script! Just discovered it and it works perfectly!!

    Now I'm able to transfer animations between Unreal and Daz :)

  • TryhardTryhard Posts: 166

    Possible update for Genesis 8 characters?

  • BaazarBaazar Posts: 17
    Tryhard said:

    Possible update for Genesis 8 characters?

    It worked perfectly on Genesis 8- I didn't even realize this was a Gen3 tutorial.

  • jari_e41bb06d70jari_e41bb06d70 Posts: 15
    edited June 2019

    It works with any character, you only need to rename the joints in the script for the figure you are working with. You can also simplify your skeleton in DAZ by deleting joints, if you want to get rid of extra twists and make it human compatible.

    Post edited by jari_e41bb06d70 on
  • TryhardTryhard Posts: 166
    edited June 2019
    Baazar said:
    Tryhard said:

    Possible update for Genesis 8 characters?

    It worked perfectly on Genesis 8- I didn't even realize this was a Gen3 tutorial.

    I just tried doing this with my custom Genesis 8 character from UE4 to Daz3D and the result is so so.

    https://gph.is/g/ZdxnvgD

    https://gph.is/g/aejPGNX

    I had to manually rotate the the X axis to -90 and move to floor as legs were lifting up in the air rather than sticking to the ground.

    Was your workflow similiar or did you did something I could do and learn from you?

     

    It works with any character, you only need to rename the joints in the script for the figure you are working with. You can also simplify your skeleton in DAZ by deleting joints, if you want to get rid of extra twists and make it human compatible.

    Would you mind showing how to do that?

    Post edited by Tryhard on
  • BaazarBaazar Posts: 17
    Tryhard said:
    Baazar said:
    Tryhard said:

    Possible update for Genesis 8 characters?

    It worked perfectly on Genesis 8- I didn't even realize this was a Gen3 tutorial.

    I just tried doing this with my custom Genesis 8 character from UE4 to Daz3D and the result is so so.

    https://gph.is/g/ZdxnvgD

    https://gph.is/g/aejPGNX

    I had to manually rotate the the X axis to -90 and move to floor as legs were lifting up in the air rather than sticking to the ground.

    Was your workflow similiar or did you did something I could do and learn from you?

     

    Assuming your characters are the same rigging and your animation in unreal doesn't use any awkward translations then your animation should be 1:1 after fixing the -90 x rotation.

  • jari_e41bb06d70jari_e41bb06d70 Posts: 15
    edited June 2019

    Deleting any bone:

    -Select the bone you want ot get rid of.

    -Activate joint tool (tools->joint editor).

    -Left click ontop of that bone, Delete->Delete Bone.

     

    I don't know about the Unreal, I'm working with Maya. Notice the rotation order with DAZ joints is ZXY, not XYZ, this could be the the reason for the 90 degree x offset. Another option is to check the world up vector (no idea about Unreal for this)

    Post edited by jari_e41bb06d70 on
  • TryhardTryhard Posts: 166
    Baazar said:
    Tryhard said:
    Baazar said:
    Tryhard said:

    Possible update for Genesis 8 characters?

    It worked perfectly on Genesis 8- I didn't even realize this was a Gen3 tutorial.

    I just tried doing this with my custom Genesis 8 character from UE4 to Daz3D and the result is so so.

    https://gph.is/g/ZdxnvgD

    https://gph.is/g/aejPGNX

    I had to manually rotate the the X axis to -90 and move to floor as legs were lifting up in the air rather than sticking to the ground.

    Was your workflow similiar or did you did something I could do and learn from you?

     

    Assuming your characters are the same rigging and your animation in unreal doesn't use any awkward translations then your animation should be 1:1 after fixing the -90 x rotation.

    I've been using this retargeting method and then exporting the retargeted to G8 file back to Daz3D

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

    And the export options look like this:

    https://imgur.com/zFnWPeF

    But when I put it in Daz3D it looks like this:

    https://imgur.com/pGexduu

    After using OP's modified script it still retargets the animation properly but I wonder if I could do something differently.

     

     

  • That's prolly because you have keyframes where you shoudn't have them:

    "DAZ Studio requires very specific keyframing, so when you've done animating, only the following should be keyframed:  Hip: translation & rotation. Rest, only rotation. Parent (example: Genesis3Female) no keyframes. If anything else is keyframed, the FBX will be distorted in DAZ Studio."

     

    About the rotation issue; Have you tried to disable the  "force front xAxis" ?

  • jari_e41bb06d70jari_e41bb06d70 Posts: 15
    edited June 2019

    Few DAZ Render setting to get decent Iray results without insane time (Under Editor):

    -Max Samples 400

    -Max path Lenght 6, if I remember correctly, this is enough to get the lashes transparent

    -Firefly filter ON

    -Nominal luminanace 400-600

    -Noise degrain filter 1

    -Noise degrain radius 7

    -Draw dome ONLY if you need to see it.

    Under Advanced:

    -Use GPU

    -Enable OptiX acceleration

    Remember to pump up your light Luminous flux to 10000-200 000 range

    If you want to look the result:

    Everything is animated in Maya, then imported to DAZ and rendered with Iray.

    Post edited by jari_e41bb06d70 on
  • TryhardTryhard Posts: 166

    That's prolly because you have keyframes where you shoudn't have them:

    "DAZ Studio requires very specific keyframing, so when you've done animating, only the following should be keyframed:  Hip: translation & rotation. Rest, only rotation. Parent (example: Genesis3Female) no keyframes. If anything else is keyframed, the FBX will be distorted in DAZ Studio."

     

    About the rotation issue; Have you tried to disable the  "force front xAxis" ?

    Haven't tried that one yet. Not that it's vital because It still transfers the animation in the end and feet sliding can be fixed in my pipeline later on with Unity's IK solutions.
Sign In or Register to comment.