Nodes/ComfyUI-Lux3D/Lux3D Viewer
ComfyUI Node

Lux3D Viewer

Preview GLB and PLY files in the canvas — the one Lux3D node that needs no API key

By manycore-research·Created 7 months ago·Updated 2 days ago· 120
Lux3D Viewer
  • model_url
  • model_url
base_api_pathhttps://api.aholo3d.cn

Here's the thing nobody tells you about 3D generation nodes: they hand you URLs, not things you can look at. Lux3D Image to 3D returns a GLB link, the material node returns a GLB link, and you're supposed to just... trust it? That's the gap Lux3D Viewer fills. It renders a .glb model or a .ply gaussian splat right in the ComfyUI canvas so you can orbit, zoom, and decide if it's worth a download before you commit.

It's also the pack's freebie, and its most honest node. Every other Lux3D node phones home to a cloud service and burns metered API credits. This one doesn't call the API at all - no key needed, no uploads, no cost. The preview runs in your browser via the pack's frontend. It's the tool you'll quietly use more than you expect, because it's also a perfectly good general GLB/PLY previewer for anything, not just Lux3D output.

How it works

The node is nearly a pass-through with validation. Give it a remote URL and it validates that it's a proper HTTP(S) .glb/.ply link and passes it straight through to the viewer. Give it a local file - picked from your ComfyUI input folder, or referenced from output/temp with a [output]/ [temp] suffix - and it does something clever: instead of uploading the file anywhere, it builds a same-origin /view URL through ComfyUI's own file-serving route. Your model stays on your machine, the preview loads it locally, and nothing ever leaves. That "local files never upload" property is the entire reason this node exists inside a cloud pack.

Inputs and outputs

  • model_url - the one that matters. Public .glb/.ply URL, upstream STRING, or a local file via the picker.
  • base_api_path - still present, but it only validates the region endpoint; previewing doesn't call the API, so it won't error if you never set a key.

The single output is model_url, which is just the resolved URL - unchanged for remote input, the /view URL for local files. It's there so you can chain the resolved link into a downloader or a downstream node that wants a real URL.

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

No API key, no env vars, no model downloads. The runtime dependencies are requests, Pillow, and numpy - and honestly this node doesn't even need most of those to do its job; they're there because the pack is one install.

Where people get burned

Two things. First, if you've installed the whole pack and only want the viewer, you still have to deal with the fact that the pack's other nodes exist - harmless, but if Manager's security level throws a warning on install, the README's fix is to adjust the security level in the Manager config. Second, the base_api_path field is a string that must be one of the two exact Lux3D endpoints, even though nothing is called - keep it at the default and don't add a trailing slash or the validation trips. And one note on expectations: .ply here means gaussian-splat .ply, which is a point-based radiance cloud, not a polygon mesh - if you feed it a polygon PLY you may get a surprise. Otherwise this is the node that makes the rest of the pack usable, and it costs you nothing.

CategoryLux3D

Inputs (2)

NameTypeDefaultDescription
model_urlSTRING,LUX3D_MODEL_SOURCEPublic HTTP(S) .glb/.ply URL or a ComfyUI input/output/temp relative .glb/.ply file. Local files stay in ComfyUI and are never uploaded.
base_api_pathSTRINGhttps://api.aholo3d.cn

Outputs (1)

NameTypeDescription
model_urlSTRING