pattern REFERENCE_SPACE_TYPE_VIEW :: ReferenceSpaceType | REFERENCE_SPACE_TYPE_VIEW . The VIEW space tracks the view origin
used to generate view transforms for the primary viewer (or centroid of
view origins if stereo), with +Y up, +X to the right, and -Z forward.
This space points in the forward direction for the viewer without
incorporating the user’s eye orientation, and is not gravity-aligned.
VIEW space is primarily useful when projecting from the user’s
perspective into another space to obtain a targeting ray, or when
rendering small head-locked content such as a reticle. Content rendered
in VIEW space will stay at a fixed point on head-mounted displays and
may be uncomfortable to view if too large. To obtain the ideal view and
projection transforms to use each frame for rendering world content,
applications should call locateViews
instead of using this space.
Runtimes must support this reference space. |
pattern REFERENCE_SPACE_TYPE_LOCAL :: ReferenceSpaceType | REFERENCE_SPACE_TYPE_LOCAL . The LOCAL reference space establishes a
world-locked origin, gravity-aligned to exclude pitch and roll, with +Y
up, +X to the right, and -Z forward. This space locks in both its
initial position and orientation, which the runtime may define to be
either the initial position at application launch or some other
calibrated zero position.
LOCAL space is useful when an application needs to render
seated-scale content that is not positioned relative to the physical
floor.
When a user needs to recenter LOCAL space, a runtime may offer some
system-level recentering interaction that is transparent to the
application, but which causes the current leveled head space to become
the new LOCAL space. When such a recentering occurs, the runtime
must queue the
EventDataReferenceSpaceChangePending event,
with the recentered LOCAL space origin only taking effect for
locateSpace or
locateViews calls whose
https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrTime
parameter is greater than or equal to the changeTime provided in that
event. When views, controllers or other spaces experience tracking loss
relative to the LOCAL space, runtimes should continue to provide
inferred or last-known position and orientation values. These
inferred poses can, for example, be based on neck model updates,
inertial dead reckoning, or a last-known position, so long as it is
still reasonable for the application to use that pose. While a runtime
is providing position data, it must continue to set
XR_SPACE_LOCATION_POSITION_VALID_BIT and
XR_VIEW_STATE_POSITION_VALID_BIT but it can clear
XR_SPACE_LOCATION_POSITION_TRACKED_BIT and
XR_VIEW_STATE_POSITION_TRACKED_BIT to indicate that the position is
inferred or last-known in this way. When tracking is recovered, runtimes should snap the pose of other
spaces back into position relative to the LOCAL space’s original
origin. Runtimes must support this reference space. |
pattern REFERENCE_SPACE_TYPE_STAGE :: ReferenceSpaceType | REFERENCE_SPACE_TYPE_STAGE . The STAGE reference space is a
runtime-defined flat, rectangular space that is empty and can be walked
around on. The origin is on the floor at the center of the rectangle,
with +Y up, and the X and Z axes aligned with the rectangle edges. The
runtime may not be able to locate spaces relative to the STAGE
reference space if the user has not yet defined one within the
runtime-specific UI. Applications can use
getReferenceSpaceBoundsRect to determine the
extents of the STAGE reference space’s XZ bounds rectangle, if
defined.
STAGE space is useful when an application needs to render
standing-scale content (no bounds) or room-scale content (with
bounds) that is relative to the physical floor.
When the user redefines the origin or bounds of the current STAGE
space, or the runtime otherwise switches to a new STAGE definition,
the runtime must queue the
EventDataReferenceSpaceChangePending event,
with the new STAGE space origin only taking effect for
locateSpace or
locateViews calls whose
https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#XrTime
parameter is greater than or equal to the changeTime provided in that
event. When views, controllers or other spaces experience tracking loss
relative to the STAGE space, runtimes should continue to provide
inferred or last-known position and orientation values. These
inferred poses can, for example, be based on neck model updates,
inertial dead reckoning, or a last-known position, so long as it is
still reasonable for the application to use that pose. While a runtime
is providing position data, it must continue to set
XR_SPACE_LOCATION_POSITION_VALID_BIT and
XR_VIEW_STATE_POSITION_VALID_BIT but it can clear
XR_SPACE_LOCATION_POSITION_TRACKED_BIT and
XR_VIEW_STATE_POSITION_TRACKED_BIT to indicate that the position is
inferred or last-known in this way. When tracking is recovered, runtimes should snap the pose of other
spaces back into position relative to the STAGE space’s original
origin. |