マガジン

キャラクターの表情差分をAIで作る:同一人物を保つ

遊びをつくる

執筆にClaudeを使用しています。

コード・絵・音を表す三つの作業領域を、中央の手と黄色い駒がつなぐ版画
記事のテーマをもとに制作したAI生成イラスト。

ビジュアルノベルやRPGのキャラクターには、通常・喜び・怒り・悲しみといった複数の表情差分が必要です。手描きなら同一人物を保つことは当然できますが、AIで生成する場合は「別人になってしまう」という問題にすぐぶつかります。顔の輪郭が変わる、目の形がずれる、髪の色が微妙に違う——これらは1枚1枚見ると許容範囲でも、会話シーンで並べると一気に破綻します。 この記事では、AIで表情差分を作るときに「同一人物を保つ」ために何を考え、どう作業するかを具体的に説明します。ツールの種類を問わず通用する考え方と、実際の手順の流れを中心に構成しています。

この記事の目次
  1. なぜ「同一人物を保つ」のが難しいのか
  2. 同一性を保つための三つのアプローチ
  3. 失敗しやすいポイントと対処
  4. 表情差分の種類と優先順位の考え方
  5. 次の行動

なぜ「同一人物を保つ」のが難しいのか

AIの画像生成モデルは、プロンプトや参照画像から「それらしい顔」を確率的に合成します。表情を変えるということは、口角・眉・目の開き方といった顔のパーツの形状を変えることですが、モデルはそれ以外の部分——目の形・鼻の高さ・顔の輪郭——も同時に微妙に変化させます。これは意図的ではなく、モデルの学習構造上避けにくい現象です。

この問題は大きく二つの場面で起きます。一つは「テキストプロンプトだけで複数枚を生成するとき」、もう一つは「img2imgやインペイントで表情だけを変えようとするとき」です。前者はそもそも同一性を担保する仕組みがないため別人になりやすく、後者は変えていいはずでない領域まで書き換えが波及します。対策はそれぞれ異なります。

同一性を保つための三つのアプローチ

1. キャラクターをモデルに「覚えさせる」

LoRAやDreamBoothといった追加学習の仕組みを使うと、特定のキャラクター造形をモデルに記憶させることができます。一度学習させれば、そのキャラクターのトークン(識別子)をプロンプトに入れるだけで顔の造形が安定し、表情の変化を指示しても別人になりにくくなります。

ただし追加学習には複数の学習用画像が必要で、Stable Diffusionの環境構築も含めると導入コストが高めです。数十枚の差分を作る予定がある本格的なプロジェクトには有効ですが、数枚だけ試したい場合には過剰な手間になります。

2. 参照画像として「顔を固定する」

追加学習なしで同一性を高める方法として、IP-AdapterやFace IDといった「参照画像の特徴を新しい画像に転写する機能」が普及しています。これらは基準となる1枚の顔画像を入力すると、生成される画像がその顔の造形を引き継ぐ仕組みです。

手順の概要は次のようになります。

  1. 「デフォルト表情」として最も満足のいく1枚を確定させ、これを基準画像にする。
  2. 基準画像をIP-Adapter(またはFace IDなどの同種の機能)に参照として渡す。
  3. プロンプトに表情の変化だけを記述し(例:smiling broadly、furrowing brows in anger)、他のキャラクター描写は基準画像に任せる。
  4. 生成結果を基準画像と並べて目視確認し、乖離が大きければ参照強度(weight)を上げる。

参照強度を上げすぎると表情の変化が弱くなり、下げすぎると別人になります。0.7〜0.9あたりを起点にして調整するのが一般的です。

3. 差分を「描き足す」ハイブリッド手法

AIの生成結果をベースにして、表情パーツだけを手描きまたは別ツールで修正する方法です。インペイント(画像の一部分だけ再生成する機能)を使って口元・眉だけを塗り直すか、ペイントソフトで直接レタッチします。

この手法の利点は、顔の輪郭・髪・服装を完全に固定した状態で表情だけを変えられることです。欠点は工数で、表情の種類が増えるほど手作業の割合が増えます。差分が4〜6種類程度で、1キャラクターを仕上げるプロジェクトには現実的な選択肢です。

失敗しやすいポイントと対処

「表情プロンプトが曖昧だと別の変化を引き起こす」 happyのような単語だけでは、AIがキャラクターの向きや姿勢まで変えることがあります。facing forward, slight smile, raised eyebrowsのように、表情の構成要素を具体的に列挙すると変化を表情に限定しやすくなります。

「複数回生成しても毎回少しずつ違う」 同じ設定で生成しても乱数(シード値)が異なれば結果は変わります。気に入った1枚が出たらシード値を記録しておき、そのシードを固定した状態で表情プロンプトだけを変えると、同一シリーズとしての統一感が高まります。ただしシードを固定しても100%同一の造形にはなりません。最終的には目視による選別が必要です。

「インペイントの境界線が目立つ」 口元だけインペイントすると、生成部分と元画像の境界に色調や線の太さの段差が出ることがあります。マスク領域を表情パーツより少し広めに取り、ブレンドを有効にして再生成すると馴染みやすくなります。それでも残る場合はペイントソフトで手動ブレンドします。

「照明・色温度が差分ごとにずれる」 表情差分はゲーム内で切り替えて表示されるため、照明の向きや色温度が枚数ごとに違うと違和感が生じます。プロンプトに照明条件(例:soft front lighting, neutral color temperature)を毎回入れるか、後処理でカラーグレーディングを統一します。

表情差分の種類と優先順位の考え方

何種類の表情差分が必要かはゲームの規模によります。最小構成として「通常・笑顔・困り顔・怒り顔」の4種があれば多くの会話シーンをカバーできます。そこに「驚き・泣き顔・照れ顔」を加えた7種が中規模ノベルゲームの目安です。

AIで作る場合、表情の変化が大きいほど同一性を保つのが難しくなります。笑顔や困り顔は口元・眉だけの変化で表現でき比較的安定しますが、泣き顔は目の形が大きく変わるため乖離が出やすいです。難度の高い表情ほど手作業の修正を前提にしておくと、作業計画が現実的になります。

差分を作る順番は、最も自然に見える「通常」表情を先に確定させ、それを基準に他の表情を派生させるのが原則です。基準が揺れると全体が揺れます。

次の行動

まず基準となる「通常表情」の1枚を生成して確定させ、その画像のシード値とプロンプトを記録してください。次にその画像をIP-Adapterや類似機能に参照として渡し、笑顔1枚を試作してみてください。基準と並べて顔の輪郭・目の形・髪色を比較し、許容できるかを判断する——この一連の流れを最初の差分1枚で体験することが、安定した量産への近道です。作り上げたゲームはHTMLまたはZIPファイルとしてアソバースに投稿できます。