見出し画像

AIで2Dゲーム用スプライトを作る #5 完

第五回。今回が最終回です。
前回は生成画像をスプライトシートにするところまでやりました。


スプライトシートが出来たので実際に動かしてみる & 感想?反省?のまとめです。


■ 作ったスプライトをGodotで動かしてみる

スプライトシートを動かすまでの流れをザックリ説明すると、以下の流れになります。

  1. 作った画像をGodotのプロジェクトにインポート

  2. AtlasTextureを作って 1 を割り当てる

  3. SpriteFramesを作って 2 を使ったパタパタアニメを組み立てる

  4. キャラクターシーンにAnimatedSprite2Dを追加、3 を設定して表示

  5. 実行時、スクリプトからどのアニメーションを再生するかを指定する

アニメーション名は "行動名-方向" みたいに
一貫したルールで付けておくとスクリプトから動かしやすい

※キャラクターを動かす方法はネット上にサンプルがいっぱい転がっていると思うのでそこは省略します

実際に動かしてみると以下のような感じです
(GIFのサイズ制限が厳しいのでX動画)

AIに作ってもらった背景を適当に貼ってみたら遠近感やら何やらがムチャクチャ... でもまあキャラクターが動くのが確認できたのでOKとしておきましょう。

プロジェクトのZIPファイルも載せておきます。需要ある...?

Godot4.7.x
- WASD or 十字キー or ゲームパッド左スティックで移動
- SHIFTキー or ゲームパッドBボタン(XBOX基準)で走る
- スペースキー or ゲームパッドAボタンでジャンプ

■ 別キャラを動かしてみる

#1 にも貼った ↑ の画像ですが、3DモデルはCivChan用のまま、リファレンス画像を変えただけだったりします。モーションはMixamoのものを無加工で。体格を合わせれば別キャラでも3Dモデルを使いまわせるのは楽ですね。

ずんだもんの頭にメイド服のカチューシャ?が付いてるのはプロンプトのコピペミスです泣

■ 感想や反省点など

今後のため思い付いたことを書き残しておきます。

▼ 全体的な感想

手探り状態だったのでとりあえず動いて良かった、というのが一番でしょうか。ComfyUIを使うのが初めてだったのもありますが、予想よりも手間が多くて大変でした。でも実際に動いているところを見ると悪くない感触ですし、もっと良く出来るという予感も感じます。

希望を言うともっとAIが進化して作業が楽になるといいなあと思います。
最近のAI界隈だと MiniMax H3 が激アツみたいですが、SCAIL-2の代わりになったりするんでしょうか… 検証する時間が欲しい。

▼ Mixamoに頼るのは反則なのでは

本当は全工程をローカルAIに任せたかったので、モーションもAIで生成するつもりでした。「AIでスプライトを作る」とか言っておきながらMixamoのモーションを使い、しかもアニメーションブレンドで動きを調整するとか... ちょっとズルいですよね。

試したのはテキストからモーション生成できる HY-MotionKimodo ですが全然うまく使いこなせませんでした。 いまのところ改善の道筋も見えてません。

そもそも人体の動きを言葉(プロンプト)で表現するのって難しくないですか...? 「歩く」「走る」は特に問題無さそうですが、「しゃなりしゃなりと歩く」「きゃぴきゃぴ走る」とかの微妙なニュアンスを言語化して動かすのがとにかく厳しい。

あとは普通の人が日常的に行わない動きも難しい気がします。
例えばドラゴンボールの「かめはめ波」。前半で両手にエネルギーを溜めて後半で一気に放出するわけですが、この動きを細かくプロンプトで指示するのは不可能だろ、、、と心が折れてしまいました。
※ Mixamoにも「かめはめ波」のモーションはありません

ChatGPTに相談しながらプロンプトを決めてHY-Motionで生成した「かめはめ波」
もうどうしたらいいんすかコレ

もしもMixamo禁止ルールでキャラクターを動かすなら..
1. 自分の動きを動画撮影

2. 動画からモーションキャプチャーするツールで3Dアニメーション化

3. ちびキャラ3Dモデルにリターゲット

が現実的かなぁ?
モーションキャプチャをローカル環境で実行できるといいけど未調査です。

▼ スプライト化(縮小化)を見越して細かいパーツは消すべき

例えば髪。この部分とか絶対要らんですよ。

服装のデザインももっとシンプルにするのが理想です。メイド服のひらひらした部分とか腰のベルト? も縮小すると見えないし。

▼ リファレンス画像に影は不要

例えば黄色く囲んだ部分、セルフシャドウ的なやつが出ている

これがあるせいなのか、キャラの向きによって服の色味が変わってしまっているような気がします (前を向いた画像のほうが明るく見える)。
腕と脚で肌の色が違うのも微妙かも。

でもこれどうやれば消せるんだろう?
画像生成時のプロンプトで行けるのかなあ

▼ アニメ風キャラに真横の顔って要る??

そもそもアニメ風キャラを真横から見ても綺麗にならない気がします。
ゲームで使うなら上下左右の4方向ではなく下図のように6方向にしたほうが表現しやすそう。

最大6方向でなんとかしたい。
真横に移動する場合でもキャラの両目が見えるほうがいいと思う (横スクロール系ゲームでも)。

▼ 背景の選定をちゃんとする

背景をキレイに消すのが意外に難しかったので、除去しやすい背景を模索しても良いかと思います。おそらく明るい室内が良い、という予想まではしているけど試してません。

▼ SCAIL-2のガチャを減らしたい

失敗例

背景が変わったり (暗いと背景除去の精度が落ちる)、顔が増えたり、謎のオブジェクトがくっついたり、尻尾が生えたり (腰のリボンが尻尾に見える?)... と色々問題が起きる事があって、1つのモーションで何度も生成したりしてました。 ComfyUIのワークフローの組み方とかパラメータとかプロンプトでどうにか出来るんじゃないかと思うけど、検証する時間が取れず…

▼ …

あと何かあったような気がするけど忘れました。

■ おわり

これにて「AIで2Dゲーム用スプライトを作る」完了です。今後も何か書きたい事が出てきたら記事にしたいと思います。
ありがとうございました。


いいなと思ったら応援しよう!