Nodes/Dustin ComfyUI Nodes/Dustin Marble Generate Multi-Image World
ComfyUI Node

Dustin Marble Generate Multi-Image World

Feed it a few photos of a place, get back a walkable 3D world

By zihualiu1997·Created 4 months ago·Updated 4 months ago· 1
Dustin Marble Generate Multi-Image World
  • images
  • world_json
  • world_id
  • marble_url
  • asset_urls_json
api_key
azimuths0,180
upload_modemedia_asset
text_prompt
modelmarble-1.1
display_name
seed-1
reconstruct_imagesfalse
disable_recaptionfalse
poll_interval_seconds15
max_wait_seconds600

This is the all-in-one version of Marble's multi-image generation, and it's the node you'll actually want for this task. The pack splits the job into a "build prompt" node and a "generate" node, but this one fuses them: you drop an image batch in, it uploads each frame to Marble, tags them with azimuths, starts the world generation, and polls until it's done. One node, four outputs, roughly five minutes of server-side thinking. It's the same code path as wiring Build Multi-Image Prompt into Generate World - just without the intermediate JSON step you'd otherwise have to babysit.

How it works

Mechanically it's two phases folded together. First it walks your images batch, uploads each frame via Marble's media-asset endpoint (or base64-embeds it, if you pick data_base64), and pairs every frame with an azimuth. Then it hands the assembled multi_image_json to the same generation-and-poll machinery as the pack's other generate nodes: POST to worlds:generate, get an operation_id, poll every poll_interval_seconds until max_wait_seconds. What you get out is a completed world payload, not a request ID.

The inputs that matter

  • images - the batch, square scene photos of the same location recommended. This is the star input; the whole node exists to serve it.
  • azimuths - comma-separated degrees, one per image, count must match the batch. Default 0,180; for a proper sweep around a subject think 0,90,180,270. Wrong count = hard error, which beats silent misalignment.
  • reconstruct_images - toggle for Marble's reconstruction mode, up to 8 images. This is what you want when the goal is "rebuild this actual place" rather than "invent a world inspired by these photos."
  • text_prompt - optional guidance that rides along with the images.
  • model - marble-1.1 default; marble-1.1-plus for higher quality, marble-1.0-draft for cheap iteration.
  • seed - -1 omits it; a real value makes the world reproducible.
  • api_key - or WLT_API_KEY in the environment.
  • max_wait_seconds - default 600; a slow day may exceed it.

Same upload_mode choice as the build node: media_asset (default, recommended) uploads to Marble's storage, data_base64 inlines the images.

The outputs

Four strings, identical to the pack's other generate nodes: world_json (full payload), world_id, marble_url (open it in Marble's web viewer), and asset_urls_json - the JSON with thumbnail_url, pano_url, and spz_urls that feeds the pack's preview and viewer nodes. If you just want to see what you made, wire asset_urls_json into Dustin Marble Preview Thumbnail and look.

Honest caveats

The three things that apply to every Marble node apply double here because you're uploading N files before generating: your photos leave your machine, you're spending API calls on uploads plus a generation, and the wait is real. Also note this node's api_key does double duty - it uploads and generates, so a missing key fails at the upload stage with the same "Missing API key" error. And remember the images must be square; Marble's multi-image mode expects square scene photos, and the recommendation is baked into the README for a reason.

Install

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

Restart ComfyUI, or grab "dustin-comfyui-nodes" via ComfyUI Manager. Needs requests and a World Labs API key. No models to download, no VRAM touched - this is a cloud generation wearing a ComfyUI costume, and it's very good at that job.

CategoryDustin Nodes/Marble

Inputs (12)

NameTypeDefaultDescription
api_keySTRING
imagesIMAGE
azimuthsSTRING0,180
upload_modeCOMBOmedia_asset2 options: media_asset, data_base64
text_promptSTRING
modelCOMBOmarble-1.14 options: marble-1.1, marble-1.1-plus, marble-1.0, marble-1.0-draft
display_nameSTRING
seedINT-1-1–4294967295
reconstruct_imagesBOOLEANfalse
disable_recaptionBOOLEANfalse
poll_interval_secondsINT155–120
max_wait_secondsINT60060–3600

Outputs (4)

NameTypeDescription
world_jsonSTRING
world_idSTRING
marble_urlSTRING
asset_urls_jsonSTRING