Inside Sabertooth
Learn how Sabertooth uses 3ds Max to create 3D interactive projects, including HBO Go’s Game of Thrones interactive experience
  • 1/3
You are here: Forum Home / Autodesk® FBX® / FBX SDK / Wrong evaluation of different coordinate systems
  RSS 2.0 ATOM  

Wrong evaluation of different coordinate systems
Rate this thread
 
49126
 
Permlink of this thread  
avatar
  • DP007
  • Posted: 05 November 2010 03:10 AM
  • Total Posts: 17
  • Joined: 16 July 2010 07:06 AM

Hey guys,

I’ve got some problems with the fbx sdk when importing scenes with different coordinate systems. For example Maya uses a righthanded and Max a lefthanded coordinate system. If I export the same scene from both packages as fbx with y-up I expected the exported fbxs to be almost the same. For the transformations this is true since they are converted by the exporter. But what about the vertices and normals and stuff like that? In Max a vertex with position (0,0,1) is exported as (0,0,1) although I defined Y to be the up axis (in my opinion this should be exported as (0,1,0)). Is this the common way of exporting scenes in Max as fbx? I think it doesn’t make sense to double check the coordinate system in my app since the scene should be converted already.
Any suggestions?

Thanks in advance.



Replies: 0
avatar

Hi, DP007, we got an FAQ now and it happens to be able to answer your question :)

2.2 Why doesn’t ConvertScene() modify any vertices?
The ConvertScene() functions do not change vertex values. But simply apply a rotation/scale to imitate Axis or unit conversion.
There are 2 ConvertScene() functions.
KFbxAxisSystem::ConvertScene() acts on the node transforms (pre-rotation) and animations.
KFbxSystemUnit::ConvertScene() acts on the node transforms (scale) and animations.
Of course, if the scene is already in the required axis system or required unit system, ConvertScene() does not change anything. For example:
- If the scene is already in the MayaZUp axis system, the code
KFbxAxisSystem::MayaZUp.ConvertScene(scene);
will not change anything.
- If the scene units is already centimeters, the code
KFbxSystemUnit::cm.ConvertScene(scene);
will not change anything.

BTW: both May and Max are right-handed, just Maya is Y-up, Max is Z-up.



Jiayang Xu
Maya Data Platform
Autodesk

Replies: 2
/img/forum/dark/default_avatar.png

SO how do you get a MAX mesh in ZUP into global YUP coords using convertscene??

Author: normalblock8byteslong

Replied: 10 November 2010 09:21 PM  
/userdata/avatar/vx3501hqr_small.jpg

As stated above, apply a rotation to the Mesh.
“ KFbxAxisSystem::ConvertScene() acts on the node transforms (pre-rotation) and animations”

Author: Jiayang Xu

Replied: 11 November 2010 06:57 PM