top of page

Serie ComfyUI (XVII) — Multi-ControlNet para personajes: controlando pose y detalle

  • hace 6 horas
  • 9 min de lectura

Continuamos la Serie ComfyUI, donde estamos explorando cómo llevar el control en generación de imágenes con IA un paso más allá.

En el artículo anterior vimos cómo combinar varios ControlNet para trabajar con escenas complejas: Canny (estructura) y Depth (volumen). Eso nos permitió pasar de un control simple a un control multidimensional. Pero hay un tipo de problema donde esa combinación no es la más adecuada: los personajes.


Cuando trabajas con arquitectura o escenas necesitas coherencia espacial, necesitas volumen y necesitas profundidad. Pero cuando trabajas con personajes, el problema cambia completamente: lo importante ya no es el espacio, es la posición


En generación de personajes, uno de los mayores problemas es poses inconsistentes, brazos deformados y posturas poco naturales. Esto no lo soluciona ni Canny ni Depth. La solución es Pose.


OpenPose: este ControlNet permite detectar y fijar:

  • postura del cuerpo

  • posición de brazos y piernas

  • estructura del esqueleto


Diagrama de flujo con imágenes y conexiones de colores. Texto: Workflow Multi–ControlNet para personajes (Pose & Canny). Logo "LozKorp".
Workflow Multi ControlNet para personajes

En este artículo vamos a aplicar Multi-ControlNet a un nuevo caso:

  • Pose → controla la postura

  • Canny → mantiene el detalle


👉 Esta combinación permite:

  • fijar la posición del personaje

  • mantener su coherencia visual

  • y seguir aplicando estilo con el prompt


🎯 Qué vas a lograr

Al finalizar este artículo serás capaz de:

  • Entender cómo aplicar Multi-ControlNet en personajes dentro de ComfyUI.

  • Diferenciar claramente el papel de cada control en este caso:

    • Pose (OpenPose) → posición del cuerpo

    • Canny → detalle y contorno

  • Construir workflows donde la postura del personaje está controlada desde el inicio.

  • Aplicar dos preprocessors distintos sobre una misma imagen base, cada uno con un objetivo diferente.

  • Encadenar correctamente varios nodos ControlNetApplyAdvanced respetando la jerarquía de control.

  • Generar personajes más coherentes en:

    • ilustración

    • anime

    • concept art

    • escenas con acción o movimiento

  • Reutilizar este enfoque para:

    • mantener consistencia de personajes

    • aplicar estilos distintos a una misma pose

    • construir workflows más avanzados


🧩 Requisitos

Para seguir este artículo y ejecutar correctamente el workflow Multi-ControlNet (Pose + Canny) en ComfyUI, necesitas lo siguiente:

💻 Entorno

  • ComfyUI instalado y funcionando correctamente

  • Preferiblemente con GPU para obtener resultados fluidos

🧠 Modelo base (checkpoint)

Puedes utilizar cualquier modelo compatible con SDXL. En este caso, puedes reutilizar el mismo del artículo anterior:

🧠 ControlNet

En este workflow utilizamos dos modelos específicos:

🖼️ Imagen de entrada

El workflow parte de una única imagen base. Puede ser una foto real, una ilustración e incluso un render.

💡 Recomendación:

  • usar imágenes donde el cuerpo sea visible

  • evitar poses muy ocultas o cortadas


🗂️ Crear o cargar el workflow en ComfyUI

Tienes dos maneras de trabajar con este flujo:

🅰️ Opción A — Cargar el workflow ya creado

1️⃣ Descarga el archivo JSON adjunto:📁  wf_ComfyUI_SDXL_Multi_ControlNet_Pose_Canny_OneImage.json



2️⃣ Abre ComfyUI.

3️⃣ En el menú superior selecciona:Workflow → Load

4️⃣ Carga el archivo JSON. Verás en el lienzo todos los nodos conectados y listos para funcionar.


Interfaz de software con menú superior subrayado en rosa: "Workflow", "Edit", "Help". Flecha apunta a diagrama con cuadros de colores conectados.
Cargar workflow en ComfyUI

🅱️ Opción B — Crear el workflow desde cero

Si prefieres entenderlo pieza a pieza, puedes recrearlo manualmente. En la siguiente sección explicamos qué hace cada bloque del flujo.


Interfaz de software con menú resaltado en rosa. Se selecciona "Workflow" y "New". Fondo gris con iconos. Indicador a la derecha.
Empezar con Workflow en blanco

🧠 Qué significa usar Pose + Canny

En el artículo anterior vimos cómo combinar Canny + Depth para controlar escenas complejas. Pero en personajes, ese enfoque no es suficiente, porque el problema ya no es el volumen sino la posición del cuerpo


Cuando usamos Pose + Canny, estamos combinando dos interpretaciones muy diferentes:

ControlNet

Qué “ve”

Pose

esqueleto del cuerpo

Canny

contorno de la imagen

🎯 Qué aporta cada uno

🧍 Pose (OpenPose)

  • detecta articulaciones

  • define la postura

  • fija la posición de brazos y piernas

👉 Es el control principal en personajes.

✏️ Canny

  • detecta bordes

  • mantiene la silueta

  • conserva detalles visuales

👉 Actúa como refuerzo del resultado.


⚙️ El workflow: estructura general

La lógica del workflow es la siguiente:

LoadImage
 ├── Pose →  ControlNet (posición)
 └── Canny → ControlNet (detalle)

Checkpoint + Prompt
   ↓
Apply ControlNet (Pose)
   ↓
Apply ControlNet (Canny)
   ↓
KSampler
   ↓
VAE Decode
   ↓
Save / Preview

El flujo completo se compone de los siguientes elementos:

Bloque

Función

1️⃣

LoadImage

Carga la imagen base

2️⃣

OpenPose

Detecta la postura

3️⃣

Canny

Extrae el detalle

4️⃣

ControlNetLoader (Pose)

Control de postura

5️⃣

ControlNetLoader (Canny)

Control de bordes

6️⃣

CLIPTextEncode (+)

Prompt positivo

7️⃣

CLIPTextEncode (–)

Prompt negativo

8️⃣

CheckpointLoaderSimple

Modelo base

9️⃣

ControlNetApplyAdvanced (Pose)

Aplica la postura

🔟

ControlNetApplyAdvanced (Canny)

Añade detalle

1️⃣1️⃣

EmptyLatentImage

Define resolución

1️⃣2️⃣

KSampler

Genera la imagen

1️⃣3️⃣

VAEDecode

Convierte a imagen

1️⃣4️⃣

SaveImage / PreviewImage

Visualiza y guarda

🔗 Cómo fluye la información

En este workflow se combinan tres tipos de información:

🧍 1. Flujo de pose: define postura, posición y estructura del cuerpo.

Imagen → OpenPose → ControlNet

✏️ 2. Flujo de detalle: define contornos, silueta y detalle visual.

Imagen → Canny → ControlNet

📝 3. Flujo de intención: define estilo, estética y reinterpretación.

Prompt → ControlNet → KSampler

🧱 Entendiendo el workflow paso a paso

Vamos a analizar el workflow nodo a nodo para entender cómo se combinan Pose + Canny y cómo influyen en el resultado final.

1️⃣ LoadImage (imagen base)

Qué hace: carga la imagen de entrada que servirá como referencia. Puede ser una persona real, una ilustración o un render

Qué tocar:

  • la imagen de entrada. Cuanto más clara sea la pose, mejor funcionará OpenPose.

Salida:

  • IMAGE → OpenPose

  • IMAGE → Canny


Pantalla de software con módulos de carga de imagen, filtros y vista previa. Imagen de mujer en bikini con rifle en playa, cielo azul y edificaciones.
Load Image & OpenPose Pose & Canny

2️⃣ OpenPose / DWPose (posición)

Qué hace: detecta el esqueleto del cuerpo en la imagen y lo convierte en una representación estructural. Este nodo no trabaja con píxeles como Canny ni con volumen como Depth. Trabaja con articulaciones del cuerpo humano.


El resultado es una imagen simplificada donde se representan:

  • puntos clave (keypoints)

  • conexiones entre ellos

👉 Es decir, un “esqueleto” del personaje.


Dependiendo del modelo, puede detectar cabeza, cuello, hombros, codos, muñecas, torso, caderas, rodillas y tobillos. En modelos más avanzados (como DWPose) puede detectar también manos, dedos y rostro (landmarks faciales)


Qué tocar:

  • la resolución y habilitar o deshabilitar detecciones.

Salida:

  • IMAGE → ControlNetApply (Pose)

  • IMAGE → PreviewImage


3️⃣ Canny (detalle)

Qué hace: extrae los bordes de la imagen. Mantiene contorno, conserva silueta y añade detalle.

Qué tocar:

  • low_threshold: ~0.1

  • high_threshold: ~0.3

Valores

  • demasiado fuerte → imagen rígida

  • demasiado bajo → pérdida de detalle

Salida:

  • IMAGE → ControlNetApply (Canny)

  • IMAGE → PreviewImage


4️⃣ ControlNetLoader (Pose)

Qué hace: carga el modelo de ControlNet para pose. Convierte la pose en una guía estructural

Qué tocar: 

  • Cargar modelo ControlNet. En este caso "controlnet-canny-sdxl-1.0.fp16.safetensors"

Salida:

  • CONTROL_NET → ControlNetApply (Pose)


Diagrama de flujo con nodos de ControlNet conectados. Texto visible: "Load ControlNet Model", "Apply ControlNet". Fondo cuadriculado.
Load ControlNet Model & Apply ControlNet

5️⃣ ControlNetLoader (Canny)

Qué hace: carga el modelo de ControlNet de bordes.

Qué tocar: 

  • Cargar modelo ControlNet. En este caso "t2i-adapter-openpose-sdxl-1.0.safetensors"

Salida:

  • CONTROL_NET → ControlNetApply (Canny)


6️⃣ CLIPTextEncode (prompt positivo)

Qué hace: define qué quieres generar. Aporta estilo, estética y tipo de personaje

Qué tocar: 

  • Prompt.

anime style character, detailed face, expressive eyes, clean line art, vibrant colors, full body, dynamic pose, cinematic lighting

Salida:

  • CONDITIONING → ControlNetApply (Pose)


Diagrama de un flujo de trabajo de procesamiento de imágenes, con casillas de texto para parámetros de CLIP Text Encode y conexiones de color.
Load Checkpoint & CLIP Text Encode (positive & negative)

7️⃣ CLIPTextEncode (prompt negativo)

Qué hace: define lo que el modelo debe evitar.

Qué tocar: 

  • Prompt.

blurry, low quality, bad anatomy, extra fingers, extra limbs, watermark, text, logo

Salida:

  • CONDITIONING → ControlNetApply (Pose)


8️⃣ CheckpointLoaderSimple (modelo base)

Qué hace: carga el modelo SDXL. Aporta la capacidad de generar la imagen.

Qué tocar: 

  • Modelo SDXL: en este caso hemos usado: juggernautXL_v8Rundiffusion.safetensors , pero valdría cualquier modelo de tipo SDXL

Salida:

  • MODEL → KSampler

  • CLIP → CLIPTextEncode

  • VAE → VAEDecode


9️⃣ ControlNetApplyAdvanced (Pose)

Qué hace: aplica el control de pose sobre el conditioning. Fija la postura.

Qué tocar: 

  • strength: 0.8 – 0.9

  • start: 0

  • end: 0.9 (actúa casi todo el proceso)

Salida:

  • CONDITIONING → ControlNetApply (Canny)


🔟 ControlNetApplyAdvanced (Canny)

Qué hace: añade el control de detalle sobre el resultado anterior. Refuerza contornos y mantiene coherencia visual.

Qué tocar:

  • strength: 0.4 – 0.6

  • start: 0

  • end: 1

Salida:

  • CONDITIONING → KSampler


1️⃣1️⃣ EmptyLatentImage

Qué hace: define el tamaño de la imagen.

⚙️ Qué tocar

  • resolución

  • proporción

👉 En personajes: cuerpo completo → vertical (ej: 768×1152)

Salida

  • LATENT → KSampler


Diagrama de flujo con bloques de configuración para ControlNet y KSampler. A la derecha, vista previa de una imagen digital de mujer guerrera.
KSampler & Empty Latent Image & VAE Decode

1️⃣2️⃣ KSampler

Qué hace: genera la imagen combinando todo.

Qué tocar:

  • steps: ~25–30

  • CFG: ~6

  • sampler: euler

  • scheduler: normal

Salida:

  • LATENT → VAEDecode


1️⃣3️⃣ VAEDecode

Qué hace: convierte el resultado latente en una imagen visible.

Qué tocar:

  • Nada (en este flujo)

Salida:

  • IMAGE → Save / Preview


1️⃣4️⃣ SaveImage / PreviewImage

Se puede usar un nodo PreviewImage o un nodo SaveImage.

Qué hacen:

  • Visualizar el resultado

  • Guardarlo en disco


🎛️ Ajustes clave: cómo controlar el resultado

En este workflow, el resultado final depende del equilibrio entre tres elementos:

🧍 1. ControlNet Pose — control de la postura

Es el parámetro más importante en este workflow.

  • fija la estructura del cuerpo

  • controla brazos, piernas y postura

  • actúa casi durante todo el proceso

Errores típicos:

  • Pose demasiado bajo: produce postura incorrecta y /o deformaciones

  • Pose demasiado alto: personaje rígido y con falta de naturalidad.


✏️ 2. ControlNet Canny — control del detalle

  • mantiene contorno

  • conserva silueta

  • añade coherencia visual

Errores típicos:

  • Canny demasiado alto: imagen rígida, difícil aplicar estilo

  • Canny demasiado bajo: pérdida de detalle.


📝 3. Prompt — dirección del estilo

El prompt define la estética final. No define la pose, define como se ve el personaje.

Elemento

Función

Pose

Define la estructura

Canny

Define el detalle

Prompt

Define el estilo


🧪 Casos típicos y cómo corregirlos

En workflows de personajes con Pose + Canny, los problemas suelen aparecer cuando la postura no está bien controlada o el detalle entra en conflicto con la pose. Aquí tienes los casos más habituales y cómo solucionarlos.

Caso

Qué ocurre

Causa probable

Solución

🔴 Postura incorrecta

Brazos o piernas en posiciones raras

Pose demasiado bajo o mal detectado

Subir Pose o revisar el preprocesado

🔴 Personaje deformado

Proporciones extrañas

Pose mal interpretado

Cambiar a DWPose o mejorar imagen base

🔴 Pose incompleta

Faltan extremidades

Partes ocultas en la imagen

Usar imagen más clara o pose más visible

🔴 Imagen rígida

Postura demasiado forzada

Pose demasiado alto

Bajar Pose ligeramente (0.9 → 0.8)

🔴 Pérdida de detalle

Personaje “plano”

Canny demasiado bajo

Subir Canny (0.4 → 0.6)

🔴 Imagen “calcada”

Poco cambio respecto a la original

Canny demasiado alto

Bajar Canny

🔴 Estilo inconsistente

Resultado irregular

Prompt poco claro

Simplificar o reforzar prompt

🔴 Resultados inestables

Cambios entre ejecuciones

Ajustes múltiples simultáneos

Cambiar una variable por iteración

Si algo falla: 1️⃣ Revisa el preview de la pose2️⃣ Ajusta Pose3️⃣ Ajusta Canny4️⃣ Ajusta el prompt, vuelve a probar


🔁 Qué puedes probar a continuación

Una vez que entiendes cómo funciona Pose + Canny, empieza la parte interesante: experimentar de forma controlada

Prueba

Qué hacer

Qué vas a observar

🧍 Cambiar la pose

Usar distintas imágenes base o modificar la postura

Cómo cambia completamente la escena manteniendo coherencia

🎛️ Ajustar Pose

Probar valores: 0.75 / 0.85 / 0.95

Impacto en fidelidad de la postura

✏️ Ajustar Canny

Probar valores: 0.4 / 0.5 / 0.6

Cambios en el nivel de detalle

🧠 Cambiar el prompt

Pasar de realista a anime o sci-fi

Mismo cuerpo, distinto estilo

🔄 Misma pose, distintos personajes

Cambiar prompt manteniendo pose

Consistencia estructural

⚙️ Cambiar resolución

Vertical vs cuadrado

Cómo afecta a la composición

🧠 Cambiar modelo base

Probar distintos SDXL

Diferencias en calidad y estilo

No intentes cambiar todo a la vez. Cambia una variable, observa, saca conclusiones.



Mujer con bikini azul y rifle en una playa. Serie de imágenes: original, esquema, contorno, y versión artística en atuendo de superheroína.
Imagen generada con este workflow

🗺️ Conclusión

En este artículo hemos dado un paso más dentro del uso de Multi-ControlNet en ComfyUI. Hemos pasado de controlar escenas a controlar personajes

  • Pose controla la postura

  • Canny mantiene el detalle


A partir de ahora puedes:

  • controlar la pose de un personaje de forma precisa

  • evitar deformaciones comunes

  • mantener coherencia corporal

  • separar estructura, postura y estilo

  • construir workflows más específicos


Esto abre la puerta a nuevos niveles de control:

  • consistencia de personajes entre imágenes

  • combinación con LoRA

  • workflows para animación

  • pipelines más complejos


Si quieres seguir explorando workflows de IA en local: 👉 www.lozkorp.com


🌐 Recursos útiles


Comentarios


© 2025 by Lozkorp                                                         

bottom of page