ControlNet Model Loader
Scribble-to-multiview control
- pipeline
- PIPELINE
This node bolts a ControlNet onto an MV-Adapter pipeline so you can steer the multi-view generation with a control image - the headline use being scribble-to-multiview, where a rough sketch of each view drives the shape of the generated set. MV-Adapter added ControlNet support in December 2024, and this is the loader that makes it available: it downloads a diffusers-format SDXL ControlNet by Hugging Face repo id and fuses it into the pipeline.
Same reason as the LoRA loader: because MV-Adapter runs on diffusers rather than ComfyUI's native model graph, you can't use the normal ControlNet apply nodes. You need this pack-specific one.
How it works
ControlNet conditions a diffusion model on a structural signal - edges, depth, a scribble - so the output follows that structure instead of being free-form. Here, that lets you say "generate a multi-view set that matches these six sketched silhouettes" rather than trusting the prompt alone to pin down shape. This node loads the ControlNet weights into the pipeline; the actual control images arrive later, at the Diffusers MV Sampler, through its controlnet_image input (which you feed from Control Image Preprocessor).
The inputs and output
There are only two inputs, and one is plumbing:
pipeline(PIPELINE) - the pipeline you're adding control to.controlnet_name(STRING, defaultxinsir/controlnet-scribble-sdxl-1.0) - the Hugging Face repo id of the ControlNet to load. The default is xinsir's scribble ControlNet for SDXL, which is the one the README's scribble-to-multiview example is built around. You can point it at another diffusers-format SDXL ControlNet repo, but the default is the well-trodden path.
The output is a PIPELINE with the ControlNet attached, which continues to Model Makeup and then the sampler. Remember that loading the ControlNet here is only half the job - you still have to actually pass control images in at the sampler, and set controlnet_conditioning_scale there to control how strongly they bite.
Installing the pack
ComfyUI Manager, search ComfyUI-MVAdapter, install, restart. Or manually: cd ComfyUI/custom_nodes && git clone https://github.com/huanngzh/ComfyUI-MVAdapter, then pip install -r requirements.txt, then restart. The reference workflow is t2mv_sdxl_ldm_controlnet.json. The ControlNet weights download from Hugging Face on first run, so the first scribble graph pauses to fetch them.
Where people get burned
Format. The controlnet_name has to resolve to a diffusers-format SDXL ControlNet on Hugging Face - a repo id, not a local .safetensors file in your controlnet folder. If you paste in a filename or an incompatible model, the load fails. Stick with the default unless you know the replacement is diffusers-format SDXL.
Second, temper expectations on control fidelity. SDXL ControlNets have always been the weaker link compared to SD 1.5's - the community's long-standing complaint is that SDXL scribble and lineart control is finicky and less reliable. Layer multi-view generation on top of that and you're asking a lot; expect to iterate on your scribbles and the conditioning scale rather than nailing it first try.
Third, don't forget the downstream half. Loading the ControlNet does nothing visible until you wire controlnet_image into the sampler and give it real control images (six of them, assembled by Control Image Preprocessor). A loaded-but-unfed ControlNet just sits there.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | PIPELINE | — | |
| controlnet_name | STRING | xinsir/controlnet-scribble-sdxl-1.0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PIPELINE | PIPELINE | — |