FBX Exporter scripting API
The FBX Exporter package includes an API that allows you to write C# scripts and applications to handle FBX export processes based on your custom needs.
Note
While technically possible, it's not recommended to use the API for FBX import, as it wasn't designed for such a use case.
Get started
This section points out the base elements you need to know to get started with the FBX Exporter API. Example scripts and additional resources are also provided below.
Export to FBX
To export Unity GameObjects to FBX, use the ModelExporter
class.
Depending on the method, you can specify a single GameObject or a list of GameObjects to export to FBX.
Convert to FBX Prefab Variant
To convert a GameObject hierarchy to an FBX Prefab Variant, use the The ConvertToNestedPrefab
class.
Use custom export settings
To use custom export settings, create and pass an instance of ExportModelOptions
class with modified settings. If you don't pass any export settings, Unity uses default export settings.
Export FBX at runtime
By default, the FBX Exporter is Editor only and the FBX SDK bindings are not included in builds. To enable FBX export at runtime, you have to perform some Editor configuration and custom scripting.
- Include the FBX SDK bindings in the build: go to Edit > Project Settings > Player > Other Settings > Script Compilation > Scripting Define Symbols and add
FBXSDK_RUNTIME
to the list. - Script a custom exporter like in the basic example provided below.
Note
Runtime FBX export only works with 64 bit Windows, MacOS and Ubuntu standalone player builds.
Example scripts
FBX export
Use this script as an example to export GameObjects to FBX files within the Unity Editor.
using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Formats.Fbx.Exporter;
public static void ExportGameObjects(Object[] objects)
{
string filePath = Path.Combine(Application.dataPath, "MyGame.fbx");
ExportModelOptions exportSettings = new ExportModelOptions();
exportSettings.ExportFormat = ExportFormat.Binary;
exportSettings.KeepInstances = false;
// Note: If you don't pass any export settings, Unity uses the default settings.
ModelExporter.ExportObjects(filePath, objects, exportSettings);
// You can use ModelExporter.ExportObject instead of
// ModelExporter.ExportObjects to export a single GameObject.
}
FBX Prefab Variant conversion
Use this script as an example to convert a GameObject hierarchy to an FBX Prefab Variant within the Unity Editor.
using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Formats.Fbx.Exporter;
public static GameObject ConvertGameObject(GameObject go)
{
string filePath = Path.Combine(Application.dataPath, "MyObject.fbx");
string prefabPath = Path.Combine(Application.dataPath, "MyObject.prefab");
// Settings to use when exporting the FBX to convert to a prefab.
// Note: If you don't pass any export settings, Unity uses the default settings.
ConvertToPrefabVariantOptions convertSettings = new ConvertToPrefabVariantOptions();
convertSettings.ExportFormat = ExportFormat.Binary;
// Returns the prefab variant linked to an FBX file.
return ConvertToNestedPrefab.ConvertToPrefabVariant(go, fbxFullPath: filePath, prefabFullPath: prefabPath, convertOptions: convertSettings);
}
Runtime FBX exporter
Use this script as an example to export FBX at runtime.
Note
Before you move forward with this scenario, review the specific requirements and implications about using the FBX Exporter at runtime.
using Autodesk.Fbx;
using UnityEngine;
using UnityEditor;
protected void ExportScene (string fileName)
{
using(FbxManager fbxManager = FbxManager.Create ()){
// configure IO settings.
fbxManager.SetIOSettings (FbxIOSettings.Create (fbxManager, Globals.IOSROOT));
// Export the scene
using (FbxExporter exporter = FbxExporter.Create (fbxManager, "myExporter")) {
// Initialize the exporter.
bool status = exporter.Initialize (fileName, -1, fbxManager.GetIOSettings ());
// Create a new scene to export
FbxScene scene = FbxScene.Create (fbxManager, "myScene");
// Export the scene to the file.
exporter.Export (scene);
}
}
}
Additional resources
For more details about the FBX package concepts and features, refer to the user manual pages: