6
$\begingroup$

I have an object, that always result in a "Bone Heat Weighting Failed" error when I try to set parents with automatic weights.

What I tried as a fix so far:

  • It's only one lose part.
  • Just using a single bone.
  • Making sure scale of bone is applied.
  • Making sure bone is inside mesh.
  • Making sure they have the same origin.
  • Remove doubles in mesh.
  • Check normals.
  • Applied modifiers.
  • Checked vertex groups, UV maps.

Can someone with some rigging experience quickly take a look at the .blend file and help me out?

http://pasteall.org/blend/index.php?id=51166

$\endgroup$
3

4 Answers 4

14
$\begingroup$

The solution is to scale up your object, parent, then scale back down (if you want to). I gave it a quick test with a single bone, which failed at default size, but worked after scaling both objects by a factor of 10.

The reason this works is because the automatic weighting system has a hard time with vertices that are very close together. Scaling up spreads everything out, making it easier to calculate.

$\endgroup$
3
  • $\begingroup$ wow this worked for me..I dont understand why but I scaled it up automatic weights worked and than scaled it back boom $\endgroup$ Sep 6, 2020 at 6:36
  • 2
    $\begingroup$ you are my savior from the past!! This works finally!! Thanks!! $\endgroup$ Sep 11, 2020 at 7:43
  • $\begingroup$ Honestly this seemed like a hoodoo magic solution to me, except for the fact it worked when everything else didn't. $\endgroup$
    – Joehot200
    May 4, 2021 at 11:54
2
$\begingroup$

If you apply a Decimate>>Un-Subdivide>>2 Iterations modifier on this mesh the rigging will work and it will preserve the topology. If you want you can apply a subdivison surface modifier after it for the same resolution.

$\endgroup$
2
$\begingroup$

I tried scaling up the model delete duplicates recalculate normals and deleted vertex groups of the armature it worked

$\endgroup$
0
$\begingroup$

Here's another solution for slower computers: Parent it "manually".

Not exactly easy. But when I tried some of the above solutions, my computer was suddenly way too slow to pose the armature. Parenting it manually fixes this issue tho.

  • In edit mode, manually select some vertices nearby a bone. (for the object you want to parent to an armature)
  • Don't parent anything yet.
  • add these vertices to a vertex group.
  • name this vertex group exactly the same as the bone they're near.
  • do this for other vertices nearby other bones.
  • now parent the object to armature with envelope weights. Not automatic weights.
  • Now it's somewhat rigged. It may require more tweaking.

Yeah, it's not perfect. But this method let's me pose the object without major lag. I only had to do this for hair, so it wasn't too much work.

Edit: Before I manually parented it, I applied a decimate modifier using the planar option (8 degrees). This allowed me to reduce vertices without reducing quality, whereas the un-subdivide method immediately made it look too low-poly.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .