~9 min

ControlNet in ComfyUI: Pose, Depth, and Outlines

You can't explain a pose with a prompt - show the model a skeleton

ControlNet in ComfyUI in plain English: pose, depth, canny, and scribble, why you need a preprocessor and the Apply ControlNet node, and how to keep pose and composition under control.

What ControlNet is, in plain English

Imagine ordering a portrait over the phone. You tell the artist: “draw a girl in a red coat with a city in the background.” The artist is skilled, but draws it their own way. The pose is wrong. The hand is in the wrong spot. The head is turned off to one side. And there’s nothing you can do - you can’t convey a pose with words. Words just aren’t enough.

Now, on top of the words, you also send a diagram: here’s where the person stands, here’s how the arms are raised, here’s the horizon line. That’s exactly what ControlNet is. The text answers the question “what to draw.” ControlNet answers “where to put it and in what pose.”

On the left, a text prompt produces a chaotic pose; on the right, the same prompt plus a skeleton diagram produces a precise pose
On the left - words only. On the right - words plus a ControlNet diagram. The pose is under control.

Why a vibecoder needs ControlNet

You’re building a generation out of nodes. And sooner or later you’ll hit a wall. The image looks great, but the pose is wrong. Or the character is standing in the wrong place. Or you want to turn your own sketch into clean art. A prompt won’t fix this - no matter how many times you write “arms up,” the model still decides for you.

Here’s what ControlNet gives you that a prompt can’t:

  • reproduce a pose from a reference - your own photo, a screenshot, someone else’s image;
  • preserve the composition and volume of a scene while changing only the style;
  • turn a rough sketch into clean art;
  • make a series of images in the exact same layout.

Without ControlNet, you’re talking the model into something with words. With ControlNet, you’re showing it. That’s the difference between “take a guess” and “do it like this.”

How ControlNet works: the preprocessor and Apply ControlNet

Under the hood it’s two steps. First, the reference has to be translated into the language of diagrams. Then that diagram has to be mixed into the generation. Let’s break down both.

The preprocessor: a photo-to-diagram translator

Preprocessor is a filter. Feed it a photo of a person and it returns not a photo, but a stick-figure skeleton (pose mode). Or a black-and-white depth map, where near is bright and far is dark (depth). Or just the outlines, like a coloring book (canny). Everything else gets cut away. What’s left is a clean diagram and nothing more.

Apply ControlNet: where the diagram meets the prompt

The Apply ControlNet node is the exact spot where the diagram joins up with your text. You feed it three things: the loaded ControlNet model (a separate file for the type you need), the diagram image from the preprocessor, and your conditioning (that same prompt after the encoder). The output is the same prompt, but now “bound” to the diagram.

The four ControlNet modes: pose, depth, canny, scribble

There are plenty of modes, but four are enough for a beginner. Think of them as four ways to “trace” a reference - each for its own job.

Pose (OpenPose): reproducing a person’s pose

The preprocessor - often called OpenPose - finds a person in a photo and draws their skeleton out of dots and sticks: shoulders, elbows, knees. Then the model puts your character into exactly that pose. Hair color, clothing, background you set with the prompt - the skeleton holds only the pose, nothing else. There are extended versions too: they also catch fingers and facial expressions.

Depth: preserving the volume and planes of a scene

A depth map tells the model where the scene’s foreground is and where the background is. Handy when you want to preserve the layout and volume of a room or landscape but change the style completely. The geometry stays put, the filling is new.

Canny: holding crisp outlines

Canny keeps only the sharp outline lines of an image - like a coloring book. This is the strictest mode: the model reproduces objects’ contours almost exactly. Just what you need when you want to recolor or redraw something in a different style, but the shape must stay untouched.

Scribble: bringing a freehand sketch to life

Scribble understands rough doodles. Draw a circle for a head, sticks for arms, a little house in the background - and the model will build a proper image out of it. The freest mode: you set the general idea, the model handles the rest.

One photo is turned into four different diagrams: a skeleton, a depth map, outlines, and doodles
One reference - four ways to read it. A different mode for each job.

When ControlNet helps and when it just gets in the way

ControlNet fits here
  • You need a specific pose - reproduced from a photo or reference.
  • You want to preserve a scene's composition while changing only the style.
  • You have a sketch that needs to be finished into clean art.
  • You're making a series of images in one layout.
ControlNet is overkill here
  • You don't care where or how - a plain prompt is enough.
  • You want the model fully free - a diagram would only tie its hands.
  • You just want random variations for inspiration.
  • You don't have a suitable reference - there's simply nothing to build a diagram from.

Example: setting a pose through ControlNet, step by step

You want a character in an epic pose: arm stretched out forward, as if casting a spell. You write the prompt for the twentieth time - and the model stubbornly draws the arms by the sides. Sound familiar? This is exactly where ControlNet saves you.

Here’s how to put it together, step by step:

How to add ControlNet for a pose - step by step
  1. Find or take a reference photo with the pose you want - even a selfie of you in that pose will do.
  2. Install the ControlNet preprocessor pack through ComfyUI Manager if you don’t have it yet.
  3. Download a ControlNet model for the pose type and drop it into the ControlNet models folder.
  4. Load the reference with an image-loading node.
  5. Run it through the pose preprocessor - the output will be a skeleton of dots.
  6. Add an Apply ControlNet node and feed it three inputs: the ControlNet model, the skeleton, and your prompt.
  7. Then continue as usual: sampler, decode, save.
  8. Is the pose holding too rigidly, or barely at all? Adjust the strength parameter.

Common beginner mistakes with ControlNet

  • Fed the preprocessor to the wrong model. Outlines into a depth model - and the output is mush. Type to type, always.
  • Forgot the preprocessor itself. Fed a raw photo into Apply ControlNet instead of a diagram - the model has no idea what you want from it.
  • Didn’t install the preprocessor pack. The nodes simply won’t show up in search. That’s not a bug - that’s “not installed.”
  • Always cranking strength to the max. Too rigid a diagram chokes the model and ruins the image. Try easing off.
  • Expecting magic from a blurry skeleton. If the pose in the reference is unreadable, the preprocessor will spit out a crooked skeleton, and the pose will come out crooked.
  • Thinking ControlNet draws for you. It holds the geometry. Content and style are still on the prompt.

TL;DR - если коротко

  • ControlNet is a leash for your generation: with words you say the “what,” and with a reference diagram you say the “where and in what pose.”
  • A preprocessor pulls a diagram out of a photo - a skeleton, a depth map, or outlines. Apply ControlNet mixes it into the generation.
  • Four working modes: pose, depth (volume and planes), canny (crisp outlines), scribble (a freehand sketch).
  • The iron rule: the preprocessor and the ControlNet model must be the same type - canny to canny, depth to depth.
  • Strength is how tight you pull the leash: higher means the diagram holds harder, lower gives the model more freedom.
  • ControlNet doesn't draw for you. It holds the geometry - content and style are still the prompt's job.

Search Wiki

Press Esc to close

Enter a search term to query all course pages and lessons.