Nodes/ComfyUI-TJ_NODE/ZIT ControlNet (TJ)
ComfyUI Node

ZIT ControlNet (TJ)

Depth, canny, and pose control bundled for Z-Image Turbo

By designloves2·Created 4 months ago·Updated 3 days ago· 13
ZIT ControlNet (TJ)
  • depth_image
  • canny_image
  • pose_image
  • zit_control
patch_nameZIT/qwen_image_controlnet_union.safetensors
depth_enablefalse
depth_strength1.00
canny_enablefalse
canny_strength1.00
pose_enablefalse
pose_strength1.00
depth_preprocesstrue
canny_preprocesstrue
pose_preprocesstrue
preprocessor_resolution1024
canny_low100
canny_high200

One node, three spatial controls, one clean output

ZIT ControlNet (TJ) is the ControlNet companion node for Z-Image Turbo (TJ). It takes depth, canny, and pose images, runs the built-in preprocessors, applies them to Z-Image's union ControlNet, and bundles everything into a single zit_control output that you plug straight into the Z-Image Turbo node. Three control types, three enable toggles, three strength dials - one wire into your generator.

If you've done ControlNet on older bases, you know the pain it's saving: a separate ControlNet loader, a separate preprocessor for each condition type, per-condition Apply nodes, start/end step fiddling - that's a lot of nodes just to say "keep this pose." This node collapses it into the pack's pattern: one node, one output, controls exposed as clean toggles. The KB calls Z-Image's union one of the fast-follow success stories - the union model shipped about a week after the base - and this node is the ComfyUI ergonomics for it.

How it works

Z-Image Turbo uses a union ControlNet (patch_name, default ZIT/qwen_image_controlnet_union.safetensors) where one checkpoint handles multiple conditions. Each condition - depth_image, canny_image, pose_image - has its own _enable toggle and _strength (0–5), plus a _preprocess toggle. With preprocess on (default), the node runs the map extraction for you:

  • Depth - depth estimation from the source image.
  • Canny - edge detection, with canny_low / canny_high thresholds.
  • Pose - pose skeleton extraction.

preprocessor_resolution (default 1024) sets how big the preprocessors work. Already-preprocessed maps? Just flip _preprocess off and feed the map directly. The node builds the ZIT_CONTROL bundle and hands it to Z-Image Turbo's zit_control input - that's the entire data flow, and it's the same union approach the KB notes is now the ecosystem standard.

The inputs that matter

  • depth_enable / canny_enable / pose_enable - which conditions actually apply. Empty bundle = no-op, so this is the first thing to check.
  • depth_strength / canny_strength / pose_strength - how hard each condition pulls (1.0 default).
  • patch_name - the union checkpoint; make sure the file is in the expected model folder.

Output: zit_control → Z-Image Turbo (TJ)'s zit_control input.

Install it and get the model

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/designloves2/ComfyUI-TJ_NODE.git

Or ComfyUI Manager → search TJ_NODE, restart. Then make sure the union ControlNet file is where the dropdown expects it - models/controlnet/ZIT/qwen_image_controlnet_union.safetensors (the README's Z-Image Turbo section lists the same ZIT/ layout). Restart after adding the file so the node sees it.

Where people get burned

The number one failure is "I connected ZIT ControlNet and nothing changed" - that's an enable toggle off, a patch_name that doesn't match a real file, or feeding a condition image that preprocess turned into something useless. Check the toggles first. Second: preprocessor quirks - a bad source image (too dark, too compressed) produces a garbage map, and garbage in is garbage out even with a good union model; raise preprocessor_resolution for detail-heavy sources. Third, strength is not the same as on SD-era ControlNet: 1.0 is already strong here, so nudge rather than slam. And if you only need one condition, you don't have to feed all three - leave the others unwired and they're simply not applied.

Category ✨ TJ_Node/Generator

Inputs (16)

NameTypeDefaultDescription
patch_nameCOMBOZIT/qwen_image_controlnet_union.safetensors1 options: ZIT/qwen_image_controlnet_union.safetensors
depth_enableBOOLEANfalse
depth_strengthFLOAT1.000–5
canny_enableBOOLEANfalse
canny_strengthFLOAT1.000–5
pose_enableBOOLEANfalse
pose_strengthFLOAT1.000–5
depth_preprocessBOOLEANtrue
canny_preprocessBOOLEANtrue
pose_preprocessBOOLEANtrue
preprocessor_resolutionINT102464–4096
canny_lowINT1000–255
canny_highINT2000–255
depth_imageoptIMAGEDepth source image or prepared depth map.
canny_imageoptIMAGECanny source image or prepared canny map.
pose_imageoptIMAGEPose source image or prepared pose map.

Outputs (1)

NameTypeDescription
zit_controlZIT_CONTROL