Blenderでキャラクタにリグを入れる場合、最後にボーンとキャラクタのメッシュを選んで「Ctrl+P」→「自動のウエイトで」を選択しますね。
Rigfyを使っていても、この手順は同じです。
このとき、キャラクタのメッシュが複雑だと「ボーンヒートウェイト:一つ以上のボーンで解決に失敗しました」というエラーが出ることが度々あります。英語版の場合は「Bone heat weighting: failed to find solution for one or more bones」とエラーが出ます。
度々のエラーが頻繁にエラーに変わり、だんだん鬱陶しくなってきたので、解決策をちゃんと調べてみました。
重複頂点を削除
編集モードでキャラクタの頂点をすべて選択して、「Wキー/重複頂点を削除」を選択します。これで、メッシュ中で重複している頂点を削除できます。
ボーンの拡縮を適用
オブジェクトモードでボーンを選択してから、画面下のメニュー「オブジェクト」→「適用」→「回転と拡縮」を選択してください。これを適用することでボーンの回転とスケールがリセットされます。(ただ、なぜこれでボーンヒートウエイトのエラーが直るのかはわかならい・・・・笑)
メッシュのスムージング
編集モードでキャラクタの頂点をすべて選択して、画面下のメニューから「メッシュ」→「頂点」→「頂点スムーズ」を選択してください。うまくいくことが多いですが、スムージングするため、モデルの形が崩れてしまうのが玉に瑕です・・・
法線の再計算
編集モードでキャラクタの頂点をすべて選択して、「Ctrl+N」を押してすべての面の法線方向を再計算してください。一度で法線の方向が揃わない場合は、何度か「Ctrl-N」を繰り返してみて下さい。
ちなみに、「Nキー」で表示されるプロパティパネルの「法線」の項目にチェックを入れることで、法線が表示されます。
細分化曲面モディファイアを適用する
キャラクタのモデルを選択して右側のウインドウから「追加」→「細分化曲面モディファイア」を選択してください。この細分化曲面モディファイアも、ボーンヒートウエイトのエラーには有効なことが多いです。
ただ、細分化するだけあって、頂点数がかなり増えてしまいます。そこで、増えた頂点は「ポリゴン数削減モディファイア」を使って減らしておきましょう。