scenario-3d-worlds — Claude Code skill: 3D worlds and Gaussian splats
A skill for generating walkable 3D worlds and Gaussian splats on Scenario through MCP, from text, an image, a panorama or video.
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a claude-codeWhat scenario-3d-worlds does
The skill covers running Scenario models over MCP that build volumetric Gaussian splats instead of polygon meshes. You walk through them and render in real time. There are no UVs or topology to edit. Marble splats can also export to a triangle or collider mesh.
Three vendors sit side by side: World Labs Marble in three quality tiers (1.0 Draft, 1.1, 1.1 Plus), Hunyuan's HY World pipeline, and TripoSplat for single objects. You pick by what you already have: a text prompt, one image (flat or 360), 2 to 8 photos of one scene, a walkthrough video, up to 64 overlapping photos, or one photo of an object. images and video are mutually exclusive, and isPano applies only when exactly one image is passed.
The loop is draft first, then upgrade. The three Marble tiers take identical inputs, and the same inputs with the same seed reproduce the same world on every tier, so iterate on Draft. The cost spread across tiers was more than tenfold, which is why dry_run before committing is worth it. The Skybox to Splat stage in the HY pipeline runs long: a jobs_wait timeout is not a failure, keep re-calling it with pending_job_ids and never fire a second model_run. TripoSplat wants one clean object while every other member wants a scene, and mixing those subjects up is the main failure mode. The scenario, scenario-3d and scenario-skyboxes skills install separately, and some steps will not run without them.
What it helps with
- generate a walkable 3D world from a text idea
- turn one photo of a place into a panorama and then a splat
- reconstruct a Gaussian splat from a walkthrough video or overlapping photos
- make a splat of a single object from one photo
- draft a scene cheaply on Draft, then rerun it at higher fidelity
Example prompts for the agent
- Search for Marble models and show me the Draft tier schema
- Dry-run Marble 1.1 with this image and seed 1234 and show the cost
- Run Skybox to Splat on this panorama and wait for the job with jobs_wait
How to install scenario-3d-worlds
1Skills CLI (Vercel)
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a claude-code2Manually: put the files in place
~/.claude/skills/scenario-3d-worlds/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/scenario-3d-worlds/
1Skills CLI (Vercel)
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a codex2Manually: put the files in place
.agents/skills/scenario-3d-worlds/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a cursor2Manually: put the files in place
.cursor/skills/scenario-3d-worlds/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install scenario-labs/skills scenario-3d-worlds2Manually: put the files in place
.github/skills/scenario-3d-worlds/SKILL.md1Skills CLI (Vercel)
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a gemini-cli2Platform CLI
gemini skills install https://github.com/scenario-labs/skills --path skills/scenario-3d-worldsManually: put the files in place
.devin/skills/scenario-3d-worlds/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add scenario-labs/skills --skill scenario-3d-worlds -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about scenario-3d-worlds
How do I install scenario-3d-worlds in Claude?
Run npx skills add scenario-labs/skills --skill scenario-3d-worlds -a claude-code. The skill lands in ~/.claude/skills/scenario-3d-worlds/SKILL.md.
What does scenario-3d-worlds do?
It describes running Scenario models over MCP to generate Gaussian splats: text-to-world, image-to-world, a panorama turned into a walkable splat, reconstruction from photos or video, and one-object splats.
Why does Skybox to Splat take so long?
That stage ran close to an hour at median. A jobs_wait timeout does not mean the job failed: call it again with pending_job_ids instead of starting a second model_run.
Source text
SKILL.md · MIT
---
name: scenario-3d-worlds
description: "Use when generating navigable 3D worlds or Gaussian splat scenes on Scenario via MCP: text-to-world, image-to-world, a 360 panorama or skybox turned into a walkable splat, multi-view photos or a video walkthrough reconstructed as a splat, or one object photo to splat. Keywords: World Labs Marble 1.1, 1.1 Plus, 1.0 Draft, Hunyuan World, HY World, image-to-skybox, skybox-to-splat, multiview-to-splat, TripoSplat, gaussian splatting, 3DGS, spz, world generation, explorable scene, VR."
license: MIT
---
# Scenario 3D Worlds
## Overview
These models build explorable environments as 3D Gaussian splats, not polygon meshes: volumetric
scenes to walk through and render in real time, with no UVs or topology to edit (Marble splats also
export to triangle or collider mesh). Three vendors sit side by side: World Labs Marble in three
quality tiers, Hunyuan's HY World pipeline, and TripoSplat for single objects. Discover them with
`search` and treat `model_schema_get` as the contract; HY World members carried a geo restriction
tag at authoring time, so hits differ by team and region.
Connection and the core loop: see the `scenario` skill; polygon meshes, rigging, and the 3D viewer:
the `scenario-3d` skill; skybox-only work with no splat stage: the `scenario-skyboxes` skill. If a
sibling skill named here is missing from your available skills, ask the user to install it
(`npx skills add scenario-labs/skills --skill <name>`); unattended, proceed from tool schemas and
flag the gap.
## Quick reference
Pick the member by what you already have (input names from the live schemas):
| You have | Member | Inputs |
| -------------------------- | ---------------------------------------- | ------------------------------------------ |
| A text idea | Marble, any tier | `prompt` alone |
| One image, flat or 360 | Marble | `images`, one entry; `isPano: true` if 360 |
| 2 to 8 photos of one scene | Marble | `images` |
| A walkthrough video | Marble or HY Multi-view to Splat | `video` |
| Many overlapping photos | HY Multi-view to Splat | `images`, 2 to 64 at authoring time |
| One photo of a place | HY Image to Skybox, then Skybox to Splat | `image`, then `panorama` |
| One photo of an object | TripoSplat | `image`; background removal is automatic |
`images` and `video` are mutually exclusive wherever both exist; `isPano` applies only when exactly
one image is passed. TripoSplat wants one clean object and every other member wants a scene: aiming
either at the other's subject is the main failure mode.
## Draft on Marble, then upgrade
The three Marble tiers (1.0 Draft, 1.1, 1.1 Plus) take identical inputs, and the same inputs with
the same `seed` reproduce the same world on every tier. Iterate on Draft, which returned in about a
minute at authoring time, then rerun the identical parameters on 1.1 (balanced) or 1.1 Plus (highest
fidelity, dynamically grows larger worlds when the scene allows). The cost spread across tiers was
more than tenfold at authoring time, so `dry_run` before committing. `splatResolution` picks the
stored density (`100k`, `500k`, `full`); `disableRecaption: true` stops Marble rewriting your
prompt.
## The HY World pipeline runs long
Image to Skybox is an image model, not a 3D one: it expands one photo of a place into a 2:1
equirectangular panorama (`backend` trades `full` fidelity against `qwen` speed and cost). Its
output asset id goes to Skybox to Splat as `panorama`. There, the three trajectory toggles
(`applyNavTraj`, `applyUpRoute`, `applyReconIteration`, default true) drive cost and time;
`maxSteps` sharpens marginally and materially moves neither. The splat stage ran close to an hour at
median at authoring time: keep re-calling `jobs_wait` with `pending_job_ids`; a timeout is not a
failure and never justifies a second `model_run`. Multi-view to Splat is the opposite, fast and
cheap: best when the camera moved through a static scene with parallax.
## Worked example: graybox a level from a concept image
1. `search` with `target="models"`, `query="marble world"`, `public=true`. Tiers appear side by
side, e.g. `model_worldlabs-marble-1-0-draft` (a live hit at authoring time: re-discover each
session).
2. `model_schema_get` with the Draft id: fields, caps, and defaults before anything else.
3. `upload_asset` the concept image (see the `scenario` skill) for an asset id.
4. `model_run` with `dry_run=true` and
`parameters={"images": ["asset_x"], "prompt": "abandoned observatory interior, dusk light through the dome slit", "seed": 1234, "splatResolution": "full"}`;
repeat the dry run on the 1.1 id to see the upgrade cost.
5. `model_run` on Draft with `wait=false`, then `jobs_wait` with the job id, re-called with
`pending_job_ids` on timeout.
6. `asset_display` the splat and walk it; adjust and repeat on Draft until the layout is right.
7. Rerun the identical parameters, same `seed`, on the 1.1 or 1.1 Plus id from step 1, then
`asset_download` the final `.spz`.
## Common mistakes
- Passing `images` and `video` together: mutually exclusive on Marble and Multi-view to Splat.
- A single equirectangular input without `isPano: true`: Marble reads it as a flat photo.
- Changing or omitting `seed` between the draft and the upgrade tier: a different world comes back.
- Feeding TripoSplat a scene, or a world model a lone object.
- Treating a `jobs_wait` timeout on Skybox to Splat as a failure: the job is still running.
- Adjusting `maxSteps` to buy quality or cut cost: the trajectory toggles move cost, `maxSteps`
barely moves sharpness.
- Expecting UVs or editable topology from a splat: for polygon assets, use the mesh generators in
`scenario-3d`.
© scenario-labs · MIT · scenario-labs/skills