Symptoms:
- When I import a model to Unity from other 3D applications such as 3ds Max, Maya, or Blender, the imported asset has a different axis.
- When I import an FBX file, it looks too small or too big.
- When I import an FBX file, it looks different than in other 3D applications.
Cause:
Different Axis System
Unity uses a left-handed coordinate system with a Y-up direction, while 3ds Max and Blender use a right-handed coordinate system with a Z-up direction.
Maya also uses the right-handed coordinate system by default, but with the Y axis pointing in the up direction.
If you’re interested in learning more about the left-handed or right-handed coordinate system, please see Techarthub’s blog ‘A Guide to Unity’s Coordinate System (With Practical Examples)’.
Different Unit
Unity uses 1m in units, but your model file could use different standards, such as 1mm.
Different looks
All 3D applications use different rendering systems. When importing your model to Unity, you need to use Unity’s material.
Resolution:
Different Axis System
(Unity 2020.X +)
When importing a model that uses a different axis system than Unity, in the Import Settings, check Bake Axis Conversion to convert the axis. This will help you to bake the results of axis conversion directly into your application’s asset data (for example, vertex or animation data).
If you use a Unity version older than 2020.X or want to convert the axis, you need to check the axis conversion setting from the 3D application when you export it. Please check the below links for more information:
To automate the import process or manually handle this import setting, you can implement your own script. This will help you to not worry about the export setting every time. Create a new class that inherits AssetPostProcessor(in UnityEditor namespace), and implement OnPostprocessModel API. Detailed information can be found in this manual. Also if you want to customize the import pipeline for textures, the concept is very similar to models. Please see the article, “Automating Unity3D assets import” for more information.
Different Unit
Since Unity uses 1m in units, you might have to convert the unit of imported assets. It can be changed with Scale Factor, or Convert Units option in the model tab. For more information, please see the Import Settings - Model Tab Unity docs page.
Different looks
By default, Unity automatically generates materials for your model with the Standard shader. You can generate materials via legacy mode or extract/ create materials using the Extract Materials Button. If you want to customize how Unity generates materials via scripting, choose the Import via MaterialDescription mode instead. For more details, please see the Unity manual page, ‘FBXImporter-Materials’.
Option 1) Generate materials based on the model’s material name.
Option 2) Extract materials that are embedded in your imported model.
Option3) An example of MaterialDescription.
Generally, you can express the desired effect even with default materials. However, you may want to make different visuals. In this case, you can create a custom shader with Shader Graph. Alternatively, good shaders & materials are available in the Unity Asset Store.