Nodes/ComfyUI-CustomNodeKit/WanVideo Uni3C ControlNet Loader (Custom)
ComfyUI Node

WanVideo Uni3C ControlNet Loader (Custom)

Load the Uni3C camera-control ControlNet into a Wan pipeline

By user2318·Created 4 months ago·Updated about a month ago· 56
WanVideo Uni3C ControlNet Loader (Custom)
    • uni3c_controlnet
    model_name
    base_precisionfp16

    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/controlnet directory. 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.

    CategoryWanVideo/Control

    Inputs (2)

    NameTypeDefaultDescription
    model_nameCOMBOUni3C ControlNet 模型文件,放在 ComfyUI/models/controlnet 文件夹。Uni3C ControlNet model file, placed in ComfyUI/models/controlnet folder.
    base_precisionoptCOMBOfp163 options: fp32, bf16, fp16

    Outputs (1)

    NameTypeDescription
    uni3c_controlnetUNI3C_CONTROLNET