Spec-Zone.ru › Web APIs

XRСессия

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

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

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

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

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

Интерфейс XRSession API устройства WebXR представляет собой текущую XR-сессию, предоставляя методы и свойства для взаимодействия с сессией и управления ею. Чтобы открыть XR-сессию WebXR, используйте метод XRSystem интерфейса requestSession().

С помощью методов XRSession вы можете опрашивать положение и ориентацию зрителя (XRViewerPose), собирать информацию об окружающей среде пользователя и отображать изображения пользователю. XRSession поддерживает как встроенные, так и погруженные виртуальные и дополненные реальности.

EventTarget XRSession

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

Помимо перечисленных ниже свойств, XRSession наследует свойства от своего родительского интерфейса EventTarget.

depthDataFormat Экспериментально Только для чтения

Возвращает формат данных глубины, с которым была настроена сессия.

depthUsage Экспериментально Только для чтения

Возвращает использование данных глубины, с которым была настроена сессия.

domOverlayState Экспериментально Только для чтения

Предоставляет информацию о наложении DOM, если функция включена.

environmentBlendMode Экспериментально Только для чтения

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

inputSources Экспериментально Только для чтения

Возвращает список XRInputSource данной сессии, каждый из которых представляет собой устройство ввода, используемое для управления камерой и/или сценой.

interactionMode Экспериментально Только для чтения

Возвращает режим взаимодействия данной сессии, который описывает лучшее пространство (согласно агенту пользователя) для приложения для отрисовки интерактивного пользовательского интерфейса для текущей сессии.

preferredReflectionFormat Экспериментально Только для чтения

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

renderState Экспериментально Только для чтения

Объект XRRenderState, содержащий параметры, влияющие на способ отображения изображений. Это включает такие вещи, как ближняя и дальняя плоскости обрезки (расстояния, определяющие, насколько близко и как далеко объекты могут находиться и все еще отображаться), а также информацию о поле зрения.

visibilityState Экспериментально Только для чтения

Строка, указывающая, видно ли изображение сессии пользователю, и если да, то видна ли она, но в данный момент не является целью для событий пользователя.

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

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

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

Удаляет обработчик из набора обратных вызовов отрисовки кадра анимации XRSession, учитывая идентификатор, возвращенный предыдущим вызовом requestAnimationFrame().

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

Завершает сессию WebXR. Возвращает promise, который разрешается при завершении сессии.

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

Планирует вызов указанного метода в следующий раз, когда пользовательский агент работает над отрисовкой кадра анимации для устройства WebXR. Возвращает целое значение, которое может быть использовано для идентификации запроса для отмены обратного вызова с помощью cancelAnimationFrame(). Этот метод аналогичен методу Window.requestAnimationFrame().

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

Запрашивает объект XRHitTestSource, который обрабатывает подписку на тесты столкновений.

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

Запрашивает объект XRTransientInputHitTestSource, который обрабатывает подписку на тесты столкновений для временного источника ввода.

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

Запрашивает XRLightProbe, который оценивает информацию об освещении в заданной точке окружающей среды пользователя.

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

Запрашивает создание нового XRReferenceSpace указанного типа. Возвращает обещание, которое разрешается с XRReferenceSpace или XRBoundedReferenceSpace, которые были запрошены, или выбросит NotSupportedError DOMException, если запрашиваемый тип пространства не поддерживается устройством.

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

Обновляет свойства состояния отрисовки сессии.

События

Следующие события передаются объектам XRSession.

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

Отправляется объекту XRSession после завершения сессии WebXR и завершения всех функций, связанных с аппаратным обеспечением. Событие представлено объектом типа XRSessionEvent. Также доступно через свойство обработчика событий onend.

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

Событие типа XRInputSourcesChangeEvent, отправляемое объекту XRSession при изменении списка активных источников ввода XR. Также доступно через свойство обработчика событий oninputsourceschange.

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

Событие типа XRInputSourceEvent, отправляемое сессии, когда один из источников ввода сессии успешно выполнил основное действие. Это обычно соответствует нажатию пользователем триггера, тачпада или кнопки, произнесению команды или выполнению распознаваемого жеста. Событие select отправляется после события selectstart и непосредственно перед событием selectend. Если событие select не отправляется, это означает, что действие выбора было прервано до завершения. Также доступно через свойство обработчика событий onselect.

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

Событие типа XRInputSourceEvent, которое отправляется объекту сессии, когда одно из устройств ввода завершает основное действие или отключается во время обработки основного действия. Например: для действий с кнопкой или триггером это означает, что кнопка отпущена; для голосовых команд это означает, что пользователь закончил говорить. Это последнее из трех событий select*, которые отправляются. Также доступно через свойство обработчика событий onselectend.

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

Событие типа XRInputSourceEvent, которое отправляется объекту сессии, когда одно из устройств ввода впервые используется пользователем, чтобы начать основное действие. Это первое из событий session*. Также доступно через свойство обработчика событий onselectstart.

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

Событие XRInputSourceEvent для указания того, что основное действие сжатия успешно завершено. Это указывает на то, что устройство, которое сжималось, отпущено, и может представлять, например, отпускание захваченного объекта. Оно отправляется непосредственно перед событием squeezeend, чтобы указать на окончание действия сжатия. Также доступно через свойство обработчика событий onsqueeze.

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

Событие XRInputSourceEvent, отправляемое объекту XRSession при завершении основного действия сжатия, независимо от того, было ли это действие успешным. Также доступно через свойство обработчика событий onsqueezeend.

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

Событие типа XRInputSourceEvent, которое отправляется объекту XRSession при первоначальном сжатии сжимаемого контроллера пользователем. Это может быть, например, триггер, используемый для представления захвата объектов, или может представлять фактическое сжатие при использовании тактильной перчатки. Также доступно через свойство обработчика событий onsqueezestart.

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

Событие XRSessionEvent, отправляемое сессии при изменении ее состояния видимости, как указано в visibilityState. Также доступно через свойство обработчика событий onvisibilitychange.

Пример

В этом примере создается новая XRSession в режиме inline, чтобы ее можно было отображать в элементе HTML, избегая необходимости в специальном устройстве для AR или VR, таком как гарнитура.

const XR = navigator.xr;

if (XR) {
  XR.requestSession("inline").then((xrSession) => {
    xrSession.requestReferenceSpace("local").then((xrReferenceSpace) => {
      xrSession.requestAnimationFrame((time, xrFrame) => {
        const viewer = xrFrame.getViewerPose(xrReferenceSpace);

        gl.bindFramebuffer(xrWebGLLayer.framebuffer);

        for (const xrView of viewer.views) {
          const xrViewport = xrWebGLLayer.getViewport(xrView);
          gl.viewport(
            xrViewport.x,
            xrViewport.y,
            xrViewport.width,
            xrViewport.height,
          );
        }
      });
    });
  });
} else {
  /* WebXR is not available */
}

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

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

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
XRSession 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
cancelAnimationFrame 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
depthDataFormat 90 90 Нет 76 Нет 90 Нет 64 Нет 15.0 Нет
depthUsage 90 90 Нет 76 Нет 90 Нет 64 Нет 15.0 Нет
domOverlayState 83 83 Нет 69 Нет 83 Нет 59 Нет 13.0 Нет
enabledFeatures 111 111 Нет 97 Нет 111 Нет 75 Нет 22.0 Нет
end 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
end_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
environmentBlendMode 81 81 Нет 68 Нет 81 Нет 58 Нет 11.2 Нет
inputSources 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
inputsourceschange_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
interactionMode 84 84 Нет 70 Нет 84 Нет 60 Нет 14.0 Нет
preferredReflectionFormat 90 90 Нет 76 Нет 90 Нет 64 Нет 15.0 Нет
renderState 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
requestAnimationFrame 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
requestHitTestSource 81 81 Нет 68 Нет 81 Нет 58 Нет 12.1 Нет
requestHitTestSourceForTransientInput 81 81 Нет 68 Нет 81 Нет 58 Нет 13.0 Нет
requestLightProbe 90 90 Нет 76 Нет 90 Нет 64 Нет 15.0 Нет
requestReferenceSpace 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
select_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
selectend_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
selectstart_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
squeeze_event 83 83 Нет 69 Нет 83 Нет 59 Нет 13.0 Нет
squeezeend_event 83 83 Нет 69 Нет 83 Нет 59 Нет 13.0 Нет
squeezestart_event 83 83 Нет 69 Нет 83 Нет 59 Нет 13.0 Нет
updateRenderState 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
visibilityState 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет
visibilitychange_event 79 79 Нет 66 Нет 79 Нет 57 Нет 11.2 Нет

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

Spec-Zone.ru

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