Nodes/ComfyUI-MVAdapter/Control Image Preprocessor
ComfyUI Node Runs on cloud

Control Image Preprocessor

Assemble six scribbles into one control

By huanngzh·Created 2 years ago·Updated about a year ago· 472
Control Image Preprocessor
  • front_view
  • front_right_view
  • right_view
  • back_view
  • left_view
  • front_left_view
  • IMAGE
width768
height768

This node takes the six per-view control images you want to guide a multi-view generation - one sketch or map per camera angle - and packs them into the single batched control image the Diffusers MV Sampler expects. It's the front door to MV-Adapter's scribble-to-multiview feature: you draw (or generate) a rough guide for each of the six standard views, feed them in here, and this node lines them up and resizes them into the shape the ControlNet path can consume.

Without it, you'd have six loose images and a sampler that wants one. This node is the adapter between those two facts.

How it works

MV-Adapter generates a fixed ring of views, and when you're driving that with ControlNet, each generated view needs its own control signal. This node collects the six control images in view order, resizes them all to a common size, and stacks them into the batch the sampler's controlnet_image input takes. The actual conditioning happens later - this node just prepares the input.

The inputs that matter

Six of the inputs are the views themselves, and their names are the ring, in order:

  • front_view, front_right_view, right_view, back_view, left_view, front_left_view (all IMAGE)

These correspond to the default azimuths [0, 45, 90, 180, 270, 315]. Each one is the control image (typically a scribble) for that angle, so the order matters - put the front sketch in front_view, not somewhere else, or your control and your output won't align.

Then two sizing inputs:

  • width and height (INT, both default 768) - match these to the width/height on the sampler and on any other preprocessing in the graph. Keep the whole pipeline on one size.

The output is a single IMAGE - the assembled, batched control image, which wires straight into the sampler's controlnet_image slot.

Installing the pack

ComfyUI Manager, search ComfyUI-MVAdapter, install, restart. Or: cd ComfyUI/custom_nodes && git clone https://github.com/huanngzh/ComfyUI-MVAdapter, then pip install -r requirements.txt, then restart. The workflow that shows this node wired up is t2mv_sdxl_ldm_controlnet.json.

Where people get burned

You need all six views, in the right slots. This isn't a "give it one image and it figures out the rest" node - it wants a control image per angle, ordered to match the ring. Mismatched order is the classic mistake: your back sketch drives the front view and the result looks scrambled. Line them up deliberately.

Second, this is only half of the ControlNet setup. Assembling the control image does nothing unless you've also loaded a ControlNet into the pipeline (via ControlNet Model Loader) and set a sensible controlnet_conditioning_scale on the sampler. All three pieces have to be present.

Third, don't expect pixel-perfect obedience. SDXL ControlNets are the weaker cousins of SD 1.5's, and scribble control in particular is finicky - layered under multi-view generation, it's guidance, not a guarantee. Expect to iterate on your sketches and the conditioning scale. Keep the scribbles clean and unambiguous (clear silhouettes, not busy scratch) and you'll get more out of it.

Categorysd

Inputs (8)

NameTypeDefaultDescription
front_viewIMAGE
front_right_viewIMAGE
right_viewIMAGE
back_viewIMAGE
left_viewIMAGE
front_left_viewIMAGE
widthINT7681–2048
heightINT7681–2048

Outputs (1)

NameTypeDescription
IMAGEIMAGE