Object Model

The Object Model provides a shared representation of 3D scenes. It ensures that different plugins and applications can consistently understand and interact with the same project data. This shared language allows a voxel editor and a point cloud viewer to operate on the same project without data loss.

In practice, the object model serves as the foundation for the high-level Tools and Objects defined in plugins.

The Scene Hierarchy

Every scene is organized into a hierarchy of Nodes:

  • Node: The identity and name in the scene hierarchy. Every object in the viewport is attached to a Node.
  • Transform: Defines the local position, rotation, and scale. Since transforms are relative to their parent node, moving a parent correctly moves all its children.
  • Visibility: Controls the visibility of a Node and its children.
  • Representation: The visual geometry associated with the node.

Geometric Representations

While Nodes provide structure, Representations provide content. The platform supports several geometric primitives, most of which are streamed from the cloud via the Dagger database:

  • Point Clouds: Used for large datasets, streamed and rendered using the Volumesight engine.
  • Triangle Meshes: The standard for surfaces, rendered with progressive Level of Detail (LOD) and streamed on-demand to ensure performance regardless of model complexity.
  • Block Models: Specialized non-grid-aligned volumetric boxes, ideal for geological or structural modeling. Voxel datasets are treated as a special case of the block model representation. Because each block can store a vast array of custom metadata, block models serve as an attribute-rich volumetric database for complex queries and analysis.
  • Polylines: Piecewise linear paths used for surveys, boundaries, or annotations.

Managing Remote Data


Feature Preview

The object model handles scale by storing large datasets separately. Datasets like a 50GB point cloud or a complex engineering mesh are not stored directly inside the versioned object state.

Instead, a RemoteHandle system is used. The versioned object stores a UUID reference to a “large blob” managed by the infrastructure. This approach keeps the versioning system and the undo/redo stack lightweight, while providing an authoritative link to the project data.

When updates are made to these datasets, Dagger handles them incrementally. If you update only 5% of a 50GB block model, the new remote handle will reference the 95% unchanged geometry using immutable handles. This allows Volumesight to efficiently stream only the new data, reducing bandwidth and improving synchronization speed.