見出し画像

VRAM 4GBではじめるStable Diffusion - ゲーム素材を作ろう5 キャラクター画像の生成

 この草稿は、VRAM 4GB環境下で『Stable Diffusion』を利用して、ローカルでの画像生成をするためのものです。生成する画像はファンタジー系の同人ゲーム/インディーゲームの画像素材です。この草稿は、2023年の2月下旬~3月上旬にかけて執筆されました。

 草稿をまとめて大幅増補したものを電子書籍で出しました。VRAMがなくても、Google Colabでも大丈夫なように対応しています。『Kindle Unlimited』ユーザーの方は無料で読めます。是非読んでください。

 この草稿では『Stable Diffusion』の簡単な解説をおこない、『AUTOMATIC1111版 Stable Diffusion web UI』の導入や使い方について説明します。また「背景」「キャラクター」「アイテム」「絵地図」「UI部品」といった画像素材の作成方法を説明します。

 この草稿は、私が2022~2023年に、同人ゲーム『Little Land War SRPG』を開発した時の知見を中心にまとめたものです。こちらも購入して遊んでいただけると幸いです。


本章の概要

 本章では「キャラクター画像の生成」を扱います。

 ゲーム用のキャラクター顔画像の生成や、ポーズを付ける方法、細部の指定方法について触れます。

 以下、本章の目次です。

  • キャラクター画像の生成について

  • キャラクターの顔画像を何種類も作る

  • キャラクターにポーズを付ける

    • 3Dのポーズ人形を使う

    • img2imgで画像を生成

  • キャラクターに情報を付け加える

  • 実際のゲームでのキャラクターの作成


キャラクター画像の生成について

 ゲームのキャラクター画像の使い方には、いくつか種類があります。1つはRPGやSRPGの顔画像のように、同じ画像を変化させずに使い回す方法です。もう1つはノベルゲームのように、同一のキャラクターに様々な演技をさせる方法です。

 画像AIは基本的に、ランダムなノイズをもとに画像を作っていく道具なので、異なる種類の画像を生成するのに向いています。そのため、キャラクターの顔画像を何種類も作る、前者の方向性は得意です。逆に、同一のキャラクターの画像のバリエーションを作るのは苦手です。

 後者をおこなうには、特定のキャラクターの特徴を学習させて、それに沿った画像を出力させる必要があります。この作業をおこなうには、最低でも6GBのVRAM環境が必要です。

 残念ながら私の環境は4GBなので、実行してもしばらくするとメモリー不足でエラーが出ます。こちらは別の章で『Google Colab』を利用して学習する方法を示します。

 学習ではなく学習済みモデルの利用自体は、VRAM 4GBでも問題なくおこなえます。

 ポーズについては2023年2月の半ばに出た『ControlNet』が有用です。ポーズ人形の画像などをもとに、そのポーズの画像を出力できます。こちらはVRAM 4GB環境でも使えます。こちらも別の章で解説します。


キャラクターの顔画像を何種類も作る

 ゲーム用に顔のアップ画像を多数作るのは、AIが苦手な「手」を含めなくてよいので有効な方法です。この場合には、まず標準となるキャラクターを作ります。その際に絵柄をコントロールするフレーズを多く入れます。また視点も入れて固定視点の画像を作るようにします。そしてキャラクターの部分だけフレーズを差し替えていきます。

 それでは実際に画像を作成してみましょう。2次元絵のキャラクターを作るので、学習モデルは「derrida_final.ckpt」を選択します。以下の呪文の「one fantasy kawaii cute girl, teenage, little girl,」の部分が描画対象になります。その他の部分は絵柄や視点を統一するための呪文です。こうした呪文の単語や順番、重み付けは、選択する学習モデルによって変わります。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.2), (oil painting:1.1),
(face closeup photo:1.5), (portrait:1.5),
one fantasy kawaii cute girl,
teenage, little girl,
beautiful perfect symmetrical face,
small nose and mouth, aesthetic eyes,
sharp focus, realism, 8k,
(style of granblue fantasy:1.1),
(style of genshin impact:0.9),
(style of renaissance:0.7),
(style of gothic:0.6),
(style of high fantasy:0.5),
artstation, deviantart, pixiv ranking 1st,
bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, missing fingers,  bad hands, missing arms, long neck, Humpbacked, shadow, flat shading, flat color, grayscale, black&white, monochrome, 

 以下は実際に出力した画像です。似たような構図の、似たような画像が生成されています。

 各フレーズの順番や、重み付けによって、出力される画像の絵柄は変わります。4枚ずつ出力して、ある程度望む絵柄が構築できたら、キャラクターのバリエーションを作っていきます。それでは次に、描画対象を「one middle age muscle man, fantasy fighter, full armor costume,」に換えて画像を生成します。以下は呪文です。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.2), (oil painting:1.1),
(face closeup photo:1.5), (portrait:1.5),
one middle age muscle man,
fantasy fighter,
full armor costume,
beautiful perfect symmetrical face,
small nose and mouth, aesthetic eyes,
sharp focus, realism, 8k,
(style of granblue fantasy:1.1),
(style of genshin impact:0.9),
(style of renaissance:0.7),
(style of gothic:0.6),
(style of high fantasy:0.5),
artstation, deviantart, pixiv ranking 1st,

 以下は実際に出力した画像です。絵柄と構図は同じままで、描画対象が変わっているのが分かります。

 モンスターを作る場合も、同様に差し替えていきます。モンスターの場合は、名前を入れても、そのものズバリの姿が出てこないことがあります。その場合は、そのモンスターの特徴を挙げていき、画像を生成します。

 ここでは、狼人間を作成してみます。「werewolf, wolf head, beast golden eyes,」の部分が描画対象です。「werewolf」だけでなく、その特徴を呪文として与えています。この時、呪文のフレーズの数は同じにしておいた方がよいです。数が変わると配分比率が変わり、絵柄が崩れることがあります。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.2), (oil painting:1.1),
(face closeup photo:1.5), (portrait:1.5),
werewolf,
wolf head,
beast golden eyes,
sharp focus, realism, 8k,
(style of granblue fantasy:1.1),
(style of genshin impact:0.9),
(style of renaissance:0.7),
(style of gothic:0.6),
(style of high fantasy:0.5),
artstation, deviantart, pixiv ranking 1st,

 実際に出力した画像です。同じ絵柄と構図で、モンスターの画像も生成できているのが分かります。


キャラクターにポーズを付ける

 キャラクターにポーズを付ける方法はいくつかあります。いずれの方法でも、呪文のみで指示を出すのは難しいです。

 1つ目の方法は、3Dのポーズ人形でポーズを作ったあと、その画像をもとに「img2img」で画像を出力する方法です。この方法はお手軽ですが、精度はそれほど高くありません。

 2つ目の方法は、同じように3Dのポーズ人形でポーズを作ったあと、その画像をもとに「ControlNet」を使い、「txt2img」で画像を出力する方法です。この方法は、非常によい精度でポーズを反映してくれますが、拡張機能を追加でインストールする必要があります。

 また、VRAM 4GB環境では、「webui-user-my.bat」内に書いた実行時引数「--medvram」では動かず、「--lowvram」にしなければなりません。その結果、生成速度がかなり遅くなります。1つ目の方法で満足のいく結果が出なければ、2つ目の方法を試すのがよいでしょう。

 「ControlNet」を使う方法は、別の章で解説します。

3Dのポーズ人形を使う

 3Dのポーズ人形を使った画像は、様々な方法で作成できます。『CLIP STUDIO PAINT』(クリスタ)を使っている場合には、デッサン人形を配置してポーズを取らせることができます。『Blender』を使えるなら、自前のモデルでポーズを作って利用することもできます。

 こうした方法が使えない場合は、何らかの3Dキャラクターを操作できる無料のソフトウェアを使うとよいです。以下に、Webブラウザから使えるソフトウェアをいくつか掲載しておきます。

Magic Poser Web
https://webapp.magicposer.com/

JustSketchMe - Character posing for artists
https://app.justsketch.me/

PoseMy.Art
https://app.posemy.art/

 下絵の画像を作る際は、背景を白一色にすると、出力画像も背景が白一色になりやすいです。背景が必要な場合は、写真や既に作成した景観画像を合成するとよいでしょう。

img2imgで画像を生成

 ここでは、3Dのポーズ人形を下絵にして、「img2img」で画像を生成します。

 「img2img」では、「Denoising strengthは」が「0」に近いほど元絵に似たものになります。

 まずはゾンビを生成します。なぜゾンビかというと、少々ポーズがおかしくても、ゾンビらしいということで無視できるからです。

 入力画像は、以下のものを利用します。『CLIP STUDIO PAINT』のデッサン人形を着色したものです。最初はグレースケールの画像を利用していたのですが、認識があまりよくなかったので着色しました。

 呪文は以下のものを利用します。「CFG Scale」を「7.5」、「Denoising strength」を「0.6」にしています。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.2), (oil painting:1.1),
(zombie:1.9),
sharp focus, realism, 8k,
(style of granblue fantasy:1.2),
(style of genshin impact:0.3),
(style of high fantasy:1.1),
(style of renaissance:0.7),
(style of gothic:0.6),
artstation, deviantart, pixiv ranking 1st,
bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, missing fingers,  bad hands, missing arms, long neck, Humpbacked, shadow, flat shading, flat color, grayscale, black&white, monochrome,

 以下は出力画像です。入力画像に近いポーズを取っています。ただし上手くいく確率は低く、何十枚か出力して選んでいます。また、ポーズによっては正しく認識してくれないので、認識されやすいようにポーズを工夫する必要があります。

 次は、男の戦士キャラです。

 入力画像は以下のものを利用します。『CLIP STUDIO PAINT』のデッサン人形を着色したものです。顔と体を分けて色を塗っています。全て肌色にすると、裸の画像が生成されるためです。

 呪文は以下のものを利用します。「Negative prompt」は先ほどと同じです。「CFG Scale」は「7.5」、「Denoising strength」は「0.7」で生成します。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.2), (oil painting:1.1),
one middle age muscle man,
fantasy fighter,
full armor costume,
beautiful perfect symmetrical face,
small nose and mouth, aesthetic eyes,
sharp focus, realism, 8k,
(style of granblue fantasy:1.1),
(style of genshin impact:0.9),
(style of renaissance:0.7),
(style of gothic:0.6),
(style of high fantasy:0.5),
artstation, deviantart, pixiv ranking 1st,

 以下が出力画像です。ポーズの認識率は低いです。数十枚の画像を出力して数枚使えそうな画像が出る程度です。今回は、70枚ぐらい生成して5枚ぐらい、使えそうな画像がありました。

 この方法よりも『ControlNet』を使った方法の方が、上手くポーズを付けられます。『ControlNet』はVRAM 4GBの環境でも動きます。こちらは別の章で解説します。


キャラクターに情報を付け加える

 ゲーム用の素材を作る際は、キャラクターの髪の色を指定したり、服の色を指定したりすることが多いです。また、メガネを付けたり、リボンを付けたり、武器を持たせたりすることもあります。

 その際に、いきなり長いフレーズで書くのも1つの手ですが、私の場合は上手くいかないケースが多かったです。大枠の部分を先に宣言して、細かい部分はあとで書いて重み付けをしながら調整する方法が上手くいっていました。

 たとえば、キャラクターの概要を宣言したあと、「髪の色は緑」のようにあとで宣言する方式です。差分でキャラクターを多数作る場合には、こうした形式にしておくと見やすいです。

 以下に呪文を示します。「(green hair:1.4), (green eyes:1.4), (silver iron armor:1.5),」の部分が、細部の指定です。

masterpiece, best quality, concept art, extremely detailed,
(watercolor:1.1), (oil painting:0.9),
one middle age muscle man,
(fantasy fighter:1.1),
full armor costume,
(green hair:1.4),
(green eyes:1.4),
(silver iron armor:1.5),
sharp focus, realism, 8k,
(style of granblue fantasy:1.3),
(style of renaissance:0.7),
artstation, deviantart, pixiv ranking 1st,
bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, missing fingers,  bad hands, missing arms, long neck, Humpbacked, shadow, flat shading, flat color, grayscale, black&white, monochrome, 

 以下は生成した例です。


実際のゲームでのキャラクターの作成

 以下、『Little Land War SRPG』でキャラクターを作った時のことを書きます。

Steam - Little Land War SRPG
https://store.steampowered.com/app/2279930/Little_Land_War_SRPG/

 「呪文理論」のところで少し書いているのですが、ゴブリンを作るのが大変でした。「goblin」と書くと、なぜか茶色や黄色のファンキーなあんちゃんが出てきて、まったくゴブリンっぽくなくて困りました。

 初期の頃は、「goblin」の単語に加えて、「Prompt」で緑色の肌を指定したり、「Negative Prompt」で黄色や茶色の肌を抑制したりしていました。しかしどうにも上手くいかず、「goblin」の単語を抜いて特徴を組み合わせてゴブリン風の画像を生成するようにしました。

 以下の画像は、そうした試行錯誤をしていた時のものです。

 気を抜くと「armor」という単語に引きずられてマッチョになってしまいます。

 最終的には、以下の画像を採用しました。

 呪文も書いておきます。全体を書くと煩雑なので、PromptとNegative promptの描画対象と細部操作のフレーズのみ書きます。

one small man with green face,
skinny small body,
very long eagle nose,
very long ears,
green bald head,
wrinkled old face and body,
in ragged armor,
green skin,
yellow face,
brown face,

(続く)

全体目次

  • 第1章 環境構築

  • 第2章 基礎知識

  • 第3章 呪文理論

  • 第4章 背景画像の生成

  • ★★★第5章 キャラクター画像の生成★★★【今ここ】

  • 第6章 キャラにポーズを付ける

  • 第7章 キャラを学習させる

  • 第8章 武器や道具の生成

  • 第9章 絵地図の生成

  • 第10章 UI部品のテクスチャの生成


※ 草稿をまとめて大幅増補したものを電子書籍で出しました。VRAMがなくても、Google Colabでも大丈夫なように対応しています。『Kindle Unlimited』ユーザーの方は無料で読めます。是非読んでください。


この記事が気に入ったらサポートをしてみませんか?