Skip to main content
The Scene SDK (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 with SceneBuilder, 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
Use integer timestamps for frame-indexed data. Use sensor timestamps when streams are sampled at different rates.

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. Use SceneBuilder.set_world_convention and SceneBuilder.set_camera_convention with Direction values. The world and camera conventions must have matching handedness.

Scene View Settings

SceneViewSettings holds per-Scene rendering settings that the label editor applies when the Scene is opened from the Editor or Explorer view. Unset fields fall through to the annotator’s own preferences.
  • point_cloud_colouring — one of SceneHeightColouring, SceneProvidedColouring, SceneSolidColouring, SceneImageColouring, or SceneSensorColouring. SceneHeightColouring takes color_height_bounds, the minimum and maximum heights used for the color gradient.
  • point_radius — radius used to render point cloud points, from 0 to 100.
  • render_image_outside_base_range — Render the full image captured by the camera. Useful for wide-angle and fisheye lenses.
  • radius_indicators — a list of SceneRadiusIndicator, each with the frame_of_reference_id at its center, a radius in scene units, and a hex color.
  • radius_filter_enabled — whether point clouds are filtered to the configured radius indicators.
Assign the settings to SceneBuilder.settings before upload, patch a registered Scene with StorageItem.update(scene_view_settings=...), or read them from SceneReader.view_settings:
Configure Scene View Settings
frame_of_reference_id must be "root" for the world frame, or the name of a frame-of-reference stream in the same Scene.

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
Use 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 in encord.beta.scene.intrinsics.
Camera Distortion Models
For most workflows, use 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, or ego.
  • Use integer timestamps for frame-indexed data unless you need sensor-time alignment.
  • Confirm every SceneRadiusIndicator names "root" or a frame-of-reference stream the Scene defines. Upload fails otherwise.
  • 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.