見出し画像

立ち絵を作ってみた

前回の記事である程度形にしたStable Diffusionの自作GUIを使って、ゲーム素材に使う立ち絵を作ってみました。正確には立ち絵を作る練習。幅990px ×高さ1320px の絵を作ります。

作業の手順は備忘録として以前にも似た記事を書いたのですが、改めて手順を整理しました。

txt2imgで背景を作る

まず背景画をtxt2imgで作成します。後の工程でほぼ背景は消えるので、ここで作る背景画はシード値の一種という意味合いではあるものの、キャラの絵に与える雰囲気を形にするために良い絵を選びます。
キャラを目立たせたいので、あまり鮮明な絵でないほうがいいです。一方でライティングはちょっと意識しました。

朝の森林のイメージ。
Negative Promptに"evening lighting, red leaves"を入れてやっとイメージ通りになった

aesthetic official photogenic detailed pastel painting of forest morning refreshing lighting, delicate fine, beautiful scenery, Pissarro, Redoute
Negative prompt: evening lighting, red leaves, disfigured malformed mutated mutilated deformed inaccurate fused extra missing branch, ugly morbid worst low normal quality, blurry, lowres, text, username, error, signature, watermark, jpeg artifacts, font ui, numbers, artist name, monochrome, rough sketch
Steps: 8, Sampler: DPM++ 2M, CFG scale: 7.0, Seed: 3145994865, Size: 512x512

inpaintしてキャラを呼び出す

メインとなる工程、ガチャの時間です。キャラの性格を一番表していそうな良い絵を選びましょう。
ステップ数は8回に抑えて、生成枚数を稼ぎます。頭が切れていない絵を優先。次に全身画を優先した方が良さそう。全身画を出すと顔は崩れるのですが、顔だけの絵からoutpaintingガチャで全身を書くより、きれいな顔を後の工程で作ってマージするほうが楽でした。そもそも今の自作GUIだとoutpaintingできないし。
今回はステップ数8回のラフ画像で練習しましたが、本採用では選んだ1枚をステップ数20回程度(DPM++2Mの場合。オイラー法なら40-50回)で書き直したものを使って後の工程を行います。

元の背景画はほぼ消えるが、名残があるような気もする
このグリッドの右上の絵を使用。構図も印象的。ただし目が崩れている
プロンプト調整分も含めて9セット54枚引いた

高解像度化

キャラを呼び出した画像をReal-ESRGANで高解像度化します。最大の4倍まで大きくします。(キャラを512pxの寸法で作った場合は2048pxの寸法になる)
解像度(ピクセル数)を上げておくと、後々完成品を切り抜く際に長さが足りない、ということが起こりにくいです。なお、この段階では崩れた顔はまだ良くなりません。
この絵の場合、Real-ESRGAN 4x plusのモデルが背景のタッチをつぶさずに拡大できました。Real-ESRGANはCPUでも動く軽量化Windows版も配布されているのですが、やはりGPUを用いるColab版での生成結果が良かったです。

解像度を上げても目の崩れは良くならなかった

(aesthetic:1.1) (official:1.1) photogenic detailed pastel CG anime illustration of one full-body girl in landscape, young lady, purple eyes, amber hair, lovely, handsome, intelligent, standing, shorts, choker, morning refreshing lighting, light novel, manga, delicate fine, (Pissarro:0.98), cedarwood Atlas
Negative prompt: bad anatomy disfigured malformed mutated mutilated deformed, unclear eyes, inaccurate fused extra missing limb, fewer extra fingers, cloned face, ugly morbid worst low normal quality, blurry, lowres, cropped, out of frame, text, username, error, signature, watermark, jpeg artifacts, font ui, numbers, artist name, nude, monochrome
Steps: 8, Sampler: DPM++ 2M, CFG scale: 7.0, Seed: 670231734, Size: 512x512, Denoising strength: 1.0, Masked content: latent noise, Mask timing: none, Mask output: False

顔を切り出してimg2img

顔が崩れていたり解像度が足りていない場合は、顔の部分を切り出してimg2imgすると、きれいな顔が得られます。これを次の工程で元の絵にマージします。
プロンプト類、シード値、ステップ数等のパラメータは元の絵のものをそのまま使用。Denoising Strengthを0.5程度に変更。

きれいな顔

きれいな顔をマージ

きれいになった顔を解像度を上げた絵のもとの顔に上書きします。ペイントソフトとしてKritaを使いました。
解像度を上げた絵のレイヤーに、上書きするきれいな顔のレイヤーを重ねて、きれいな顔のレイヤーの透過マスク(アルファチャネル)を書いて顔の境界がなじむようにします。絵が描けないのでこのレベルが自分の手作業の限界です…
Kritaの場合は消しゴムツールで消す感じ。いらない部分は不透明度100%の消しゴムでバッサリ消して、境界付近は不透明度を10-20%程度に下げて少しずつ根気よく消していくと、いい感じになじみました。

切り抜いてサイズ調整して完成

最後にPNGに出力してから、所定の寸法に切り抜いたら出来上がり。必要に応じて縮小するなどサイズ調整をかけてもよいです。

ぼちぼちの出来映えになった。キャラの切り抜き位置をもう少し右に寄せても良いかも

今回はラフな生成でステップ数が少ないため、服装が十分仕上がっていないのですが、ステップ数を増やすと全体的にもう少し絵の質が良くなると思います。

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