WanVideo Uni3C ControlNet Loader (Custom)
Load the Uni3C camera-control ControlNet into a Wan pipeline
- uni3c_controlnet
WanAnimate gives you the character's motion, but the camera is static - unless you add camera control. Uni3C ("Unifying Precisely 3D-Enhanced Camera and Human Motion Controls") is a ControlNet from a research paper that injects 3D-aware camera trajectories into video generation, and Kijai ported a Wan 2.1 version of it to ComfyUI a while back. It's real, it works, and it's also one of the most under-documented pieces of the Wan ecosystem - the community threads about it are mostly people asking whether it works yet and how to wire it.
WanUni3CLoader is the first half of this pack's Uni3C support: it loads a Uni3C ControlNet .safetensors from your ComfyUI/models/controlnet folder into a custom UNI3C_CONTROLNET object that the companion WanUni3CApply node can inject into your model. The second half (the apply node) is where the actual camera magic happens.
Inputs and output
- model_name - a dropdown that scans your
models/controlnetdirectory. If you've dropped a Uni3C file there it appears in the list. - base_precision (default fp16) - fp32, bf16, or fp16. fp16 is the sensible default; bf16 if your card handles it better, fp32 if you're chasing determinism and have VRAM to burn.
The single output is uni3c_controlnet - wire it straight into WanUni3CApply's input of the same name.
Getting the model file
This is the step that trips everyone up, because the pack ships no weights. You need a Uni3C ControlNet file for Wan - the commonly used one is Kijai's Wan21_Uni3C_controlnet_fp16.safetensors on HuggingFace (Kijai/WanVideo_comfy), and it goes into ComfyUI/models/controlnet/. The loader validates the file - it checks for the controlnet_patch_embedding.weight key and raises a clear error if you give it a non-Uni3C controlnet, so a wrong download fails loudly rather than silently corrupting your generation.
The dependency gotcha
Uni3C loading needs diffusers and accelerate Python packages, and here's the trap: they are not in the pack's requirements.txt. The README calls them out for the Uni3C section, but a plain pip install -r requirements.txt won't get them. If the loader dies with an import error, that's why:
pip install diffusers accelerate
Restart ComfyUI after. This is one of those "the README said it works, the import failed" moments, and it's the single most common reason this node errors out for a fresh install.
Install
Part of ComfyUI-CustomNodeKit. ComfyUI Manager → search "ComfyUI-CustomNodeKit", or:
cd ComfyUI/custom_nodes
git clone https://github.com/user2318/ComfyUI-CustomNodeKit.git
cd ComfyUI-CustomNodeKit
pip install -r requirements.txt
pip install diffusers accelerate # required for Uni3C, not in requirements.txt
Restart ComfyUI, drop the .safetensors into models/controlnet, and you're set.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | Uni3C ControlNet 模型文件,放在 ComfyUI/models/controlnet 文件夹。Uni3C ControlNet model file, placed in ComfyUI/models/controlnet folder. | |
| base_precisionopt | COMBO | fp16 | 3 options: fp32, bf16, fp16 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| uni3c_controlnet | UNI3C_CONTROLNET | — |