Rayform

Guides

Using scenes in simulators

Load the 3D scenes reconstructed from your recordings into Isaac Sim, Isaac Lab or MuJoCo.

Rayform is in private preview. APIs, formats and the SDK described here may change before general availability.

Every segment carries the scene it was recorded in: Gaussian splats for appearance and meshes for collision, in the site's world frame at metric scale. Export them to evaluate policies in the places your robots actually work.

Isaac Sim and Isaac Lab

Python
scene = client.segments.get("seg_4f0a").scene_at(t=0.0)
scene.to_usd("kitchen_lab2.usdz")

Or export a whole slice:

Shell
rayform export slc_7c1e04aa --format usd --out ./scenes/

The USD file contains:

PrimContents
/World/BackgroundGaussian splats of the static scene
/World/CollisionCollision meshes, with convex decomposition for physics
/World/Objects/*Moved objects as separate prims, posed at time t
/World/Cameras/*The recording's cameras with their intrinsics

MuJoCo

Python
scene.to_mjcf("kitchen_lab2/")   # writes scene.xml plus meshes/
Python
import mujoco

model = mujoco.MjModel.from_xml_path("kitchen_lab2/scene.xml")
data = mujoco.MjData(model)

MJCF holds the collision geometry only; MuJoCo does not render Gaussian splats.

Posing objects at any moment

Objects that moved during the recording are separate entities with trajectories. scene_at(t) places them where they were at time t, so you can start a simulation from any moment of a real episode:

Python
seg = client.segments.get("seg_4f0a")
before = seg.scene_at(t=seg.events()[0].t_ns - 500_000_000)   # half a second before the first grasp

Last updated October 18, 2026