おもちゃラボ

Unityで遊びを作ってます

【Blender】ボーンヒートウエイトのエラーが出たときに試す5つの解決策

Blenderでキャラクタにリグを入れる場合、最後にボーンとキャラクタのメッシュを選んで「Ctrl+P」→「自動のウエイトで」を選択しますね。

nn-hokuson.hatenablog.com

Rigfyを使っていても、この手順は同じです。

nn-hokuson.hatenablog.com

このとき、キャラクタのメッシュが複雑だと「ボーンヒートウェイト:一つ以上のボーンで解決に失敗しました」というエラーが出ることが度々あります。英語版の場合は「Bone heat weighting: failed to find solution for one or more bones」とエラーが出ます。

f:id:nn_hokuson:20170830194353p:plain:w400

度々のエラーが頻繁にエラーに変わり、だんだん鬱陶しくなってきたので、解決策をちゃんと調べてみました。

重複頂点を削除

編集モードでキャラクタの頂点をすべて選択して、「Wキー/重複頂点を削除」を選択します。これで、メッシュ中で重複している頂点を削除できます。

f:id:nn_hokuson:20170830194409p:plain:w220

ボーンの拡縮を適用

オブジェクトモードでボーンを選択してから、画面下のメニュー「オブジェクト」→「適用」→「回転と拡縮」を選択してください。これを適用することでボーンの回転とスケールがリセットされます。(ただ、なぜこれでボーンヒートウエイトのエラーが直るのかはわかならい・・・・笑)

f:id:nn_hokuson:20170830194428p:plain:w400

メッシュのスムージング

編集モードでキャラクタの頂点をすべて選択して、画面下のメニューから「メッシュ」→「頂点」→「頂点スムーズ」を選択してください。うまくいくことが多いですが、スムージングするため、モデルの形が崩れてしまうのが玉に瑕です・・・

f:id:nn_hokuson:20170830194444p:plain:w400

法線の再計算

編集モードでキャラクタの頂点をすべて選択して、「Ctrl+N」を押してすべての面の法線方向を再計算してください。一度で法線の方向が揃わない場合は、何度か「Ctrl-N」を繰り返してみて下さい。

ちなみに、「Nキー」で表示されるプロパティパネルの「法線」の項目にチェックを入れることで、法線が表示されます。

f:id:nn_hokuson:20170830195441j:plain:w600

細分化曲面モディファイアを適用する

キャラクタのモデルを選択して右側のウインドウから「追加」→「細分化曲面モディファイア」を選択してください。この細分化曲面モディファイアも、ボーンヒートウエイトのエラーには有効なことが多いです。

f:id:nn_hokuson:20170830194537p:plain:w250

ただ、細分化するだけあって、頂点数がかなり増えてしまいます。そこで、増えた頂点は「ポリゴン数削減モディファイア」を使って減らしておきましょう。