EdyJ / blender-to-unity-fbx-exporter

FBX exporter addon for Blender compatible with Unity's coordinate and scaling system.
MIT License
1.01k stars 105 forks source link

Blender To Unity FBX Exporter

FBX exporter add-on for Blender 3.0+ compatible with Unity's coordinate and scaling system. Exported FBX files are imported into Unity with the correct rotations and scales.

How to install

  1. Clone the repository or download the add-on file blender-to-unity-fbx-exporter.py to your device.
  2. In Blender go to Edit > Preferences > Add-ons, then use the Install… button and use the File Browser to select the add-on file.
  3. Enable the add-on by checking the enable checkbox.

Blender To Unity FBX Exporter Add-On

How to use

File > Export > Unity FBX (.fbx)

Exports all Empty, Mesh and Armature objects in the current scene except those in excluded collections. The full hierarchy is properly preserved and exported, including local positions and rotations.

Blender To Unity FBX Exporter Menu

The File Browser exposes selection and armature options:

Blender To Unity FBX Exporter Options

How it works

The exporter modifies the objects in the Blender scene right before exporting the FBX file, then reverts the modifications afterwards.

Every object to be exported receives a rotation of +90 degrees around the X axis in their transform without actually modifying the visual pose of its geometry and children. This is done in the root objects, then recursively propagated to their children (as they inherit a -90 rotation after transforming their parent). The modified scene is then exported to FBX using Blender's built-in FBX exporter with the proper options applied. Finally the scene is restored to the state before the modifications.

When Unity imports the FBX file all objects receive a rotation of -90 degrees in the X axis to preserve their visual pose. As the objects in the FBX already have a rotation of X+90 then the undesired rotation is canceled and everything gets imported correctly.

Why not use the "Experimental - Apply Transform" option of the default FBX Exporter?

This option doesn't work with object hierarchies of more than 2 levels. Objects beyond the 2nd level keep receiving unwanted rotation and scaling when imported into Unity.

Why not use the "Bake Axis Conversion" option in the Unity Import Settings?

Doesn't seem to work properly with Blender-generated FBX.

Why not import the .blend file directly in the Unity project?

Requires Blender to be installed in the system, so:

Known issues

Tested and working:

About the author

Angel "Edy" Garcia
@VehiclePhysics
https://vehiclephysics.com