ComfyUI Node

Hy3D Apply Texture

Where your finished texture finally becomes part of the mesh

By kijai·Created 2 years ago·Updated 5 months ago· 1,033
Hy3D Apply Texture
  • texture
  • renderer
  • trimesh

Up to this point in a Hunyuan3D workflow, your texture is a flat 2D image sitting in a socket. Hy3DApplyTexture is the node that makes it real: it takes that image, attaches it to the renderer's mesh, and returns a proper textured trimesh you can export, inspect, or hand to the next step. It's the bridge between "we painted a picture" and "we have a textured 3D model."

It's a two-input, one-output node and it's about as simple as this pack gets:

  • texture (IMAGE) - the finished texture from your bake/inpaint chain (Hy3DBakeFromMultiview, CV2InpaintTexture, Hy3DMeshVerticeInpaintTexture, or any combo).
  • renderer (MESHRENDER) - the renderer from Hy3DRenderMultiView. It's not optional, and it's not a formality: the renderer holds the mesh geometry and the UV layout that tells the texture where to wrap. Without it, "apply" has nothing to apply to.

The output is a single trimesh (TRIMESH). Wire it into Hy3DExportMesh (glb/obj/stl/ply) or a Preview3D node to eyeball the result before you commit to a file.

Why the renderer matters

This is where beginners get confused, so it's worth saying plainly: the renderer isn't a "preview" thing, it's a persistent object that carries the mesh's UV mapping from the Hy3DMeshUVWrap step all the way through the texture pipeline. That's why Hy3DBakeFromMultiview and Hy3DMeshVerticeInpaintTexture both pass it through untouched - the whole chain is one long relay of that renderer, and Hy3DApplyTexture is where it finally pays off. If you bake a texture, then skip the renderer pass-through and feed Hy3DApplyTexture a fresh renderer from a different mesh, the texture will land in the wrong places.

Using it

Run it once your texture chain is done. The canonical order from kijai's example workflow:

Hy3DBakeFromMultiview → (optional vertex inpaint) → CV2InpaintTexture → Hy3DApplyTexture → Hy3DExportMesh

No install beyond the pack itself - it ships inside ComfyUI-Hunyuan3DWrapper (ComfyUI Manager, search "Hunyuan3DWrapper", or git clone https://github.com/kijai/ComfyUI-Hunyuan3DWrapper into custom_nodes). The one real-world gotcha is upstream: everything before this node depends on the compiled custom_rasterizer wheel on Windows (Python 3.12 / CUDA 12.6). If your render step never ran, you won't have a valid renderer to apply to - fix that first and this node will behave exactly like it looks.

CategoryHunyuan3DWrapper

Inputs (2)

NameTypeDefaultDescription
textureIMAGE
rendererMESHRENDER

Outputs (1)

NameTypeDescription
trimeshTRIMESH