Este es el proceso que uso para convertir bloqueos 3D sencillos de Blender en concept art: decenas de objetos y personajes, cada uno con su propia descripción, en muchos estilos, durante la noche. También es el paso intermedio de un proceso mayor, de bloqueo a concept art y a modelo 3D.
Son muchos nodos, así que lo construí por etapas, desde un flujo de profundidad sencillo hasta la versión automatizada completa. Cada etapa es útil por sí sola, y esa es la mejor forma de entender el conjunto.
En resumen
- GPU: 12 GB de VRAM como mínimo para Flux, o usa una versión GGUF o una GPU en la nube.
- Profundidad: Depth Anything crea el mapa de profundidad; ControlNet de profundidad de Flux a unos 0,7.
- Flux: guidance 3–3,5, 25 steps, prompt negativo vacío.
- Automatización: listas de prompts (Inspire Pack), apilado de prompts y contadores de bucle que asocian cada captura con su propio prompt.
- Ordenación: una comprobación de relación de aspecto cambia el lienzo entre horizontal y vertical automáticamente.
Puedes probar el flujo terminado sin instalar nada en RunComfy, ya preparado, con unos 15 minutos gratis: suficiente para una o dos imágenes. Todos los flujos, las listas de prompts y los modelos 3D están en mi Patreon, pero no hay nada oculto: todo se explica a continuación.
Etapa 1: de imagen a profundidad a imagen
El flujo más sencillo. Carga una captura, redimensiónala si no coincide con el tamaño objetivo y pásala por Depth Anything. Fijé su resolución en 1088, que se aplica al lado corto de la imagen, así que una captura vertical no necesita cambios ahí.
Puedes renderizar un mapa de profundidad en Blender y saltarte el nodo Depth Anything (Ctrl+B). Yo no me molesto: Depth Anything es suficientemente bueno, la precisión aquí no es crítica y ahorra tiempo.
ControlNet. El mapa de profundidad va a Apply Flux ControlNet con un ControlNet de profundidad de Flux cargado. La fuerza es el ajuste clave. La mantengo en 0,7; de 0,6 a 0,8 funciona. Más baja deja el resultado borroso y demasiado suelto; con 1,0 la imagen se llena de fallos. Con SDXL bajo a unos 0,5.
Sampler. Va al XLabs Sampler, no al KSampler estándar, que no tiene entrada para el condicionamiento del ControlNet.
Modelo. Uso el modelo Flux dev completo. Con poca VRAM, usa una versión GGUF: la misma configuración con un Unet Loader (GGUF) y un modelo Flux GGUF Q4. La calidad no sufre mucho y va más rápido.
Prompt. El DualCLIPLoader con los dos codificadores de texto de Flux, y luego el prompt. Flux Guidance de 3 a 3,5: más alto empuja más el prompt y empieza a quemar la imagen. Flux no resta un prompt negativo como SDXL, así que normalmente lo dejo vacío.
Ajustes del sampler. Seed en increment (las imágenes se numeran 2265, 2266 y así, lo que facilita saber qué se ejecutó durante la noche), 25 steps. Más steps son rendimientos decrecientes, y pasados los 50 solo pierdes tiempo.
Escribe mejores prompts con un chatbot
Mi primer prompt de prueba era solo «sci-fi soldier», y el resultado fue feo. Dos arreglos rápidos lo mejoraron mucho:
- Pon «cartoony, stylized illustration» en el prompt negativo. Tiene un efecto pequeño en Flux.
- Pídele a ChatGPT (o a cualquier chatbot) que amplíe el prompt. Le pedí un prompt positivo para un soldado cyberpunk de ciencia ficción y lo pegué. Léelo primero y recorta lo que resulte raro.
Una nota sobre ese texto de «copyright» que Flux a veces añade en una esquina: no es el copyright real de nadie. Flux imita imágenes que a menudo tenían texto ahí.
Las imágenes cuadradas dan los mejores resultados. En este proceso quería horizontal y vertical porque muchos objetos son largos o altos. Las imágenes muy anchas a veces dan al objeto un contorno o marco fino. Lo verás en mis resultados; las imágenes cuadradas tienen mucho menos.
Etapa 2: listas de prompts
La misma configuración de profundidad, más un nodo Load Single Prompt From File del Inspire Pack, que lee prompts de un archivo de texto.
El formato es estricto:
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
- Mantén
positive:ynegative:en minúsculas. Una mayúscula en el sitio equivocado hace que el nodo no lea nada. Yo lo mantengo todo en minúsculas por si acaso. - El archivo tiene que estar en
ComfyUI/custom_nodes/comfyui-inspire-pack/prompts/(yo uso la subcarpetaexample). No se puede apuntar a otro sitio. - Lleva la cuenta de tus entradas, porque el nodo no te la dará. Pídele a ChatGPT exactamente 10 entradas con este formato y te dará una lista así.
- Después de editar una lista, recarga ComfyUI (Ctrl+R). Si sigue usando el texto antiguo, cambia a otra lista, ejecuta una vez y vuelve a cambiar.
Mi primera lista se llamaba variable-styles-10-prompts: solo estilos, sin describir ningún objeto, así que la misma lista sirve para cualquier objeto.
Conexiones. El prompt pasa por un nodo Unzip Prompt (tiene que descomprimirse). Ese nodo también necesita alguna imagen conectada para funcionar, aunque no la use. Sus propios campos de texto positivo y negativo no aportan nada, así que déjalos en paz.
Hacer que avance. Por sí sola la lista solo ejecuta el primer prompt. Un contador de bucle del WAS Node Suite alimenta el índice: incremento 1, máximo = el número de prompts. Un nodo de visualización muestra el índice, que cuenta de 0 (prompt 1) a 9 (prompt 10). Para empezar de nuevo, pon reset en true, ejecuta una vez, vuelve a ponerlo en false y ejecuta de nuevo. Un nodo de vista previa de texto muestra qué prompt se está ejecutando.
Etapa 3: apilado de prompts
El apilado de prompts construye un prompt largo con varias piezas mediante un nodo text concatenate: cada entrada se suma a la cadena. En mi prueba:
- Text B: el estilo, de la lista de prompts (por ejemplo, un estilo «ork» de ciencia ficción).
- Text A: el sujeto, una larga descripción de un robot humanoide militar escrita por ChatGPT.
- Text C: el fondo, un bosque.
Pon primero lo más importante. Los codificadores de texto dan más peso a las primeras palabras, así que el sujeto (un robot de combate) va antes que el estilo. Dicho esto, Flux sigue bastante bien el prompt en conjunto.
No es mi mejor generación, pero sigue el prompt. Ejecutaría cinco o seis más y elegiría la mejor, o bajaría la fuerza del ControlNet para dar más libertad. Cuando encuentres un estilo que te guste, refina el prompt añadiendo y quitando palabras.
Etapa 4: una carpeta de capturas, cada una con su propio prompt
Ahora las capturas también salen de una carpeta, mediante Load Image Batch, y el mismo contador de bucle controla tanto el índice de la imagen como el del prompt. El prompt 3 siempre va con la captura 3.
Tenía 18 capturas y una lista de prompts de objetos de ciencia ficción con 18 descripciones a juego: el lanzacohetes es la entrada 1, el rifle automático la entrada 2, y así. Pon el máximo del contador en el número de capturas (lo había dejado en 10 por error; debería ser 18). Usa la vista previa de la imagen y la del texto para comprobar que la descripción coincide con la captura.
El subfusil salió bastante bien. No llena el encuadre, pero las empuñaduras y muchas de las piezas son de alta calidad. Esta etapa no ordena entre vertical y horizontal, así que las capturas verticales salen estiradas. Si todas tus imágenes son horizontales, o todas cuadradas, este flujo más sencillo basta. Yo uso flujos más simples para muchos trabajos.
Etapa 5: ordenar automáticamente horizontal y vertical
Para mezclar objetos altos y anchos, el flujo tiene que detectar la orientación de cada imagen y ajustar el lienzo a ella. Construí dos versiones.
El interruptor de imagen (más fácil de leer). Cada imagen se redimensiona de las dos formas, a horizontal y a vertical. Un nodo de relación de aspecto de imagen del WAS Node Suite da 1 para horizontal y 0 para vertical, un pequeño nodo convierte ese número en verdadero/falso y un interruptor de entrada de imagen elige la imagen redimensionada correcta. El tamaño pasa entonces al Empty Latent Image. La pega: redimensionas cada imagen dos veces y mantienes ambas en memoria.
El interruptor de números (el que uso). En lugar de cambiar imágenes, cambia los números: dos interruptores de entrada de número, uno para el ancho y otro para el alto, controlados por el mismo valor verdadero/falso. Horizontal elige 1920 × 1088; vertical elige 1088 × 1920. Es más rápido y muy robusto, aunque más difícil de seguir. Incluso a mí me cuesta leerlo después de unos días sin tocarlo, y esa es en parte la razón de que grabara este vídeo.
Hay una guía aparte que explica este truco de ordenación por sí solo: ordenar imágenes por relación de aspecto en ComfyUI.
El proceso completo
El flujo completo lo combina todo: mapeado de profundidad, la ordenación con el interruptor de números, la carpeta de capturas con su lista de prompts y una segunda lista de prompts para estilos. Cada parte es sencilla; juntas son difíciles de seguir, por eso las construí por separado.
Con dos contadores de bucle puedes multiplicar las variaciones. Mi bucle de objetos recorría 18 capturas, y una lista de colores con 54 entradas (18 azules, 18 verdes, 18 blancas) corría a su lado, así que cada objeto se renderizó en cada color. Otros materiales también funcionan: acero inoxidable, fibra de carbono, «3D printed» (que salió con aspecto de plástico). Para cambiar una lista, pégala en ChatGPT y pídele, por ejemplo, que cambie blanco por negro. Mantiene el formato.
Encima de eso van un campo de estilo de texto libre (camuflaje, patrones de cuadros, lo que sea) y un campo de fondo.
Usarlo en el día a día:
- Cambia la ruta de la carpeta a tus capturas y la lista de prompts para que coincida.
- Ajusta los contadores: con 10 capturas y 3 colores, el contador de estilo llega a 30. Ejecútalo durante la noche con diez colores y materiales y tendrás 100 ideas por la mañana.
- Fija los valores de ancho y alto, también en el nodo de profundidad, para imágenes cuadradas o más pequeñas. El flujo tiene notas con tamaños buenos.
- Para reiniciar todo, pon el reset de ambos contadores de bucle en true, ejecuta y luego ponlos en false y ejecuta de nuevo. Saltar a un prompt concreto a mitad de la lista es complicado; para trabajar en un objeto, uso un flujo más sencillo con solo esa imagen y la lista de prompts.
Velocidad: en mi RTX A5000 con 24 GB de VRAM, una imagen tarda unos 160 segundos (300 cuando antes había que cargar otros modelos). Es bastante tiempo, y por eso buscaba actualizarme.
Dónde ejecutarlo
Necesitas al menos 12 GB de VRAM para Flux. En una tarjeta más pequeña, usa el modelo GGUF o ejecútalo en una GPU alquilada; más tarde pasé este tipo de trabajo a RunPod, como describo en mi introducción a RunPod.
El enlace de RunComfy de arriba es un enlace de referido, igual que mi enlace de referido de RunPod: las cuentas nuevas de RunPod que se registran con Google reciben entre 5 y 500 $ de crédito después de su primer gasto de 10 $, y yo recibo una pequeña comisión.
Ver la versión en vídeo (29:54)
Todo lo anterior también está en el vídeo, si prefieres seguirlo en pantalla. El vídeo está en inglés.
Preguntas frecuentes
¿Qué GPU necesito para este proceso?
Al menos 12 GB de VRAM para Flux. Con menos VRAM, usa la versión GGUF de Flux con un cargador GGUF: la calidad no sufre mucho. En mi RTX A5000 de 24 GB, una imagen tardó unos 160 segundos.
¿Qué fuerza de ControlNet debo usar para bloqueos 3D?
Unos 0,7 con Flux; entre 0,6 y 0,8 funciona. Con 1,0 la imagen se llena de fallos. Con SDXL bajo más, a unos 0,5.
¿Por qué mi lista de prompts solo ejecuta el primer prompt, o no se actualiza?
Una lista de prompts necesita un índice de un contador de bucle para avanzar. Si editas el archivo de texto, recarga ComfyUI; si sigue usando el texto antiguo, cambia a otra lista, ejecuta y vuelve a cambiar.
¿Por qué mis imágenes anchas tienen un contorno o marco fino alrededor del objeto?
Viene del formato muy ancho, no cuadrado. Las imágenes cuadradas dan los resultados más predecibles, pero objetos largos como los lanzacohetes necesitan imágenes anchas. Para concept art rara vez importa.

