✏️

UE5とStableDiffusionでゲーム内の絵画を生成する

2023/12/14に公開

ホグワーツレガシーを以前やってるときに
絵画を使って屋内の情報量を増やしてる感じがあったので
StableDiffusionでUEと連携できないかと考え試しました。

前提

ざっくり完成形

概要図

StableDiffusionWebUIのAPIモード

StableDiffusionWebUI実行前にwebui-user.batCOMMANDLINE_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