Nodes/Dustin ComfyUI Nodes/Dustin Marble Generate World
ComfyUI Node

Dustin Marble Generate World

Turn a prompt, photo, or video into a walkable 3D world — over an API, not your GPU

By zihualiu1997·Created 4 months ago·Updated 4 months ago· 1
Dustin Marble Generate World
  • image
  • world_json
  • world_id
  • marble_url
  • asset_urls_json
api_key
prompt_typetext
text_promptA mystical forest with glowing mushrooms
modelmarble-1.1
display_name
seed-1
is_panofalse
disable_recaptionfalse
reconstruct_imagesfalse
poll_interval_seconds15
max_wait_seconds600
image_url
multi_image_json
video_url
video_path
media_asset_id

This is the flagship of the pack and the reason most people clone it. Dustin Marble Generate World calls the World Labs Marble API - the 3D world generator from Fei-Fei Li's World Labs, the $230M-funded outfit whose "step inside an image" demo blew up in late 2024 - and drops the result back into your ComfyUI graph as if a local model had made it. Give it a text prompt, a photo, a batch of photos, or a video, and out come a 3D Gaussian-splat scene (plus a mesh, a panorama, and a thumbnail) you can open in Marble or preview with the pack's viewer nodes.

Read the name right, though: this is an API-wrapper node, not a local generator - the KB's "when the model isn't on your machine" category. Nothing is downloaded, no VRAM is used, and nothing runs without a World Labs API key. Your prompt and images leave your machine, generation takes roughly five minutes server-side, and you're paying per call. If you're strictly local-only, this pack has nothing for you - skip to the install section for the caveats, then walk away.

How it works

The mechanism is plain from the source: it POSTs a world prompt to api.worldlabs.ai/marble/v1/worlds:generate, gets back an operation_id, then polls .../operations/{id} every poll_interval_seconds (default 15) until the job reports done, up to max_wait_seconds (default 600). Transient network errors get retried with backoff, and a completed operation yields the full world payload. The "~5 minutes" number in the README is real - you queue this node and it blocks that long, so plan your workflows around the wait.

The inputs that matter

  • prompt_type is the master switch: text, image_url, image_tensor, multi_image_json, video_url, video_file. The neat part - if you leave it on text but wire in an image or video, the node auto-detects and switches modes for you, so you don't have to babysit the dropdown.
  • api_key - your World Labs key. Leave it blank and set the WLT_API_KEY environment variable before starting ComfyUI, and it reads that instead. (Same env var the rest of the Marble nodes honor.)
  • text_prompt - required for text mode, optional (but recommended) everywhere else. Default is "A mystical forest with glowing mushrooms," which is a fine prompt and a clear sign of a happy developer.
  • model - marble-1.1 (default), marble-1.1-plus, marble-1.0, or marble-1.0-draft. The draft model is your cheap iteration path; use the full models when you're ready to commit.
  • is_pano (image modes) - mark the input as an equirectangular panorama.
  • reconstruct_images - multi-image reconstruction mode, up to 8 images.
  • seed - -1 (default) omits the seed entirely; set a real number to reproduce a world.
  • max_wait_seconds - the one you'll actually touch, because a five-minute generation sometimes takes seven.

The two polling controls (poll_interval_seconds, max_wait_seconds) are the honest "this is a long async job" tell. And disable_recaption - off by default - sends your prompt as-is instead of letting Marble auto-rewrite it.

The outputs

Four strings: world_json (the full completed world payload), world_id (the generated world's ID), marble_url (link to open it in Marble's web viewer), and asset_urls_json - the one you'll wire onward. It's a compact JSON with thumbnail_url, pano_url, collider_mesh_url, and spz_urls (the 100k/500k/full-res Gaussian splat downloads). That last output is what feeds the pack's thumbnail preview, panorama preview, and the interactive Pano 360 Viewer.

Troubleshooting

  • "Missing API key" - you didn't set the node's api_key or WLT_API_KEY. It's the first error everyone hits.
  • Timed out after 600s - the job is still running server-side. Bump max_wait_seconds (up to 3600) and re-run; the error even tells you the last known world_id so you can check the platform.
  • Recaptioning surprises - if the world doesn't match your prompt, Marble's default auto-recaption is rewriting it. Toggle disable_recaption.
  • Network flakiness - the node retries transient failures five times with backoff; if it still dies, "check internet/VPN/proxy or retry later."

One more honest note from the external-API-node playbook: this is a third-party pack holding your key and calling the network by design - exactly the shape of node that's been abused before. The source is small and readable, which is your best audit. Read it once.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/zihualiu1997/dustin-comfyui-nodes

Then restart ComfyUI. Or install "dustin-comfyui-nodes" via ComfyUI Manager. The pack's one real dependency - requests - is auto-installed. No models to download; the model lives on World Labs' servers, which is the whole point.

CategoryDustin Nodes/Marble

Inputs (17)

NameTypeDefaultDescription
api_keySTRING
prompt_typeCOMBOtext6 options: text, image_url, image_tensor, multi_image_json, video_url, video_file
text_promptSTRINGA mystical forest with glowing mushrooms
modelCOMBOmarble-1.14 options: marble-1.1, marble-1.1-plus, marble-1.0, marble-1.0-draft
display_nameSTRING
seedINT-1-1–4294967295
is_panoBOOLEANfalse
disable_recaptionBOOLEANfalse
reconstruct_imagesBOOLEANfalse
poll_interval_secondsINT155–120
max_wait_secondsINT60060–3600
image_urloptSTRING
imageoptIMAGE
multi_image_jsonoptSTRING
video_urloptSTRING
video_pathoptSTRING
media_asset_idoptSTRING

Outputs (4)

NameTypeDescription
world_jsonSTRING
world_idSTRING
marble_urlSTRING
asset_urls_jsonSTRING