Nodes/ComfyUI-IG2MV/Diffusers IG MV Model Makeup
ComfyUI Node

Diffusers IG MV Model Makeup

Getting the IG2MV adapter into your pipeline

By hunzmusic·Created about a year ago·Updated about a year ago· 43
Diffusers IG MV Model Makeup
  • pipeline
  • scheduler
  • autoencoder
  • PIPELINE
load_mvadaptertrue
adapter_pathhuanngzh/mv-adapter
num_views6
enable_vae_slicingtrue
enable_vae_tilingfalse

Let's get one thing straight up front: this node does nothing by itself. DiffusersIGMVModelMakeup won't render a single pixel. What it does is load the mvadapter_ig2mv_sdxl.safetensors adapter into the diffusion pipeline that ComfyUI-MVAdapter's loader nodes hand you, and wire the attention processor that adapter needs. It's the middleman that makes everything after it possible - the "makeup" is dressing up a bare pipeline until it's ready to sample.

Why you'd reach for it: you're doing image-guided multi-view generation. The workflow is the 3D-texture pipeline - Hunyuan3DWrapper renders a batch of position and normal maps from a mesh, and the MV-Adapter SDXL model repaints a consistent texture across all six views at once. It's the same family as ControlNet (spatial conditioning injected into attention) but aimed at keeping textures seam-free across viewpoints instead of controlling a single image's composition. The KB's ControlNet essay covers the conditioning-scale mental model you'll want here: the maps steer where detail goes, the prompt steers what it is.

How it works

The node takes the raw PIPELINE, SCHEDULER, and AUTOENCODER outputs from ComfyUI-MVAdapter's loaders and does three things (all in the source, nodes.py):

  1. Stuffs the VAE and scheduler into the pipeline object.
  2. Calls init_custom_adapter with the DecoupledMVRowColSelfAttnProcessor2_0 attention processor - the "row/column self-attention across views" mechanism that lets the six views talk to each other and stay consistent.
  3. Loads the adapter weights with load_custom_adapter. If the file isn't already in your diffusers cache, it auto-downloads from the Hugging Face repo in adapter_path (default huanngzh/mv-adapter). No API key, no extra account - the name is not a lie, it really does just fetch the file.

Then it moves everything to your GPU in fp16 and optionally enables VAE slicing/tiling to keep VRAM in check.

The inputs that matter

Most of these you can leave alone. The few worth touching:

  • load_mvadapter (default true) - the on/off for loading the adapter at all. Leave it on unless you're debugging the bare pipeline.
  • adapter_path - where to fetch the weights. The default huanngzh/mv-adapter is correct; only change it if you've mirrored the repo.
  • num_views (default 6) - set it to 6 and don't get clever. The README is explicit that the adapter and its attention mechanism are hardcoded to exactly six views. The input technically lets you pick 1–12; the sampler ignores your cleverness and uses the batch size of the maps you feed it anyway.
  • enable_vae_slicing (default true) - keep it on unless you're chasing max speed and have the VRAM to spare.

The single output is a PIPELINE - that's what you wire into the DiffusersIGMVSampler.

Installing it

Install the pack itself via ComfyUI Manager (search "ComfyUI-IG2MV") or:

cd ComfyUI/custom_nodes
git clone https://github.com/hunzmusic/ComfyUI-IG2MV

then restart ComfyUI. The pack ships no requirements.txt of its own, which is both convenient and a trap: the real dependencies - diffusers, einops, and PyTorch 2.0+ - all come from ComfyUI-MVAdapter, which you must install separately (the attention processor literally raises an ImportError on older PyTorch). You also need ComfyUI-Hunyuan3DWrapper for the position/normal maps later in the graph. Install those two first or every node in this pack will show up red.

Common issues

  • Missing PIPELINE/AUTOENCODER socket types - that's the ComfyUI-MVAdapter dependency missing, not this node. Install the parent pack and reload.
  • PyTorch < 2.0 errors - the decoupled attention processor needs scaled_dot_product_attention. Upgrade torch.
  • First run downloads the adapter - it's a couple hundred MB from Hugging Face; if it fails mid-download you get a load error on the next run. Re-run the node to retry; the diffusers cache resumes.

It's a fiddly little glue node, but it's the load-bearing one in the IG2MV workflow - get it green and the sampler is the easy half.

CategoryMV-Adapter/IG2MV

Inputs (8)

NameTypeDefaultDescription
pipelinePIPELINE
schedulerSCHEDULER
autoencoderAUTOENCODER
load_mvadapterBOOLEANtrue
adapter_pathSTRINGhuanngzh/mv-adapter
num_viewsINT61–12
enable_vae_slicingoptBOOLEANtrue
enable_vae_tilingoptBOOLEANfalse

Outputs (1)

NameTypeDescription
PIPELINEPIPELINE