Nodes/ComfyUI-RookieUI/RookieUI ControlNet Preprocess
ComfyUI Node

RookieUI ControlNet Preprocess

The A1111 preprocessor menu, one node, 50-odd annotators

By rookiestar28·Created 4 months ago·Updated 29 days ago· 89
RookieUI ControlNet Preprocess
  • image
  • mask
  • IMAGE
module
processor_res512
threshold_a64.00
threshold_b64.00
pixel_perfectfalse
target_width512
target_height512
resize_mode
use_maskfalse

Before a ControlNet can guide anything, you have to turn your source image into a control map - a canny edge map, a depth map, a pose skeleton, a lineart trace. That conversion is the preprocessor (or "annotator"), and in Automatic1111 it's a single dropdown with the whole menu behind it. This node is that dropdown, rebuilt for native ComfyUI, with around 50 annotator modules in one place. RookieUI is an A1111-style sidebar for ComfyUI, and this is the node it emits when you pick a Control Type and hit "Run Preprocessor."

Its output feeds straight into RookieUIControlNetApplyNativeAdvanced. Think of the pair as a two-step: preprocess turns your photo into a map, apply welds the map onto your conditioning.

How it works

You give it an image and pick a module, and it runs the matching annotator to produce a control map - an IMAGE output. The module enum is the big one: it carries about 51 options covering the standard families - canny and blur for edges, the whole depth line (depth_anything_v2, depth_midas, depth_zoe, depth_leres), normal maps (normalmap, normal_bae, normal_midas), and further down the list the lineart, softedge, scribble, openpose, MLSD and tile variants you'd expect. Each control type is really a family of preprocessors, which is why the list is long.

The rest of the inputs control resolution and framing so the map lines up with your generation.

The inputs that matter

  • module - the annotator. This is the decision. canny for hard architectural/mechanical edges, a depth_anything_v2 for spatial arrangement, openpose-family for people, a lineart variant for character/anime structure. Pick the control type that matches what you're trying to lock.
  • pixel_perfect (default off) - A1111's Pixel Perfect. Turn it on and the preprocessor picks its working resolution from your source and target dimensions instead of a fixed number, which usually gives cleaner maps for crop/resize workflows. Genuinely worth leaving on.
  • threshold_a / threshold_b (default 64) - the low/high thresholds. These only mean something for a few modules - canny's edge thresholds, MLSD's line thresholds - and are inert for depth, pose, and most others. Don't fiddle with them unless your module actually uses them.

The framing inputs are processor_res (the annotator's internal resolution, default 512), target_width / target_height, and resize_mode (crop_and_resize / just_resize / resize_and_fill) - the same three fit modes A1111 offers. There's also a use_mask toggle with an optional mask input, for restricting preprocessing to part of the frame.

How to install it

ControlNet, preprocessors included, is built into RookieUI. Via ComfyUI Manager, search ComfyUI-RookieUI, install, restart. Manually, from your ComfyUI root:

cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-RookieUI
cd ComfyUI-RookieUI
python -m pip install -r requirements.txt

Then restart ComfyUI.

Common issues

Some annotators need their own model to run. Depth (depth_anything), openpose, and the heavier estimators pull an annotator model on the host; if a module returns a blank or degraded map, that's usually a missing annotator model rather than a bad input, and RookieUI will report the fallback status. Canny and blur are pure image ops and always work.

The subtler trap is choosing a control type your base model can't use. On a 2026 union model the condition menu is smaller than it was on SDXL - segmentation, normal maps and QR/brightness conditioning largely never got rebuilt for post-Flux bases. You can preprocess a normal map here just fine, but if your ControlNet has no normal-map mode, the apply step won't have anything to load it into. And a reminder that pairs with the apply node: even a perfect control map wants a sane strength and step range downstream - a clean canny at strength 1.0 through the whole sample will still overcook a modern base.

CategoryRookieUI/controlnet

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
moduleCOMBO51 options: none, blur, canny, depth, depth_anything_v2, depth_anything, +45
processor_resINT51264–2048
threshold_aFLOAT64.000–255
threshold_bFLOAT64.000–255
pixel_perfectBOOLEANfalse
target_widthINT51264–8192
target_heightINT51264–8192
resize_modeCOMBO3 options: crop_and_resize, just_resize, resize_and_fill
use_maskBOOLEANfalse
maskoptMASK

Outputs (1)

NameTypeDescription
IMAGEIMAGE