Architecture
Unity OpenXR: Spatial Entities functions as both an OpenXR Feature Group and an AR Foundation provider plug-in.
About OpenXR
OpenXR is an open-source standard that defines an interface between XR apps and platform runtimes. The OpenXR specification contains two categories of features:
- Core features: present on every platform
- Extensions: optional and might not be implemented by some platforms.
Unity's OpenXR Plug-in integrates core features, while this package integrates the OpenXR Spatial Entities Extensions (Khronos Blog) using Unity's OpenXR native API.
OpenXR extensions
The OpenXR Spatial Entities Extensions can be found in the Khronos Group OpenXR Specification.
This package enables support for the following OpenXR extensions in your project:
| Extension | Usage | Description |
|---|---|---|
| XR_ANDROID_spatial_component_subsumed_by | Planes | Enables apps to detect when the runtime subsumes one tracked plane into another because both planes represent the same real-world surface. |
| XR_ANDROID_spatial_discovery_raycast | Ray casts | Enables apps to cast rays against spatial entities, and adds a capability for casting against the environment depth buffer. |
| XR_ANDROID_spatial_entity_bound_anchor | Anchors | Enables apps to attach an anchor to a spatial entity, such as a plane, so the anchor maintains its pose relative to that entity. |
| XR_EXT_future | Anchors, Markers, Planes, Ray casts | This extension provides a general-purpose framework for asynchronous API design, and is a dependency of all spatial entities extensions. |
| XR_EXT_spatial_anchor | Anchors | Enables apps to create anchors. |
| XR_EXT_spatial_entity | Anchors, Markers, Planes, Ray casts | This extension defines the core concepts and foundations for spatial entities, and is a dependency of all other spatial entities extensions. |
| XR_EXT_spatial_marker_tracking | Markers | Enables apps to detect and track markers. |
| XR_EXT_spatial_persistence | Anchors | Enables apps to discover persistent spatial entities across multiple OpenXR sessions. |
| XR_EXT_spatial_persistence_operations | Anchors | Enables apps to persist and unpersist spatial entities. |
| XR_EXT_spatial_plane_tracking | Planes | Enables apps to track planar surfaces in the environment. |
Note
Unity officially supports this package for use with the Meta Horizon OS and Android XR runtimes, but other OpenXR runtimes may also implement the required extensions. Refer to the OpenXR Runtime Extension Support Report for a self-reported list of OpenXR runtimes that support the required extensions.