✏️
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