1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VRoidとStableDefisionForUnityを使ったキャライラスト作成のワークフロー

Posted at

概要

個人でゲーム製作する際、またはゲーム作りたいけど絵を描くのが苦手という際に使用できるかなと思うワークフローの紹介です。
実際の用途は2DベルトアクションゲームのインゲームのキャラクターをSpineで動かす際のイラストに利用しましたが、他にもいろいろ応用が利くものかと思います。

主なフローとしては以下のようになります。

  1. VRoidで生成したいイラストに近いモデルを用意
  2. Unityに作成したモデルをインポート
  3. Unityでモデルにポーズ、またはアニメーションをつける
  4. StableDefisionForUnityでポーズを付けたモデルもしくはアニメーションさせたモデルとデプスを基にイラストを生成する

環境・導入

前提知識

  • ある程度Unity触れる
  • ある程度StableDiffusionWebUIとControllNetの使い方が分かる

必要なもの

  • Unity2021もしくは2022 (StableDefisionForUnityを使うため)
  • StableDiffusionWebUI+ControllNet (イラスト生成するため)
  • VRoidStudio (モデルを作成するため)

Unityに必要なもの

  • StableDefisionForUnity1.4.0
  • UniVRM-1.0 (VRoidのモデルをインポートするため)

導入方法

UnityとStableDiffusionWebUI+ControllNetに関してはいくらでも記事あるので各自調べてください。

StableDefisionForUnityとUniVRM-1.0は公式ドキュメントがあるので基本的にそちらをご覧ください。
https://docs.witchpot.com/
https://vrm.dev/univrm1/

VRoidStudioはダウンロードしてインストールするだけです。
https://vroid.com/studio

躓いたところ

StableDiffusionForUnityを導入した際にCドライブの所定のフォルダにStableDiffusionWebUIがプリインストールされるが、Externalモードでもこのフォルダのファイルを使用するため、削除すると永遠にサーバーが起動できないので削除しないように我慢する。

Edit > Preferences > StableDiffusionForUnityで導入済のStableDiffusionWebUIのdatファイルを指定するが、datファイルを編集してAPI叩けるようにしないと永遠にサーバーが起動できない。一応ドキュメントに書いてあるが見落としがち。

設定

Assets\Plugins\Witchpot\Packages\StableDiffusion\Runtime\Settings\StableDiffusionWebUISettingsの設定ファイルでモデルとか色々指定するがサーバー起動後だとListModelsボタンを押せば自動で取得してくれる。
1.png

StableDiffusionWebUISettingsを設定するとControlNetのモデル順もかわるので同じディレクトリにあるDepthとかNormalとかのポスプロ用の設定ファイルのControlNetのモデルを正しいものに設定し直す。
2.png

生成

1.VRoidで生成したいイラストに近いモデルを用意

VRoidStudioでは自由度高めのキャラクターを作成できます。衣装の部分はテクスチャのAlphaがそのまま反映されるので手軽に形を変えられます。モデルをそのまま使用するにはクオリティーが気になりますが、イラスト生成に使う分には十分かと思います。
モデルはVRM1.0でエクスポートします。

テストで作成したモデル。
3.png

2.Unityに作成したモデルをインポート

エクスポートしたモデルを環境を整えたUnityにインポートします。Unityのプロジェクトはイラスト生成専用のものを用意しておくといいかもです。RenderPipelineはURPにします。

UnityにインポートしたモデルはデフォルトのMaterialのShaderがBuilt-In向けになっているので、VrmScriptedImporterのインスペクターからRenderPipelineをUniversalRenderPipelineに変更します。

3.Unityでモデルにポーズ、またはアニメーションをつける

VeryAnimationなどツール使うと楽です。
また生成時にControllNetでDepth使用するので、カメラのNearFarをぎりぎりキャラクターが収まる範囲に設定し、Depthがはっきり出るようにします。

テストで用意したポーズ。

3Dキャプチャ画像
Sotai.png (291.5 kB)Sotai.png (298.5 kB)Sotai.png (346.0 kB)

4.StableDefisionForUnityでポーズを付けたモデルもしくはアニメーションさせたモデルとデプスを基にイラストを生成する

Img2ImgForControlNetでDepthを使用し生成する。
解像度は1024x1024。
プロンプトはハイクオリティだけ。
使用モデルは以下のもを使用。

aiceKawaice(画像Waight0.8)
aiceKawaice_0.8.png (506.1 kB)aicekwaice_0.7.png (599.9 kB)aicekwaice_0.7.png (629.3 kB)
aiceKawaice(画像Waight0.2)
aiceKawaice_0.2.png (388.6 kB)aicekwaice_0.2.png (478.9 kB)aicekwaice_0.2.png (515.6 kB)
raesanmix(画像Waight0.8)
raesanmix_0.8.png (469.0 kB)raesanmix_0.7.png (461.8 kB)raesanmix_0.7.png (573.1 kB)
raesanmix(画像Waight0.2)
raesanmix_0.2.png (436.3 kB)raesanmix_0.2.png (912.9 kB)raesanmix_0.2.png (1.2 MB)

まとめ

通常のイラスト生成でControllNetのDepthでは画像からDepthを生成して使用するのに対し、この方法ではDepthは実際のDepthを使用しているのでいろんなポーズでも安定した画風やディテールで生成できると思います。
作成しているゲームでも使用していて、それを使用したSpineは下記になります。
https://ccmy.work/spine/12.html

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?