cd /news/generative-ai/world-labs-explicit-camera-control-f… · home › topics › generative-ai › article
[ARTICLE · art-147746] src=github.com ↗ pub= topic=generative-ai verified=true sentiment=↑ positive

World Labs: Explicit camera control for image-to-video

World Labs released Camera Studio, an open-source React and Express application that turns a still image into a camera-controlled four-second MP4 using its Marble 5 API, with the code published on GitHub under the worldlabsai/atlas-camera-studio repository. The tool reconstructs depth from an uploaded JPG, PNG or WebP, lets users draw and smooth a camera path, and generates 48 frames at 12 FPS, encoded locally with FFmpeg; it requires Node.js 22.12+ and an API-enabled World Labs beta account. A hosted version at camera.wlt-ai.art adds Clerk phone verification and Stripe credit packs, while generated videos and scene data expire after seven days.

read4 min views2 publishedOct 8, 2026
World Labs: Explicit camera control for image-to-video
Image: Michielbdejong (auto-discovered)

Try the hosted app · Explore an example — no signup · Join the API beta waitlist · API quickstart

Turn a still image into a camera-controlled shot with the Marble 5 API. Upload a photo, reconstruct its depth, choose a camera path, and generate a four-second MP4.

This repository contains the complete React editor, Express server, camera math, job runner, and optional hosted-demo billing. The local version uses your own API key. Hosted mode adds Clerk phone verification and one-time Stripe credit packs; there is no Metronome dependency.

Two camera-controlled videos shared by Jos. Click a preview to open the full MP4; the original files are included in examples/.

The video from Jos's “what did Ilya see?” post. This earlier demo is supplied at 2560 × 1440, 30 FPS, four seconds. Download MP4.

Prompt: “camera orbits around holographic fish”. Generated with Camera Studio: 1280 × 720, 48 frames at 12 FPS, seed 42. Download MP4.

The current app produces four-second videos at 12 FPS. These are output examples; the original source images and saved camera paths are not included.

Choose Explore an example to open a prepared igloo scene with an editable camera path. Move or delete cameras, aim them, smooth the path, and preview the move without an account or API key. The public image, EXR depth, and camera metadata are bundled in public/example/; no API task runs while you explore.

On the hosted app, sign in and verify a phone number when you want to Queue video or prepare your own image. Your example edits stay in the tab through sign-in. Generating the example uses the same credits and limits as any other video. A local fork sends the bundled scene with your own API key; it does not depend on our private asset IDs.

You need Node.js 22.12+ (Node 24 recommended), FFmpeg on your PATH, and an API-enabled World Labs beta account.

  1. Clone this repository and run npm ci .
  2. Copy .env.example to.env .
  3. Add your project API key as WLT_API_KEY .
  4. Run npm run build && npm start .
  5. Open localhost:3030 , upload a JPG, PNG or WebP, to prepare its 3D scene.

The editor crops inputs to 16:9. Rotate the scene, draw a camera path on the map, adjust camera direction, and preview the move before choosing Queue video. Each video contains 48 frames at 12 FPS. MP4 encoding runs locally using FFmpeg.

Drag a camera or its numbered point in the 3D view to move it; drag empty space to rotate the scene. Use Smooth path to soften bends, and find Look at point below Yaw and Pitch. Delete/Backspace removes the selected camera. Cmd/Ctrl-Z undoes an edit; Cmd/Ctrl-Shift-Z redoes it. Each drag or drawn stroke is one undo step.

Saved contains drafts, generations, and favorites. Drafts are saved in this browser, separately for each signed-in account (up to 30 drafts), and need their source scene to remain available. Generated videos and scene data expire after seven days; download videos you want to keep.

For development, run npm run dev and npx vite in separate terminals. The Vite app proxies API requests to port 3030.

Join the World Labs beta waitlist if you don't already have access. Signing up requests access; it does not immediately issue a key.

After your account is enabled, open the developer portal, select a project, and create an API key with task creation, operation reading, and asset creation/reading permissions. Keep the key in the server's .env; never paste it into frontend source or commit it.

The API is currently served from https://api.atlas-beta.worldlabs.ai/api/v2. See the API quickstart for current access and setup details. API charges are billed to the project that owns your key.

  1. The browser resizes the image to 1280 × 720.
  2. The server calls tasks:images2PosedRGBD and polls the returned operation.
  3. The editor decodes the EXR depth map and reconstructs a colored point cloud.
  4. The editor smooths the drawn path and interpolates camera positions and directions into 48 target cameras.
  5. The server calls tasks:atlasGenerate , downloads the frames, and encodes an MP4.

The preview is a point cloud used to plan the camera. Generated views can reveal details that are absent from the original image.

See hosted setup. Hosted mode requires verified phone ownership before preparing images or generating. Each phone can claim three free generations once, even across accounts. One-time credit packs offer 3 generations for $5, 12 for $20, or 60 for $100 through Stripe Checkout.

Credits are reserved before generation and returned on terminal failure. Duplicate webhooks and repeated job requests do not double-credit or double-charge. Interrupted workers resume stored operation IDs. Job inputs and videos are kept for seven days; download finished shots before they expire.

Local mode has no authentication or paywall and binds to loopback only. Use hosted mode for any shared deployment.

npm run typecheck
npm test
npm run build

Tests exercise the original trajectory drawing and camera math, coordinate transforms, ledger concurrency, payment validation, refunds, and job recovery. They do not replace a real Stripe Checkout, SMS verification, and Marble API smoke test before deployment.

MIT. The editor, drawing controls, and trajectory math are adapted from Gowthami's camera-trajectory app at World Labs. Built with Three.js, React Three Fiber, Clerk, Stripe, and FFmpeg. World Labs API usage is subject to the service's own terms and charges.

── more in #generative-ai 4 stories · sorted by recency
── more on @world labs 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/world-labs-explicit-…] indexed:0 read:4min 2026-10-08 · —