Nodes/ComfyUI-Hunyuan3d-2-1/Hunyuan 3D 2.1 MultiViews Generator Batch
ComfyUI Node

Hunyuan 3D 2.1 MultiViews Generator Batch

From bare mesh to painted GLB

By visualbruno·Created about a year ago·Updated 5 days ago· 375
Hunyuan 3D 2.1 MultiViews Generator Batch
  • camera_config
  • processed_meshes
output_folder
view_size512
steps10
guidance_scale3.0
texture_size1024
unwrap_meshtrue
seed0
generate_random_seedtrue
remove_backgroundfalse
skip_generated_meshtrue
upscale_multiviewsNone
upscale_model_name
export_multiviewstrue
export_metadatatrue
input_images_folder
input_meshes_folder

This is the second half of the Hunyuan3D 2.1 workflow: the pack's mesh generator gives you a bare mesh, and this node is what paints PBR textures onto it. Think of it as the texturing pass - you've got meshes (yours, the folder generator's, or a low-poly model you want to dress up) and a folder of reference photos, and you want each mesh to come out the other side wearing a matching albedo + metalness/roughness material, baked and ready for a game engine or Blender.

It earns its name: it renders the mesh from multiple virtual camera angles, asks the Hunyuan 3D 2.1 paint model what each view should look like, then bakes those painted views back into one UV texture. Batch because it walks a whole folder the same way the mesh generator does.

The one gotcha that decides everything

The node pairs images to meshes by filename. For each picture in input_images_folder, it looks in input_meshes_folder for a mesh with the same basename (bunny.jpgbunny.glb). No match, no texture - it just logs "No mesh found" and moves on. Get the naming aligned before you start, or this looks broken when it isn't.

Inputs that matter

  • camera_config - a HY3D21CAMERA object, so you must wire it from the pack's Hy3D21CameraConfig node first. That's where you set azimuths, elevations, and per-view weights (the defaults are six views: four around, one top, one bottom). This is the single most interesting knob in the whole pack - fewer/cleverer camera angles mean better textures for cheap.
  • input_images_folder / input_meshes_folder - optional inputs, but the node does nothing without at least one pair of folders. Both must be set.
  • view_size (512–1024) and texture_size (512–4096) - the render resolution and the baked texture resolution. texture_size=2048+ is where the detail lives; it's also where VRAM starts to sweat.
  • steps (default 10) and guidance_scale (default 3) - the paint model runs fast at 10 steps; this is far cheaper than the mesh-generation diffusion.
  • unwrap_mesh - re-unwraps UVs with xatlas before painting. Leave on unless you already have a good UV layout you want to keep.
  • upscale_multiviews + upscale_model_name - optionally push the painted views through a ComfyUI upscale model (from models/upscale_models) before baking. "None" is fine to start.
  • export_multiviews - dumps the per-view albedo/MR PNGs into the output subfolder; the tooltip says it best: those views can be reused to texture a low-poly mesh later.
  • export_metadata - writes a meta_data.json with the camera config and view filenames. The pack's other workflows (like the single-mesh texturing one) can read that metadata back, so it's worth keeping on.

Outputs

A single processed_meshes string - the paths of the textured GLBs it wrote. Each mesh gets its own subfolder under output_folder (output_folder/<name>/<name>.glb), with the multiview PNGs and metadata alongside if you left the export flags on. It's an output node; there's nothing to wire onward.

Installing and running it

Same pack as the mesh generator - clone, install requirements, drop in the two checkpoints (see the pack README, or the install section on the Hy3D21MeshGenerationBatch page for the full rundown including the C++ extension caveats). The heavy lifting is the same hy3dpaint pipeline, so every install warning there applies here too - especially the Windows-only prebuilt wheels for the rasterizer and differentiable renderer.

The batch-specific settings to check before you hit run: skip_generated_mesh (on by default, so it skips meshes that already have output - your resume tool), remove_background for photos that aren't cut out yet, and generate_random_seed if you want varied results per mesh instead of a fixed seed.

Common issues

  • "No mesh found for input image" - filename mismatch between the image and mesh folders, the #1 footgun.
  • Seams or smudging in the texture - the pipeline inpaints seam overlaps, but a jittery or badly-overlapping camera set makes that job harder. Tighten the Hy3D21CameraConfig angles rather than cranking texture size.
  • OOM during bake - lower texture_size to 1024 first; view_size second. The bake stage holds every painted view in memory at once.
CategoryHunyuan3D21Wrapper

Inputs (17)

NameTypeDefaultDescription
output_folderSTRING
camera_configHY3D21CAMERA
view_sizeINT512512–1024
stepsINT101–100Number of steps
guidance_scaleFLOAT3.01–10Guidance scale
texture_sizeINT1024512–4096
unwrap_meshBOOLEANtrue
seedINT00–2147483647
generate_random_seedBOOLEANtrue
remove_backgroundBOOLEANfalse
skip_generated_meshBOOLEANtrue
upscale_multiviewsCOMBONone2 options: None, CustomModel
upscale_model_nameCOMBO0 options:
export_multiviewsBOOLEANtrueMultiviews can be used to apply texture to a low poly mesh
export_metadataBOOLEANtrueExporta json file with camera config and multiviews
input_images_folderoptSTRING
input_meshes_folderoptSTRING

Outputs (1)

NameTypeDescription
processed_meshesSTRING