Hy3D Upload Mesh
Bring your own mesh — drop a .glb in and texture it with Hunyuan3D
- trimesh
Hy3DUploadMesh is the "your mesh" entry point into the Hunyuan3D wrapper. Everything else in the pack starts from a generated shape; this node starts from a file you own. Drop a mesh into your ComfyUI input folder (or drag-and-drop it onto the canvas), pick it from the dropdown, and out comes a TRIMESH ready for the whole texture pipeline - render multiview, paint, bake, apply, export. If you've got an untextured model you want Hunyuan's paint model to give a PBR skin, this is the door.
It's the practical half of the "retexture my existing asset" workflow, and it's genuinely useful - the same pipeline that paints freshly-generated geometry doesn't care where the geometry came from. Your low-poly prop, your sculpted print, your game-ready mesh from Blender: upload it here and the texture brain colors it.
How it works
The mesh input is a dropdown built by scanning ComfyUI's input directory for mesh extensions: .glb, .gltf, .obj, .ply, .stl, .3mf. Pick one and it's loaded with trimesh (force="mesh", so point clouds and the like get meshed) and returned as a TRIMESH.
It's not to be confused with Hy3DLoadMesh, which takes a literal path string you type. Hy3DUploadMesh is the ComfyUI-native one: the file appears in the widget, the dropdown populates itself, done.
One thing to know: this node loads geometry only. Textures/UVs on the uploaded file do not come along for the ride in any useful way - which is exactly what you want, because the whole point is to repaint it. The UV-unwrapping for the paint pass happens downstream (via Hy3DMeshUVWrap, which the README flags as needing a recent xatlas to handle high-poly meshes cleanly).
The classic flow
Hy3DUploadMesh → Hy3DMeshUVWrap → Hy3DRenderMultiView → Hy3DSampleMultiView → Hy3DBakeFromMultiview → Hy3DApplyTexture → Hy3DExportMesh
Roughly the shape of the single-image example workflow, minus the shape generation. This is the path you take when you want Hunyuan3D's texturing, not its modeling.
Install
Pack-level clone (Manager search "Hunyuan3DWrapper", or git clone https://github.com/kijai/ComfyUI-Hunyuan3DWrapper, then pip install -r requirements.txt). Loading the mesh itself needs nothing special; the downstream texturing nodes are where the compiled custom_rasterizer wheel requirement kicks in on Windows (match wheels/ to your torch/CUDA build).
Common issues
- Dropdown is empty - nothing mesh-y in
ComfyUI/input/. Drop the file in and the list refreshes. - Load fails on your file - trimesh chokes on some exotic formats or corrupt files. If it loads in Blender but not here, convert to
.glband retry;.glbis the most bulletproof. - Textured input looks wrong after retexturing - expected; this node strips materials and the paint stage regenerates everything. Don't upload a pre-textured mesh expecting it preserved.
- High-poly upload → slow/hung UV wrap - README's xatlas upgrade note applies: uninstall the default xatlas and install
mworchel/xatlas-pythonif you're feeding big meshes into the UV step.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| mesh | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| trimesh | TRIMESH | The glb model with mesh to texturize. |