Quantcast
Channel: 気まぐれブロマガ
Viewing all articles
Browse latest Browse all 56

[Blender] PMXエクスポーターとボーンの座標軸、IK角度制限

$
0
0


拙作PMXエクスポーターの配布動画でIK角度制限についてのコメントをいただきましたので、こちらの記事で説明します。





拙作エクスポーターでPMXを出力するとIKの角度制限が反転し、ひざが反対側に折れ曲がることがあります。

(こんな感じで)



(うぎゃああああ)

原因は、ひざボーンの座標軸が180度ロールした状態になっていて、これにIKの角度制限をしているためだと思います。

Blender上のボーンの座標軸とIKの角度制限が、おそらく下図のようになっているのではないでしょうか。

(足とひざのボーンを180度ロールさせた上で、IKの角度制限をした状態)



ご覧のとおり、これはPMX(MMD)上のグローバル+Z方向にBlenderのボーンのZ軸をあわせたものです。

残念ながら、拙作PMXエクスポーターは、このような状態のボーンの座標軸には対応していません。また、Blender同梱のFBXエクスポーターのように、ボーン座標軸の変換方法を指定することもできません(^^;

なので、拙作PMXエクスポーターを利用する前提であれば、ボーンの座標軸は、ロールが可能な限り0に近い状態にしてください。ボーンの座標軸を揃える場合、X軸かZ軸をグローバル座標軸の+方向に揃えようとするときにロールは0に近い状態になります

なお実際のところ、ボーンの座標軸がエクスポート上意味を持つのは、PMX用にローカル軸を設定するボーンとIK角度制限だけです。PMXのボーン自体は基本的にローカルの座標軸を持たず、初期状態で(MMD上の)グローバル座標軸と同じ座標軸になります。

押し出しにより一からボーンを作成していく場合、押し出しの方向がグローバル座標軸の+方向なら、自然と上記の状態になります。あえてZ軸をMMDのグローバル+Z方向に揃えようとする必要はありません(そもそも座標系が違います)。

ボーンをアペンドやインポーターなどで取り込む場合は要注意です。取り込んだボーンの座標軸が拙作エクスポーターの前提としている状態と違う場合は、座標軸を変更し、さらにIKの制限角度も直す必要があります。


ボーンの座標軸を揃える方法は簡単です。編集モードで「ロールを再計算」(Ctrl+N)です。複数のボーンを選択してまとめて実行できます。ただし、ボーンの向きによって、次のように実行します。
  • ボーンの向きがグローバル-Y方向(つまり下向き)なら、「グローバル+Y軸」
  • 上記以外のボーンは、「グローバル+Z軸」

このようにして、ひざボーンの座標軸(X軸)をBlenderのグローバル座標軸に揃え直し、かつIKの角度制限を設定した状態は、下図のようになります。



このモデルの左ひざボーン(shin.L)のロールは2.27度になっていました。図でIKの角度制限は、X軸のみ最大角度つまり正の方向に180度いっぱいまで許容し、最小角度を0度にして負の方向には曲がらないようにしています。

この状態でPMXにエクスポートした結果は下図のとおりです。



角度制限の最大値が-0.5になっているのは、拙作エクポーターの仕様です(設定ファイルで変更することができます)。角度制限の最小値にBlenderの最大角度の数値が符号を反転して入ります。

BlenderとPMXとで、角度制限の最大と最小が入れ替わってしまうのは、両者の座標系の違い(右手座標系と左手座標系の違い)により、回転の正方向が逆になっているからです。

なんだかややこしい限りですが、実際に作業してみるとそれほど難しくはありません。Blender上の角度制限を見た目通りに設定すれば、あとはエクスポーター側でPMXにあうようにこれを変換します。


ボーンの座標軸とIKの角度制限については、以上のとおりです。

なお、ボーンの座標軸はPMXのローカル軸設定にも影響します。この件については、こちらの記事を参考にしてください。


Viewing all articles
Browse latest Browse all 56

Trending Articles