All posts

Feature Launch: Multi-Camera Rendering

Place up to 5 cameras in a single world and capture every angle of the same moment in one render.

Multiple cameras capturing the same scenario, rendered in a single run

Multi-view perception needs multi-view data. Until now, getting the same scenario from several perspectives meant firing off a separate render job per camera and stitching the outputs together afterwards.

Multi-Camera fixes that. Place up to 5 cameras in a single world and capture them all in one render. Every camera shoots the same frame in time. One scenario, one render, every angle.

What's New

  • Up to 5 cameras per world, all captured on the same frame in time
  • Each camera is configured independently - its own pose, field of view, resolution, and preset - so a wide establishing shot and a tight zoom of the same moment come from a single run
  • Each camera can be keyframed individually inside a scenario, so you can fly one while another holds steady and get synchronized multi-view sequences in one pass
  • Camera IDs are logged automatically in the COCO image annotations
  • One render covers every camera - no more separate jobs per perspective

Flip the live viewport between cameras with the new camera dropdown in the editor, or call world.set_active_camera() from your notebook. A sync dot shows whether the viewport still matches that camera's set pose.

In the gallery, switch between each camera's view of the same rendered frame.

The API, in a nutshell

# add cameras (up to 5)
world.add_camera("a")
world.add_camera("b")

# configure each one independently
world.cameras["b"].set_fov(35)

scenario = world.new_scenario(num_frames=100)
scenario.render()                # renders all cameras by default
scenario.render(cameras=["b"])   # or a subset

# remove cameras that are not needed
world.remove_camera("b")

Backwards compatible: world.camera now points to the earliest camera added, so existing single-camera notebooks run exactly as before. No changes needed.

What to expect on render time

Each camera you render adds roughly 40% to generation time, scaling linearly from a single-camera baseline. A 5-camera render takes about 2.6x of a one-camera render (1 → 1.4 → 1.8 → 2.2 → 2.6).

Current limitations

  • Artifact types. All cameras in a single render share the same output type. You can't capture RGB from one camera and thermal from another in the same render - run a separate render for each output type instead.
  • Screen droplets. Screen droplets are currently set via the environment (world.env.weather), so they can't be set per camera yet. A fix is coming in an upcoming release.

Capture every angle in one run

Ready to build synchronized multi-view datasets for your perception stack?

Get in touch

BOOK A DEMO MORE POSTS