XRPose: emulatedPosition property

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The emulatedPosition read-only attribute of the XRPose interface is a Boolean value indicating whether or not both the position component of the pose's transform is directly taken from the XR device, or it's simulated or computed based on other sources.


A Boolean which is true if the pose's position is computed based on estimates or is derived from sources other than direct sensor data. If the position is precisely based on direct sensor inputs, the value is false.

Usage notes

There are two basic categories of XR tracking systems. A basic XR headset provides three degrees of freedom (3DoF), tracking the pitch, yaw, and roll of the user's head. No information is available about movement forward, backward, or to the sides. Any such data is taken from other sources, such as keyboard or mouse inputs or game controllers. As such, the position is considered to be emulated, so the emulatedPosition property is true.

Contrariwise, XR devices which can also track movement forward and backward as well as laterally—six degree of freedom (6DoF) devices—don't require any information from other sources to determine the user's position, so the value of emulatedPosition is false.

The same notion applies not just to the user's head, but to any object. A hand controller that can directly report its position would have a value of false for this property as well. If its position is computed as an offset from another object (such as by basing it off the model representing the user's body), then this value is true.

This information is important because devices whose position is emulated are prone to their offset drifting relative to the real world space over time. This is because emulating a position based on accelerometer inputs and models tends to introduce minor errors which accumulate over time.


WebXR Device API
# dom-xrpose-emulatedposition

Browser compatibility

BCD tables only load in the browser