AIアニメでキャラが崩れる — 一貫性を保つ三面図とID管理

ボブで紫の髪の子がいるとします。もう一人、似た系統のキャラクターもいるとします。

これでAIは悩みます。そして衣装が入れ替わります。

29話ぶんのAIアニメを作る中で、一番苦労したのがこれでした。キャラクターの一貫性です。

先に結論

三面図だけだと、何が起きるか

キャラクターシート(三面図)を作ること自体は、いまでも有効です。モデルがマルチモーダル化した現在でも、参照画像として効きます。

ただし三面図だけだと、同じ系統のキャラクターに引っ張られます。

冒頭の例がまさにそれで、ボブ同士でAIが悩んで、衣装が入れ替わる。スタイルが近い、身長が近い、髪型が近い——そういう条件が揃うと、色まで変わってしまうことがあります。

つまりキャラクターシートの本質は、「キャラクターの"差分"をどれだけ読み込ませられるか」なんです。似ているキャラを区別する情報が足りていないと、混ざります。

やったこと① シートに名前と身長を入れる

まず、キャラクターシートの中に、キャラクターの名前と身長を書き込みました。

マルチモーダルなモデルは、画像の中の文字も読みます。だからシートそのものに識別情報を持たせる。

身長を入れておくと、複数キャラが並ぶカットで比率が崩れにくくなります。

やったこと② カラーパレットを付ける

シートにカラーパレットをちゃんと付けます。

髪、目、肌、衣装の主要色。これを色見本として画像内に置いておく。

「紫の髪」と書くより、色そのものを見せる方が確実です。

やったこと③ JSONでIDを管理して、一緒に読ませる

そしてJSONでキャラクターIDを管理し、シートと一緒に読み込ませます。

JSONの中には、こういう情報を紐付けておきます。

こうすると、「このIDのキャラは、このシートの人物である」という対応が明示されます。

プロンプトで説明するのではなく、IDで縛る。これが一番効きました。

やったこと④ ターンアラウンドと表情差分を、4Kで1枚に

これが最近の標準形です。2種類のシートを用意します。

① キャラクターパレット 三面図+表情の寄り+カラーパレット

② 参照用シート バストアップのターンアラウンドイメージ+表情差分を、4K画質で1枚にまとめる

なぜ4Kかというと、フルHDの4倍の面積があるからです。

つまり1枚の中に、フルHDでも耐えられる画質で全身が入り、表情差分もそれなりの解像度で入る。参照画像として渡したとき、細部まで見てもらえます。

これはやってて良かったと思っています。

それでも揺れは残る

正直に書くと、揺れが完全になくなったわけではありません。

ただ、以前は本当にひどかった。スタイルが近い、身長が近い、髪型が近い——それだけで色が変わる。いまはかなり抑えられているという感覚です。

LoRAについて:たぶん、なくなっていく

「LoRAを使えばいいのでは」と思う方もいると思います。実際、LoRAが一番効くのはその通りだろうと思います。

ただ、私はキャラクターLoRAは今後なくなっていく技術ではないかと考えています。

理由は2つあります。

① 作るのに労力とスペックが必要

学習環境を用意するのが単純に大変です。RunPodのようなクラウドGPUを使う方法もありますが、接続するまでが非常に面倒でした。

一度使えるようにしても、外すとポッド自体を捨てることになり、やり直しが毎回発生する。AIスクールのカリキュラム制作で「RunPodでComfyUIを使う形を組んでくれ」と依頼されて着手したのですが、結局その方式は諦めました。

② 代替できるようになってきた

ターンアラウンドイメージなどをきちんと作れると、生成の精度がかなり上がります。 つまり、この記事で書いた方法で相当なところまで行ける。

ただし、これはキャラクターLoRAに限った話です。カメラワークや、トーン・ニュアンスを付けるLoRAは、なくならないと思っています。あれは別の役割を持っています。

まとめ

キャラが変わってしまうのは、プロンプトが悪いのではなく、区別する情報が足りていないことが多いです。