見出し画像

VRAM 4GBではじめるStable Diffusion - ゲーム素材を作ろう4 背景画像の生成

 この草稿は、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』を開発した時の知見を中心にまとめたものです。こちらも購入して遊んでいただけると幸いです。


本章の概要

 本章では「背景画像の生成」を扱います。

 背景画像をどう作るかに始まり、自然景観、建築物の作成、レイアウト上の注意などについて解説します。そして最後に実践編として「湖の向こうに山がある景観」「城を臨む景観」「魔法研究所の様子」を、呪文を元に生成していきます。

 以下、本章の目次です。

  • 背景画像の生成について

    • 画像のサイズ

    • 画像の拡大

    • 絵柄の統一

  • 描画内容

    • 自然景観

    • 建築物

    • レイアウトの注意

    • 視点

  • 実践

    • 湖の向こうに山がある景観

    • 城を臨む景観

    • 魔法研究所内の様子

  • 実際のゲームでの背景画像の作成


背景画像の生成について

 ゲームの背景画像の生成については、いくつか考慮すべき点があります。

 1つ目は画像のサイズです。ゲーム画面に応じて、大きな画像を生成しなければなりません。

 2つ目は絵柄の統一です。ゲーム用の画像ですので、ばらばらの絵柄は避けるべきです。

 3つ目は描画内容です。山、城、森など、必要な景観を生成する必要があります。

 以降、こうした観点から、背景画像の生成を進めていきます。

画像のサイズ

 PC向けの背景画像は横長、スマホ向けの背景画像は縦長です。対して『Stable Diffusion』の画像生成の基本は正方形です。

 また、『Stable Diffusion』のデフォルトの生成画像サイズは、横512、縦512で、2.X系の基本は横768、縦768です。これらは、ゲームの背景画像として使用するには小さすぎます。

 画像生成は、試行錯誤が多いです。また、大きな画像を作ろうとすると生成時間が非常にかかります。それだけでなく、画像サイズが大きいとVRAMが足りずにエラーもよく起きます。

 そのため大きな画像をいきなり作ろうとせずに、小さな画像を作って最後に拡大するのがよいです。実際の生成では、呪文を試行錯誤したあと、大量の画像を生成して、ベストな画像を選定します。

 では、どういったサイズがよいのかを書きます。短辺を512にして必要な画像サイズの比率に合わせて長辺を計算して、そのサイズの画像を作るとよいです。

 少し計算例を示します。短辺が512ピクセルで、最終的に得たい画像が横1920ピクセル、縦1080ピクセルなら、「512 * 1920 / 1080」で長辺が910前後のピクセルの画像を生成するとよいです。

画像の拡大

 試行錯誤して求める画像ができた場合に、最終サイズの画像を作る方法は、大きく分けて2つあります。

 1つ目の方法は、生成された画像を、画像拡大AIなどで拡大することです。この方法は、時間も手間もかからず現実的です。

 2つ目の方法は、同じ呪文と設定で、上手く生成できた画像のシードを利用して、高解像度の画像を作ることです。シードは『Web UI』の「PNG Info」タブで調べることができます。「Seed: 3615092541」のように表示されますので、この数値をコピーして、「txt2img」タブの「Seed」に入力すると、同じ初期値で生成できます。

 いずれにしても、小さい画像で大量に作ったあと、大きな画像を少数作るという流れにすると作業時間を短縮できます。

絵柄の統一

 絵柄の統一には、大きく分けて2つの方法があります。

 1つ目の方法は、とりあえず写真風の景観を作っておき、あとで絵柄を統一する方法です。画像編集ソフトでフィルターをかけてもよいですし、『Stable Diffusion』の「img2img」で、画像を入力値にして、絵柄を呪文で指定して出力するのでもよいです。

 2つ目の方法は、呪文で景観と絵柄を指定して生成する方法です。この方法の場合、生成後にもう一度処理をおこなう手間を省けます。

 いずれの方法でもよいですが、背景画像を作る前に方法を決めておいた方がよいです。

 背景画像の絵柄の指定には、ルネサンスやゴシックといった画風を指定する方法と、画家の名前を指定する方法があります。また「fantasy」や「sci-fi」「cyberpunk」といったジャンルを指定する方法もあります。

 開発しているゲーム独自の絵柄にする場合は、複数のスタイルを指定して、「(単語:数値)」として重み付けを指定するとよいです。重み付けは、以下のようにおこないます。どういう絵柄がよいかは、作っているゲームによります。また、開発者が抱いているイメージによります。

style of renaissance and gothic,
(style of high fantasy:1.2),

 私はルネサンス絵画の絵柄が好きでしたので、そこをベースにしてゴシックを足して、ミケランジェロやラファエロの名前を入れて絵柄を調整しました。

 私の経験として、写実的な画像は2系統の方がよいものが出て、絵柄の指定は1系統の方がコントロールしやすいです。2系統の場合は「txt2img」で写実的な絵を出力したあと「img2img」で絵柄を調整すると上手くいきます。

 私が『Little Land War SRPG』の背景画像を生成したタイミングでは、まだ2系統が出ていなかったので、全て1系統で生成しました。


描画内容

 ファンタジーゲームの背景は、大きく分けて2つに分かれます。自然景観と建築物です。自然景観は、山や森、湖などです。建築物は、城や砦、屋内の様子などになります。

自然景観

 自然景観は、シンプルなキーワードで高いクオリティーのものを生成してくれます。自然景観を生成する時は、地形にかかわらず「landscape」の単語を入れた方がよいです。

 自然景観を生成するコツは、複数の景観を混ぜることは避けることです。たとえば、手前は川で、奥に草原が広がり、遠景は山岳地帯といった指定は、フレーズとして書いても、成功率は低いです。単純に山だけ、川だけを指定した方が、上手い構図の自然景観が生成されます。

 下手に細かく位置を指定して、そのとおりに作ろうとしても上手くいきません。川、草原、山のような独立したフレーズを指定して、配置は大量に生成した画像から選ぶ方が、最終生成までにかかる時間は短くなります。

 また、もう一つの方法は下絵を描くことです。下絵を描けば、かなりの確率で指定した配置の画像を得られます。自分で絵を描くのが苦手な人は、とりあえず『Stable Diffusion』で数枚の絵を出力したあと、手書きで加筆修正してください。その画像を「img2img」の入力値にすると良好な結果を得られます。

 重要なのは、呪文にあまり細かな指示を書き込みすぎないことです。それよりも、重要なキーワードを渡したあとは大量の生成をおこない、それを選別した方がよいです。自然景観については、多くの学習元画像があるためにバリエーションをたくさん出してくれます。

 また、自然景観を絵画風に生成する場合に起きやすい現象について触れておきます。小さな人物の影や、謎の生物が入り込むことが多いです。これは西洋絵画の自然景観の中に、人物が入っていることがよくあるために起きる現象だと思います。

 完全に防ぐことはできませんが、「Negative Prompt」に人間や人体などを表す単語を入れておくと、抑制できることもあります。

human, body, boy, girl, man, woman, mob,

建築物

 建築物は、かなり難しいです。『Stable Diffusion』は立体を理解しているわけではないために、3次元的に正しい画像は生成されないと思った方がよいです。厳密に3次元で見ると破綻している画像が出力されます。建築物は直線で構成されたものが多いために、3次元的な破綻が目立ちやすいです。

 そのため目指すのは、正確な画像ではなく、それっぽい画像です。ここは割り切らないと地獄を見ます。

 屋外であれば、描画対象の建物をあまり大きく描かない方がよいです。大きく描くと、右端と左端で、3次元の軸がずれていることがよく発生します。小さく正面から描かれているものを採用するとよいです。

 屋内の場合は、作りたい場面が多く出てくるゲームの名前を入力すると、良好な結果が出ることがあります。「研究所」や「宿屋」などはゲームでもよく見られます。そうした元絵となるデータがある場合は、破綻の少ない画像が生成されやすいです。

 そうした元になる画像がない場合は、「図書館+薬品棚」「倉庫+骨董品」などのように、複数の場面を組み合わせてイメージを作るとよいです。

 出力した画像が惜しい出来だった場合の対策も書きます。

 一度生成したあと、見込みのありそうな画像の破綻した部分を「img2img」の「Inpaint」で書き換えるのはよい方法です。

 あるいは視点や構図を工夫することで、破綻が少なくなるようにするのもよい手です。たとえば宿屋の俯瞰図を描くのは大変ですが、宿屋の主人がいるカウンターだけ描くのは破綻が出にくいです。

 いずれにしても、一度で完璧な画像が出るとは限りませんので、「素材」と割り切り、修正することを視野に入れた方がよいです。

レイアウトの注意

 立ち絵と組み合わせる前提の画像を生成するときは、背景画像のレイアウトに気を付ける必要があります。「城」の画像を作ったとします。城の画像が中央にあると、立ち絵が中央に来た場合に見えなくなります。

 これはかなり重要で、火山、大木、城門など、何か特定のオブジェクトが重要な場合に、それが見えないと意味不明のゲーム画面になります。

 画像単体で選ぶのではなく、ゲームに実際に使った時に、他の部品と組み合わせてどう見えるのかを気にしておく必要があります。

 この問題の解決方法は大きく分けて2つあります。

 1つ目の方法は、画像生成の際に、描画対象が中央に来ないようにすることです。実際の作業としては、大量に生成して、中央に来ていない画像を選びます。あるいは横に長めの画像を生成してトリミングします。

 2つ目の方法は、キャラクターの位置やサイズを変更可能にして、背景に被らないようにすることです。この方法は、位置とサイズを指定するデータを作り、プログラム側で対応する必要があります。

 一長一短ですが、背景画像のクオリティを考えて、『Little Land War SRPG』では後者を採用しました。

視点

 基本的には「long shot」で問題ありません。場合によっては「far long shot」にしたり、「wide view」などのフレーズを入れたりします。入れなくても、自然景観なら「landscape」の文字があれば、風景写真や風景画のような絵にしてくれます。

 景観の単語から想起する視点は意外に少ないので、あまり細かく指定しなくても良好な結果になることが多いです。


実践

 ここでは、3種類の画像を作ります。1つ目は、湖の向こうに山がある景観です。2つ目は、城を臨む景観です。3つ目は魔法研究所内の画像です。

 学習モデルは「v2-1_512-ema-pruned.safetensors」、画像サイズは、横912、縦512です。「Negative prompt」は、以下のものを共通で利用します。

text, error, extra digit, fewer digits, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, shadow, flat shading, flat color, grayscale, black&white, monochrome, frame, human, body, boy, girl, man, woman, mob, 

湖の向こうに山がある景観

 以下の呪文で生成します。1枚だけ出力しても良好な結果が得られるとは限らないため、「Batch count」の数値を上げて複数枚出力します。試行錯誤の時は4枚ぐらい生成して、ある程度呪文ができたら一気に16枚や32枚と出力するとよいです。

 以下は呪文です。

beautiful detailing landscape painting,
masterpiece, best quality, concept art, extremely detailed,
ray tracing, beautiful composition,
(wide lake:1.3),
(mountains:1.1),
blue sky of summer, daytime,
upper sunlight and bright golden sun,
far long shot, below view, brilliant photo,
sharp focus, atmospheric lighting, realism,
8k, ray tracing, cinematic lighting, cinematic postprocessing,
(style of high fantasy:1.3),
(style of gothic:1.1),
(style of renaissance:0.7),

 以下は、出力した画像から選別した1枚です。

 景観画像を一度作ったあと「img2img」で絵柄を変えてみます。以下は呪文です。

rough oil painting, (rough watercolor:1.2),
masterpiece, best quality, concept art,

 以下は出力した画像です。

 『Stable Diffusion』の2.X系統は、「txt2img」の絵柄のフレーズが効きにくいです。「img2img」ではきちんと効くようなので、絵柄をあとで指定すると楽です。また「img2img」は元絵を忠実になぞるわけではありません。似ている別の画像を生成します。使えるものを得るには何枚か出力する必要があります。

 明度や彩度の修正だけなら画像編集ソフトで修正した方が速いでしょう。

城を臨む景観

 『Stable Diffusion』は、パースを取って絵を描いてくれるわけではありません。そのため立体空間に複数の直線が入る絵をきちんと描いてはくれません。城や町並みといった立体的な絵は破綻しやすいです。

 解決方法の1つ目は、数を多く出力して人間の目で選別することです。大量に出力した画像から、ましなものを選ぶことで破綻を少なくします。

 解決方法の2つ目は、下絵を用意することです。実際に絵を描く必要はありません。積み木や重ねた本などでレイアウトを作り、スマートフォンで撮影して「img2img」の入力画像にします。一手間掛かりますが、破綻の少ない画像になります。

 ここでは、1つ目の方法を使い画像を作ります。以下は呪文です。

beautiful detailing landscape painting,
masterpiece, best quality, concept art, extremely detailed,
ray tracing, beautiful composition,
(crowded street in middle ages town:1.7),
(long shot small fantasy castle:0.5),
blue sky of summer, noon,
below view, brilliant photo,
sharp focus, atmospheric lighting, realism,
8k, ray tracing, cinematic lighting, cinematic postprocessing,
(style of high fantasy:1.3),
(style of gothic:1.1),
(style of renaissance:0.7),

 以下は、出力した画像から選別した1枚です。呪文通りの画像はなかなか生成されませんが、出力されたものから比較的良好なものを選びました。

 次に、出力した画像を「img2img」で絵柄を変えます。以下は呪文です。

rough oil painting, (rough watercolor:1.2),
masterpiece, best quality, concept art,
(crowded street:1.9) in (middle ages town:1.5),
(long shot small fantasy castle:1.2),
blue sky of summer, noon,

 ここでは出力例を2つ示します。「crowded street」は重みを上げてもあまり効かないのですが、1枚目の画像は割と効いています。

魔法研究所内の様子

 最後は屋内の画像の生成です。試行錯誤の途中では「library」を入れていました。しかし、画面が整然としすぎるので途中で外しました。こうした画像を作る際は、魔法研究所のイメージに似ている場所や、現実に写真が存在していそうな場所を組み合わせて呪文を作るとよいです。

 以下は呪文です。

beautiful detailing painting,
masterpiece, best quality, concept art, extremely detailed,
ray tracing, beautiful composition,
(messy atelier :1.7),
(alchemist laboratory:1.2),
(ancient dark wooden antique warehouse:0.5),
(many steampunk experimental device:0.8),
(many ancient book:0.6),
(many laboratory instrument:0.5),
long shot, below view, brilliant photo,
sharp focus, atmospheric lighting, realism,
8k, ray tracing, cinematic lighting, cinematic postprocessing,
(style of high fantasy:1.3),
(style of gothic:1.1),
(style of renaissance:0.5),

 以下は、出力した画像から選別した1枚です。

 生成した画像を「img2img」で絵柄を変えます。以下は呪文です。

bright color, (pastel colour:0.5),
(rough oil painting:0.8), (watercolor:1.2),
masterpiece, best quality, concept art,
(messy atelier :1.7),
(alchemist laboratory:1.2),
(ancient dark wooden antique warehouse:0.5),
(many steampunk experimental device:0.8),
(many ancient book:0.6),
(many laboratory instrument:0.5),

 ここでは出力例を2つ示します。同じ入力画像でも、出力は微妙に違います。


実際のゲームでの背景画像の作成

 以下、『Little Land War SRPG』で背景画像を作った時のことを書きます。

 ゲーム中では、背景画像の上にキャラクター画像を載せて利用しました。そのため、キャラクター画像と同じ情報密度だと、画面が見づらくなるだろうと判断して、背景画像の情報量を減らしました。

 以下に示す1枚目は『Stable Diffusion』で出力した画像です。2枚目は解像度を大きくして加工をした画像です。

 色味を変える以外にも、細部を削っています。カメラで人物を撮る時に、背景をぼかす技法と同じです。情報量を削り、キャラクターとに差を持たせています。以下は、同じ場所の比較画像です。


(続く)

全体目次

  • 第1章 環境構築

  • 第2章 基礎知識

  • 第3章 呪文理論

  • ★★★第4章 背景画像の生成★★★【今ここ】

  • 第5章 キャラクター画像の生成

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

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

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

  • 第9章 絵地図の生成

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


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


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