FBX rotation fix for Unity

Link, Like, Share.

Although Unity can import and work with *.blend files directly (Blenders native file format) it’s often more useful to use *.fbx (FBX), largely because they don’t include extraneous scene data that has to be dealt with. However, because both Unity’s development environment and Blender 3D use different cardinal orientations – Z Up for Blender, Y Up for Unity – exported content is often incorrectly rotated around the wrong axis; meshes that lay flat in Blender will appear standing upright for example. To fix this meshes need to be rotated prior to export in Blender.

Design note: the orientation of a selection can be changed at export in Transform settings but not reliably. The information outlined below is a fail-safe option that sets the orientation at source forcing Blender and Unity to honour rotational data baked to the FBX file.

Rotate on X

To fix Blender exported meshes being incorrected rotated in Unity, once an Object is ready for export to *.fbx, in Object Mode select and then in Object Properties [1] or Transform properties of the Sidebar (N), change the Rotation value of X to -90 degrees [2] (negative 90°), e.g. X: -90°.

Design note: changes made to rotation are irrespective of an objects orientation in the 3D Viewport; an object lying on its back or standing upright should be similarly rotated ‘backwards’.

Important: confusingly Unity also uses the location, rotation and scale of objects at time of export so they may appear correctly when dropped into the 3D View [b] but not in the Asset Browser [a] preview and/or Transform in the Inspector [c]. It’s important to address this problem so object coordinates are consistent and universal, especially in relation to the more advanced aspects of development.

Incorrect rotation in Unity
Unity will use the orientation of objects at time of export from Blender so they may appear correct in some views [b] and editors but not in others [a & c].

Rotate X axis 90 degree
Step 1: in Blender select the object prior to export and in Object Properties [1] rotate the X axis negative 90 degrees [2] in Transform properties. This rotates an object lying on its back, upright.

Apply Rotation & Scale

Once the necessary rotation value is set the object needs to be ‘fixed’ otherwise the orientation data exported to the FBX will retain the original information instead of the update. To do this, with the object still selected, from the Object menu [3] select Apply then Rotation & Scale [3] – Object » Apply » Rotation & Scale (alternatively Ctrl + A). This fixes and resets the rotational value back to 0° [4] – X now reads X: 0°. The file can then be exported to FBX and Unity.

Design note: if content needs to be edited further, once rotated and set for Unity, objects can be (re)rotated back to their original orientation (in Object Mode – they will then appear rotated on X by +90 degrees, i.e. X: 90°). Any subsequent changes to the file can then be exported without rotating again because the X value is relative to the object (local) rather than the scene (global).

Rotate for editing
If objects need to be edited they can be rotated back to their original position [d] and exported in-situ once done – the X value is relative so will export correctly orientated for Unity [e].

Apply Rotation & Scale
Step 2: once the rotation is set it needs to be fixed using Apply and Rotation & Scale [3] to reset the value back to 0 [4] with the mesh in the new orientation.

Correct rotation in Unity
Once rotation has been fixed in Blender the imported asset will then be correctly orientated in Unity, in the Inspector [5], main 3D View [6] and Asset Brower [7] (subject to yellow boxout above).

Link, Like, Share.