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

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:
juggernautXL_v8Rundiffusion.safetensors (https://civitai.com/models/133005?modelVersionId=782002)
🧠 ControlNet
En este workflow utilizamos dos modelos específicos:
controlnet-openpose-sdxl (dimitribarbot/controlnet-openpose-sdxl-1.0-safetensors at main)
controlnet-canny-sdxl-1.0.fp16.safetensors (diffusers/controlnet-canny-sdxl-1.0 at main)
🖼️ 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.

🅱️ 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.

🧠 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 / PreviewEl flujo completo se compone de los siguientes elementos:
Nº | 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

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)

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 lightingSalida:
CONDITIONING → ControlNetApply (Pose)

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, logoSalida:
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

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.

🗺️ 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
🌍 Hugging Face: uno de los mayores repositorios de IA del mundo, donde encontrarás miles de modelos listos para descargar y usar.
🎨CivitAI: plataforma comunitaria donde los usuarios comparten modelos, estilos, LoRAs y nodos específicos para ComfyUI, clasificados por categoría, versión y nivel de complejidad.
Recursos dentro del workflow:
Modelo SDXL: juggernautXL_v8Rundiffusion.safetensors (https://civitai.com/models/133005/juggernaut-xl?modelVersionId=782002)
ControlNet
controlnet-canny-sdxl-1.0.fp16.safetensors (diffusers/controlnet-canny-sdxl-1.0 at main)
ControlNetUnion_XL_ParaTodoControlNEt.safetensors (diffusers/controlnet-depth-sdxl-1.0 at main)
🧠 En Lozkorp:
Descubre el artículo previo donde introdujimos ComfyUI dentro del ciclo “Generación de imágenes con IA en local (IV)”:🔗 Generación de imágenes con IA en local (IV) — ComfyUI
Serie ComfyUI (V) -- Generar imágenes a partir de prompts guardados en un archivo de texto
Serie ComfyUI (VI) — Extraer prompts desde una carpeta de imágenes (WD14 Tagger)
Serie ComfyUI (VII) — Img2Img simple: mejorar o modificar una imagen en local
Serie ComfyUI (VIII) — Upscale de imágenes: qué es, cómo funciona y workflow comparativo
Serie ComfyUI (IX) — Upscale y normalización automática de imágenes
Serie ComfyUI (XI) — Introducción a ControlNet: control real sobre la forma
Serie ComfyUI (XII) — ¿Qué es un LoRA y cómo usarlo en Stable Diffusion?
Serie ComfyUI (XIII) — Multi-LoRA: cómo combinar estilos sin romper la imagen
Serie Comfy-UI (XIV): ControlNet + LoRA: control total de forma y estilo
Serie ComfyUI (XV) — ControlNet + LoRA en FLUX: nuevas opciones para control de forma y estilo
Serie ComfyUI (XVI) — Multi-ControlNet: combinando varios controles en un mismo workflow
Archivo JSON de este ejemplo 📁 wf_ComfyUI_SDXL_Multi_ControlNet_Pose_Canny_OneImage.json





















Comentarios