MayaクイックリグでリギングしたキャラクターをUnrealEngine5に実装する方法

バージョン情報

今回の記事は長くなります!
MayaのクイックリグとUnreal Engineの互換性の検証がメインになります。なるべくだれでもわかるように、自分でも後で思い出せるように順を追って説明してみました。良いと思ったら是非X(旧Twitter)のフォローをお願いします。

  1. 1.Mayaクイックリグで段階的にリギングする
    1. ●モデルの準備
    2. ●クイックリグツールを使う
    3. ●スキニング後のボーンの追加(余談)
  2. 2.Unreal Engineにモデルデータを読み込む
    1. ●Mayaからモデルデータのエクスポート
    2. ●UnrealEngineを立ち上げる
    3. ●データを読み込む
  3. 3.モデルデータのセットアップをおこなう
    1. ●マテリアルのセットアップ
    2. ●テクスチャの明るさを調節する
  4. 4.IKリグを設定する
    1. ●IKリグの作成
    2. ●チェーンの作成
    3. ●ソルバの作成・IK目標の作成
  5. 5.IKリターゲッタを設定する
    1. ●IKリターゲッタの作成
  6. 6.アニメーションBPを複製・セッティングする
    1. ●アニメーションBPを複製する
    2. ●アニメーションBPのリネーム
  7. 7.ブループリントクラスのセッティング
    1. ●ブループリントクラスの書き換え
    2. ●シーンで動作確認
  8. 8.微修正と今後の展望
    1. ●位置の微修正
    2. ●着地モーションの微修正
    3. ●今後の展望
    4. ●記事作成にあたり参考にさせていただいたサイト

1.Mayaクイックリグで段階的にリギングする

●モデルの準備

まずはクリーンなキャラクターモデルを用意します。条件の参考に情報をまとめておきます。

●クイックリグツールを使う

リギングメニューに切り替え、メニューバーのスケルトン内、クイックリグをクリックします。クイックリグウィンドウが開きます。

クイックリグウィンドウ上部の選択肢を「段階的」に切り替えます。
そして「キャラクタ」と記載がある部分に新規のリグを作成したいため、「」アイコンをクリックして新しいキャラクタを作成します。

QuickRigCharacterというキャラクタが作成されます。

次に、クイックリグのウィンドウの手順を1から順に進めていきます。

リギングしたいモデルのメッシュデータを選択(グループの選択でもOK)し、「1)ジオメトリ」の「」をクリックします。ジオメトリがクイックリグのウィンドウに追加されます。

2)ガイド」の「作成/更新」をクリックします。ボーンを入れるためのガイドが配置されます。この記事で詳しくは扱いませんが、ガイドの位置をできるだけ骨格的に正しい位置に配置することでリギング結果の精度が変わります。「3)ガイドのユーザ調整」の各ツールを使うことでガイド配置の助けになります。

参考までに私が配置したガイド位置を載せておきます(下の画像)。

クイックリグのウィンドウに話を戻し、「4)スケルトンとリグの作成」の「作成/更新」をクリックします。配置したガイドの情報に合わせてスケルトンとリグが自動作成されます。腕や足にIKの設定が自動的に入ります。

まだバインド(スキニング)が行われていません。

ここで注意が必要ですが、追加のボーンを配置するなら今が良いです。スキニング後に追加することも可能ですが、手順が若干面倒になります

ボーンの追加例として髪に一本ボーンを追加してみました。
※後で消すため同じように進める必要は無く、例として追加しています。

ボーンを追加する場合はアウトライナから「QuickRigCharacter_References」の中を確認すると自動生成されたボーンがあるので、その中に追加ボーンは移動させます。例えば、頭の先にボーンを追加する場合は「…._Head」のボーンの下の階層に移動させます。

次にスキニングに移ります。「5)スキニング」の「作成/更新」をクリックします。ジオメトリの情報に対してスケルトンがバインドされ、スキニングが自動的に完了します。

気にしておくべき点としては、修正内容によってバインド(スキニング)を解除したいタイミングが来ることもあるかと思います。その場合はクイックリグのウィンドウの「5)スキニング」の「作成/更新」の右横にあるごみ箱アイコンをクリックすることで解除します

スケルトンやガイドの段階をやり直したい場合も同様で機能の右横のごみ箱アイコンをクリックして戻るようにします。

リグを動かしたり、ボーンを回転させたりするとリギングできていることが確認できます。

ここからスキニングの調整を行っていく必要がありますが、スキニング作業は長くなるので割愛します。

クイックリグ「段階的」のやりかたについてまとめますが、とにかくクイックリグウィンドウの上から順に作成していくことと、ボーンの追加タイミングはスキニングの前ということを押さえておきましょう。

以上で一旦Mayaシーンデータを保存します。

●スキニング後のボーンの追加(余談)

ここから少し余談になりますが、スキニングの後にボーンを追加したくなった場合については、以下の手順を踏みます。

追加のボーンを配置します。アウトライナで階層構造は正しい位置に移動しておきます。指のボーンの場合はHandのボーンの下の階層です。

追加したいボーンをすべて選択(親だけでなく子まですべて)し、追加でジオメトリを選択します。メニューバーの「スキン」の中の「影響を編集」、「インフルエンスの追加」を実行します。

スキンウェイトペイントツールを起動し、ウェイトの調整を追加でおこないます。

私の場合はスキンウェイトペイントツールで大ざっぱにペイントしたらすぐにコンポーネントエディタ(ウィンドウ)を立ち上げて数値調整します。その方が結果的にクリーンなウェイト調整ができることが多いです。

また、ウェイト調整を行った後は念のため必要なオブジェクトすべて(ひとつずつ)にスキンウェイトのミラーを実行します。

以上、クイックリグの段階的にリギングをする方法でした。

2.Unreal Engineにモデルデータを読み込む

●Mayaからモデルデータのエクスポート

まずはMayaでおこなう最後の手続きです。

ジオメトリデータとボーンデータをエクスポートします。

リギングをおこなったジオメトリのグループを選択、追加でクイックリグの「_Reference」と書かれたグループ(ロケータ)を選択します。

ファイル」内から「ゲームエクスポータ」をクリックします。

ゲームエクスポータウィンドウが立ち上がるので確認します。基本はデフォルトの設定ですが、アニメーションの書き出しは必要ないので「アニメーション」のチェックは外しておきます。そして保存先になるパスを指定、ファイル名を記入して書き出しを実行します。

FBX形式でジオメトリデータとボーンデータが一緒になったデータが書き出されます。

●UnrealEngineを立ち上げる

プロジェクトブラウザでは「ゲーム」カテゴリの「サードパーソン」を選択します。プロジェクト名は任意の名前を入れて、作成をクリックします。

名前を付けて現行レベルを保存…」を実行します。

保存ウィンドウが立ち上がるので、コンテンツフォルダ内に「Levels」をフォルダを新規に作成した後、Levelsフォルダの中に現行レベルを保存します。こちらも名前は任意で保存を実行します。

●データを読み込む

コンテンツブラウザに素材を読み込みます。コンテンツブラウザが表示されていない場合は「Ctrl + Space」キーで開きます。コンテンツブラウザではコンテンツフォルダ内に新規フォルダを作成、「〇〇_Assets」とリネームします。その中に素材を入れていきましょう。

作成しておいたアセットフォルダの中に、テクスチャをドラッグアンドドロップで読み込みます。今回は下記5つの種類のテクスチャを準備しておきました。

次にFBX形式で書き出しておいたモデルデータをインポートします。アセットフォルダに対して追加でOKです。

モデルデータのインポートに関してはFBXインポートオプションが開きます。主に気にしておく項目は以下です。

以上確認して、全てインポートを実行します。

データがインポートされます。

シーン上に「スケルタルメッシュ」をドラッグアンドドロップすると、用意しておいたモデルデータがシーンに配置されます。

3.モデルデータのセットアップをおこなう

●マテリアルのセットアップ

まずテクスチャが外れてしまっているマテリアルからセットアップしていきます。

コンテンツブラウザにFBXを読み込んだ際に同時にインポートされたマテリアルがあります。このマテリアルをダブルクリックします。

マテリアルグラフのウィンドウが開くので、このウィンドウでコンテンツブラウザを「Ctrl + Space」で開き、テクスチャをマテリアルグラフにドラッグアンドドロップします。

各テクスチャがマテリアルグラフ内に表示されます。

各テクスチャをマテリアルのインプットに向けて接続していきます。

さらに、スペキュラに対しては数値を接続します。

マテリアルグラフ内で「1」キーを押したままクリックすると数値ノードが作成されます。スペキュラの強さを任意に変えられますが、今回は0.45という数値にしています。

以上でマテリアルの設定が終わったので、マテリアルウィンドウ左上の「保存」を実行します。

シーン内のモデルを確認すると、少しテクスチャが明るい印象になってしまいました。これは調整ができます。

●テクスチャの明るさを調節する

コンテンツブラウザのBaseColorテクスチャをダブルクリックします。

テクスチャウィンドウが開くので、アジャストメントプルダウンのRGB Curveの数値を2.0程度まで上げます。できたらウィンドウ左上の保存を実行します。

明るすぎたベースカラーテクスチャが矯正できました。

コンテンツブラウザ内のアセットフォルダの中は結果的に上の画像のようになりました。モデルのセッティングは以上です。

4.IKリグを設定する

●IKリグの作成

次にIKリグを作成して動かせる状態にする準備をおこないます。

コンテンツブラウザで右クリック、アニメーションカテゴリ内の「IKリグ」を新規に作成します。

スケルタルメッシュを選択」というポップアップが出るので、インポートしたモデル名のスケルタルメッシュを選択します。

作成されたIKリグは自身でわかりやすいようにリネームしておきます。

●チェーンの作成

IKリグをダブルクリックしてエディタを開きます。

先に考え方を説明しますが、Unreal Engine上に既に作成されているアセットモデルのIK構造と同じにしていきたいです。下の画像がアセットモデルのIK構造ですが、かなり多くのセッティングが必要だということがわかります。全て合わせると考えると足りないボーンなども出きて現実的ではありません。そのため、アセットモデルのIK構造の中で重要なIK構造部分だけをピックアップして模倣できればOKです。

では、今回セッティングする重要なIK構造部分は以下です。

チェーンはエディタ右下のIKリターゲッティングウィンドウで作成します。

+ 新しいチェーンを追加する」を押して、「チェーン名」と「開始ボーン」と「終了ボーン」をそれぞれ①~⑦に従って記入していきます。

上の画像が全てセッティングした後の状態になります。

●ソルバの作成・IK目標の作成

次に新規ソルバを作成します。ソルバはエディタ左下のソルバスタックウィンドウで作成します。

+ 新規ソルバを追加」を押します。

プルダウンの選択肢は「フルボディIK」を選びます。

フルボディIKとチェーンを紐づけていきます。

階層ウィンドウでボーンの構造を確認できます。この一覧からつま先(右・左)と手(右・左)のボーンに対して、IK目標を作成します。該当するボーンを左クリックし、「IK目標の新規作成」をクリックします。

そうすると、立方体の黄色いボックス(IK目標)が作成され、上の画像のような状態になります。次に紐づけ作業です。

IKリターゲッティングウィンドウの「IK目標」の欄に対して、該当するチェーンとIK目標を一致させます。

以上の設定が終わったら、エディタ左上の「保存」を押してからウィンドウを閉じます。

5.IKリターゲッタを設定する

●IKリターゲッタの作成

コンテンツブラウザに戻ります。

コンテンツブラウザで新規に「IKリターゲッタ」を作成します。

アニメーションをコピーする元のIKリグを選択」というポップアップでは「IK_Mannequin」を指定します。マネキンのモーションを自身のモデルに移植していきたいためです。

わかりやすい名前にリネームしておきます。新しく作成されたIKリターゲッタをダブルクリックしてエディタを開きます。

はじめはマネキンモデルのみが映っている状態だと思います。2か所変更します。

以上変更するとプレビュー画面に自身のモデルも表示されます。エディタ左上の「保存」を実行してウィンドウを閉じましょう。

6.アニメーションBPを複製・セッティングする

●アニメーションBPを複製する

コンテンツブラウザ左側のツリーからManequinsフォルダのAnimationsフォルダにアクセスし、「ABP_Quinn」を複製します。

ABP_Quinn」を右クリックします。

アニメーションアセットのリターゲティング」の「アニメーションブループリントを複製してリターゲティング」をクリックします。

アニメーションアセットを複製しリターゲット」のポップアップが開くので、「IK リターゲッタ」を自身で作成したIKリターゲッタに指定します。「ソーススケルタルメッシュ」を「SKM_Quinn」に、「ターゲットスケルタルメッシュ」を自身のスケルタルメッシュに指定します。

ポップアップ右下の方に「フォルダ」という箇所がありますが、「変更」を押してフォルダ指定をします。保存パスを自身のデータを格納しているフォルダに指定しておきます。

以上確認して「リターゲット」を実行します。

コンテンツブラウザで保存先のフォルダを確認すると、様々なアニメーションデータやアニメーションBPが複製で作成されました。

●アニメーションBPのリネーム

複製で作成されたアニメーションBPは複製前と同名が付いていてわかりづらいので、リネームします。

ABP_Quinn」を右クリック、「名前変更」をおこないます。

任意の名前でOKですが、後で名前を検索するのでわかりやすい名前にしておきます。

7.ブループリントクラスのセッティング

●ブループリントクラスの書き換え

コンテンツブラウザ内、ThirdPersonフォルダのBlueprintsフォルダを開きます。

BP_ThirdPersonCharacter」をダブルクリックでウィンドウを開きます。

立ち上がるウィンドウの中で、「ビューポート」をクリックしてビューポートを表示します。

次に左端のコンポーネントウィンドウの中に「Mesh (……)」があります。これをクリックします。右端の詳細ウィンドウを確認します。

詳細ウィンドウで変更箇所は2か所です。

そうすると、自動的にマテリアルプルダウン内「エレメント」も変更され、自身のモデルのマテリアルが入ります。

以上で一旦設定完了です。また微調整する際に戻ってくることがありますが、現段階で設定すべき点は以上です。

このブループリントクラスのエディタは「保存」と「コンパイル」の両方を実行したうえで、ウィンドウを閉じます。

●シーンで動作確認

以上の手続きで、ミスが無ければシーン上で動かすことが可能です。
※ソフトウェアのバージョン違いによる変更なども無ければ。

Unreal Engineメニュー下の再生マークをクリックします。

WASD・Space・マウス操作で基本モーションがモデルに反映されます。

操作モードを終了するにはESCキーです。

ここまでのシーンはすべて保存しておきましょう。

細かい点ですが、アニメーションやテクスチャがバラバラ散在するのが嫌だったのでフォルダ分けをしておきました。これで再度保存しておきます。

8.微修正と今後の展望

●位置の微修正

このまま記事を終わりたかったのですが、キャラクターが若干地面から浮いているのと、ジャンプ後の着地で地面にベターンとなることが気になってしまったので、その部分だけ付け焼刃な修正をしたいと思います。

ブループリントクラスのウィンドウを開き、コンポーネントウィンドウでMeshを選択した後、詳細ウィンドウ内を確認します。

トランスフォームプルダウン内の「位置」という項目がキャラクターの高さを調節できるため、上下方向に当たるZ軸方向の数値を微調整しました(-93.0に変更)。

これでおよそ地面の高さと足裏が一致しました。

●着地モーションの微修正

次にジャンプ後の着地です。下の画像のように地面に明らかに横になってしまうモーションとなっているため、モーションの修正が必要そうです。

コンテンツブラウザから着地モーションに該当するアニメーションシーケンス「MM_Land」をダブルクリックします。

エディタで開くと横になって地面に埋まってしまっていることがわかります。

画面左の「アセット詳細」ウィンドウ内を確認します。

ルートモーション」プルダウン内、「Force Root Lock」のチェックを外します。

アニメーションの向きが正しい方向になりました。保存してウィンドウを閉じます。

これが正しい修正方法かはわかりませんが、今回の記事のメインではないためここまでとしたいと思います。

●今後の展望

今回はオリジナルキャラのリギングからゲームエンジン実装までの流れを最もシンプルな方法で記事にしてみました。各ソフトウェアのバージョンによって操作方法や機能もアップデートされていくため、一時的なものにはなるかと思いますが、一人でも多くの初学者の助けになれば幸いです。

参考になった方やご質問などある方は、X(旧Twitter)のリンクを貼っておきましたので、ぜひフォローをよろしくお願いします。

●記事作成にあたり参考にさせていただいたサイト

https://toshihiko-kato.com/?p=4676

https://tech.spark-creative.co.jp/entry/2022/12/12/141506

https://yoshikawastudio.com/human-ik-unreal-engene/

“MayaクイックリグでリギングしたキャラクターをUnrealEngine5に実装する方法” への1件のコメント

rostonrutkin1997 への返信 コメントをキャンセル