ComfyUI Node

Hy3D Upload Mesh

Bring your own mesh — drop a .glb in and texture it with Hunyuan3D

By kijai·Created 2 years ago·Updated 5 months ago· 1,033
Hy3D Upload Mesh
    • trimesh
    mesh

    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 .glb and retry; .glb is 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-python if you're feeding big meshes into the UV step.
    CategoryHunyuan3DWrapper

    Inputs (1)

    NameTypeDefaultDescription
    meshCOMBO0 options:

    Outputs (1)

    NameTypeDescription
    trimeshTRIMESHThe glb model with mesh to texturize.