riotoqll's diary

基本的に外部記憶として使います。自分用。 人に見せる用のブログはこちら→http://d.hatena.ne.jp/riotoqll8107/

【blenderエラー】with Automatic WeightsでSet Parent出来ない場合

 エラーメッセージは『failed to find solution for one or more bones』。検索してもあまり発生例がなく、解決例も少ない。レアケースなのかもしれない。海外のBBSには
・メッシュのmodifierをapplyしてからset parentしろ
と書いてあったりするけど私は既にapplyしている状態だったので原因を探してみた。結論から言うと原因がハッキリとは分からなかったので、原因究明の方法を載せておく。
*******************************************************************

 まず、Armatureとメッシュのどちらに問題があるのか調べるために、別オブジェクトで適当なCube等を作ってArmatureにSet Parentしてみた。すると下図の通り問題なく設定されたので、今回はメッシュ側に問題があると分かった。

f:id:riotoqll8107:20130415220041p:plain
↑問題なくSet ParentされたCube

メッシュの構造の一部に問題があるのだろうと考え、メッシュを適当に分割し、Set Parentしてみることにした。

f:id:riotoqll8107:20130415221008p:plain
↑上・中・下に分割 (Shortcut: P)

f:id:riotoqll8107:20130415220928p:plain

↑上部だけウェイトが適用されていない

この操作を繰り返して問題のある箇所を絞り込む。

f:id:riotoqll8107:20130415221824p:plain

f:id:riotoqll8107:20130415221827p:plain
Bone通りに動かないパーツに問題がある。

横からカット。

f:id:riotoqll8107:20130415221957p:plain

f:id:riotoqll8107:20130415222031p:plain

f:id:riotoqll8107:20130415222119p:plain

↑今回の問題とは関係ないけど背部にゴミメッシュがあったみたいだ。消しておいた。

もう大体わかったので、怪しいと思っていた箇所を修正することに。

f:id:riotoqll8107:20130415222531p:plain

↑なんでこんな構造で作ったのか忘れてしまったけれどすごく怪しい。

 

色々試した結果、これを

f:id:riotoqll8107:20130415223044p:plain

 ↓ ↓ ↓

f:id:riotoqll8107:20130415222720p:plain

こんなふうに、リボンと胸部のめり込みが無いように適当に頂点を動かしただけでエラーが出なくなった。(まあこれでは造形的に難ありだから作り方を改めた)

 原因特定のために、めり込み構造が2箇所ほどある簡便なメッシュを作って追試したがエラーは再現されなかった。これより、ウェイトをつけるための計算式の仕様上、面が複雑に交差する構造であると演算が上手く適用できないのではないかと推察する(てきとう)

*******************************************************************

分解したパーツはCtrl+Jで同一オブジェクトにした後Remove Doublesで頂点をつなげましょう。

f:id:riotoqll8107:20130415224601p:plain

 ↓ ↓ ↓

f:id:riotoqll8107:20130415224614p:plain

f:id:riotoqll8107:20130415224630p:plain

↑Ctrl+Jだけだと繋がっていないので

f:id:riotoqll8107:20130415224928p:plain

f:id:riotoqll8107:20130415224946p:plain

 ↑繋げましょう