Spec-Zone.ru › Web APIs

XRReferenceSpace

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Интерфейс XRReferenceSpace API устройства WebXR описывает систему координат для конкретного отслеживаемого объекта или сущности в виртуальном мире, используя указанное поведение отслеживания. Поведение отслеживания определяется выбранным типом пространства отсчета reference space type. Он расширяет базовый класс XRSpace, добавляя поддержку нескольких различных способов отслеживания, а также возможность запросить новое пространство отсчета, которое описывает смещение преобразования между отслеживаемым объектом и другим местоположением в мире.

Все пространства отсчета, за исключением ограниченных пространств отсчета, описываются с использованием типа XRReferenceSpace. Ограниченные пространства реализуются как объекты XRBoundedReferenceSpace. Это специальные пространства, которые позволяют установить периметр, в пределах которого пользователю «безопасно» перемещаться. Для XR-систем, позволяющих пользователю физически передвигаться, например, тех, которые отслеживают движение с помощью реальной камеры, эта граница устанавливает границы области, в которой пользователь может перемещаться, будь то из-за физических препятствий или ограничений XR-оборудования. Подробнее о использовании границ для предотвращения столкновений пользователя с препятствиями, как физическими, так и виртуальными, см. статью Использование ограниченных пространств отсчета для защиты пользователя.

EventTarget XRSpace XRReferenceSpace

Свойства экземпляра

XRReferenceSpace наследует свойства EventTarget, но не определяет дополнительных свойств.

Методы экземпляра

XRReferenceSpace также наследует методы из EventTarget в дополнение к следующим методам.

getOffsetReferenceSpace()

Создаёт и возвращает новый объект пространства отсчёта того же типа, что и тот, на котором вы вызываете метод (то есть, либо XRReferenceSpace , либо XRBoundedReferenceSpace). Новое пространство отсчёта можно использовать для преобразования координаты из пространства отсчёта объекта, на котором вызывается метод, в другое пространство координат. Это полезно для позиционирования объектов при отрисовке и для выполнения необходимых преобразований при изменении позиции и/или ориентации зрителя в трёхмерном пространстве.

События

reset

Событие reset отправляется объекту XRReferenceSpace при обнаружении браузером разрыва между началом отслеживаемого объекта и окружающей средой или местоположением пользователя. Это может произойти, например, после перекалибровки XR-устройства пользователем, или если устройство автоматически корректирует своё начало после потери и восстановления отслеживания.

Типы пространств отсчета

Типы пространств отсчёта перечислены в таблице ниже, с кратким описанием их вариантов использования и интерфейса, используемого для их реализации.

bounded-floor

An XRBoundedReferenceSpace similar to the local type, except the user is not expected to move outside a predetermined boundary, given by the boundsGeometry in the returned object.

local

An XRReferenceSpace tracking space whose native origin is located near the viewer's position at the time the session was created. The exact position depends on the underlying platform and implementation. The user isn't expected to move much if at all beyond their starting position, and tracking is optimized for this use case. For devices with six degrees of freedom (6DoF) tracking, the local reference space tries to keep the origin stable relative to the environment.

local-floor

An XRReferenceSpace similar to the local type, except the starting position is placed in a safe location for the viewer to stand, where the value of the y axis is 0 at floor level. If that floor level isn't known, the user agent will estimate the floor level. If the estimated floor level is non-zero, the browser is expected to round it such a way as to avoid отслеживания (likely to the nearest centimeter).

unbounded

An XRReferenceSpace tracking space which allows the user total freedom of movement, possibly over extremely long distances from their origin point. The viewer isn't tracked at all; tracking is optimized for stability around the user's current position, so the native origin may drift as needed to accommodate that need.

viewer

An XRReferenceSpace tracking space whose native origin tracks the viewer's position and orientation. This is used for environments in which the user can physically move around, and is supported by all instances of XRSession, both immersive and inline, though it's most useful for inline sessions. It's particularly useful when determining the distance between the viewer and an input, or when working with offset spaces. Otherwise, typically, one of the other reference space types will be used more often.

Примечания по использованию

Создание XRReferenceSpace

Есть две ситуации, в которых вам нужно получить XRReferenceSpace. Первая — когда вы настраиваете свою сцену и вам нужно получить пространство отсчёта для представления точки зрения пользователя на мир на весь период работы XRSession. Для этого вызовите метод XRSession requestReferenceSpace(), указав тип пространства отсчёта, который вы хотите получить.

xrSession.requestReferenceSpace("local").then((refSpace) => {
  xrReferenceSpace = refSpace;
  // …
});

Другая ситуация, в которой вам может потребоваться получить новое пространство отсчёта, — если вам нужно изменить начало отсчёта в новое положение; это часто делается, например, когда ваш проект позволяет пользователю перемещаться по среде с помощью устройств ввода, таких как клавиатура, мышь, тачпад или игровые контроллеры, которые не подключены через XR-устройство. Поскольку начало отсчёта обычно соответствует местоположению пользователя в пространстве, вам необходимо изменить начало отсчёта, чтобы отразить их перемещение и любые изменения ориентации.

Чтобы переместить или повернуть точку зрения пользователя на мир, вам нужно изменить XRReferenceSpace используемое для представления этой точки зрения. Однако XRReferenceSpace является неизменяемым, поэтому вам нужно создать новое пространство отсчета, представляющее изменённую точку зрения. Это легко сделать, используя метод getOffsetReferenceSpace().

let offsetTransform = new XRRigidTransform(
  { x: 2, y: 0, z: 1 },
  { x: 0, y: 0, z: 0, w: 1 },
);
xrReferenceSpace = xrReferenceSpace.getOffsetReferenceSpace(offsetTransform);

Это заменяет XRReferenceSpace новым, начало и ориентация которого скорректированы, чтобы поместить новое начало в (2, 0, 1) относительно текущего начала и повернутого с использованием единичного кватерниона, ориентирующего пространство так, чтобы зритель смотрел прямо вверх относительно предыдущей ориентации мира.

Геометрия

Начальное положение любого XRReferenceSpace всегда настроено так, что +X считается справа, +Y — вверх, а +Z — «назад» или к пользователю.

Спецификации

Спецификация
WebXR Device API
# xrreferencespace-interface

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
XRReferenceSpace 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
getOffsetReferenceSpace 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
reset_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет

См. также

  • Основы WebXR
  • Геометрия и пространства ссылок в WebXR
  • Точки обзора и зрители: моделирование камер в WebXR
  • Матричная математика для веб
  • Движение, ориентация и движение
  • Использование ограниченных пространств ссылок для защиты пользователя

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRReferenceSpace

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API