Lux3D Text to 3D
Type 'steampunk coffee table' and actually get a GLB back
- reference_image
- task_id
- lux3d_zip
- glb
- ply
Text-to-3D has a dirty secret in the open ecosystem: it's almost never actually text-to-3D. It's text-to-image with a 2D model, then image-to-3D on whatever came out, wired into one graph and marketed as a single step. Lux3D Text to 3D is the honest version of that promise - you type a prompt, optionally hand it a reference image, and a 3D model comes back - because the two-stage pipeline runs entirely on Lux3D's servers instead of on your machine.
That makes it the sibling of Lux3D Image to 3D, and the trade is the same: zero local 3D model, zero VRAM, zero compiled CUDA dependencies, but every run is a metered cloud call. For a quick concept model or a product idea you want to see in the round, that's a fair deal - especially since local text-to-3D is even more of an install and VRAM slog than image-to-3D.
How it works
Same machinery as the rest of the pack: the node validates your prompt, builds a payload, POSTs it to /lux3d/v1/generate/text-to-3d/task/create, then polls task/get every 15 seconds for up to about 15 minutes. The optional reference image (public URL, upstream STRING, or one connected IMAGE) is uploaded to Lux3D's asset service before the task is submitted, and the returned glb/ply are URLs, not files.
The inputs that matter
- prompt - multiline, and the one input you actually have to get right. Describe the object, its style, what it's made of. "Retro sci-fi lamp, brushed metal, teal glow" will beat "lamp" every time.
- style - this is the differentiator, and the reason you might reach for this node over a generic image-to-3D. Seven presets:
photorealistic(default),cartoon,anime,hand_painted,cyberpunk,fantasy,glass. No prompt engineering to force an anime look - it's a dropdown. - reference_image - optional. Paste a URL, connect a
STRING, or drop in one localIMAGE. A reference anchors the shape when your prompt alone would be ambiguous ("the one from that mood board"). - version / face_count / output_format / enable_pbr / ai_predict_size - shared with Image to 3D.
G1-Turboby default, 200k face count, and rememberenable_pbronly applies toG1-Turbo, and not to PLY-only output.
Outputs are task_id, lux3d_zip, glb, ply. Plug the non-empty glb into Lux3D Viewer to inspect it in the canvas.
Install
# 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
Then set the API key in the environment that starts ComfyUI - LUX3D_API_KEY_CN for the default https://api.aholo3d.cn endpoint, LUX3D_API_KEY_INTL for https://api.aholo3d.com. Keys come from labs.aholo3d.cn or labs.aholo3d.com. No model files to download; the requirements are just requests, Pillow, and numpy.
Where people get burned
Empty prompt → immediate error, so that one's self-explanatory. If you set a reference image but the node errors, double-check the URL is a public HTTP(S) link - a local path pasted into the widget won't work unless it's a connected IMAGE socket, which is what triggers the upload. And set your expectations on geometry quality: generated 3D is a great silhouette and a lousy wireframe. Static props, concept blocks, product mockups - fantastic. Game-ready topology you can rig directly - still not a thing from any generator, cloud or local. If a style comes back off, remember the server-side pipeline is doing the text-to-image part too, so prompt and style preset fight each other; keep the prompt describing the object, and let the dropdown carry the look.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| base_api_path | STRING | https://api.aholo3d.cn | Use https://api.aholo3d.cn or https://api.aholo3d.com. The matching server API key environment variable is used. |
| prompt | STRING | — | |
| style | COMBO | photorealistic | 7 options: photorealistic, cartoon, anime, hand_painted, cyberpunk, fantasy, +1 |
| reference_image | STRING,IMAGE | Optional public HTTP(S) URL or connected IMAGE/STRING. | |
| version | COMBO | G1-Turbo | 2 options: G1, G1-Turbo |
| face_count | INT | 2000000–300000 | Defaults to 200000; use 0 to omit the field. |
| output_format | COMBO | default | G1 always returns ZIP + GLB and optionally PLY; G1-Turbo follows the selected combination. |
| enable_pbr | COMBO | default | G1-Turbo only; omit for PLY-only output. |
| ai_predict_size | COMBO | default | 3 options: default, true, false |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| task_id | STRING | — |
| lux3d_zip | STRING | — |
| glb | STRING | — |
| ply | STRING | — |