C’est le pipeline que j’utilise pour transformer de simples blockouts 3D de Blender en concept art : des dizaines d’accessoires et de personnages, chacun avec sa propre description, dans de nombreux styles, pendant la nuit. C’est aussi l’étape centrale d’un pipeline plus vaste, du blockout au concept art puis au modèle 3D.
Cela fait beaucoup de nodes, je l’ai donc construit par étapes, d’un simple workflow de profondeur jusqu’à la version entièrement automatisée. Chaque étape est utile en soi, et c’est la meilleure façon de comprendre l’ensemble.
En bref
- GPU : 12 Go de VRAM au minimum pour Flux, ou utilisez une version GGUF ou un GPU cloud.
- Profondeur : Depth Anything produit la carte de profondeur ; Flux depth ControlNet à environ 0,7.
- Flux : guidance 3–3,5, 25 étapes, prompt négatif vide.
- Automatisation : listes de prompts (Inspire Pack), empilement de prompts et compteurs de boucle qui associent chaque capture à son propre prompt.
- Tri : une vérification du rapport d’aspect bascule automatiquement la toile entre paysage et portrait.
Vous pouvez essayer le workflow terminé sans rien installer sur RunComfy, déjà configuré, avec environ 15 minutes gratuites : de quoi faire une image ou deux. Tous les workflows, listes de prompts et modèles 3D sont sur mon Patreon, mais rien n’est caché : tout est expliqué ci-dessous.
Étape 1 : de l’image à la profondeur puis à l’image
Le workflow le plus simple. Chargez une capture, redimensionnez-la si elle ne correspond pas à votre taille cible, et passez-la dans Depth Anything. J’ai réglé sa résolution à 1088, ce qui s’applique au côté court de l’image : une capture en portrait n’a donc besoin d’aucun changement à cet endroit.
Vous pouvez rendre une carte de profondeur dans Blender à la place et contourner le node Depth Anything (Ctrl+B). Je ne m’en donne pas la peine : Depth Anything est suffisant, la précision n’est pas critique ici, et cela fait gagner du temps.
ControlNet. La carte de profondeur va dans Apply Flux ControlNet avec un Flux depth ControlNet chargé. La force est le réglage clé. Je la garde à 0,7 ; toute valeur de 0,6 à 0,8 fonctionne. Plus bas, le résultat est flou et trop lâche ; à 1,0, l’image présente des défauts. Avec SDXL, je descends à environ 0,5.
Sampler. Il va dans le XLabs Sampler, pas dans le KSampler standard, qui n’a pas d’entrée pour le conditionnement du ControlNet.
Modèle. J’utilise le modèle Flux dev complet. Avec peu de VRAM, utilisez une version GGUF : la même configuration avec un Unet Loader (GGUF) et un modèle Flux GGUF Q4. La qualité n’en souffre pas beaucoup, et cela tourne plus vite.
Prompt. Le DualCLIPLoader avec les deux encodeurs de texte de Flux, puis le prompt. Flux Guidance de 3 à 3,5 : plus haut, cela pousse davantage le prompt et commence à brûler l’image. Flux ne soustrait pas de prompt négatif comme SDXL, je le laisse donc généralement vide.
Réglages du sampler. Seed en increment (les images sont numérotées 2265, 2266 et ainsi de suite, ce qui facilite le suivi de ce qui a tourné pendant la nuit), 25 étapes. Plus d’étapes, ce sont des rendements décroissants, et au-delà de 50 vous perdez simplement du temps.
Écrire de meilleurs prompts avec un chatbot
Mon premier prompt de test était simplement « sci-fi soldier », et le résultat était laid. Deux corrections rapides l’ont beaucoup amélioré :
- Mettez « cartoony, stylized illustration » dans le prompt négatif. Cela a un petit effet dans Flux.
- Demandez à ChatGPT (ou à n’importe quel chatbot) d’étoffer le prompt. J’ai demandé un prompt positif pour un soldat de science-fiction cyberpunk et je l’ai collé. Lisez-le d’abord et retirez tout ce qui est bizarre.
Une remarque sur ce texte de « copyright » que Flux ajoute parfois dans un coin : ce n’est le droit d’auteur de personne. Flux imite des images qui comportaient souvent du texte à cet endroit.
Les images carrées donnent les meilleurs résultats. Je voulais du paysage et du portrait dans ce pipeline parce que beaucoup d’accessoires sont longs ou hauts. Les images très larges donnent parfois à l’accessoire un fin contour ou un cadre. Vous le verrez dans mes résultats ; les images carrées en ont beaucoup moins.
Étape 2 : listes de prompts
La même configuration de profondeur, plus un node Load Single Prompt From File de l’Inspire Pack, qui lit des prompts dans un fichier texte.
Le format est strict :
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
- Gardez
positive:etnegative:en minuscules. Une majuscule au mauvais endroit fait que le node ne lit rien. Je garde tout en minuscules par sécurité. - Le fichier doit se trouver dans
ComfyUI/custom_nodes/comfyui-inspire-pack/prompts/(j’utilise le sous-dossierexample). Vous ne pouvez pas le pointer ailleurs. - Comptez vos entrées, car le node ne vous le dira pas. Demandez à ChatGPT exactement 10 entrées dans ce format et il vous donnera une liste de ce genre.
- Après avoir modifié une liste, rechargez ComfyUI (Ctrl+R). S’il utilise encore l’ancien texte, passez à une autre liste, lancez une fois, puis revenez.
Ma première liste s’appelait variable-styles-10-prompts : uniquement des styles, sans aucun objet décrit, de sorte que la même liste fonctionne sur n’importe quel accessoire.
Câblage. Le prompt passe par un node Unzip Prompt (il doit être dézippé). Ce node a aussi besoin qu’une image quelconque soit connectée pour fonctionner, même s’il ne l’utilise pas. Ses propres champs de texte positif et négatif n’apportent rien, laissez-les donc tranquilles.
Le faire défiler. Seule, la liste n’exécute que le premier prompt. Un loop counter de la WAS Node Suite alimente l’index : incrément 1, maximum = le nombre de prompts. Un node d’affichage montre l’index, qui compte de 0 (prompt 1) à 9 (prompt 10). Pour recommencer, mettez reset à true, lancez une fois, remettez-le à false et relancez. Un node d’aperçu de texte montre quel prompt est en cours.
Étape 3 : empilement de prompts
L’empilement de prompts construit un long prompt à partir de plusieurs morceaux avec un node text concatenate : chaque entrée s’ajoute à la chaîne. Dans mon test :
- Text B : le style, venant de la liste de prompts (par exemple un style « ork » de science-fiction).
- Text A : le sujet, une longue description d’un robot humanoïde militaire fournie par ChatGPT.
- Text C : l’arrière-plan, une forêt.
Mettez d’abord la partie la plus importante. Les encodeurs de texte donnent plus de poids aux premiers mots, le sujet (un robot de combat) passe donc avant le style. Cela dit, Flux suit assez bien le prompt dans son ensemble.
Pas ma meilleure génération, mais elle suit le prompt. J’en lancerais cinq ou six de plus pour choisir la meilleure, ou je baisserais la force du ControlNet pour plus de liberté. Une fois que vous avez trouvé un style qui vous plaît, affinez le prompt en ajoutant et en retirant des mots.
Étape 4 : un dossier de captures, chacune avec son propre prompt
Maintenant les captures viennent aussi d’un dossier, via Load Image Batch, et le même compteur de boucle pilote à la fois l’index de l’image et celui du prompt. Le prompt 3 va toujours avec la capture 3.
J’avais 18 captures et une liste de prompts d’accessoires de science-fiction avec 18 descriptions correspondantes : le lance-roquettes est l’entrée 1, le fusil automatique l’entrée 2, et ainsi de suite. Réglez le maximum du compteur sur le nombre de captures (je l’avais laissé à 10 par erreur ; il devrait être à 18). Utilisez l’aperçu d’image et l’aperçu de texte pour vérifier que la description correspond à la capture.
Le pistolet-mitrailleur est sorti plutôt joli. Il ne remplit pas le cadre, mais les poignées et beaucoup de pièces sont de haute qualité. Cette étape n’a pas de tri portrait/paysage, les captures en portrait sont donc étirées. Si toutes vos images sont en paysage, ou toutes carrées, ce workflow plus simple suffit. J’utilise des workflows plus simples pour beaucoup de travaux.
Étape 5 : trier automatiquement paysage et portrait
Pour mélanger des accessoires hauts et larges, le workflow doit détecter l’orientation de chaque image et dimensionner la toile en conséquence. J’ai construit deux versions.
L’image switch (plus facile à lire). Chaque image est redimensionnée dans les deux sens, en paysage et en portrait. Un node image aspect de la WAS Node Suite sort 1 pour le paysage et 0 pour le portrait, un petit node convertit ce nombre en vrai/faux, et un image input switch choisit l’image correctement redimensionnée. La taille va ensuite à l’Empty Latent Image. L’inconvénient : vous redimensionnez chaque image deux fois et gardez les deux en mémoire.
Le number switch (celui que j’utilise). Au lieu de commuter des images, il commute les nombres : deux number input switches, un pour la largeur et un pour la hauteur, pilotés par la même valeur vrai/faux. Le paysage choisit 1920 × 1088 ; le portrait choisit 1088 × 1920. C’est plus rapide et très robuste, bien que plus difficile à suivre. Même moi, j’ai du mal à le relire après quelques jours d’absence, ce qui explique en partie pourquoi j’ai enregistré cette vidéo.
Il existe un guide à part qui explique cette astuce de tri à elle seule : trier les images par rapport d’aspect dans ComfyUI.
Le pipeline complet
Le workflow complet combine tout : cartographie de la profondeur, le tri par number switch, le dossier de captures avec sa liste de prompts, et une seconde liste de prompts pour les styles. Chaque partie est simple ; ensemble, elles sont difficiles à suivre, c’est pourquoi je les ai construites séparément.
Avec deux compteurs de boucle, vous pouvez multiplier les variations. Ma boucle d’accessoires parcourait 18 captures, et une liste de couleurs de 54 entrées (18 bleues, 18 vertes, 18 blanches) tournait à côté, de sorte que chaque accessoire a été rendu dans chaque couleur. D’autres matériaux fonctionnent aussi : acier inoxydable, fibre de carbone, « 3D printed » (qui avait l’air de plastique). Pour changer une liste, collez-la dans ChatGPT et demandez, par exemple, de changer le blanc en noir. Il conserve le format.
Par-dessus viennent un champ de style libre (camouflage, motifs à damiers, n’importe quoi) et un champ d’arrière-plan.
L’utiliser au quotidien :
- Changez le chemin du dossier vers vos captures et la liste de prompts pour qu’elle corresponde.
- Réglez les compteurs : avec 10 captures et 3 couleurs, le compteur de styles monte à 30. Lancez pendant la nuit avec dix couleurs et matériaux et vous avez 100 idées au matin.
- Réglez les valeurs de largeur et de hauteur, y compris sur le node de profondeur, pour des images carrées ou plus petites. Le workflow contient des notes listant de bonnes tailles.
- Pour tout réinitialiser, mettez le reset des deux compteurs de boucle à true, lancez, puis mettez les deux à false et relancez. Sauter à un prompt précis en milieu de liste est délicat ; pour travailler sur un seul accessoire, j’utilise un workflow plus simple avec seulement cette image et la liste de prompts.
Vitesse : sur ma RTX A5000 de 24 Go de VRAM, une image prend environ 160 secondes (300 quand d’autres modèles devaient d’abord se charger). C’est un temps conséquent, et c’est pourquoi je cherchais à changer de matériel.
Où l’exécuter
Il vous faut au moins 12 Go de VRAM pour Flux. Sur une carte plus petite, utilisez le modèle GGUF, ou faites-le tourner sur un GPU loué ; j’ai ensuite déplacé ce type de travail vers RunPod, comme décrit dans mon introduction à RunPod.
Le lien RunComfy ci-dessus est un lien de parrainage, tout comme mon lien de parrainage RunPod : les nouveaux comptes RunPod inscrits avec Google reçoivent entre 5 et 500 $ de crédit après leurs 10 premiers dollars, et je touche une petite commission.
Voir la version vidéo (29:54)
Tout ce qui précède est aussi dans la vidéo, si vous préférez suivre à l’écran. La vidéo est en anglais.
Questions fréquentes
De quel GPU ai-je besoin pour ce pipeline ?
Au moins 12 Go de VRAM pour Flux. Avec moins de VRAM, utilisez la version GGUF de Flux avec un chargeur GGUF : la qualité n'en souffre pas beaucoup. Sur ma RTX A5000 de 24 Go, une image a pris environ 160 secondes.
Quelle force de ControlNet utiliser pour les blockouts 3D ?
Environ 0,7 avec Flux ; entre 0,6 et 0,8 fonctionne. À 1,0, l'image présente des défauts. Avec SDXL je descends, vers 0,5.
Pourquoi ma liste de prompts n'exécute-t-elle que le premier prompt, ou ne se met-elle pas à jour ?
Une liste de prompts a besoin d'un index venant d'un compteur de boucle pour défiler. Si vous modifiez le fichier texte, rechargez ComfyUI ; s'il utilise encore l'ancien texte, passez à une autre liste, lancez, puis revenez.
Pourquoi mes images larges ont-elles un fin contour ou un cadre autour de l'accessoire ?
Cela vient du format très large, non carré. Les images carrées donnent les résultats les plus prévisibles, mais les accessoires longs comme les lance-roquettes demandent des images larges. Pour du concept art, cela compte rarement.

