Click a question to show the answer.
It works for biped characters only, the model must be in T-Pose or A-Pose. It detects the feet, legs, spine, arms, fingers position and optionally the facial bones. Depending on the character, some manual correction may be required.
The algortihm finds the vertices in the markers neighbourhood, compute the volume, position of each part, then analyze the datas to place the bone according to the standard biped proportions.
If the model is too special and does not meet these requirement, you can skip the auto-detection feature and simply place the reference bone manually.
Asymmetrical models are supported by both the smart feature and manual bones edition. By turning off Mirror when placing the markers and X-Mirror Axis when editing the reference bones:
Sure, new bones can be added after generating the final rig (Match to Rig). No reference bones can be created for the custom bones, they will remain in the final rig.
If disabling a full limb doesn't give you enough precision to disable a specific bone, hide the bones you don't need (H key) but don't delete them, it would lead to the addon malfunction. Then just delete the vertex groups of the hidden bones to make them ineffective.
To hide the IK and FK bones, delete the driver from the checkbox first:
Make sure auto-run python scripts is enabled in the preferences (Ctrl-Alt-U > File) or 'Trusted Source' when loading the file. Some dependencies such as drivers and scripts execution rely on it.
Unfortunately, there are a few cases where the binding may fail. This is due to the current limitation of the Blender automatic weight solver. Hopefully there are workarounds to get it work perfectly. Unbind the character, try one of the following, and bind again.
Enable Split Parts: Meshes made of multiple non-connected pieces (clothes, teeth, eyes...) may skin poorly/not at all if Split Parts is not enabled.
Unit scale: If the mesh is too small with a high number of vertices, binding may fail. Try to scale up the character and armature (S key, then type numpad 10 to scale ten time bigger), bind the mesh, then scale it down (S key, type numpad 0.1) to reset to the inital scale.
Coordinates are not initialized: Make sure you initialized the mesh rotation and position by pressing Ctrl-A
Non-manifold vertices : Make sure the mesh has no serious deficient topology by pressing Shift-Ctrl-Alt-M to select the non-manifold vertices. If you can see a lot of vertices selected all around the mesh (excluding boundaries), perform a 'Remove Double' by pressing W > Remove Double.
The mesh contains custom normals: Imported files (.obj, .fbx) may contain complex/dirty normal datas that the binding solver does not appreciate. Delete them and select all vertices, Ctrl-N to recalculate the normals.
Others : If it still doesn't work, as weird as it may sound, the mesh is likely subject to an unindentified internal Blender bug that can be strangely fixed by adding a subsurf modifier. Add the subsurf modifier (level 1 is fastest), bind the mesh then delete the modifier.
When using very high poly meshes (~80.000 faces) the Blender automatic weight solver may become slightly buggy on the edges...
A simple way to fix this is switching to Weight Paint mode, and add a little negative level offset to the weight groups. And if more accuracy is needed, just paint over the automatic weights.
Make sure the scene units are set to 1.0 scale. You'll be able to change it later (e.g. Unreal export) but the smart feature only works with 1.0 scale units.
Due to the an imprecision of the IK stretch calculation, Blender does not handle well big models, whose scale are multiplied by 100 when switching to Unreal Engine units. Unfortunately, after many trials, there's nothing I can do on my side (addon code) to prevent it. The bug has been reported and hopefully and will be fixed someday.
As a workaround, before clicking UE Units just make sure to scale the armature and mesh objects together so that they're not bigger than the standard grid floor, in Blender units.
Yes! Blender supports that natively.