AIゲーム開発研究室
第11回 TripoからMixamo、そしてUnityへ
AIゲーム開発研究室
3Dモデル制作ドキュメント
第11回 TripoからMixamo、そしてUnityへ
― AI生成3Dモデルのアニメーション工程をつなぐ ―
研究代表 大川 博
主任研究員 Arc(ChatGPT)
はじめに
これまでの検証では、Tripoによる3Dモデル生成、軽量化、Auto Rig、Blenderへの受け渡し、FBXの座標軸など、ゲームで使用する3Dキャラクターを制作するための工程を一つずつ確認してきた。
しかし、大きな問題が残っていた。
Tripoで生成したパンタを、実際にゲームで動かせるところまで持っていけるのか。
今回は、この問題を確認するため、Tripoから出力したパンタをBlenderへ読み込み、Mixamoでアニメーションを設定し、再びBlenderへ戻す実験を行った。
さらに、Mixamoを経由することで失われたマテリアル表現を復元し、Unity上でアニメーションを再生できるところまで確認した。
結果として、
Tripo → Blender → Mixamo → Blender → Unity
という一連の制作工程を実際につなぐことができた。
1.TripoのBlenderタイプとMixamoタイプを比較する
最初に、Tripoから出力できるBlenderタイプとMixamoタイプの違いを確認した。
AタイプのパンタをBlenderタイプで出力し、Blenderへ読み込んだ。
アーマチュアを確認すると、パンタのモデル内部に骨格が配置されていることが分かる。
【画像1:AタイプをBlenderタイプで出力し、Blenderでアーマチュアを表示した画面】
続いて、CタイプのパンタをMixamoタイプで出力し、Blenderへ読み込んだ。
アーマチュアそのものは同様に存在していたが、オブジェクト側を確認すると、X軸回転に90°が設定されていた。
【画像2:CタイプをMixamoタイプで出力し、BlenderでX軸回転90°を確認した画面】
この比較によって、TripoのBlenderタイプとMixamoタイプでは、出力時の座標系の扱いに違いがあることが確認できた。
以後の実験では、CタイプのMixamoタイプ出力を使用することにした。
2.マテリアルを残したままMixamoへ渡す
CタイプをBlenderへ読み込むと、パンタにはTripoで生成されたマテリアルとテクスチャが設定されている。
【画像3:Cタイプのマテリアルとノード構成を表示したBlender画面】
当初の実験では、Mixamoへアップロードするためにマテリアルを削除していた。
しかし、マテリアルそのものを削除する必要があるのかを再検証した。
そこで今回は、マテリアルを残したまま、画像テクスチャなどからPrincipled BSDFへ接続されているノードの接続を切った。
パンタは白いモデルとして表示される。
【画像4:マテリアルを残し、テクスチャ等のノード接続を切った状態】
この状態からFBXとして書き出した。
今回はすでにMixamoタイプとして座標変換されたモデルを使用しているため、前回行ったような追加の軸変換は行わず、そのままFBXとして出力した。
3.Mixamoへのアップロードに成功
Blenderから出力したFBXをMixamoへアップロードした。
結果は成功した。
パンタはMixamo上でキャラクターとして正常に読み込まれた。
【画像5:MixamoのAUTO-RIGGERにCタイプのパンタが読み込まれた画面】
この結果から、今回のモデルでは、
マテリアルそのものを削除しなくても、ノードの接続を切ることでMixamoへ受け渡せる
ことが確認できた。
これは後でマテリアルを復元することを考えると重要な結果である。
4.Mixamoでパンタにアニメーションを設定する
次に、Mixamo上でパンタへアニメーションを設定した。
Mixamoのアニメーション一覧から動作を選択すると、パンタ自身がその場でアニメーションすることを確認できた。
【画像6:Mixamo上でパンタにHip Hop Dancingを適用した画面】
これまで静止した3Dモデルとして扱ってきたパンタが、Mixamo上で実際に動き始めた。
Tripoで生成したモデルとAuto Rigによる骨格を使って、Mixamoのモーションを適用できることが確認できた。
5.パンタ付きのアニメーションFBXを書き出す
Mixamoからアニメーションをダウンロードする。
今回は、
Format:FBX Binary (.fbx)
Skin:With Skin
として、パンタ本体を含んだ状態で書き出した。
【画像7:MixamoのDOWNLOAD SETTINGS画面】
ダウンロードしたFBXを、新しいBlenderデータとして読み込んだ。
アクションエディターを確認すると、多数のキーフレームが生成されている。
実際にタイムラインを再生すると、Mixamoで設定したアニメーションがBlender上でも再現された。
【画像8:Mixamoから戻したパンタのアニメーションをBlenderで再生している画面】
これによって、
Tripo → Blender → Mixamo → Blender
というアニメーションの往復工程が成立した。
6.失われたマテリアルを復元する
Mixamoから戻したパンタにはマテリアル自体は残っていた。
しかし、BlenderからMixamoへ送る前に切ったテクスチャ等のノード構成は戻っておらず、パンタは白い状態で表示された。
そこで、Mixamoへ送る前の元のCタイプのBlenderファイルから、マテリアルをAppendすることにした。
【画像9:元のCタイプのBlenderファイルからマテリアルをAppendしている画面】
Appendした元のマテリアルを、Mixamoから戻ったパンタへ設定する。
すると、パンタの色、毛並み、リュック、スカーフなどの表示を復元することができた。
【画像10:マテリアル復元後、アニメーションしているパンタ】
この結果は重要である。
Mixamoへの受け渡しのためにマテリアルの情報が失われた場合でも、元のBlenderデータを保存しておけば、マテリアルを後から戻せることが実際に確認できた。
今回の方法であれば、マテリアルそのものを削除してMixamoへ送った場合についても、同様の方法で復元できる可能性がある。
7.別のアニメーションも適用する
さらに別のアニメーションでも確認した。
Mixamoで別の動作をパンタへ設定し、再びパンタ付きのFBXとして書き出した。
Blenderへ読み込むと、新しいアニメーションも正常に再生された。
【画像11:別のMixamoアニメーションをパンタへ適用した画面】
【画像12:別のアニメーションをBlender上で再生しているパンタ】
これにより、一つのアニメーションだけが偶然動いたのではなく、Mixamoから異なるアニメーションをパンタへ適用できることも確認できた。
8.アニメーションだけを持ってくる方法も試す
ここで別の方法も実験した。
パンタではなく、Mixamo上の別キャラクターにアニメーションを設定し、キャラクターモデルを含めず、アニメーションだけを出力した。
【画像13:Mixamo上で別キャラクターにJoyful Jumpを設定した画面】
このFBXをBlenderへ読み込み、アーマチュアを確認した。
このデータでは、
X軸回転:90°
Scale:0.01
となっていた。
【画像14:Animation Onlyで出力したFBXのアーマチュアをBlenderで確認した画面】
このアクションをパンタ側へAppendして適用する実験を行った。
しかし、今回の方法ではアニメーションをパンタへ正常に再現することはできなかった。
したがって現段階では、
Mixamoから別キャラクター用のアニメーションだけを取得し、Blenderで単純にパンタへAppendすれば使用できるわけではない
ことが分かった。
Scale 0.01やX軸90°という違いも確認されたが、これだけが原因なのか、座標変換、アーマチュア、ボーン構造など別の要因が関係しているのかは、今回の実験だけでは断定しない。
9.Unityでもパンタが動いた
前段階の検証では、Mixamoでアニメーションを設定したパンタのFBXをUnityへ読み込み、Unity上でもアニメーションが再生されることを確認した。
【画像15:Unity上でMixamoアニメーションを再生しているパンタ】
これによって、今回確認した工程はBlender内だけで完結するものではなく、最終的にゲームエンジンまでつながることが確認できた。
つまり、
Tripo
↓
Blender
↓
Mixamo
↓
Blender
↓
Unity
という制作経路が実際に成立したことになる。
10.残った問題 ― 手の捻れ
一方で、アニメーションを確認すると、パンタの手首から手先付近に不自然な捻れが見られた。
全身のアニメーションそのものは成立しているが、手の変形には問題が残っている。
原因としては、Tripoで自動生成されたアーマチュアの手首付近のボーン方向やウェイト、あるいはMixamoの人型アニメーションとの互換性などが考えられる。
ただし、現段階では原因を断定しない。
今回の目的は、Tripoで生成したパンタをMixamoへ渡し、アニメーションを設定してゲーム制作工程へ戻せるかを確認することである。
手の捻れについては、今後のリグ調整の検証課題として残すことにした。
【画像16:アニメーション時に手の捻れが確認できるパンタ】
11.今回の検証で分かったこと
今回の実験によって、これまで個別に検証してきた工程が初めて一つにつながった。
Tripoで生成した3Dモデルは、Blenderを経由してMixamoへ受け渡すことができた。
Mixamoではパンタ自身にアニメーションを適用でき、そのデータを再びBlenderへ戻して再生することができた。
失われたマテリアル表現についても、元のBlenderファイルからマテリアルをAppendすることで復元できた。
そして、アニメーションを持ったパンタをUnityへ読み込み、実際に動かすこともできた。
一方で、別キャラクターからアニメーションだけを持ってくる方法では、そのままでは正常に再現できなかった。
また、手の捻れというリグ上の問題も残っている。
すべてが解決したわけではない。
しかし今回、
AIによって生成した3Dキャラクターを、アニメーションさせ、ゲームエンジンまで持っていくための基本経路
を実制作によって確認することができた。
まとめ
これまでの検証では、モデル生成、ポリゴン数、軽量化、Auto Rig、FBX、座標軸、マテリアルなど、一つひとつの問題を個別に調べてきた。
それらは、それぞれ必要な検証ではあった。
しかし最終的に必要なのは、個々の技術が存在することではない。
それらをつないで、実際にゲームで使えるキャラクターを作れることである。
今回、その工程が初めて一本につながった。
Tripoで作る。
Blenderで受け渡す。
Mixamoで動きを与える。
Blenderへ戻してマテリアルを復元する。
Unityで動かす。
第9回以前から残っていた大きな問題の一つに、ここで実制作による答えを出すことができた。
まだ手の捻れなどの課題は残っている。
しかし、パンタはもう静止した3Dモデルではない。
AIによって生まれたパンタが、ゲームの中で動き始めた。
