Hunyuan 3D 2.1 MultiViews Generator With MetaData
The generator that saves its homework — views on disk, ready to upscale later
- trimesh
- camera_config
- image
- pipeline
- albedo
- mr
- metadata
- positions
- normals
Hy3DMultiViewsGenerator paints your mesh's views and forgets them the moment the run ends. Hy3D21MultiViewsGeneratorWithMetaData is the version with a memory: it does the same painting, but also writes every albedo and MR view as a PNG to ComfyUI/output/3D/<output_name>/ and saves a metadata record of what it did. That tiny difference unlocks the pack's best workflow - upscaling your views with a real upscaler (AuraSR, InvSR) and re-baking them for sharper textures, or resuming a texturing job days later without re-running diffusion.
How it works
It's the paint pipeline again - mesh + camera rig + source image in, painted views out - with one extra input, output_name, and one extra output, metadata (HY3D21METADATA). The extra code saves Albedo_0.png, Albedo_1.png, ... and MR_0.png, ... into output/3D/<output_name>/, then packs a metadata object with the mesh file name, the camera config, and the lists of saved files. Everything else - steps (10), guidance_scale (3.0), view_size (512), texture_size (1024), unwrap_mesh (true), seed - matches the plain generator exactly.
The workflow this unlocks
The Mesh_Texturing_With_MetaData example shows it, and the ..._Upscaled_With_Model variants push it further:
- Generate views with this node (saves PNGs + metadata).
- Upscale the PNGs with AuraSR or InvSR (or any upscaler - the views are just images now).
- Re-bake with
Hy3DBakeMultiViewsWithMetaData, which detects the upscaled views, bakes, inpaints, and writes the final glb plus ameta_data.json. - Later, reload everything with
Hy3D21UseMultiViewsFromMetaDataor generate LODs with the HighPoly-to-LowPoly node.
The metadata object is the glue - it's what lets the next node find the right files and camera config without you re-wiring anything.
The outputs
pipeline, albedo, mr, metadata are the ones you use; positions and normals are diagnostics as usual. metadata is what you didn't get from the plain node - wire it into Hy3DBakeMultiViewsWithMetaData and you're set.
Installing it
Same install as the rest of the paint pipeline - the C++ extensions (custom_rasterizer + mesh_inpaint_processor) are required because this runs the rasterizer to render views:
cd ComfyUI/custom_nodes
git clone https://github.com/visualbruno/ComfyUI-Hunyuan3d-2-1
cd ComfyUI-Hunyuan3d-2-1
pip install -r requirements.txt
# plus the wheels under hy3dpaint/custom_rasterizer/dist and hy3dpaint/DifferentiableRenderer/dist
Common issues
If output_name contains a path separator or illegal characters, the save dies - keep it a plain folder name. And note this node saves views but not the final mesh; the bake node that follows is what writes the glb. If you only run this node, you get images and metadata with no textured model - that's expected, not a bug.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| trimesh | TRIMESH | — | |
| camera_config | HY3D21CAMERA | — | |
| view_size | INT | 512512–1024 | — |
| image | IMAGE | Image to generate mesh from | |
| 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–18446744073709550000 | — |
| output_name | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| pipeline | HY3DPIPELINE | — |
| albedo | IMAGE | — |
| mr | IMAGE | — |
| metadata | HY3D21METADATA | — |
| positions | IMAGE | — |
| normals | IMAGE | — |