これは1本のガイドにまとめた完全なコースです。Stable Diffusionをインストールし、Blenderで部屋をブロックアウトし、その深度からフォトリアルな中世の部屋を生成し、その画像を3Dの部屋に投影し直して、その中に本物の3Dモデルを、ライティングと影を合わせて配置し、短いカメラムーブを付けます。アイデアは、プロップのショールームです。中世である必要はなく、SFでも何でも構いません。
ここにあるものはすべて無料です。NVIDIAのカードを積んだ、比較的新しいゲーミングノートPC(3、4年前のもので問題ありません)が必要です。
ポイント
- Stable Diffusion: AUTOMATIC1111 web UIに、epiCPhotoGasmとControlNet拡張、プリプロセッサーdepth_zoe、control weight 0.7。
- Blender: シンプルな面取りした形の箱の部屋、18〜24 mmのカメラ、16ビットPNGで保存して軽くぼかしたZ深度パス。
- プロジェクション: Backgroundシェーダー、リンクしたマテリアル、サブディビジョンしたメッシュ、UV Project from View。
- プロップ: Sketchfabの無料モデルを、色を合わせ、シャドウキャッチャー、ライトリンク、ブルームで馴染ませます。
深度からレンダリングまでの部分は、灯台のガイドでより詳しく扱っています。ここで新しいのは、プロップと、それをAI画像になじませることです。
1. Stable Diffusion(AUTOMATIC1111)をインストールする
- web UIのREADMEにあるリンクから、Windows用のPythonとGitをインストールします。標準のインストールで、ずっとOKをクリックします。
- Cドライブにフォルダを作り、エクスプローラーのアドレスバーをクリックして、cmdと入力しEnterを押します。
- READMEの
git cloneの行を貼り付けて、Enterを押します。 - **
webui-user.bat**を実行します。初回起動で多くのパッケージをダウンロードし、10〜20分かかることがあります。
ダークモード: webui-user.batを右クリック → Editで、コマンドライン引数に--theme darkを追加し、保存して、もう一度実行します。
モデル
web UIにはStable Diffusion 1.5が付属しているかもしれません。当時、最新だったのは、Hugging Face上のStable Diffusion 3.5(アカウントが必要)です。一般向けのハードウェアには、約5GBのMediumが最適で、LargeとLarge Turboは、それぞれ約16GBです。
私はCivitaiのepiCPhotoGasmを使いました。モデルファイルをmodels/Stable-diffusionに置き、モデルリストの横の更新ボタンをクリックします。.safetensorsファイルを選んでください。.ckptと違って、実行可能なコードを含めることができません。モデルの切り替えには数秒かかり、大きなファイルでは約40秒です。
画像は自動で保存されます。フォルダを変えるには、Settingsに新しいパスを貼り付けて、Reload UIをクリックします。
ControlNet
Extensions → Available → Load fromで、sd-webui-controlnetを検索し、Installをクリックします。深度モデルを、lllyasviel/ControlNet-v1-1から、拡張のmodelsフォルダにダウンロードします。
2. Blender 4.3で部屋をブロックアウトする
Blender 4.3は、以前のバージョンと少し異なります。
- 外殻: Shift+A → Cubeを、実際の比率(約2 × 4 m)に拡大します。Edit Modeで、3を押して面選択にし、上の面を削除して、奥行きを足すために動かします。
- アーチ型の天井: エッジを選択し、Ctrl+Rでエッジループを入れ(スクロールで増やせます)、プロポーショナル編集(G、スクロール、Z)で中央を押し上げてアーチにします。X-rayモードで下の頂点を選択し、G、Z、0で床を平らにします。
- 装飾: 梁と柱用のキューブをいくつか(Gで移動、Sで軸ごとに拡大、Shift+Dで複製)。控えめにして、AIが自分で考える余地を残します。
- すべてを面取りします。 オブジェクトを選択し、Tab、Ctrl+B、スクロールでセグメントを増やします。面取りが不均一なら、オブジェクトが1つの軸だけで拡大されていたということです。元に戻して、Ctrl+A → Apply Scaleをしてから面取りします。Stable Diffusionはより柔らかい形を好み、後のプロジェクションにも余裕が生まれます。
カメラ
カメラの回転値をゼロにし、Ctrlでスナップしながら回転させ、View → Cameras → Set Active Object as Camera、続けてView → Lock Camera to Viewを実行します。Homeを押すと、カメラビューが画面いっぱいになります。
広角レンズ:24 mm、あるいは18を使います。不動産写真家が部屋を広く見せるのと同じ手法です。
3. 深度パスをレンダリングする
- Output Properties: 解像度を**50%**に。解像度が低いほうが、Stable Diffusionでのレンダリングが速くなります。
- View Layer → Passes: Zを有効にします。
- Compositingタブ → Use Nodes、レンダリングし、Viewerを追加してDepthを接続します。最初はすべて白です。
- Map Rangeを挿入して、Stable Diffusionが使える十分な情報が出るまで値をドラッグします。
- Color Management → View Transform: Raw。 より良いグラデーションになります。Stable Diffusionが暗さを遠くと読みすぎる場合は、Lookのコントラスト設定を試してください。ほとんど見えないディテールでも拾います。
- Map RangeをCompositeノードに接続し、レンダリングして、**PNG、16ビット、圧縮0%**で保存します。
プロのコツ:深度マップをぼかします。 Photoshopか、ログイン不要の無料のPhotopeaで、2〜2.5 pxのガウスぼかしをかけて、PNGとして書き出します。示唆性が加わり、本当に役立ちます。後で6〜7 pxぼかして、さらに良い結果を得ました。
4. 部屋を生成する
txt2imgで:
- 深度のPNGをドロップし、サイズを960 × 540にします(そうしないと正方形でレンダリングされます)。
- ControlNet: Enableにチェックを入れ、control typeをDepth、プリプロセッサーをdepth_zoeにします。他のプリプロセッサーでは奇妙な結果が出ました。
- Control weight 0.7で、創造性が増します。1では見たものに固執し、見栄えが悪くなることがあります。
- Seed 10、固定。同じプロンプトで同じ画像が得られます。
「Medieval room with window in the back」は、気に入らない結果になりました。うまくいったプロンプトは、シンプルなゴシック窓、古い壊れた壁と床、木の梁のある木の天井、そしてレンズの長さのあるダンジョンの部屋を記述したものでした。
- **「simple」**な窓。そうしないと、4つか5つの窓を作ります。
- 「wooden beams」。そうしないと、木の天井を飛ばすことがありました。
- レンズの長さで、よりリアルになりました。なぜ役立つのかは分かりませんが、役立ちます。
プリプロセッサーに注意。 あるとき、勝手にdepth_midasに切り替わって、奇妙な結果が出ました。おかしくなって制御できなくなったら、まずそこを確認してください。
画像と一緒に設定を保存する: Settings → Saving imagesで、生成情報の書き込みを有効にします。PNG Infoタブを使うと、保存した画像のプロンプトとサイズをtxt2imgに送り返せます。ControlNetは復元されないので、手作業でもう一度設定してください。
アップスケール
Hires. fixは解像度を2倍にします。LatentとSwinIR 4xのアップスケーラーは結果が異なり、どちらも多くのディテールを変えました。denoising strengthを0.7から0.5に下げると、より多くが保たれました。VRAMがずっと多く必要で(先にコンピューターを再起動する必要がありました)、数秒ではなく5〜10分かかります。
Kreaには、数枚の画像をアップスケールできる無料枠があります。1倍では納得できず、「clarity」の方法では、一部は改善したものの、他の部分は悪化して暖かみが失われました。お使いのコンピューターでアップスケールできない場合に便利です。1000 pxのレンダリングを2Kにしたときは、良い仕事をしました。
200〜300回の生成で学んだこと
- プロンプトに窓を入れる。 なければライティングが偽物に見え、あれば非常に自然になりました。
- **「Mossy floor」**で苔が生え、城に言及すると背景に城が置かれました。
- 額縁が出続けました。ネガティブプロンプトに「frame」を足すと、最終的に消えました。
- プロンプトの山は、窓の外に山を置きました。「White sky」は壁を白く塗りました。
- ControlNetのweightは0.5から0.8の間で、結果を最も変えました。深度マップを5〜15 pxぼかすか、モノクロのノイズを足すのも役立ちます。一貫しないエッジが余地を与えるのです。アニメーションではちらつきますが、ここでは1枚の画像だけが必要で、アニメーションはBlenderから来ます。
Photoshopでバリアントを組み合わせることも、いつでもレタッチすることもできましたが、ここでは素のままの書き出しを見せたいと思いました。
5. 画像を部屋に投影する
- マテリアルを作成し、部屋のすべてのオブジェクトを、最後にテクスチャを付けたものを選択して、Ctrl+L → Link Materialsを押します。
- サーフェスをBackgroundシェーダーに変更します。シェーディングも、スペキュラーも、影もありません。ライティングはすでにAI画像の中にあります。
- Shadingタブで、レンダリングを入れたImage Textureを追加し、Backgroundのカラーに入れます。
- view transformをRawからAgXに変更します。そうしないと、画像が非常に暗くなります。
- メッシュを数回サブディビジョンし、ビューをカメラにして、すべてを選択し、UV → Project from Viewを実行します。
奥の窓は、背後のジオメトリが足りずに揺れていました。奥の面を削除し、代わりに引き伸ばした箱を使って、もう一度投影しました。
6. 本物の3Dプロップを加える
モデルを探すにはSketchfabを使います。3Dプレビューが非常に優れていて、いくつかの博物館が、無料で使えるスキャンをアップロードしています。各ページの下部でライセンスを確認してください。パブリックドメインの聖アンデレの像が見つかりました。ダウンロードにはアカウントが必要です。
- (テクスチャを含む)OBJとしてダウンロードし、解凍して、File → Import → OBJを実行します。移動、回転、拡大して配置します。
- Shadingタブで、3つのImage Textureノードを追加します。color → Base Color、roughness(non-colour) → Roughness、normal(non-colour) → Normal Mapノード → Normal。
- 色を合わせる: colorテクスチャの後にHue/Saturationを追加します。色相を、部屋の暖かいピンクがかった光にわずかにずらし、彩度と明度を下げます。馴染む組み合わせを見つけるのに、しばらくかかります。
7. 部屋に合わせてライティングする
Eeveeで、AI画像を模したライトを追加します。
- キー: 窓がある場所のライト。広いハイライトのために、ポイントライトをエリアライトに切り替えました。後ろからのリムライトも生まれます。
- フィル: 部屋の反射光を模すための、正面からのずっと鈍い2つ目のライト。
- 顔: シーンのデフォルトのポイントライトを、顔の上に動かしたもの(Shift+右クリックで3Dカーソルを置き、Shift+S → Selection to Cursor)。私のものは約11 Wになりました。
- 色: 部屋のように、ライトをわずかに黄色がかったピンクにします。カラーピッカーで背景から色を取れます。
8. シャドウキャッチャー
影がないと、像は偽物に見えます。その下に平面を追加して、次のマテリアルを与えます。
- Transparent BSDFとDiffuse BSDFをMix Shaderに入れます(factor 0 = 透明、1 = diffuse)。
- 2つ目の(白い)Diffuse BSDF → Shader to RGB → Mixのfactor。影が反転して出る場合は、mixの入力を入れ替えます。
- マテリアル設定で、レンダリング方法をDitheredからBlendedに変更します。
平面のエッジを隠すには、X軸で少し回転させ、ジオメトリに接するまで動かします。メインのライトを動かすと、グラデーションの見え方も変わります。
ライトリンク(Blender 4.3の新機能)は、一部のライトが影を明るくするのを防ぎます。ライトのObject → Shading → Light LinkingでNewをクリックし、シャドウキャッチャーの平面をドラッグして入れ、チェックを外します。私はキーライトと顔のライトにこれを行い、影がずっと暗くなりました。コツですが、このように物を隠すのは、制作では非常によくあることです。
ワールドの色も影を変えます。純粋な黒は灰色の環境光を消し、白はすべてを明るくします。私は、部屋に合わせて、少し褐色がかった暗めの色を使いました。
9. ブルームと、より柔らかい見た目
Blender 4.3では、ブルームが変わりました。CompositingタブでGlareノードを追加し、Bloomに設定して、レンダリングをそれ経由でViewerとCompositeに接続します。ビューポートでプレビューするには、ShadingのポップオーバーでコンポジターをAlwaysに設定します。しきい値は好みで下げます。ブルームはAIの背景にも作用し、立体感と没入感が増します。
像のマテリアルに戻り、少しコントラストを下げたBrightness/Contrastノードで、背景のような柔らかく、少し色褪せた見た目になります。ノードでMを押すとミュートでき、比較できます。
10. カメラをアニメーションする
- ビューを分割し、Numpad 0を押して、カメラをビューにロックします。
- auto keyingをオンにして、カメラを動かすと、自動でキーが打たれます。フレーム60に進み、像の顔に近づけます。最初は回転がキー打ちされなかったので、回転も右クリック → Insert Keyframeします。
- ポートレート用のレンズへのズームのために、焦点距離にキーフレームを打ちます。
- 被写界深度: カメラで有効にして、オブジェクトにフォーカスするか、フォーカス距離(クローズアップで0.1 m、開始時は約2 m)を設定してキーフレームを打ちます。f-stopを下げると、ぼけが増えます。
- 動きを遅くするため、フレーム250まで引き伸ばし、グレアを少し減らし、顔のライトを下げました。
速度のために、PNGシーケンスではなく、MPEG動画に直接レンダリングしました。レンダリング前に保存してください。
同じ方法で他のバージョンも作りました。別のSketchfabのプロップを置いたエジプト風の部屋と、真ん中にシンプルな椅子を置いた別の時代の部屋です。
動画版を見る (48:21)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
3DモデルをAI生成の背景になじませるにはどうしますか?
Hue/Saturationノードでテクスチャの色を合わせ、部屋を模した暖かい光(キー、リム、鈍いフィル)で照らし、投影した床に影を落とすシャドウキャッチャーを追加し、Brightness/Contrastノードとブルームで柔らかくします。
カメラプロジェクションがずれて見えるのはなぜですか?
ジオメトリのポリゴン数が少なすぎるからです。メッシュを数回サブディビジョンして、カメラビューからUVをもう一度投影してください。
深度マップをぼかすと、Stable Diffusionに役立ちますか?
はい。数ピクセルのガウスぼかし(私は2〜7を使いました)で、解釈の余地が増えます。強くぼかしたりノイズを足したりすると、1枚の画像には役立ちますが、アニメーションではちらつきます。
一般向けのGPUに合う、Stable Diffusion 3.5のモデルはどれですか?
約5GBのMediumです。LargeとLarge Turboは、それぞれ約16GBです。
