はじめに
株式会社 GUNCY’S による「MotionBuilderチュートリアル」シリーズの第9回。今回のテーマは、キャラクターが“手に持つ小物”を追加し、それをキャラクターの動きに合わせて追従させるための コンストレイント(constraint) の使い方です。例えばマイクや剣、杖などをモデルに持たせたいケースに応用できる内容です。
コンストレイントとは?
- コンストレイントは、あるオブジェクト(参照元)の動き(位置・回転など)を参照して、別のオブジェクト(参照先)が追従するように動作を制御する機能です。
- キャラクターが手に持つ小物の場合、手の動きが参照元(A)、小物が参照先(B)となり、小物が手の動きと同期して動くようになります。
小物を持たせる手順
- シーンの読み込み
- まず、前回の作業でリターゲット済みのシーン(例:
kaya001_retarget.fbx
)を開きます。プロット前の状態が対象。
- まず、前回の作業でリターゲット済みのシーン(例:
- 小物とノード(Null)の準備
- 円柱(Cylinder)プリミティブを使って小物を作成。
- Null ノードを2つ用意し、移動・回転ともに “0” に設定。小物(Cylinder)はこれら Null の子に配置。親子関係を構築。
- 名前変更と階層設定
- Null や Cylinder に分かりやすい名前を付ける(例:
root
/attach
/stick
など)。 - スケマティックビューで選択し、親子関係が把握しやすいよう整理。
- Null や Cylinder に分かりやすい名前を付ける(例:
- コンストレイントの追加
- Templates → Constraints → Parent/Child コンストレイントを Viewer にドラッグ&ドロップ。参照元と参照先を設定。
- 一例として、「右手首のボーン(例えば “Bip001 R Hand”)」を参照元(Parent)とし、棒を持たせたいオブジェクトを参照先(Child)として設定。
- スナップと位置調整
- コンストレイント設定で Snap ボタンなどを使って、小物が手にくっついた状態になるように位置・回転を微調整。モーションを再生し、手の動きに追従しているか確認。
- 保存
- 操作が完了したら、この状態をファイル名(例:
Kaya001_constraint.fbx
)で保存。後から参照や修正ができるようにしておく。
- 操作が完了したら、この状態をファイル名(例:
コンストレイントの種類と使い分け
- Parent/Child:位置と回転の両方を参照。今回の小物を手に持たせる用途で最も一般的。
- Position:参照元の移動のみ追随。回転は追わない。
- Rotation:回転のみ追随。位置は変化なし。
- Rigidbody:複数の参照元を持てたり、遅延や揺れなどを含めた物理的な挙動のような追従が可能。位置・回転の両方の影響を受ける。参照元が複数あれば動きが混ざる。
注意点/Tips
- 小物を“手に持たせるだけ”なら親子付け(Parent)だけでも実現は可能ですが、コンストレイントを使うと参照元や参照先を柔軟に切り替えたり、複数ケースに対応しやすくなるので応用性が高い。
- 手に持たせる小物の位置合わせは、モーションの中で手が見えるフレームを選んで調整することで自然な追従感が得られます。
- 親子関係 (Parent) とコンストレイント(Constraint)の違いを理解しておくこと。用途や動きの制御の柔軟性に違いがあります。
まとめ
- キャラクターに小物を持たせるには、Null やプリミティブで小物を用意し、正しい親子構造を作成 → コンストレイントを設定 → モーション中で位置を調整 → 保存する流れが基本。
- コンストレイントの種類を理解し、用途に応じて使い分けることで、手にもった小物が自然に追従するようになります。
- この操作はモーションキャプチャ制作において「演出の幅を広げる」実践的なテクニックであり、表現力を向上させる重要なステップです。
次回予告
次回からは、「モーションの仕上げとしてアニメーション編集」の部分に入ります。小物を持っている手の動きや持ち方をより自然にするための修正や調整の方法などが解説される予定です。お楽しみに。
👉 記事全文はこちらからご覧いただけます:
Zenn 〖MotionBuilderチュートリアル〗第9回~小物追加とセット、コンストレイントについて~