Unique3DRun - MVPrediction
The Multiview Brain of Unique3D
- images
- rgb_pils
- front_pil
Despite the name, nothing 3D happens in Unique3DRun - MVPrediction. This is the node that looks at a single input image and hallucinates the other camera angles - four RGBA views of your subject (front, back, left, right) that the next node will use as scaffolding for the actual mesh. Think of it as the "multiview diffusion" stage of the Unique3D pipeline, and the whole reason the approach gets as good results as it does: the geometry node isn't guessing in the dark, it's reconstructing from views that all agree on what the subject is.
How it works
The pipeline is straightforward under the hood:
- Your ComfyUI
IMAGEtensor becomes a PIL image. - If it's 512px or smaller, it gets upscaled with the bundled Real-ESRGAN model (
realesrgan-x4.onnxfromckpt/). Unique3D wants clean, reasonably high-res input. - The background is cut out with rembg - the same u2net-family segmentation library the ecosystem has used forever - and the subject is composited onto a white background.
- A custom SD1.5-based diffusion model with multiview self-attention (the MVDream trick,
cls_labels [0..3]for four views) generates the four views at 256×256, 30 steps, guidance 1.5.
So this node wraps a real image-to-multiview diffusion pass, plus background removal and a quick upscale. It's the cheapest node in the pack in VRAM terms, but it's also the one that decides whether your final mesh looks like the thing you fed in.
Inputs
images(IMAGE) - your input photo or generated image, straight from aLoadImagenode.input_processing(True/False) - this is really the background-removal toggle.Trueruns rembg on your input. Gotcha from the source: if you feed a plain RGB image (no alpha channel), the code forces background removal on anyway, because the pipeline requires an RGBA image downstream. Settinginput_processingtoFalseonly saves you if you're already handing it an RGBA image with transparency.
There's no seed input and no guidance slider - the seed is hard-coded to -1 (random) and guidance is fixed at 1.5. It's a "give me the image, get the views" box, not a tunable one.
Outputs
Two outputs, both of which flow into Unique3DRun - Geo Reconstruct:
rgb_pils(PILS) - a list of the four multiview RGBA images. This is the main payload.front_pil(PIL) - the cleaned, background-removed front view, ready for texture projection.
Wire rgb_pils into the Geo Reconstruct node's rgb_pils input and front_pil into its front_pil input. That's the entire dance.
Installing the pack
Same story as the rest of the pack - it's archived, it's heavy, and the README points new users at ComfyUI-3D-Pack instead. If you're committed to this one:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyUI-Unique3D.git
On Windows you additionally drop the Python-3.11 triton wheel from madbuda/triton-windows-builds into the pack folder and run install_windows_portable_win_py311_cu121.bat (answer Y to the removal prompts). It pins diffusers==0.27.2 and installs a CUDA-12.1 build of onnxruntime-gpu, which can clobber other packs' dependencies. Then pull the weights from the Hugging Face space into ckpt/ - this node specifically needs img2mvimg/ (the multiview model) and realesrgan-x4.onnx (the upscaler), plus the shared layout the README documents.
Troubleshooting
- Background comes back wrong: rembg with the default session is fine for clean subjects but struggles with hair and semi-transparent material - that's a rembg/u2net limitation, not this node's bug. Pre-cut the background yourself (BiRefNet is the modern upgrade) and feed it an RGBA image if rembg mangles your subject.
- Input is small and blurry: this node upscales anything ≤512px before prediction, but you get what you give. Feed it a decent image; the multiview stage can't invent detail that isn't there.
- Console onnxruntime warnings: normal, and per the README probably harmless. Watch for an actual failure at this node, not load time.
One honest caveat from the community that's worth knowing before you sink the install time: people who A/B'd this against InstantMesh said Unique3D produces better-looking views, but the mesh step (the next node) eats fine detail during point-cloud-to-geometry. Keep expectations calibrated - this node is where the magic happens, and the next one is where some of it gets lost.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| input_processing | COMBO | 2 options: true, false |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| rgb_pils | PILS | — |
| front_pil | PIL | — |