Uninomicon

Documenting the dark corners of the Unity Engine.

User Tools

Site Tools


fbx_importing

This is an old revision of the document!


FBX Importing

Importing FBX files in Unity with the correct scale, rotation, and axis is fraught.

Unit Scaling

FBX files seems to be in cm by default, but can support other units. Other unit scales are achieved in FBX by by setting GlobalSettings→Properties70→UnitScaleFactor property in the file. For example, a 1 meter cube in 'meters' should be stored in an fbx file like:

GlobalSettings:
  Properties70:
    UnitScaleFactor = (100.0)   # The 'unit' is 100 * 1cm 
CubeObject:
  Lcl Scaling = (1,1,1)

This file will show up in Unity's importer as '1m (File)'.

Blender

In order to achieve the above scaling (scale of 1 on objects, UnitScaleFactor=100), in the export settings set one of the following for Transform→Apply Scaling:

  • FBX Units Scale
  • FBX All

Rotation

In the FBX file format, global axis alignment is stored in the GlobalSettings:

Name: P - String("UpAxis")  String("int")  String("Integer")  String("")  I32(2)  
Name: P - String("UpAxisSign")  String("int")  String("Integer")  String("")  I32(1)  
Name: P - String("FrontAxis")  String("int")  String("Integer")  String("")  I32(1)  
Name: P - String("FrontAxisSign")  String("int")  String("Integer")  String("")  I32(1)  
Name: P - String("CoordAxis")  String("int")  String("Integer")  String("")  I32(0)  
Name: P - String("CoordAxisSign")  String("int")  String("Integer")  String("")  I32(-1)  
Name: P - String("OriginalUpAxis")  String("int")  String("Integer")  String("")  I32(-1)  
Name: P - String("OriginalUpAxisSign")  String("int")  String("Integer")  String("")  I32(1)  

In the above case:

  • UpAxis: 0,0,1 (+Z)
  • FrontAxis: 0,1,0 (+Y)
  • CoordAxis: -1,0,0 (-X)
  • OriginalUpAxis: ??? [research needed]

Blender

Instructions for Blender ~2.92

Instructions for Blender ~2.83

fbx_importing.1615770243.txt.gz · Last modified: 2021/03/15 01:04 by 73.95.178.156