雑記 2023/11/02 Stable Diffusionでイラストからオリキャラ生成したいの段
画像生成AIはそれっぽいイラストや画像を手早く書き出すのはデフォルトの機能とプロンプトで完結するのだが、具体的なイメージが固まっているキャラを描き出すのは中々に工夫がいる。
既存のキャラクターであれば配布されてるLoraを使えば良いのだが、オリキャラだとそれも難しい。
プロンプトによる命令形式はChatGTPを経由させることである程度の簡略化が可能だが、キャラの特徴つらつら書き連ねるのは正味面白くない。
「ある程度描きたいキャラのデザインや色をイラストで指定して、なんか良い感じに再解釈して描き直す」
というのをやりたかったので色々試していた。備忘録的に書き出しておく。
こんな人向け
ある程度絵がかけます(画像編集ツールが使える)
オリキャラの立ち絵生成したい
AI生成触ってみたけどなんかこれありふれたデザインのイラストしか出なくない??
イラストベースの指示がした~い
前提
SD環境:Stable Diffusion web UI
model:mixProv4_v4
modelは頭身やデフォルメの有無でお好みで
レタッチ環境:CLIP STUDIO
ペンタブ必要
GPU:1024x1536のサイズを生成できればおk
[CS]→CLIP STUDIOでの作業
[SD]→Stable Diffusionでの作業
完成品
作業全体図
1. 素体を生成する
1-a. [CS]大体のポーズをざっくり描く
サイズは512x768。
ここで確定させるのは頭身と体型と髪型
3Dのデッサンドールとかを下地に作るのもあり。色だけうすだいだい色で合わせる。
大体のポーズも決まってない場合はプロンプトからいっぱい生成してこれだ!ってポーズを選ぶのも良いかも。
1-b. [SD]良い感じのベースポーズを生成する
txt2imgでいっぱい生成する。
アップスケールを2倍にして、生成物は1024x1536。
プロンプトには立ち絵系の命令を突っ込む。特定の髪型や取らせたいポーズがある場合はその命令も含めたり専用Loraを入れると良さそう。
navel(へそ)とかbarefoot(裸足)とか入れてるのはその方が全身出やすくなるから。
ControlNetはdw_openposeとtile_response
dw_openposeはデフォだと入ってないから他の記事参照して導入どうぞ。
dw_openposeで大体のポーズを確定させて、tile_responseを元にざっくりとした色を配置させるイメージ。
openposeだけでも良いが、結構余計な謎パーツが付いてくるのと髪型の指定が面倒くさい。
ちなみに流石にざっくり描きすぎてるのでimg2imgはあんまりキレイにならない。
今回はこれをベースに進める。手はグチャッているし何故か服着てるけど腰のラインが良い。
1-c. [SD]->[CS]素体の線画を用意する
lineart系のRun Processorで白線画を書き出す。
白線画は一つだけ書き出すのではなく、lineart_realisticとlineart_animeを併用すると良い。
輪郭は太くてノイズが少ない_anime、細かいところは_realisticの線を使う。
書き出した白線画をクリスタに持っていき、以下の工程で透明な線画にする。クリスタ以外は知らん。
色調補正でコントラスト気持ち上げ(よく見ると完全な黒じゃないので)
色反転
[編集]→[輝度を透明度に変換]
透明な線画にしたら服とか破綻してる手を頑張って消したり、髪の毛を加筆したりする。
出来ました。手は後の工程で修正が効くのまだ描き込まなくても良い。
また白線画にしてるのは、これをもう一回Stable Diffusionのlineartにセットして良い感じの肌感が出るまで回すから。
1-d. [SD]好みの肌感の立ち絵を生成する
lineart_animeのモデルでControlNetに先程の白線画を設定する。
lineart_animeは他のlineart系モデルよりも線がない部分への補足が強いので描いてなかった手もここで追加される。
プロンプトはベースポーズ生成時のものと同じで良い。
ここで、髪型や体格のデザインをAI側で補正したりアレンジしてもらいたい場合は、ControlNetの「Control Weight」を弱くしたり「Ending Control Step」を0.5以下とかにする。
こうすることでプロンプト側の優先度が上がって髪やポーズに面白い変化がかかる事がある。
このテクニックは他の工程や生成でも使える。
で、生成回して良さげなやつを選択。
これを使って線画の最終処理と素体の色の決定を行う。
1-e. [CS]線画の最終処理
素体の線画に対して最終的にイメージしている絵の特徴を加筆する。
AIイラストの欠点として「学習した中での"良いもの"しか出ない」があり、特に眼や口はそれが出やすい。masterpiece(傑作)が付いているとより顕著。
ハロウィンのキョンシーモチーフの女の子にしたかったので、以下の要素を加筆した。
眼のくま
縦線瞳孔
ギザ歯
ついでにまつ毛も生成した画像を参考に自前で描く。その方がキレイになるし描きたいイラストになるから。
手は結局良い感じに描かれた画像が生成されなかったので、もう自分で加筆した。絵が全く描けない人は良い形の手が出るまで生成回して手だけ線画差し替えるでも良いと思う。
1-f. [CS]素体を塗る
これで線画が出来た。
体の塗りは1-dで生成した立ち絵を裏に重ねて色調補正するだけ。ただし、今回はキョンシーなので青に乗算で重ねる。
髪と眼、口は肌の上から自分で塗る。なんだかんだAIのAIぽさって顔だなって思っているので、顔だけでも自分で塗ってみるとAI感が抜ける……抜けない?
髪も目もグラデーションをかけてハイライト入れてるだけだが、AI線画の質が良いのでメッチャ良く見える。
これで素体が完成したので、次はオリジナルの衣装を着せる。
2. 衣装を着せる
2-a. [CS]衣装をざっくり描く
ざく~りと。
最初はAIに良い感じにシワや陰影のついたイラストを生成して欲しくて色だけ分けたベタ塗りの画像を使ったのだが、流石に全然思ったような出力にはならなかった。
さらに、オリジナリティあるデザインにすればするほどAIの学習データに少なく言い表すのに難しいイラストになるため、プロンプトでの命令もしづらくなる。(今回だとシルク地の超オーバージャケットっぽいナニカ)
最低限、AIに「ここらへんにシワがあるよ」「ここらへんが陰になっているよ」「ここらへんにハイライトが反射しているよ」という情報は用意してやる必要があるらしい。
2-b. [SD]->[CS]ディテールアップさせたイラストを合成する
いっぱいtxt2imgする。
サイズは512x768。
アップスケールを2倍にして、生成物は1024x1536。
プロンプトにはクオリティアップ系とライティング系のみで良い。
girlとか入れると、学習モデルの「girl」のイメージに服も引っ張られるためである。
XX風なスタイルにしたい場合はそれの命令を入れてやる。(例:油絵風→oil painting)
他には白いモジャモジャを描いてプロンプトに「frills」を入れると、モジャモジャをフリルとして描いてくれたりする。
ControlNetはlineart_animeとtile_response。
lineart_animeで輪郭を確定、tile_responseで色味を渡すイメージ。
衣装をもっとAI側でアレンジして欲しい場合はtile_responseだけで良いかも。
2-aで作成した画像はこの2つに設定する。
ここからはパラメータを変えつつ気に入ったイラストが出るまで回す。
顔や肌は見た目が崩れるが、使うのは衣装だけなので衣装の出来のみを見る。
気に入ったイラストが出たら、クリスタに持っていき元の塗りの上に重ねる。
ポイントは、パーツごとに合成すること。
キョンシーの場合は、靴・パンツと御札・服と帽子でそれぞれ違うイラストを合成している。
2-c. [CS]加筆修正
あとはクリスタ側で、各パーツに加筆したり服の影を描いたりデカールを貼ってやったりする。AIは意味を持った模様(雷紋や矢羽根模様など)の生成が弱いので、あとからクリスタ側でメッシュ変形とかを使って貼ってやったほうが良い。
で、エンコーキョンシー(bad naming)ちゃんの完成。
3. 背景イラストと合成
あとはハロウィン向けの良い感じの背景イラストを生成し、合成してやる
落ち影とかDOF(被写界深度)入れてやったり。
キャラクターと背景の色のなじませはこちらの記事を参考に。
AIで複数イラストの合成ってやりようあんのかね?
良い感じに描けたんじゃないでしょうか?
感想
気持ち的にはAI側の作業は6割ぐらい。背景含めるともっとか。
衣装の着色はモノクロで書き出して塗りはクリスタでやるとか自由度を上げる手段は考えつくが、ペイントツール側の作業を増やすと自由度は上がるが必要な技術とコストが増えてしまう。
私はデザイン考えるのは好きだが線画とか塗りとかかったりーと思っているゴリラなので、今回の記事ではギリギリ許せる範囲を狙った。
もっとベタ塗りやパーツ毎のディテールアップに特化したfirefly的なツールが出てきたりすると嬉しいな。(もうあったら誰か教えて)