On testing our pipeline....I am finding that the exported FBX file (from FaceFX) contains large spikes in the rotational data on certain bones (eyelids and bottom lips in particular) The roll/flip in the bones is quite significant, but only in selected and small areas. We have faced similar problems when importing skeletal Mocap data ....And this can be simply fixed by plotting the animation in MotionBuilder (unroll filter) This, for some reason does not work with the FaceFX files (?)....and would be an issue if we intend on automating the process as much as possible (ie. I don't want to manually fix every FaceFX file we generate)
Currently, our pipeline is...
3D StudioMax (asset creation/bone posing)> FaceFX (animation creation/FBX export)> MotionBuilder (final scene creation)
So....my initial thoughts are..
-FaceFX is not exporting it's own bone data correctly.
-I am not exporting data correctly (ie....am I being stupid !! Can you? do you?... have to bake or filter the animation curves somehow in FaceFX before exporting?)
-Is there anything in our base Max asset (eg. when creating bone poses) and creating the FaceFx Actor in Max that may affect the final exported animation ? (eg. Bone values, Max Controllers etc)
Any thoughts welcome !
Cheers..
I believe this is a gimble lock issue. I have a potential fix for you to check out. When converting from FaceFX Quaternions into FBX's Euler angles, I align each quaternion with the quaternion from the prior frame. I'm hoping that will resolve things.
You mentioned over email that you found a workaround using MotionBuilders "gimble killer filter". Just wanted to post that here just in case it's useful to anyone else.
Just to follow up on the resolution of this. We were able to resolve gimble issues by aligning quaternions prior to export and running the FBX SDK's GetContinuousRotation function. We've applied a hotfix to FaceFX 2009, so this fix is available immediately to anyone who is experiencing this issue.