Hunyuan 3D 2.1 MultiViews Generator Batch
From bare mesh to painted GLB
- camera_config
- processed_meshes
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.jpg ↔ bunny.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- aHY3D21CAMERAobject, 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) andtexture_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) andguidance_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 (frommodels/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 ameta_data.jsonwith 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
Hy3D21CameraConfigangles rather than cranking texture size. - OOM during bake - lower
texture_sizeto 1024 first;view_sizesecond. The bake stage holds every painted view in memory at once.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| output_folder | STRING | — | |
| camera_config | HY3D21CAMERA | — | |
| view_size | INT | 512512–1024 | — |
| steps | INT | 101–100 | Number of steps |
| guidance_scale | FLOAT | 3.01–10 | Guidance scale |
| texture_size | INT | 1024512–4096 | — |
| unwrap_mesh | BOOLEAN | true | — |
| seed | INT | 00–2147483647 | — |
| generate_random_seed | BOOLEAN | true | — |
| remove_background | BOOLEAN | false | — |
| skip_generated_mesh | BOOLEAN | true | — |
| upscale_multiviews | COMBO | None | 2 options: None, CustomModel |
| upscale_model_name | COMBO | 0 options: | |
| export_multiviews | BOOLEAN | true | Multiviews can be used to apply texture to a low poly mesh |
| export_metadata | BOOLEAN | true | Exporta json file with camera config and multiviews |
| input_images_folderopt | STRING | — | |
| input_meshes_folderopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| processed_meshes | STRING | — |