MMDのボーン設定
MMDのボーン設定についてまとめています。
計算順序
共通事項
MMDのボーンには計算順序があります。
https://scrapbox.io/files/662fba8c3629840024370e57.jpg
図1 計算順序
変形階層の値が小さいグループから順に処理され、そのグループ内ではインデックスの小さい順に処理されます。
つまり、.pmxでは変形階層が全て0でもインデックスの順番が正しければ問題ありません。
私はグループ分けが大好きなので、変形階層0に基本的なボーン、変形階層1にIK、変形階層2に回転+系を設定しています。
注意
親ボーンを先に計算してはいけません。エラーが出ます。
IK
IKのボーン順序は以下の通りです。.
1. Link内にあるボーン
2. IKボーン
注意
IKボーンを先に計算してはいけません。おかしな動きになります。
回転+・移動+
これらの設定はコピー先に付与します。ボーン順序は以下の通りです。
1. コピー元(付与親)ボーン
2. コピー先ボーン
注意
設定したボーンを先に計算してはいけません。付与されません。
足の構造を例とした説明
足のボーンは大きく分けて、足系ボーン、IKボーン、D系ボーンの3つあります。ここまでの内容を踏まえると計算順序は以下のようになります。
1. 足系ボーン
2. IKボーン
3. D系ボーン
IKの項目で示したように、IKを有効にするための順序は足系→IKです。D系は足系の回転をコピーしたものですから、回転+を有効にするための順序は足系→D系です。IKによって変化した足系の角度をコピーするので、IKとD系の順序はIK→D系になります。
MMDToolsでBoneOrderを変更する
MMDはBoneOrder(図1のインデックス)という概念が重要で、基本的にボーンはこの順序に沿って計算されます。ここではMMDTools v2.10.2でBoneOrderを変更する方法を紹介します。
1. 頂点0の面にボーンの頂点グループを作成(ctrl+P→With Empty Groups)
2. Armatureモディファイア名をmmd_bone_order_overrideに変更
3. MMDタブ内のMeshesSorterパネルで2.で設定したメッシュを一番上にする
UIListが使いにくいからこの仕様っぽいが、あまりにも直観的じゃ無さ過ぎるだろ……
MMDToolsでIKのTargetを指定する
BlenderとMMDのIK
BlenderとMMDはIKの設定方法が大きく異なります。
table:BlenderとMMDのIK設定の違い
Blender MMD
IK設定ボーン チェーンの一番最後 コントロールボーン
位置を合わせるボーン IK設定ボーン targetボーン(チェーンの一番最後)
適用範囲 チェーンの長さ(自身が1番目) targetボーン+link内ボーン(targetボーンのtailは曲がらない)
MMDのIKTargetをBlenderで指定する
PMXEditorのIK設定画面にはTargetを指定する項目があります。このTargetはBlenderにおけるIKのTargetとは異なるもので、設定画面がBlnederに存在しません。したがって、Blender MMDToolsでは次のように設定します。ただし、IKボーンに子があれば子が自動的にTargetになります。
1. Targetに指定するボーンにBoneConstraintでDampedTrackを追加し、名前をmmd_ik_target_overrideに変更
2. Targetでターゲットアーマチュアを指定し、BoneでIKが設定されているボーンを指定(ここで指定したボーンのTargetになります)
3. Influenceを0にして、有効の目のマークを閉じた状態にします(無効にします)