これは、Blenderのシンプルな3Dブロックアウトをコンセプトアートに変えるために使っているパイプラインで、何十もの小道具やキャラクターを、それぞれ自分の説明で、多くのスタイルで、一晩のうちに仕上げます。ブロックアウトからコンセプトアート、そして3Dモデルへという、より大きなパイプラインの中間の工程でもあります。
ノードの数が多いので、シンプルな深度ワークフローから完全な自動版まで、段階的に組み上げました。各段階はそれだけでも役に立ち、全体を理解する最善の方法でもあります。
ポイント
- GPU: FluxにはVRAMが最低12GB必要です。GGUF版かクラウドGPUを使う手もあります。
- 深度: Depth Anythingが深度マップを作り、Flux depth ControlNetは約0.7。
- Flux: guidance 3〜3.5、25ステップ、ネガティブプロンプトは空。
- 自動化: プロンプトリスト(Inspire Pack)、プロンプトのスタック、各スクリーンショットに専用のプロンプトを対応させるループカウンター。
- 仕分け: アスペクト比のチェックが、キャンバスを横向きと縦向きに自動で切り替えます。
完成したワークフローは、何もインストールせずに、設定済みで約15分の無料枠(画像1〜2枚には十分)があるRunComfyで試せます。すべてのワークフロー、プロンプトリスト、3Dモデルは私のPatreonにありますが、隠していることはなく、すべて以下で説明します。
ステージ1:画像から深度、そして画像へ
最もシンプルなワークフローです。スクリーンショットを読み込み、目標のサイズと合わなければリサイズして、Depth Anythingに通します。解像度は1088に設定していて、これは画像の短辺に適用されるので、縦向きのスクリーンショットでもそこは変更不要です。
Depth Anythingノードをバイパス(Ctrl+B)して、代わりにBlenderで深度マップをレンダリングすることもできます。私はやりません。Depth Anythingで十分に良く、ここでは精度は重要ではなく、時間も節約できるからです。
ControlNet。 深度マップは、Flux depth ControlNetを読み込んだApply Flux ControlNetに入ります。強度が重要な設定です。私は0.7にしていて、0.6〜0.8なら機能します。低いと結果がぼやけて緩すぎになり、1.0では画像が崩れます。SDXLでは0.5前後まで下げます。
サンプラー。 標準のKSamplerではなくXLabs Samplerに渡します。KSamplerには、ControlNetのコンディショニングの入力がないからです。
モデル。 私は完全なFlux devモデルを使います。VRAMが少ない場合は、GGUF版を使ってください。同じ構成で、**Unet Loader (GGUF)**とQ4のGGUF Fluxモデルを使います。品質はあまり落ちず、より速く動きます。
プロンプト。 Fluxの2つのテキストエンコーダーを使うDualCLIPLoaderを経て、プロンプトです。Flux Guidanceは3〜3.5です。それ以上だとプロンプトを強く押し込み、画像が焼け始めます。FluxはSDXLのようにネガティブプロンプトを差し引かないので、たいてい空にしています。
サンプラーの設定。 Seedはincrement(画像に2265、2266と番号が付くので、一晩で何が走ったかを追いやすくなります)、25ステップです。ステップを増やしても効果は薄れ、50を超えると時間を無駄にするだけです。
チャットボットでより良いプロンプトを書く
最初のテストプロンプトは単に「sci-fi soldier」で、結果は醜いものでした。2つの簡単な修正で、ずっと良くなりました。
- ネガティブプロンプトに「cartoony, stylized illustration」を入れる。 Fluxでは効果は小さいです。
- ChatGPT(または任意のチャットボット)にプロンプトを拡張してもらう。 サイバーパンクのSF兵士のポジティブプロンプトを頼んで、貼り付けました。まず読んで、変なところは削ってください。
Fluxが隅に付け加えることがある「copyright」の文字について:これは誰かの本物の著作権ではありません。Fluxは、そこにテキストがあることの多い画像を模倣しているのです。
正方形の画像が最良の結果になります。 このパイプラインでは、長い小道具や背の高い小道具が多いため、横向きと縦向きを使いたいと考えました。非常に横長の画像では、小道具に細い輪郭や枠が付くことがあります。私の結果でも見られますが、正方形ではずっと少なくなります。
ステージ2:プロンプトリスト
同じ深度の構成に、テキストファイルからプロンプトを読み込むInspire PackのLoad Single Prompt From Fileノードを加えます。
形式は厳密です。
positive: item one, properties, colours, weather, etc
negative: blurry, low quality, jpeg artefacts, etc
---
positive: item two, properties, colours, weather, etc
negative: blurry, low quality, jpeg artefacts, etc
positive:とnegative:は小文字のままにします。 場所を問わず大文字が混じると、ノードは何も読み取りません。念のため、すべて小文字にしています。- ファイルは次の場所に置く必要があります:
ComfyUI/custom_nodes/comfyui-inspire-pack/prompts/(私はexampleサブフォルダを使っています)。ほかの場所は指定できません。 - 項目数を自分で数えてください。 ノードは教えてくれません。ChatGPTにこの形式でちょうど10項目を頼めば、このようなリストが得られます。
- リストを編集したら、 ComfyUIを再読み込み(Ctrl+R)してください。それでも古いテキストを使うなら、別のリストに切り替えて1回実行し、元に戻します。
最初のリストはvariable-styles-10-promptsという名前で、スタイルだけを記述し、オブジェクトは記述していないので、同じリストがどの小道具でも使えます。
接続。 プロンプトはUnzip Promptノードを通ります(unzipが必要です)。このノードは、使わないにもかかわらず、動作するために何かの画像の接続も必要とします。ノード自身のポジティブ・ネガティブのテキスト欄は何も加えないので、触らないでください。
循環させる。 そのままではリストは最初のプロンプトしか実行しません。WAS Node Suiteのループカウンターが、インデックスを供給します。incrementは1、maxはプロンプトの数です。表示ノードにはインデックスが示され、0(1番目のプロンプト)から9(10番目のプロンプト)まで数えます。最初からやり直すには、resetをtrueにして1回実行し、falseに戻してからもう一度実行します。テキストのプレビューノードが、実行中のプロンプトを表示します。
ステージ3:プロンプトのスタック
プロンプトのスタックは、text concatenateノードで複数の部分から1つの長いプロンプトを組み立てます。各入力が文字列に追加されます。私のテストでは次のとおりです。
- Text B: スタイル。プロンプトリストから(例えばSFの「オーク」スタイル)。
- Text A: 主題。ChatGPTによる軍用ヒューマノイドロボットの長い説明。
- Text C: 背景。森。
最も重要な部分を最初に置きます。 テキストエンコーダーは、前の単語により大きな重みを置くので、主題(戦闘ロボット)をスタイルより前に置きます。とはいえ、Fluxはプロンプト全体をかなりよく追ってくれます。
私のベストな生成ではありませんが、プロンプトには従っています。あと5、6回実行して最良のものを選ぶか、ControlNetの強度を下げて自由度を上げます。気に入ったスタイルが見つかったら、単語を足したり削ったりしてプロンプトを磨きます。
ステージ4:スクリーンショットのフォルダと、それぞれ専用のプロンプト
今度は、スクリーンショットもLoad Image Batchでフォルダから読み込み、同じループカウンターが画像のインデックスとプロンプトのインデックスの両方を動かします。3番目のプロンプトは、常に3番目のスクリーンショットと組み合わされます。
スクリーンショットが18枚あり、sci-fi propsのプロンプトリストには、対応する18の説明がありました。ロケットランチャーが項目1、自動小銃が項目2、という具合です。カウンターのmaxはスクリーンショットの数に設定します(私は誤って10のままにしていましたが、18にするべきでした)。画像プレビューとテキストプレビューで、説明がスクリーンショットと一致しているかを確認します。
サブマシンガンはかなりきれいに仕上がりました。フレームいっぱいにはなりませんが、グリップや多くのパーツは高品質です。この段階には縦横の仕分けがないので、縦向きのスクリーンショットは引き伸ばされます。画像がすべて横向き、またはすべて正方形なら、このシンプルなワークフローで足ります。多くの作業では、よりシンプルなワークフローを使っています。
ステージ5:横向きと縦向きの自動仕分け
背の高い小道具と幅の広い小道具を混ぜるには、ワークフローが各画像の向きを検出して、それに合わせてキャンバスのサイズを決める必要があります。2つのバージョンを作りました。
画像スイッチ(読みやすい方)。 各画像を両方向、つまり横向きと縦向きにリサイズします。WAS Node Suiteのimage aspect nodeが横向きなら1、縦向きなら0を出力し、小さなノードがその数値をtrue/falseに変換して、image input switchが正しくリサイズされた画像を選びます。サイズはその後、Empty Latent Imageに渡されます。欠点は、すべての画像を2回リサイズし、両方をメモリに保持することです。
数値スイッチ(私が使っている方)。 画像を切り替える代わりに、数値を切り替えます。幅用と高さ用の2つのnumber input switchを、同じtrue/falseの値で動かします。横向きなら1920 × 1088、縦向きなら1088 × 1920を選びます。速くて非常に堅牢ですが、理解しにくくなります。数日離れると私でも読むのに苦労するので、それがこの動画を録画した理由の1つでもあります。
この仕分けのコツだけを説明する別のガイドがあります:ComfyUIでアスペクト比で画像を仕分ける。
完全なパイプライン
完全なワークフローは、すべてを組み合わせます。深度マッピング、数値スイッチによる仕分け、プロンプトリスト付きのスクリーンショットのフォルダ、そしてスタイル用の2つ目のプロンプトリストです。各部分はシンプルですが、一緒になると分かりにくくなるので、別々に組み上げたのです。
2つのループカウンターを使うと、バリエーションを掛け合わせられます。小道具のループは18枚のスクリーンショットに対して回り、54項目のカラーリスト(青18、緑18、白18)がそれと並んで回るので、すべての小道具がすべての色でレンダリングされました。ほかの素材も使えます。ステンレス、カーボンファイバー、「3D printed」(プラスチックのように見えました)などです。リストを変えるには、ChatGPTに貼り付けて、たとえば白を黒に変えるよう頼みます。形式は保たれます。
その上に、自由記述のスタイル欄(迷彩、チェック柄、何でも)と背景欄が加わります。
日々の使い方:
- フォルダのパスを自分のスクリーンショットに、プロンプトリストをそれに合うものに変更します。
- カウンターを設定します。スクリーンショットが10枚で色が3つなら、スタイルのカウンターは30まで。10種類の色と素材で一晩動かせば、朝には100個のアイデアが得られます。
- 正方形や小さめの画像のために、深度ノードも含めて幅と高さの値を設定します。ワークフローには、良好なサイズを載せたノートがあります。
- すべてをリセットするには、両方のループカウンターのresetをtrueにして実行し、両方をfalseに戻してもう一度実行します。リストの途中の特定のプロンプトに飛ぶのは厄介です。1つの小道具だけに取り組むときは、その画像とプロンプトリストだけのシンプルなワークフローを使っています。
速度: VRAM 24GBの私のRTX A5000では、1枚に約160秒かかります(ほかのモデルを先に読み込む必要があったときは300秒)。かなりの時間で、アップグレードを考えていた理由です。
どこで動かすか
FluxにはVRAMが最低12GB必要です。小さなカードなら、GGUFモデルを使うか、借りたGPUで動かしてください。私は後にこの種の作業をRunPodに移しました。RunPod入門で説明しています。
上のRunComfyのリンクは紹介リンクで、私のRunPod紹介リンクも同様です。Googleでサインアップした新規RunPodアカウントは最初の10ドルの利用後に5〜500ドル分のクレジットを受け取れ、私には少額の紹介報酬が入ります。
動画版を見る (29:54)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
このパイプラインにはどのGPUが必要ですか?
Fluxには少なくとも12GBのVRAMが必要です。VRAMが少ない場合は、GGUF版のFluxとGGUFローダーを使ってください。品質はあまり落ちません。24GBのRTX A5000では、1枚に約160秒かかりました。
3Dブロックアウトには、ControlNetの強度はどのくらいにすべきですか?
Fluxでは約0.7で、0.6〜0.8でも機能します。1.0では画像が崩れます。SDXLではもっと低く、0.5前後にします。
プロンプトリストが最初のプロンプトしか実行しない、または更新されないのはなぜですか?
プロンプトリストは、循環させるためにループカウンターからのインデックスが必要です。テキストファイルを編集したらComfyUIを再読み込みしてください。それでも古いテキストを使う場合は、別のリストに切り替えて実行し、元に戻します。
横長の画像で、小道具の周りに細い輪郭や枠が出るのはなぜですか?
非常に横長で、正方形でない形式が原因です。正方形の画像が最も予測しやすい結果になりますが、ロケットランチャーのような長い小道具は横長の画像が必要です。コンセプトアートでは、ほとんど問題になりません。

