ComfyUI Node

Hy3D Render MultiView

The control-image factory that tells the paint model what your mesh looks like from all sides

By kijai·Created 2 years ago·Updated 5 months ago· 1,033
Hy3D Render MultiView
  • trimesh
  • camera_config
  • normal_maps
  • position_maps
  • renderer
  • masks
render_size1024
texture_size1024
normal_spaceworld

Hy3DRenderMultiView is the bridge between the shape and texture halves of Hunyuan3D. The shape model gave you geometry; this node renders that geometry from a ring of camera angles into the normal maps and position maps that the paint model uses to stay consistent when it colors the mesh. It's the 2.1 workflow's most important helper node, and the reason the texture stage knows what's front, back, top, and bottom.

Think of it as control-net for 3D. Just like a controlnet conditions a 2D diffusion model on pose or depth, these rendered maps condition the multiview paint diffusion so all six views of your object agree with each other. Without them, the texture model would invent a front that looks nothing like the back.

What it does

Inputs: a TRIMESH plus render_size and texture_size (both default 1024). The optional camera_config (HY3DCAMERA, from Hy3DCameraConfig) overrides the six default camera positions, and normal_space (world vs tangent) picks the normal map convention.

It renders the mesh from six fixed angles - azimuths 0/90/180/270 at eye level, plus top and bottom - using the pack's differentiable rasterizer. The outputs are:

  • normal_maps (IMAGE) - six surface-normal images, one per view
  • position_maps (IMAGE) - six position/depth-ish maps
  • renderer (MESHRENDER) - the renderer object itself, carrying the mesh
  • masks (MASK) - alpha masks per view

All three image outputs feed Hy3DSampleMultiView; the renderer gets threaded forward to Hy3DBakeFromMultiview so the bake uses the exact same camera setup you rendered with. That thread-through is deliberate - if the bake and the render disagree on cameras, your texture warps.

Why the defaults are the defaults

The six-view ring (0/90/180/270 + top/bottom) is Hunyuan3D 2.1's standard layout, and Hy3DSampleMultiView expects that count by default. If you change cameras with Hy3DCameraConfig, you have to change them consistently across render, sample, and bake - the nodes won't check for you.

Where it sits

Hy3DPostprocessMesh → Hy3DRenderMultiView → Hy3DSampleMultiView → Hy3DBakeFromMultiview

It's always used in the textured-asset workflow. If you only want the raw shape (a print or a bare mesh), you can skip the entire render/paint/bake chain.

Install

Pack-level install: Manager search "Hunyuan3DWrapper" or git clone https://github.com/kijai/ComfyUI-Hunyuan3DWrapper, then pip install -r requirements.txt. Note this renderer is part of the texture-gen stage, which on Windows expects the prebuilt custom_rasterizer wheel from the pack's wheels/ folder matched to your torch/CUDA build - pick the +torch260.cuda126 variant for the current portable, and if you get "not a supported wheel on this platform," your Python/torch/CUDA don't match any of the four wheels and you're compiling it yourself (README has the setup.py install path).

Common issues

  • Black or empty renders - the mesh may have no proper normals, or you skipped Hy3DPostprocessMesh and floaters are occluding things. Clean the mesh first.
  • Bake comes out smeared - camera mismatch between render and bake. Use the threaded renderer output and don't re-render in the middle.
  • Huge VRAM spikes at 1024 - render_size 1024 at six views is real work on a differentiable rasterizer. Drop to 768 or 512 for a first pass.
CategoryHunyuan3DWrapper

Inputs (5)

NameTypeDefaultDescription
trimeshTRIMESH
render_sizeINT102464–4096
texture_sizeINT102464–4096
camera_configoptHY3DCAMERA
normal_spaceoptCOMBOworld2 options: world, tangent

Outputs (4)

NameTypeDescription
normal_mapsIMAGE
position_mapsIMAGE
rendererMESHRENDER
masksMASK