Nodes/ComfyUI-Lux3D/Lux3D Material Redraw
ComfyUI Node

Lux3D Material Redraw

Re-skin an existing 3D model with one reference photo

By manycore-research·Created 7 months ago·Updated 2 days ago· 120
Lux3D Material Redraw
  • image
  • mesh_url
  • glb_model_url
base_api_pathhttps://api.aholo3d.cn

Lux3D Material Redraw is the node you reach for when you already have the shape and you want to change what it's made of. You give it an existing GLB plus a reference image, and it returns a new GLB where the material has been redrawn to match that image. Think e-commerce: you've got a product model of a handbag, you snap a photo of a different fabric swatch, and the bag comes back wearing it. Or a sofa whose leather you want to try as velvet before you touch the geometry.

That separation - keep the mesh, swap the surface - is genuinely useful, because the shape is usually the expensive part to get right and the material is what makes a product shot look real. It's also the pack's most niche node: the other Lux3D nodes generate geometry or convert formats, this one only repaints. And it uses a fixed v3.0-standard version of the service under the hood, so there's no version dropdown to fiddle with.

How it works

Same cloud pattern as the rest of the pack, minus the generation knobs. The node takes your reference image and your mesh_url, uploads whichever are local, POSTs to /lux3d/v1/generate/material-transfer/task/create, and polls task/get until the redraw finishes. Where the generation nodes return up to four outputs, this one insists on exactly one: it looks for a single .glb in the results and errors if it finds anything else, which keeps the ambiguity out of your workflow.

Inputs and outputs

Three inputs, all required:

  • image - the material reference. Public HTTP(S) URL, upstream STRING, or one connected IMAGE. This is what the new material is based on, so a clean, well-lit photo of the surface you want is worth more than a moody one.
  • mesh_url - the existing model. Public .glb URL, upstream STRING, or a local .glb picked from your ComfyUI input folder (with [output]/ [temp] suffixes available for those directories).
  • base_api_path - https://api.aholo3d.cn (default) or https://api.aholo3d.com.

The single output is glb_model_url - a download URL for the model with the redrawn material. Wire it into Lux3D Viewer to check the result in-canvas before you download it.

Install

It ships in the one-pack-for-all-nodes repository:

# ComfyUI Manager → Custom Nodes → Install via URL
# https://github.com/manycore-research/ComfyUI-Lux3D.git
# or:
comfy node install lux3d
# or manually:
cd path/to/ComfyUI/custom_nodes
git clone https://github.com/manycore-research/ComfyUI-Lux3D.git
pip install -r requirements.txt

Set LUX3D_API_KEY_CN or LUX3D_API_KEY_INTL in the environment that starts ComfyUI, matching your endpoint. Keys come from labs.aholo3d.cn / labs.aholo3d.com. Dependencies are just requests, Pillow, and numpy - no local rendering stack, no model downloads.

Where people get burned

Both inputs are required, and unlike the generation nodes there's no "default" escape hatch - leave either empty and it errors up front. Remember that both a local reference image and a local GLB are uploaded to Lux3D before the task runs, so your source model leaves the machine; if the mesh is client-confidential, this isn't the node for it. And temper expectations on the physics side: AI-generated materials, even cloud ones, still lean "looks great in a still render, gets weird under a moving light." For a product mockup or a concept material test it's great; for a physically accurate PBR pass you're probably still doing touch-up downstream.

CategoryLux3D

Inputs (3)

NameTypeDefaultDescription
imageSTRING,IMAGEPublic HTTP(S) image URL or one connected local IMAGE. Connecting the socket disables this URL field.
mesh_urlSTRING,LUX3D_MODEL_SOURCEPublic HTTP(S) .glb URL or a ComfyUI input/output/temp relative .glb file.
base_api_pathSTRINGhttps://api.aholo3d.cn

Outputs (1)

NameTypeDescription
glb_model_urlSTRING