生成AIをフル活用してゲームステージをつくる
画像から3Dモデルを生成するAIが進化してきてますね
こちら↓の動画は家の3Dモデルを生成したものですが現状精度はいまいちです
このように精度がいまいちなモデルを使っても画像生成AIと組み合わせることで綺麗なゲームステージを作るワークフローを構築したので紹介します!
ワークフローは下記目次のようになります
画像生成AI(Midjourney)で要素オブジェクトの画像を作成
今回はMidjourneyを使って上のような画像をそれぞれ生成しました。
※余計なオブジェクトが生成されないように必用な部分を残してトリミングしています。
この画像を使って3Dモデル生成を行います。
3D生成AI CSM で2D to 3D
今回はCSMという3D生成AIを使用します。
他にもOne-2-3-45だったりが試せます。(比較記事も作成中です)
下記WebページまたはDiscordより無料で試すことが出来ます。
※2023年8月現在負荷が高く生成に数時間程度かかります
CSMにMidjourneyで作った画像をアップロードしてGet3Dボタンを押すと数時間で3Dモデルがダウンロードできるようになります
生成された3DモデルはGLB形式でダウンロード可能ですがUnityではGLBはそのまま使えないのでBlenderにインポートしてFBXでエクスポートします
Unity上で生成した3Dモデルを配置
生成した3DモデルFBXとカメラを配置してステージを作ります
CSMで作った家、柵、木の3DモデルをUnityにインポート、シーン上で配置してカメラ位置を設定します
Unity上で3DモデルからNormal2Imgで画像生成
stable-diffusion-for-unity ではUnity上でDepth情報やNormal情報を取得して、その情報を元に3D形状にあった画像生成を行うことが出来ます(GPUが載ったPCが必用です)
今回は主にNormal2Imgで画像生成を行いました。
絵柄として色々なLoRAを適用して試してみました
LoRAの自作と適用方法は以前書いたのでこちらを見てみて下さい
今回の自作LoRAの学習にはMidjourneyで作った画像50枚(GooglePhoto)で行っています。
Unity上でプロジェクション(投影)
生成した画像をはあくまで2Dの画像なので平面です。
これをプロジェクションマッピングのように3Dに貼り付けることで遮蔽や影など3Dモデルの要素を活用することが出来ます
このProjection機能をstable-diffusion-for-unityに追加しました。使い方はこちら↓
このように3Dモデルが大まかに形状できていれば画像生成AIで見た目をカバーして衝突判定や遮蔽は3Dモデルで行うといういいとこどりのゲームステージが作成できます
その他の詳細と課題
CSMの3Dモデルについて
現状だと上記動画のように生成された3Dモデルはまだそのまま使えるレベルではありません
デモ動画の中でもよくよく見ると影が破綻している部分があったりします。
頂点数は2万~4万くらいのモデルが生成されるようで、きれいにしたければリトポロジーやスカルプトによる修正などフォトグラメトリのデータを利用するようなイメージで処理を行う必要もあるかもしれません。
ただ3D生成はどんどん進化している分野なのでこれからどんどん改善していくでしょう。
個人的には精度が気にならなくなるレベルになるまでにはまだ時間がかかると予想していますが、画像生成AIと組み合わせることで十分に使用していけるようになると考えています。
筆者が代表の株式会社Witchpotではゲーム開発に生成AIを導入するシステム・サービスを開発提供しています。
ここで紹介したような画像生成AIや3D生成だけにとどまらず生成AIxゲーム開発を幅広く検証・開発を進めています
ゲーム開発会社さんやゲームデベロッパーの方、とりあえず話だけ聞いてみたいでも結構ですのでお気軽にご連絡ください
Twitter: @nakashun_t
email: nakajima.shuntaro@witchpot.com
コミュニティ紹介
Witchpotが出すサービスを中心にゲーム開発に生成AIを活かす方法を共有するDiscordコミュニティを作っています!
興味がある方はぜひご参加ください!
まだ作ったばかりのコミュニティでアクティブにしていきたいと思っていますので是非気軽にコミュニケーションとって頂ければです!
サポートは開発・勉強用に使用させていただきます。