見出し画像

AI生成3DキャラをUnity上で動かすまでのワークフロー

GenerativeAIをゲーム開発に活用する方法Tipsのマガジンゲーム開発AI Lab. Witchpotに含まれる記事です
ゲームづくりを前提に書かれています

Midjourneyで作った画像をImage to 3Dの生成AIのCSM Cubeを使って3D化しUnity上でアニメーションさせるまでをまとめます

最終的には下の動画のように動きます

演出も加えたもの




Midjourney画像をImage to 3D

Midjourneyで作った画像をCSMで3D化します

インプット画像

画像をCSMで3D化した結果こんな感じになります

詳細は先日書いたのでこちらをご覧ください

追記

日本時間8/22にCSMが有料版サブスクリプションを開始しました。ここで紹介している3Dモデルは有料版に相当する学習モデルを使用しています



3Dモデルの修正・変換 Blender

追記

2023年8月20日前後にCSMのアップデートがあり、GLBの他OBJでエクスポートができるようになりました

これにより下記3Dモデルの修正・FBXに変換で記載した内容をBlender上で行わなくても直接mixamoにアップロードが可能になりました。

OBJを選択してダウンロードするとzipファイルがダウンロードされます

これを展開するとテクスチャ画像のpng、マテリアルファイルmtl、objを扱うことができます

メッシュやテクスチャーを修正したい、などの場合を除いて下記3Dモデルの修正・FBXに変換の項目は飛ばしてzipファイルをmixamoにアップロードしてください

3Dモデルの修正

CSMではGLBまたはUSDZファイルがダウンロード可能です(USDZは出たり出なかったりするのでGLBが基本)

この後の処理のMixamoやUnityではGLBのままでは扱えないためBlenderにインポートして扱えるようにします

インポート

インポートすると体積中心あたり?が原点になっているので足の位置に原点が来るように移動します。

原点位置を調整

これを行わないと後でMixamoに取り込むときに地面に埋まってしまいます

地面に埋まるパターン

続いてテクスチャの色などを自分で調整する場合はGLBのマテリアルに設定されたテクスチャをベイクして画像化します
このあたり↓を参考にして行えばできます

設定としてはBakeTypeをCombinedにLightingは切りました

Bake設定

この設定でBakeすると暗くなりがちなのでPhotoshopでトーンやコントラストの調整を行ったり調整を行います
ここでテクスチャの質が悪い部分を塗ることができるならすると良いと思われます(が、筆者はここのスキルがないため今回は調整のみとしました)

ベイク後の調整
ベイクして画像化したテクスチャ(Photoshopでトーンなど調整済み)

これで作った画像をテクスチャとして利用します

Blender ShadingでMaterialの設定

注意点としてデフォルトマテリアルがMetalicを1.0になっていたりして後で光を必要以上に反射してしまったりします
MaterialのMetalicの値を落とすなど調整したほうがよいです

Metarilのデフォルト設定
Metalicのせいで白くなってしまってる図

FBXに変換してエクスポート

Blender上でFBX形式でエクスポートします

エクスポート設定はこのような感じです
PathModeをCopyにしてその右のEmbedTextureをONにしてテクスチャ込みのエクスポートをします

Mixamoでアニメーション設定

キャラクターをアニメーションさせるのにリギング・スキニングという作業が必用ですがMixamo のAuto Riggerを使うと、これらをほぼ自動で行うことが出来ます

AutoRigger

Mixamo上でUpload CharacterからBlenderでエクスポートしたFBXをアップロードして関節位置を指定すると自動的にリギング・スキニングされます

Mixamo上で適当なアニメーションを見つけてダウンロードするとアニメーション付きFBXがダウンロードできます
これをUnityに取り込んでいきます


Unityでアニメーション適用

Import Settings

Unityにアニメーション付きFBXをインポートします
インポートしたFBXのImportSettings > Rig でAnimationをHumanoidに設定Applyします

Rig設定

同様にImportSettings > MaterialsでExtract Textures/Materialsを行います

Material設定

ImportSettings > Animation でAnimationの名前を変更。アニメーションを複数利用する場合はすべてmixamo.comだと見分けがつかなくなるため適当な名前を割り当ててください

Animation Controllerの設定

Unity上でAnimationControllerを作成しインポートしたAnimationが再生されるようにします
基本Entryから上記アニメーションに遷移するように設定

キャラクターの配置

Unityエディター上で適当な位置にFBXを配置
AnimatorのControllerで上記で作成したAniamationControllerを割り当てます

エディターで再生するとキャラクターが動くようになります


現状の欠点

ここまででワークフローの解説は完了しました
今回は3D生成AIのCSM Cubeを使って作ったキャラクターで実運用上、カメラの角度などでごまかしている部分があります

パーツの分割

このキャラクターであれば、あごひげが体と区別されていないため正面から見ると顔から髭にかけてゆがんだようにアニメーションされてしまします

メッシュの様子
正面から見たモーション

テクスチャの質

また見ての通りテクスチャの質はインプット画像と比較するとアウトプットがクオリティは下がってしまっています

左:インプット 右:アウトプット
左:インプット 右:アウトプット

自動的に改善は現状できないので手作業で修正する必要があります

これらの欠点もあるので現状、製品レベルのゲームなどで利用するにはまだ3D生成AIはクオリティが十分ではないとは思います

  • コンセプトづくりのイメージプロトタイプ作成などで利用する

  • 3Dモデリングの際にガイドとして利用する

などが今現在は現実的な利用方法かと思われます


募集

Witchpotではゲーム開発x生成AIのシステム開発や自社サービスの提供を行っています

ゲーム開発会社や個人のゲームデベロッパーの方で興味がありましたら、なんでも気軽にご連絡頂ければと思います

Twitter: @nakashun_t
メール:nakajima.shuntaro@witchpot.com

サポートは開発・勉強用に使用させていただきます。