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.
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
See it in the editor and gallery
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?