✏️
UE5とStableDiffusionでゲーム内の絵画を生成する
ホグワーツレガシーを以前やってるときに
絵画を使って屋内の情報量を増やしてる感じがあったので
StableDiffusionでUEと連携できないかと考え試しました。
前提
- 今回StableDiffusionやPythonを使用して実装しますが、環境のインストールなどは省きます。
- 下記StableDiffusionWebUIを用います
https://github.com/AUTOMATIC1111/stable-diffusion-webui
ざっくり完成形
概要図
StableDiffusionWebUIのAPIモード
StableDiffusionWebUI実行前にwebui-user.bat
のCOMMANDLINE_ARGS
を下記のようにします
set COMMANDLINE_ARGS=--api
手順
1 絵画用のBPを作成する
枠の大きさは変えずにパラメータで絵画部分のみ大きさが変わるBPを作成します
Actorの構成としては下記の形で枠×4、キャンバス部分を別のStaticMeshで構成
キャンバス部分のMeshにPythonからアクセスするためにTagを指定
下記のような関数をConstructionScript
行します。
挙動としては書きの画像のようになります。
2 絵画用のマテリアルを作成
Python上からMaterialInstance
を作成する際のパラメータを作成し下記のように作成
3 Pythonでスクリプトを作成
全文は下記な感じです
ポイントとしては
- 16行目のネガティブプロンプトに文字とキャンバスの枠を指定
- mainの画像生成(txt2img)は別スレッドで対応
4 UEからPythonを実行
下記のような形で引数指定で実行します
補足
実際に使用する際は下記の画像のようにEditorUtilityWidget
で使用できるようにすると良いです
(生成時間が結構かかるので量産するのは向いてない?)
Discussion