Eine automatisierte 3D-zu-Concept-Art-Pipeline in ComfyUI: Blockouts, Prompt-Listen und automatisches Sortieren

Verwandle einen Ordner mit 3D-Blockout-Screenshots mit Flux in Concept Art: Depth-ControlNet, Prompt-Listen, Prompt-Stacking, ein Prompt pro Objekt und automatisches Sortieren nach Hoch- und Querformat, aufgebaut von einfachen Workflows bis zu einer vollständigen Pipeline für die Nacht.

Anton Tenitsky13. Oktober 20269 Min. LesezeitVideoversion unten

Diese Anleitung wurde mit KI aus dem Englischen übersetzt und kann Fehler enthalten. Zum Original.

Vier graue 3D-Blockout-Props (ein Gewehr, ein Schild, ein Landungsschiff und eine Kiste) über denselben Props, als detaillierte Concept Art gerendert

Das ist die Pipeline, mit der ich einfache 3D-Blockouts aus Blender in Concept Art verwandle: Dutzende Props und Charaktere, jedes mit eigener Beschreibung, in vielen Stilen, über Nacht. Sie ist außerdem der mittlere Schritt einer größeren Pipeline, vom Blockout über die Concept Art zum 3D-Modell.

Es sind viele Nodes, daher habe ich sie in Stufen aufgebaut, von einem einfachen Tiefen-Workflow bis zur vollständig automatisierten Version. Jede Stufe ist für sich nützlich, und das ist der beste Weg, das Ganze zu verstehen.

Eine Reihe grauer 3D-Blockouts: Waffen, ein Schild, ein Landungsschiff, ein Panzer, Kisten, Roboter und Soldatenfiguren
Die Eingabe: eine Reihe von Blockout-Props und -Charakteren, als Screenshots aus Blender.

Kurz gefasst

  • GPU: mindestens 12 GB VRAM für Flux, oder nutze eine GGUF-Version oder eine Cloud-GPU.
  • Tiefe: Depth Anything erzeugt die Tiefenkarte; Flux Depth ControlNet bei etwa 0,7.
  • Flux: Guidance 3–3,5, 25 Schritte, negativer Prompt leer.
  • Automatisierung: Prompt-Listen (Inspire Pack), Prompt-Stacking und Loop Counter, die jeden Screenshot seinem eigenen Prompt zuordnen.
  • Sortieren: Eine Seitenverhältnis-Prüfung schaltet die Leinwand automatisch zwischen Quer- und Hochformat um.

Du kannst den fertigen Workflow ohne Installation bei RunComfy ausprobieren, fertig eingerichtet, mit etwa 15 kostenlosen Minuten: genug für ein oder zwei Bilder. Alle Workflows, Prompt-Listen und 3D-Modelle liegen auf meinem Patreon, aber nichts ist versteckt: Unten wird alles erklärt.

Stufe 1: Bild zu Tiefe zu Bild

Der einfachste Workflow. Lade einen Screenshot, skaliere ihn, falls er nicht zu deiner Zielgröße passt, und lass ihn durch Depth Anything laufen. Ich habe die Auflösung auf 1088 gesetzt, was für die kurze Seite des Bildes gilt, ein Hochformat-Screenshot braucht dort also keine Änderung.

ComfyUI-Workflow mit einem Screenshot zweier Blockout-Soldaten und seiner Tiefenkarte
Screenshot hinein, Tiefenkarte heraus.

Du kannst stattdessen in Blender eine Tiefenkarte rendern und den Depth-Anything-Node umgehen (Strg+B). Ich tue mir das nicht an: Depth Anything ist gut genug, Präzision ist hier nicht kritisch, und es spart Zeit.

ControlNet. Die Tiefenkarte geht an Apply Flux ControlNet mit einem geladenen Flux Depth ControlNet. Die Stärke ist die entscheidende Einstellung. Ich halte sie bei 0,7; alles von 0,6 bis 0,8 funktioniert. Niedriger macht das Ergebnis unscharf und zu locker; bei 1,0 bekommt das Bild Glitches. Mit SDXL gehe ich auf etwa 0,5 herunter.

Sampler. Er geht an den XLabs Sampler, nicht an den Standard-KSampler, der keinen Eingang für das ControlNet-Conditioning hat.

Modell. Ich nutze das vollständige Modell Flux dev. Bei wenig VRAM nutze eine GGUF-Version: dasselbe Setup mit einem Unet Loader (GGUF) und einem GGUF-Flux-Modell in Q4. Die Qualität leidet nicht stark, und es läuft schneller.

Prompt. Der DualCLIPLoader mit Flux’ zwei Text-Encodern, dann der Prompt. Flux Guidance bei 3 bis 3,5: Höher drückt den Prompt stärker durch und beginnt, das Bild zu verbrennen. Flux subtrahiert einen negativen Prompt nicht wie SDXL, daher lasse ich ihn meist leer.

Sampler-Einstellungen. Seed auf increment (Bilder bekommen die Nummern 2265, 2266 und so weiter, was es leicht macht, nachzuverfolgen, was über Nacht gelaufen ist), 25 Schritte. Mehr Schritte bringen abnehmende Erträge, und über 50 verschwendest du nur Zeit.

Bessere Prompts mit einem Chatbot schreiben

Mein erster Test-Prompt war nur „sci-fi soldier“, und das Ergebnis war hässlich. Zwei schnelle Korrekturen verbesserten es deutlich:

  • Setze „cartoony, stylized illustration“ in den negativen Prompt. Es hat in Flux eine kleine Wirkung.
  • Bitte ChatGPT (oder einen beliebigen Chatbot), den Prompt zu erweitern. Ich bat um einen positiven Prompt für einen Cyberpunk-Science-Fiction-Soldaten und fügte ihn ein. Lies ihn zuerst und streiche alles Merkwürdige.
Zwei gelb gepanzerte Science-Fiction-Soldaten in einer Wüste, aus dem Blockout erzeugt
Mit einem besseren Prompt wurden die Blockout-Soldaten viel überzeugender.
Ein grauer Blockout-Soldat neben demselben Soldaten, in gelber Rüstung gerendert
Blockout und Ergebnis, nebeneinander.

Ein Hinweis zu dem „Copyright“-Text, den Flux manchmal in eine Ecke setzt: Er ist niemandes echtes Urheberrecht. Flux ahmt Bilder nach, die dort oft Text hatten.

Quadratische Bilder liefern die besten Ergebnisse. Ich wollte in dieser Pipeline Quer- und Hochformat, weil viele Props lang oder hoch sind. Sehr breite Bilder geben dem Prop manchmal einen dünnen Umriss oder Rahmen. Du siehst es in meinen Ergebnissen; quadratische Bilder haben viel weniger davon.

Stufe 2: Prompt-Listen

Dasselbe Tiefen-Setup, plus ein Node Load Single Prompt From File aus dem Inspire Pack, der Prompts aus einer Textdatei liest.

Der Node Load Single Prompt From File aus dem Inspire Pack, mit einer Notiz, die das Format der Prompt-Liste zeigt
Der Prompt-Loader des Inspire Pack und das Format, das er erwartet.

Das Format ist streng:

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
  • Halte positive: und negative: kleingeschrieben. Ein Großbuchstabe an der falschen Stelle lässt den Node nichts lesen. Ich halte der Sicherheit halber alles kleingeschrieben.
  • Die Datei muss in ComfyUI/custom_nodes/comfyui-inspire-pack/prompts/ liegen (ich nutze den Unterordner example). Du kannst ihn nicht woanders hinzeigen lassen.
  • Zähle deine Einträge, denn der Node sagt es dir nicht. Bitte ChatGPT um genau 10 Einträge in diesem Format, und es liefert dir eine Liste wie diese.
  • Lade ComfyUI nach dem Bearbeiten einer Liste neu (Strg+R). Wenn es weiter den alten Text nutzt, wechsle zu einer anderen Liste, führe einmal aus und wechsle zurück.

Meine erste Liste hieß variable-styles-10-prompts: nur Stile, ohne ein Objekt zu beschreiben, sodass dieselbe Liste für jedes Prop funktioniert.

Verdrahtung. Der Prompt läuft durch einen Node Unzip Prompt (er muss entpackt werden). Dieser Node braucht außerdem irgendein angeschlossenes Bild, um zu funktionieren, obwohl er es nicht nutzt. Seine eigenen Textfelder für positiv und negativ tragen nichts bei, lass sie also in Ruhe.

Ihn durchlaufen lassen. Allein führt die Liste nur den ersten Prompt aus. Ein Loop Counter aus der WAS Node Suite speist den Index: Inkrement 1, Maximum = Anzahl der Prompts. Ein Anzeige-Node zeigt den Index, der von 0 (Prompt 1) bis 9 (Prompt 10) zählt. Um von vorn zu beginnen, setze reset auf true, führe einmal aus, setze es zurück auf false und führe erneut aus. Ein Text-Vorschau-Node zeigt, welcher Prompt läuft.

Stufe 3: Prompt-Stacking

Beim Prompt-Stacking wird mit einem Text-Concatenate-Node aus mehreren Teilen ein langer Prompt aufgebaut: Jeder Eingang hängt etwas an den String. In meinem Test:

  • Text B: der Stil, aus der Prompt-Liste (zum Beispiel ein Science-Fiction-„Ork“-Stil).
  • Text A: das Motiv, eine lange Beschreibung eines militärischen humanoiden Roboters von ChatGPT.
  • Text C: der Hintergrund, ein Wald.

Setze den wichtigsten Teil zuerst. Die Text-Encoder gewichten frühere Wörter stärker, daher kommt das Motiv (ein Kampfroboter) vor den Stil. Allerdings folgt Flux dem Prompt insgesamt ziemlich gut.

Zwei weiße Kampfroboter in einem nebligen Wald, mit einem gestapelten Prompt erzeugt
Ein gestapelter Prompt: Roboterbeschreibung, Stil, dann Waldhintergrund.

Nicht meine beste Generierung, aber sie folgt dem Prompt. Ich würde fünf oder sechs weitere ausführen und die beste auswählen oder die ControlNet-Stärke für mehr Freiheit senken. Sobald du einen Stil gefunden hast, der dir gefällt, verfeinere den Prompt, indem du Wörter hinzufügst und entfernst.

Stufe 4: Ein Ordner mit Screenshots, jeder mit eigenem Prompt

Jetzt kommen auch die Screenshots aus einem Ordner, über Load Image Batch, und derselbe Loop Counter steuert sowohl den Bildindex als auch den Prompt-Index. Prompt 3 gehört immer zu Screenshot 3.

Der Node Load Image Batch mit einer Vorschau eines Blockout-Screenshots eines Messers
Load Image Batch, mit einer Vorschau des aktuellen Screenshots.

Ich hatte 18 Screenshots und eine Prompt-Liste Science-Fiction-Props mit 18 passenden Beschreibungen: Der Raketenwerfer ist Eintrag 1, das automatische Gewehr Eintrag 2 und so weiter. Setze das Maximum des Zählers auf die Anzahl der Screenshots (ich hatte es versehentlich auf 10 gelassen; es müsste 18 sein). Nutze die Bildvorschau und die Textvorschau, um zu prüfen, ob die Beschreibung zum Screenshot passt.

Eine weiß-schwarze Science-Fiction-Maschinenpistole an einem Baum in einem Wald
Screenshot 3 mit der passenden Beschreibung: eine Maschinenpistole.

Die Maschinenpistole wurde ziemlich schön. Sie füllt das Bild nicht aus, aber die Griffe und viele der Teile haben hohe Qualität. Diese Stufe hat kein Sortieren nach Hoch- und Querformat, daher werden Hochformat-Screenshots gestreckt. Wenn alle deine Bilder im Querformat oder alle quadratisch sind, genügt dieser einfachere Workflow. Ich nutze einfachere Workflows für viele Aufgaben.

Stufe 5: Quer- und Hochformat automatisch sortieren

Um hohe und breite Props zu mischen, muss der Workflow die Ausrichtung jedes Bildes erkennen und die Leinwand entsprechend dimensionieren. Ich habe zwei Versionen gebaut.

Der Image Switch (leichter lesbar). Jedes Bild wird in beide Richtungen skaliert, auf Querformat und auf Hochformat. Ein Node Image Aspect aus der WAS Node Suite gibt 1 für Querformat und 0 für Hochformat aus, ein kleiner Node wandelt diese Zahl in wahr/falsch um, und ein Image Input Switch wählt das richtig skalierte Bild. Die Größe geht dann an das Empty Latent Image. Der Nachteil: Du skalierst jedes Bild zweimal und hältst beide im Speicher.

Der Number Switch (was ich nutze). Statt Bilder umzuschalten, schaltet er die Zahlen um: zwei Number Input Switches, einer für die Breite und einer für die Höhe, beide vom selben wahr/falsch-Wert gesteuert. Querformat wählt 1920 × 1088; Hochformat wählt 1088 × 1920. Das ist schneller und sehr robust, aber schwerer nachzuvollziehen. Selbst ich tue mich damit nach ein paar Tagen Abstand schwer, was zum Teil der Grund ist, warum ich dieses Video aufgenommen habe.

Konstante Zahlen-Nodes und zwei Number-Input-Switch-Nodes, die Breite und Höhe nach der Bildausrichtung wählen
Der Number Switch: Die Ausrichtung des Bildes wählt Breite und Höhe.

Es gibt einen eigenen Leitfaden, der diesen Sortiertrick für sich erklärt: Bilder in ComfyUI nach Seitenverhältnis sortieren.

Die vollständige Pipeline

Der vollständige Workflow kombiniert alles: Tiefenkarte, das Sortieren mit dem Number Switch, den Screenshot-Ordner mit seiner Prompt-Liste und eine zweite Prompt-Liste für Stile. Jeder Teil ist einfach; zusammen sind sie schwer nachzuvollziehen, weshalb ich sie getrennt aufgebaut habe.

Mit zwei Loop Countern kannst du die Variationen vervielfachen. Meine Props-Schleife lief über 18 Screenshots, und daneben lief eine Farbliste mit 54 Einträgen (18 blau, 18 grün, 18 weiß), sodass jedes Prop in jeder Farbe gerendert wurde. Andere Materialien funktionieren auch: Edelstahl, Kohlefaser, „3D printed“ (das wie Plastik aussah). Um eine Liste zu ändern, füge sie in ChatGPT ein und bitte zum Beispiel darum, Weiß in Schwarz zu ändern. Es behält das Format bei.

Obendrein kommen ein Freitext-Feld für den Stil (Tarnmuster, Karomuster, alles) und ein Hintergrundfeld.

Ein blauer Science-Fiction-Raketenwerfer auf grauen isländischen Felsen
Das Endergebnis: der Raketenwerfer in Blau, mit einem Island-Hintergrund.
Ein Raster desselben Soldaten in vielen Farb- und Materialvariationen, in Wüsten und im Schnee
Ein Blockout, viele Farben und Materialien, alles aus den Listen.

Im Alltag nutzen:

  • Ändere den Ordnerpfad auf deine Screenshots und die Prompt-Liste passend dazu.
  • Setze die Zähler: Bei 10 Screenshots und 3 Farben geht der Stil-Zähler bis 30. Lass es über Nacht mit zehn Farben und Materialien laufen, und du hast am Morgen 100 Ideen.
  • Setze die Werte für Breite und Höhe, auch am Tiefen-Node, für quadratische oder kleinere Bilder. Der Workflow hat Notizen mit guten Größen.
  • Um alles zurückzusetzen, setze das Reset beider Loop Counter auf true, führe aus, setze dann beide auf false und führe erneut aus. Mitten in der Liste zu einem bestimmten Prompt zu springen, ist knifflig; um an einem Prop zu arbeiten, nutze ich einen einfacheren Workflow mit nur diesem Bild und der Prompt-Liste.

Geschwindigkeit: Auf meiner RTX A5000 mit 24 GB VRAM braucht ein Bild etwa 160 Sekunden (300, wenn zuvor andere Modelle geladen werden mussten). Das ist ziemlich viel Zeit, und deshalb wollte ich upgraden.

Wo du es ausführst

Du brauchst mindestens 12 GB VRAM für Flux. Auf einer kleineren Karte nutze das GGUF-Modell oder führe es auf einer gemieteten GPU aus; ich habe diese Art von Arbeit später zu RunPod verlegt, wie in meiner Einführung in RunPod beschrieben.

Der RunComfy-Link oben ist ein Empfehlungslink, ebenso mein RunPod-Empfehlungslink: Neue RunPod-Konten, die sich mit Google anmelden, erhalten nach ihren ersten 10 $ ein Guthaben von 5–500 $, und ich bekomme eine kleine Provision.

Die Videoversion ansehen (29:54)

Alles oben steht auch im Video, falls du lieber am Bildschirm mitmachst. Das Video ist auf Englisch.

Häufige Fragen

Welche GPU brauche ich für diese Pipeline?

Mindestens 12 GB VRAM für Flux. Mit weniger VRAM nutze die GGUF-Version von Flux mit einem GGUF-Loader: Die Qualität leidet nicht stark. Auf meiner RTX A5000 mit 24 GB brauchte ein Bild etwa 160 Sekunden.

Welche ControlNet-Stärke sollte ich für 3D-Blockouts nutzen?

Etwa 0,7 mit Flux; zwischen 0,6 und 0,8 funktioniert. Bei 1,0 hat das Bild Glitches. Mit SDXL gehe ich niedriger, auf etwa 0,5.

Warum führt meine Prompt-Liste nur den ersten Prompt aus oder aktualisiert sich nicht?

Eine Prompt-Liste braucht einen Index aus einem Loop Counter, um durchzulaufen. Wenn du die Textdatei bearbeitest, lade ComfyUI neu; wenn es weiter den alten Text nutzt, wechsle zu einer anderen Liste, führe aus und wechsle zurück.

Warum haben meine breiten Bilder einen dünnen Umriss oder Rahmen um das Prop?

Er kommt vom sehr breiten, nicht quadratischen Format. Quadratische Bilder liefern die vorhersehbarsten Ergebnisse, aber lange Props wie Raketenwerfer brauchen breite Bilder. Für Concept Art spielt das selten eine Rolle.

Anton Tenitsky ist 3D-Artist mit mehr als 15 Jahren Erfahrung in der Computergrafik, tätig für Nickelodeon, Gameloft, Marvel Rivals und viele weitere Kunden. Mehr über mich

Ähnliche Anleitungen