Limitations when importing from other applications
Exporting from other applications
Importing skinned Meshes
Unity supports importing skinned Meshes from any tool that supports the FBX format.
Bone influence
For performance reasons, Unity supports linear blend skinningThe process of binding bone joints to the vertices of a character’s mesh or ‘skin’. Performed with an external tool, such as Blender or Autodesk Maya. More info
See in Glossary with a default of four influences per vertex maximum. If your character uses more than four, follow these instructions when you import the Model into Unity:
- From the Rig tab of the Import Settings window, select Custom from the Skin Weights drop-down menu. Two new properties appear under the Skin Weights drop-down menu.
- Set the maximum number of bones you want to use as influence in the Max Bones/Vertex property.
- You can also adjust the Min Bone Weight property as an optimization. This is the threshold that Unity uses to determine whether it should include a bone’s position when calculating influence. If a bone barely contributes to the influence, you can save some resources by not including it in the calculations.
Note: If you choose to keep the default maximum and you have a MeshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info
See in Glossary with more than four influences, the animation may appear choppy or distorted. Or if you are using deformation other than clusters, the animation may be completely absent. To resolve this, bake the deformation jointsA physics component allowing a dynamic connection between rigidbodies, usually allowing some degree of movement such as a hinge. More info
See in Glossary before exporting the Model from your 3D modeling software.
Normals and tangents
On mobile devices, Unity handles skinning on the CPU with hand-coded NEON/VFP assembly. However, normals and tangents are not normalized, so if you are writing your own ShadersA small script that contains the mathematical calculations and algorithms for calculating the Color of each pixel rendered, based on the lighting input and the Material configuration. More info
See in Glossary, you should handle the normalization yourself. However, if you are using Surface ShadersUnity’s code generation approach that makes it much easier to write lit shaders than using low level vertex/pixel shader programs. More info
See in Glossary, Unity automatically handles the normalization.
Sorting and optimized Meshes
Optimized Meshes sort bones differently from non-optimized Meshes, and this results in potentially significant animation problems. This is because non-optimized Meshes rely on bone order to animate, while optimized Meshes use the bone names and do not rely on bone order.
If you import the FBX file and use it, Unity takes care of the order of the transforms.
If you are using the Scripting API and you want to change SkinnedMeshRenderer.sharedMesh:
- In “non-optimized” mode, you need to match the SkinnedMeshRenderer.bones to SkinnedMeshRenderer.sharedMesh in a strict way. The referenced Transforms should be there in the correct order.
- In optimized mode, the renderingThe process of drawing graphics to the screen (or to a render texture). By default, the main camera in Unity renders its view to the screen. More info
See in Glossary works as long as the avatarAn interface for retargeting animation from one rig to another. More info
See in Glossary has the referenced bones. In this case, SkinnedMeshRenderer.bones is always empty.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thanks for helping to make the Unity documentation better!
Limitations when importing from other applications
Exporting from other applications