Spec-Zone.ru › Web APIs

XRSystem

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

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

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

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

Экспериментально: Это экспериментальная технология
Перед использованием в продакшене тщательно проверьте таблицу совместимости браузеров.

Интерфейс API устройства WebXR XRSystem предоставляет методы, которые позволяют получить доступ к объекту XRSession, представляющему сеанс WebXR. С этим XRSession вы можете взаимодействовать с устройством дополненной реальности (AR) или виртуальной реальности (VR).

EventTarget XRSystem

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

Хотя XRSystem напрямую не предлагает свойств, он наследует свойства от своего родительского интерфейса, EventTarget.

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

В дополнение к наследованию методов от родительского интерфейса EventTarget, интерфейс XRSystem включает следующие методы:

isSessionSupported() Экспериментально

Возвращает промис, который разрешается до true если браузер поддерживает указанный режим сеанса. Разрешается до false если указанный режим не поддерживается.

requestSession() Экспериментально

Возвращает промис, который разрешается до нового XRSession с указанным режимом сеанса.

События

devicechange Экспериментально

Отправляется, когда набор доступных устройств XR изменился. Также доступен с помощью обработчика событий ondevicechange.

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

Этот интерфейс ранее был известен как XR в более ранних версиях спецификации; если вы видите ссылки на XR в коде или документации, замените их на XRSystem.

Примеры

Следующий пример демонстрирует, как использовать как isSessionSupported(), так и requestSession().

if (navigator.xr) {
  immersiveButton.addEventListener("click", onButtonClicked);
  navigator.xr.isSessionSupported("immersive-vr").then((isSupported) => {
    immersiveButton.disabled = !isSupported;
  });
}

function onButtonClicked() {
  if (!xrSession) {
    navigator.xr.requestSession("immersive-vr").then((session) => {
      // onSessionStarted() not shown for reasons of brevity and clarity.
      onSessionStarted(session);
    });
  } else {
    // Shut down the already running XRSession
    xrSession.end().then(() => {
      // Since there are cases where the end event is not sent, call the handler here as well.
      onSessionEnded();
    });
  }
}

Этот код начинает с проверки доступности WebXR, проверяя наличие свойства navigator.xr. Если оно найдено, значит WebXR присутствует, и мы продолжаем установкой обработчика для кнопки, которую пользователь может нажать для включения и выключения интерактивного режима VR.

Однако мы пока не знаем, доступен ли желаемый интерактивный режим. Для определения этого мы вызываем isSessionSupported(), передавая ему желаемые параметры сеанса, прежде чем активировать кнопку, immersiveButton, которую пользователь может использовать для переключения в интерактивный режим только в том случае, если интерактивный режим VR доступен. Если интерактивный VR недоступен, кнопка отключается, чтобы предотвратить ее использование.

Функция onButtonClicked() проверяет, запущен ли уже сеанс. Если нет, мы используем requestSession() для запуска сеанса и, после разрешения возвращённого промиса, вызываем функцию onSessionStarted() для настройки нашего сеанса для рендеринга и т.д.

Если же сеанс XR уже активен, мы вместо этого вызываем end() для завершения текущего сеанса. Когда текущий сеанс завершается, отправляется событие end, поэтому устанавливаем xrSession в null в его обработчике, чтобы зафиксировать тот факт, что у нас больше нет активного сеанса. Таким образом, если пользователь нажмет кнопку снова, начнется новый сеанс.

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

Спецификация
API устройства WebXR
# xrsystem-interface

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
XRSystem 79 79 Нет 66 Нет 79 Нет 57 Нет 12.0 Нет
devicechange_event 79 79 Нет 66 Нет 79 Нет 57 Нет 12.0 Нет
isSessionSupported 79 79 Нет 66 Нет 79 Нет 57 Нет 12.0 Нет
requestSession 79 79 Нет 66 Нет 79 Нет 57 Нет 12.0 Нет

© 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/XRSystem

Spec-Zone.ru

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