AIゲーム開発研究室
第7回 Tripoでリギングとアニメーションを検証する
AIゲーム開発研究室
3Dモデル制作ドキュメント
第7回 Tripoでリギングとアニメーションを検証する
研究代表 大川 博
主任研究員 Arc(ChatGPT)
はじめに
前回までの検証によって、パンタのAポーズ4面図から3Dモデルを生成し、さらにゲーム利用を想定した軽量モデルまで制作することができた。
今回は、この3Dパンタを実際に動かす段階へ進む。
使用するのは、Aポーズ4面図から生成したCタイプのパンタである。
今回検証するのは、
Tripoでリギングできるのか。
そのリグを使用してアニメーションできるのか。
アニメーションを含めてBlenderへ持ち出せるのか。
そして、
TripoのAIによってオリジナルアクションを制作できるのか。
という点である。
結果として、Tripoのリギングとプリセットアニメーションについては実用につながる成果を得ることができた。
一方、AIによるオリジナルアクション生成については、現段階ではゲーム制作に使用することが難しいという結果になった。
1 前回のAuto Rig実験
以前、パンタの公式4面図をTripoのMulti-viewへ入力し、3Dモデルを生成する実験を行った。
このときの目的は、
4方向から描いたキャラクター設定画を使用することで、パンタのデザインを維持した3Dモデルを生成できるのか
を確認することだった。
そのため、この4面図はリギングを目的として制作したものではない。
パンタは自然な立ち姿で、両腕を曲げ、リュックのベルトを持っていた。
3Dモデル生成後、TripoにAuto Rig機能があることから、このモデルにも試験的にリギングを行ってみた。
すると、リギング用に制作したモデルではないにもかかわらず、Humanoidの骨格そのものは生成された。
そこでさらに、Tripoのプリセットアニメーション dance_02 を適用してみた。
しかし、このときはモデルが正常に動くことを確認できなかった。
つまり前回の段階では、
Auto Rigによって骨格を生成することはできた。
しかし、
その骨格を使用してTripo上で実際にアニメーションできるかどうかは確認できなかった。
という状態で実験を終えていた。
【画像①配置 旧パンタモデルにAuto Rigを行った画面】
画像説明:腕を曲げてリュックのベルトを持った旧パンタへAuto Rigを実行した状態。骨格そのものは生成されたが、プリセットアニメーションの正常な動作は確認できなかった。
2 今回はAポーズモデルを使用する
今回は、本格的にリギングとアニメーションを検証するため、Aポーズ4面図から生成したパンタを使用した。
TポーズやAポーズのように、腕と胴体を離した状態からリギングを行うことは、3Dキャラクター制作では基本的な方法である。
前回のような、腕を曲げてリュックのベルトを持ったモデルへAuto Rigを行うこと自体が、通常とは異なる追加実験だった。
今回は通常の制作工程へ戻り、腕と胴体の間に空間を持つAポーズモデルを使用する。
使用したのは、前回までの比較実験で制作したCタイプである。
【画像②配置 Tripo上のCタイプ・Aポーズモデル】
画像説明:今回リギングとアニメーションの検証に使用したCタイプのパンタ。Aポーズ4面図から生成している。
3 TripoでAuto Rigを実行する
Tripoの「アニメイト」からAuto Rigを実行した。
リグには、
v1.0 ― Humanoid
を使用した。
処理が完了すると、パンタの内部に骨格が生成された。
胴体、腕、脚だけでなく、手の部分にも複数のボーンが配置されていることを確認できた。
パンタは人間とは大きく異なる体形をしている。
それでもTripoはHumanoidとして骨格を生成することができた。
【画像③配置 AポーズパンタのAuto Rig完了画面】
画像説明:CタイプのパンタへHumanoid Auto Rigを実行した状態。全身に骨格が生成されている。
【画像④配置 手・指部分のボーンを確認した画面】
画像説明:パンタの手部分にも複数のボーンが生成されていることを確認した。
ここでまず、
Tripoだけでパンタのリギングを行える
ことを確認できた。
4 前回動かなかったダンスが動いた
次に、Tripoのプリセットアニメーションを適用した。
ここで重要なのは、前回の実験で正常な動作を確認できなかった dance_02 である。
今回、同じ dance_02 をAポーズモデルへ適用した。
すると、パンタは正常にダンスを始めた。
さらに dance_04 など、複数のプリセットアニメーションを試したが、いずれもパンタへ反映された。
【画像⑤配置 dance_02を適用したパンタ】
画像説明:前回は正常な動作を確認できなかったdance_02が、今回のAポーズモデルでは実際に動作した。
【画像⑥配置 dance_04で両腕を上げたパンタ】
画像説明:dance_04を適用した状態。腕や胴体を大きく動かすアニメーションも実行できた。
これによって、
Auto Rigで骨格を生成できるだけでなく、その骨格を使用してTripoのプリセットアニメーションを実際に再生できる
ことが確認できた。
一方、両腕を大きく上げた際には、脇部分が引っ張られて広がるような変形も見られた。
また、リュックはパンタの背中と一体化した形状として生成されているため、胴体を大きくねじるとリュックとの境界部分も一緒に変形する。
これらは今後、モデルのパーツ分割やウェイト調整を検討する必要がある部分である。
5 アニメーションをFBXへ書き出す
次に、Tripoで動かしたアニメーションをBlenderへ持ち出せるかを検証した。
最初のエクスポートでは、FBXにアーマチュアは含まれていたものの、BlenderのAction Editorにはアニメーションが存在しなかった。
ここで再度Tripoのエクスポート画面を確認した。
すると、
「アニメーションの数」
という項目が表示された。
この項目を開くと、それまでに使用したアニメーションが一覧表示された。
さらに、アニメーションは一つだけではなく、複数選択できることが分かった。
【画像⑦配置 「アニメーションの数」が表示されたエクスポート画面】
画像説明:FBXのエクスポート設定。アニメーションを選択する項目が表示されている。
【画像⑧配置 複数アニメーションの選択画面】
画像説明:Tripo上で使用した複数のアニメーションから、FBXへ含めるものを選択できる。
実験として、
dance_02
front_kick_02
flip
の3種類を選択した。
エクスポート画面には、
アニメーションの数 3
と表示された。
【画像⑨配置 3種類のアニメーションを選択したエクスポート画面】
画像説明:3種類のプリセットアニメーションを選択した状態。この状態からFBXを出力した。
6 Blenderで3つのActionを確認する
出力したFBXをBlenderへ読み込んだ。
Action Editorを確認すると、
dance_02
flip
front_kick_02
の3つが、それぞれ独立したActionとして存在していた。
【画像⑩配置 BlenderのAction Editorに3アクションが表示された画面】
画像説明:Tripoで選択した3種類のアニメーションが、Blenderで個別のActionとして認識されている。
これによって、
Tripoでは複数のアニメーションを一つのFBXファイルへ格納し、Blenderへ受け渡せる
ことが実際に確認できた。
なお、Tripoを終了し、PCを再起動した後に再び確認したところ、生成・使用したアニメーション候補そのものは残っていた。
一方、FBXへ含めるためのアニメーション選択は解除されていた。
そのため、エクスポートする際には、必要なアニメーションをその都度選択する必要があると考えられる。
7 AIでオリジナルアクションを作る
次に、Tripoの、
「自分だけのアニメーションを作る」
機能を検証した。
これは、文章でキャラクターの動きを指示し、AIによって新しいアニメーションを生成する機能である。
画面には時計のアイコンと数値「5」が表示されていた。
当初、この「5」が何を意味するのか明確ではなかった。
そこで設定を変更せず、実際にアニメーションを生成して確認することにした。
【画像⑪配置 オリジナルアニメーション生成画面】
画像説明:文章で動きを指定するAIアニメーション生成画面。時計アイコン横の数値を5として生成した。
8 最初の「喜び」アクション
最初は、パンタが両手を上げて喜ぶ動作を文章で指示した。
生成そのものには成功した。
しかし、実際の動作は腕を上げて下ろす程度の単純なものになった。
さらに、腕を動かした際に手の部分が不自然にねじれる現象も確認された。
パンタには人間のような明確な手首形状がないため、人型骨格の手首回転がそのまま適用されたことも原因の一つと考えられる。
【画像⑫配置 最初に生成した「喜び」アニメーション】
画像説明:AIによって生成した最初のオリジナルアクション。動きが単純で、手部分にも不自然な変形が見られた。
9 「3回ジャンプ」を生成する
次に、より明確な動作としてジャンプを指定した。
最初は複数の動きを含む指示を与えたが、ジャンプそのものが正常に生成されなかった。
そこで指示を単純化し、
「その場で3回ジャンプする。」
とした。
するとAIは、膝を曲げ、腕を動かし、3回ジャンプしようとする動作を生成した。
しかし、
パンタの足は地面から離れなかった。
つまり、3回の「ジャンプ動作」は生成されたが、実際の跳躍にはなっていなかった。
【画像⑬配置 「その場で3回ジャンプする」の生成結果】
画像説明:AIは3回ジャンプするような身体動作を生成したが、パンタの足は地面から離れなかった。
10 5秒=120フレーム=24fpsを確認する
生成されたオリジナルアニメーションをFBXへ含め、Blenderで確認した。
Tripo上では、生成されたアニメーションの再生時間が約5秒となっていた。
Blenderでは、このアニメーションが、
1~120フレーム
として読み込まれた。
したがって、
120フレーム ÷ 5秒 = 24fps
となる。
これによって、AIアニメーション生成画面に表示されていた「5」は、今回の実験では5秒のアニメーション時間を指定していることが確認できた。
【画像⑭配置 Blenderで120フレームを確認した画面】
画像説明:Tripoで5秒として生成したAIアニメーションが、Blenderでは120フレームとして読み込まれている。
11 AIアニメーションの内部データを確認する
Blenderでさらにアニメーション内部を調べた。
Tripoから出力されたアーマチュアには、
mixamorig:Hips
をはじめとする mixamorig: の名称を持つボーンが使用されていた。
各ボーンのアニメーションを見ると、ほぼすべてのフレームにキーフレームが記録されている。
つまり、Tripoで生成されたモーションは、各ボーンの動きとして細かくベイクされた状態でFBXへ出力されている。
【画像⑮配置 右上腕ボーンの全フレームにキーが並んでいる画面】
画像説明:mixamorig:RightArmを選択した状態。120フレームにわたって細かくキーフレームが記録されている。
「その場で3回ジャンプする」について mixamorig:Hips の位置も確認した。
Hipsには細かな位置変化が存在した。
しかし、その移動量はパンタを地面から明確に浮かせるほど大きなものではなかった。
Blender上で内部データを確認しても、
ジャンプの動作は作られているが、実際にはジャンプしていない
ことが確認できた。
【画像⑯配置 3回ジャンプのmixamorig:HipsをGraph Editorで確認した画面】
画像説明:3回ジャンプのHips位置データ。位置変化は存在するが、実際の跳躍に必要な移動量にはなっていない。
12 「まっすぐ前に走る」を生成する
ジャンプでは十分な位置移動が生成されなかった。
そこで、AIがキャラクターそのものの移動を生成できるのかを確認するため、さらに単純な指示を与えた。
「まっすぐ前に走る。」
である。
生成結果を見ると、パンタは確かに前方へ移動した。
しかし、
走ってはいなかった。
動作は明らかに歩行だった。
【画像⑰配置 「まっすぐ前に走る」の生成結果】
画像説明:「走る」と指示したAIアニメーション。パンタは前方へ移動したが、動作そのものは歩行になった。
これは重要な結果だった。
AIは「前へ移動する」という意味は反映している。
しかし、「走る」という運動そのものを正確に生成できていない。
13 前進移動はHipsに記録されていた
「まっすぐ前に走る」のFBXをBlenderへ読み込み、mixamorig:Hips の位置データを確認した。
すると、Hipsには明確な前進移動が記録されていた。
つまりTripoのAIアニメーションは、キャラクターの位置移動そのものを生成できないわけではない。
【画像⑱配置 「まっすぐ前に走る」のHips位置カーブ】
画像説明:mixamorig:Hipsの位置データ。前進に対応する大きな位置変化が記録されている。
今回のデータでは、Graph Editor上で大きく変化している位置成分はXであった。
一方、Blenderの3Dビュー上ではパンタは−Y方向へ前進している。
この違いは、FBXの座標変換やボーンのローカル座標系との関係によるものと考えられる。
ただし今回の目的で重要なのは、
AIによって生成されたアニメーションに、実際の前進移動データが含まれている
という点である。
14 AIオリジナルアクションはゲーム制作に使えるのか
今回、複数の文章指示からオリジナルアニメーションを生成した。
その結果、
「喜ぶ」
動きが単純で、手部分に不自然なねじれが発生した。
「その場で3回ジャンプする」
3回ジャンプしようとする身体動作は生成したが、足は地面から離れなかった。
「まっすぐ前に走る」
前進移動は生成したが、実際の動作は歩行になった。
つまりAIは、文章の意味を完全に無視しているわけではない。
指示された動作の特徴をある程度捉え、身体運動や位置移動として反映している。
しかし、ゲームアニメーションでは、
走るなら走る。
ジャンプするなら地面から離れる。
という基本的な動作の正確さが必要になる。
今回の検証では、その精度を得ることができなかった。
したがって、
現時点のTripo AIアニメーションによるオリジナルアクション生成は、パンタのゲーム用アニメーション制作には実用できない
と判断した。
15 今回の検証で分かったこと
今回の実験によって、Tripoのリギングとアニメーションについて、できることとできないことがかなり明確になった。
まず、
Aポーズから生成したパンタへAuto Rigを行うことができた。
さらに、
生成したリグへTripoのプリセットアニメーションを適用し、実際にパンタを動かすことができた。
そして、
複数のプリセットアニメーションを一つのFBXへ格納し、Blenderで個別のActionとして使用できた。
ここまでは、実際のゲーム制作につながる機能として利用できる。
一方、AIによるオリジナルアクション生成については、
アニメーションデータそのものは生成できる。
位置移動も生成できる。
FBXへ書き出すこともできる。
しかし、
指示した動作をゲームで使用できる精度で再現できなかった。
まとめ
今回の検証によって、Tripoは単に3Dモデルを生成するだけのAIではなく、
3Dモデル生成
↓
Auto Rig
↓
プリセットアニメーション適用
↓
複数アニメーションの選択
↓
アニメーション付きFBX出力
↓
Blenderへの受け渡し
までを、一つの制作環境の中で行えることが確認できた。
特に、前回の実験ではAuto Rigによる骨格生成までしか確認できなかったが、今回は同じ dance_02 を実際にパンタへ適用し、正常に動作させることができた。
さらに複数のアニメーションを一つのFBXへ格納し、Blenderでそれぞれを独立したActionとして確認できたことは、ゲームキャラクター制作を考える上で大きな成果である。
一方、AIによるオリジナルアクション生成については異なる結果となった。
AIは「ジャンプ」「走る」といった言葉をある程度理解し、それに対応する身体運動を生成している。
しかし、
ジャンプしても地面から離れない。
走らせても歩く。
という結果では、ゲーム用アニメーションとしてそのまま採用することはできない。
今回の検証では、
TripoのAuto Rigとプリセットアニメーションは利用できる。
しかし、
AIによるオリジナルアクション生成は、現時点ではパンタのゲーム制作には実用できない。
という明確な違いが確認された。
次の段階では、Tripoだけですべてを完成させることにこだわる必要はない。
Tripoで生成したパンタモデルとリグを利用しながら、必要に応じてBlenderやMixamoなどを組み合わせ、
実際にゲームで使用できるアニメーション制作工程
を検討していく。
また今回、FBXでエクスポートしたモデルでは、以前のOBJによる検証とは異なるテクスチャ構成が確認された。
この問題については今回のリギング・アニメーション検証とは分け、改めて検証することとする。
