👻

【MotionBuilderチュートリアル】第7回モデルデータとモーションデータを繋げる)~

2022/11/17に公開


こんにちは、株式会社GUNCY'Sの岡崎です。
前回では3Dモデルとモーションデータのキャラクタライズまでを完了させ、リターゲットの準備が整いました。以前の例え話で出ましたが、リターゲットとは役者さん(モーションデータ)にきぐるみ(3Dモデル)を着せる工程となっています。
今回はリターゲットの準備と手順、調整の方法についてを説明します。

シーンを新規作成

キャラクタライズをした3Dモデルとモーションデータを入れるためのシーンファイルを作成します。このシーンファイルを起点としてモーションのリターゲット作業を行います。

  1. MotionBuilderで何かシーンを開いている場合は画面上部のメニューからNewを選択
    シーンを新規作成します。
  2. 新規シーンを保存
    ※C:Tutorial\MBRetargetにフォルダを作成しているものとして記載します。
C:Tutorial\MBRetarget

上のパスに”Kaya_retarget.fbx”という名前で保存します。
このシーンファイルを起点としてモーションのリターゲット作業を行います。

3Dモデルデータをマージ

まず、前々回にセットアップした3Dモデルのデータをマージします。[リンク]
画面上部のメニューからMergeを選択

Kaya_001_characterize.fbxを選択(前々回でセットアップした3Dモデルデータを参照。[リンク])

Merge OptionではそのままMergeボタンをクリック(Elementの欄がすべて緑色であれば問題ありません。)

モデルがKaya_retarget内で読み込まれた事が確認できます。

モーションデータのマージ

次に、前回セットアップしたモーションデータをマージします。[リンク]

Merge OptionでAnimationの欄にフロッピーマークが以下のように表示されていれば、画面右のテイクを問題なく読み込めます。

マージを実行後、黄色いボーンが表示されていればOKです。

2つのデータをマージしましたので、それぞれセットアップしたグループとCharacterが同じシーンに2つずつ確認できます。このように、マージをすることでそれぞれのデータを1つのシーンファイルに読み込むことができます。

(Tips)スケマティックビューの整理

モデルデータとモーションデータをマージしてから一度スケマティックビューを見た時、こんな事になっていませんか?

3Dモデルデータのノードとモーションデータのノードが混線してしまっています。
これは手作業で整理することもできますが、扱うCharacterが増えた場合に手間が増えてしまいます。そんな時には以下の操作をしてみてください。
右クリック > Arrange All > Vertical(もしくはHorizontal)

実行後はこのようにノードが自動的に整理されます。

リターゲット

3Dモデルデータとモーションデータをマージできたら、ついにリターゲットです。
とは言っても、モデルを動かすだけであれば数回クリックするだけでできてしまいます。

これでもう動かせるようになりました。
以下が手順です。

  1. NavigatorのリストからKayaを選択します。

  2. リスト脇からCharacter Settingsタブで以下のように設定
    Input Type:Character
    Input Source:Motion (モーションデータのCharacter名)

  3. Activeにチェックを入れる

  4. 3DモデルのポーズがTポーズから変わることを確認

これで再生をするとモデルがモーションデータの動きをします。

Characterが3人以上いる場合のポイントは、動かしたい対象のCharacterを選択してから、誰の動きをさせるかをInput Sourceから

これで完了?

こちらは3DモデルデータとモーションデータのTポーズを並べたものです。

これら2つは同じ人型であっても、身長や腰の高さなどの違いがわかると思います。
このような体格の違いによって、リターゲット結果がモーションデータ通りの動きと差異が発生することも珍しくありません。

リターゲット後の補正

体格の違いによる差異をある程度まで補正するための設定方法を紹介します。
モーションキャプチャを触れた事がある方はキャプチャエリアとの差異の調整にも役立つ内容です。モーションデータを役者さんとして置き換えて読んでみてください。

Retargeting

Match Source

チェックを入れると3Dモデルの歩幅をモーションデータに合わせます。
たとえば、モーションデータが走り回る動きなどで原点から離れると、体格差があるほど位置に差異が生じてしまいます。モーションと比較して3Dモデルの体格に差があるほど差異は大きくなります。

そのような場合は、Match Sourceにチェックを入れると3Dモデルデータの位置がモーションデータ側に合わせられます。

Action Space Compensation

歩幅をモーションデータと比較してどれほど広げるかを設定できます。
Match Sourceにチェックが入っていない時だけ適用されます。
3Dモデル側のスケールに動きを合わせたい時の調整に有効でしょう。また、Action Space Compensation ModeをAutoに設定すれば、適度な調整が自動で行われます。

Motion Reduction


3Dモデルの動きを部位ごとに抑える設定です。パラメータを上げるほど対応する部分の動きが小さくなります。

Shoulder Reductionは肩が過剰に動いてしまう時に有効です。肩は腕を上げる動きでよく動くので、そのような動きの時に調節すると良い場合があります。

ただし、せっかく撮ったデータを削ってしまう設定なので、とりあえずで調整するより、必要になった時だけ触れる方が望ましいでしょう。

Modifiers

Floor Contacts

チェックを入れると手足の動きを床面(グリッド)の接触を考慮して計算をします。よく使用するのはFeet Floor ContactとHands Floor Contactで、それぞれ足と手が床についた時を考慮したボーンの回転をします。

動画は足の場合ですが、手も同様の動きをします。

キャラクタライズをした時、手足に緑色や紫色の点が表示されていたと思いますが、その点は手足の接地判定を定義しています。普段は自動で定義されていますが、接地位置がもしあっていなかった場合はオブジェクト同様にTransモードで調整する事ができます。

それぞれ指、手のひら、足、つま先の接触判定の有無を設定できます。

Character Controls :IKの調整

リターゲットをした後、Character ControlsのControlsタブを見ると以下のような表示がされます。(ボーンのマッピングをしていた画面はDefinitionタブ)

手首や足首などに丸がついています。この丸をクリックすると対応するボーンのIKを設定することができます。たとえば、手首の丸をクリックすると手首のボーンのIKの設定ができます。
実際の操作手順を見てみましょう。まず、前述したMatch Sourceを有効にしてあることを確認してください。
赤枠で示した丸を選択しましょう。

選択すると画面下のスライダーが有効になります。

この中のIK Blend TとIK Blend Rのスライダーを動かしてみましょう。

動画のとおり、スライダーの値を上げるほど、3Dモデルの手首の位置と回転がモーションデータの手首と一致するのがわかると思います。

この値は、Controlsタブで対応する関節の位置と回転をモーションのリターゲット元に合わせる事ができます。また、1~100の間で数値を設定できるので、50にして少しだけリターゲット元に近づける使い方も可能です。

IK Blendが有効なケース

IK Blendが設定できる関節はいくつかありますが、その中で手足など末端のIK Blendはよく使用します。
本連載でのケースとは違いますが、モーションキャプチャーで2人以上が収録されているデータを使用している場合、モデルとの体格差による手の位置のズレを役者さん同士の手の位置に合わせる事でズレを解消できます。二人がハイタッチしたり手を合わせるような動きに有効です。役者さんが手を合わせられていればモデルもIK Blendによって同様に手の位置が合うはずです。

これらの設定を調整すればある程度までのリターゲットの調整ができます。

今回のリターゲットの設定は以下のように設定しています。

  • Match Source:Off
  • 両足のIK Blend R:100
  • 両足のIK Blend T:100
  • Feet Floor Contact:On

シーンファイルを保存

リターゲットと調整ができましたら、今回の内容をKaya_retarget.fbxに上書き保存しましょう。《Ctrl+S》

今回はリターゲットの手順とその調整方法についての説明をしました。
シンプルにリターゲットをするだけでも十分な場合もありますが、それに加えてIKなどの調整も加えることで不自然な動きの解消にも繋がります。

次回

無事3Dモデルをリターゲット動かすことができました。しかし、これだけではMotionBuidlerの中でしか動かすことができません。本連載ではモーションの出力をしてUnityにインポートもしますので、リターゲット後に3Dモデル自体が動くようにする、モーションのベイクを行います。リターゲットが役者さんにきぐるみを着せる工程とするなら、モーションのベイクはきぐるみに役者さんの魂を宿す工程です。次回はその方法を説明します。
https://zenn.dev/guncys/articles/45d040e6d68ad9

モーションキャプチャーでお悩みの方は

株式会社GUNCY’Sではモーションキャプチャーの総合支援サービス"Mocap SOS"を開始しました。
モーションキャプチャーについてのご相談はぜひ弊社へお問い合わせください。
https://guncys.com/news/news-1983/
メールでのお問い合わせ:mocap_contact*guncys.com
(※記号「*」を「@」に置き換えてください。)


免責事項

  • 当記事のコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性、最新性を保証するものではありません。
  • 理由の如何に関わらず、本記事に掲載されている情報の変更・削除、および本記事の更新の中断・中止によって生じるいかなる損害についても、当社は責任を負わないものとします。
  • リンク先へのアクセス、リンク先からのダウンロード、その他の方法を通じて取得したコンテンツは、自身の裁量とリスクをもって使用されるものとします。
  • 当記事から移動された先のサイトは、当社が管理、運営するものではございません。移動先サイトで提供される情報の真偽、サービス等につきましても責任を負いませんのでご了承ください。なお、予告なしに内容が変更または廃止される場合がございます。

Discussion