Apply Wan Uni3C ControlNet
Apply Wan Uni3C ControlNet — Give Your Wan Camera a Steering Wheel
- model
- model_patch
- vae
- render_video
- MODEL
The single most common Wan complaint in every workflow thread is "the camera won't move." Prompting for a dolly or a pan is a coin flip - sometimes you get it, often you get a static shot with the prompt's motion smeared onto the subject instead. Uni3C is the ControlNet that fixes this with actual geometry, and this node is ComfyUI's native way to bolt it onto a Wan model.
Uni3C ("Unifying Precisely 3D-Enhanced Camera and Human Motion Controls for Video Generation") drives the camera from a rendered guidance video - most commonly warped point-cloud renders of your input image. You decide the trajectory, render it, and the model is forced to follow that path. That's a different philosophy from a ControlNet that takes an edge map or pose skeleton: here the condition is a sequence of frames showing where the camera should be, not a static structure.
How it works
The Uni3C controlnet is a parallel stack of attention blocks (20 of them) sized to match Wan's transformer blocks. During sampling, the render video is VAE-encoded, concatenated with the noise latent and the I2V mask channels, and fed through the controlnet's 3D patch embedding. At each matched block index, the controlnet's residual - multiplied by your strength - is added to the model's features. Guidance only runs while the current sigma sits inside your start/end percent window, the same convention as classic ControlNet.
Two details worth knowing before you wire it: only the first 3 channels (RGB) of the render video are used, and the node patches Wan's double blocks directly rather than going through the standard ControlNetApplyAdvanced machinery - so this is a model/patch node, not a conditioning node. Its place in the graph is loader → this node → sampler.
The inputs that matter
- model - your Wan diffusion model (this only works with Wan, by construction).
- model_patch - the Uni3C controlnet weights, loaded by
ModelPatchLoaderfrommodels/model_patches/. - vae - the Wan VAE used to encode the render video into latents.
- render_video - the warped point-cloud renders of your input image. This is the hard input: you have to produce it (see below).
- strength (default 1.0, range −10 to 10) - how hard the control pushes. Negative flips the guidance direction.
- start_percent / end_percent (default 0.0 / 1.0) - the denoising window where the control is active.
Output is a single MODEL - the patched clone - which feeds your sampler.
Where people get burned
- "The connected model patch is not a Uni3C ControlNet." You loaded the wrong file into
ModelPatchLoader- it has to be a Uni3C controlnet safetensors (the loader auto-detects it by its weights). - "The Uni3C ControlNet only works with Wan models." The node checks the diffusion model's hidden dim; wire it to a non-Wan base and it refuses.
- Dim mismatch errors. A controlnet trained for the 14B Wan (dim 5120) won't attach to the 1.3B model (dim 1024). Match the controlnet to the size of your base model.
- The fiddly part isn't this node - it's producing
render_video. You need to depth-estimate your input image, build a point cloud, and render warped frames along your chosen trajectory. That pipeline (Depth Anything → point cloud → trajectory render) is where the real work lives, and it's why Uni3C stayed a Kijai-wrapper niche for a year after the paper appeared. This node makes the apply step native; the render step is still on you.
How you get it
Ships with ComfyUI core - no install. Native Uni3C support landed in July 2026 (it's still marked experimental). The controlnet file - e.g. azze619/Wan21_Uni3C_controlnet_fp16.safetensors, the same one the wrapper crowd has used since May 2025 - goes in models/model_patches/; your Wan base model loads normally from models/diffusion_models/. If you've been fighting the camera for weeks, this is the upgrade that turns Wan prompting from a lottery into direction.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| model_patch | MODEL_PATCH | — | |
| vae | VAE | — | |
| render_video | IMAGE | The guidance video rendered from the camera trajectory, most commonly warped point cloud renders of the input image. | |
| strength | FLOAT | 1.00-10–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |