encord.beta.scene) is the recommended way to register point clouds and synchronized sensor streams in Encord. It lets you build Scenes from point cloud, image, camera, and frame-of-reference streams without writing raw Scene JSON.
Use this guide for the workflow. Use the Scene SDK reference for method-level details.
Build and Upload a Scene
Build the Scene withSceneBuilder, then register it into Files & Folders with StorageFolder.upload_scene.
Build and Upload a Scene
upload_scene returns the new Scene item UUID. Add that item to a Dataset before creating an annotation Project.
Add Multi-frame Sensor Streams
Create stream builders once, then append events. Use the same timestamp for events that should appear together in the editor.Multi-frame Scene Streams
Coordinate Conventions
Set coordinate conventions in the SDK when your data uses known world and camera axes. For example, driving datasets often use a world convention such as forward, left, up and camera axes such as right, down, forward. UseSceneBuilder.set_world_convention and SceneBuilder.set_camera_convention with Direction values. The world and camera conventions must have matching handedness.
Read and Copy Registered Scenes
SceneReader fetches a registered Scene and returns signed URLs for its constituent files. It can also convert a registered Scene back into a DataUploadScene for migration or copying.
Read and Copy a Scene
find_stream and find_event when a missing stream or timestamp is acceptable. Use get_stream and get_event when missing data should fail fast.
Camera Distortion Models
The supported distortion models are defined inencord.beta.scene.intrinsics.
| SDK API | Model type | Distortion coefficients | Use when |
|---|---|---|---|
intrinsics_pinhole(...) | pinhole | None | Use for calibrated pinhole cameras with no distortion. |
intrinsics_radial(...) | radial | k1, k2, k3 | Use when calibration only supplies radial coefficients. |
intrinsics_plumb_bob(...) | plumb_bob | k1, k2, k3, t1, t2 | Use for Brown-Conrady calibration with radial and tangential coefficients. |
intrinsics_fisheye(...) | fisheye | k1, k2, k3, k4 | Use for fisheye lenses calibrated with four coefficients. |
intrinsics_rational_polynomial(...) | rational_polynomial | k1, k2, k3, k4, k5, k6, t1, t2 | Use for OpenCV rational-polynomial calibration. |
intrinsics_simple(..., model="division") | division | k | Use for one-parameter division-model calibration. |
intrinsics_simple(..., model="ucm") | ucm | xi, k1, k2, k3 | Use for unified camera model calibration. |
intrinsics_cylindrical(...) | cylindrical | None | Use for cylindrical camera projections. |
Camera Distortion Models
intrinsics_pinhole or a dedicated distortion constructor. Use intrinsics_advanced only when you already have full calibration matrices and need to supply them directly.
Validation Checklist
Before handing Scenes to annotators:- Confirm every point cloud and image URI is accessible by the integration used for registration.
- Keep stream names stable and descriptive, such as
lidar,front,rear, orego. - Use integer timestamps for frame-indexed data unless you need sensor-time alignment.
- Open at least one registered Scene in the editor to verify orientation, calibration, and frame navigation.
Create and Register Scenes
Learn the Scene data model and registration choices.

