Community
FBX Forum
Welcome to Autodesk’s FBX Forums. Share your knowledge, ask questions, and explore popular FBX topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Broken FbxNode transformation after FbxSystemUnit::ConvertScene call

3 REPLIES 3
Reply
Message 1 of 4
ozz-animation
1665 Views, 3 Replies

Broken FbxNode transformation after FbxSystemUnit::ConvertScene call

Hi,

 

I've noticed a strange behavior with the use of FbxSystemUnit::Convert which, according to my tests, seems to break nodes transformations. This was noticed with FBX SDK file humanoid.fbx and reproduced in SDK ViewScene sample.

 

The import process I'm using is:

  1. Convert axis with FbxAxisSystem::ConvertScene function.
  2. Convert units with FbxSystemUnit::ConvertScene function.
  3. Iterate the FBX scene graph and extract node transformations with EvaluateGlobalTransform and EvaluateLocalTransform.

The skeleton is then rendered using the extracted transformations. The following images demonstrate the effect of calling the FbxSystemUnit::ConvertScene: 

  1. This first image shows the imported skeleton, with no FbxSystemUnit conversion. It looks as expected (except the scale of course).

    not_converted.png

  2. The next image is with a FbxSystemUnit conversion done. Some transformations are wrong, see around the shoulders for example.converted.png

This same issue can be reproduced with SDK ViewScene sample. Humanoid.fbx file is already in centimeter so the sample does no conversion by default. To reproduce the issue, simply force conversion to FbxSystemUnit::Inch for example. This gives the following result:

  1. Without conversion.view_scene_not_converted.png
  2. With Conversion.view_scene_converted.png

 

Affected joints seems to be the one with pre/post rotation (as seen in MotionBuilder). I tried to disable mConvertRrsNodes option but it has no effect.

 

I wonder to know if this is a misuse FbxSystemUnit conversion fonction? Or what could be the way to properly handle conversions?

 

Thanks,

Guillaume

ozz-animation - c++ open source 3d skeletal animation engine and tools
https://github.com/guillaumeblanc/ozz-animation
3 REPLIES 3
Message 2 of 4
Numerator
in reply to: ozz-animation

I have not had good results from ConvertScene.  I do the conversions myself.

Message 3 of 4
ozz-animation
in reply to: Numerator

Hi,

 

I decided to implement conversion by myself as I needed to bake unit and axis conversion on my data (matrices, keyframes, vertices). This works fine and solves the issue with humanoid.fbx as well.

 

I think it confirms that there's a problem with FbxSystemUnit::ConvertScene, which would be great to fix for everyone who doesn't want to dig too much into this.

 

For those who'll be interested, they'll find here the declaration of the helper object FbxSystemConverter I've implemented to handle system conversion. Implementation is available there.

 

Hope it helps,

Guillaume

ozz-animation - c++ open source 3d skeletal animation engine and tools
https://github.com/guillaumeblanc/ozz-animation
Message 4 of 4
artgolf1000
in reply to: ozz-animation

I encountered the same issues with FbxSystemUnit::ConvertScene and FbxAxisSystem::ConvertScene, both two functions have issues with a few scenes, I have to converted rotations and scaling by code, and it worked.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report