Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

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

WebVR обеспечивает поддержку для использования устройств виртуальной реальности — например, шлемы виртуальной реальности, таких как Oculus Rift или HTC Vive — для веб-приложений, позволяя разработчикам передавать  информацию о местоположении и движения с дисплея в движение вокруг 3D-сцены. Это имеет множество интересных приложений, от виртуальных туров продукта и интерактивных обучающих приложений до захватывающих игр от первого лица.

Концепция и использование

Любые VR-устройства, подключенные к вашему компьютеру, будут возвращены методом Navigator.getVRDisplays(); каждое из которых будет представлено  VRDisplay объектом.

Sketch of a person in a chair with wearing goggles labelled "Head mounted display (HMD)" facing a monitor with a webcam labelled "Position sensor"

VRDisplay является центральным интерфейсом в API WebVR - с помощью его свойств и методов вы получить доступ к функциям:

  • Получить полезную информацию, чтобы мы могли идентифицировать дисплей, какие возможности он имеет, контроллеры, связанные с ним и многое другое.
  • Получить frame data для каждого кадра контента, который вы хотите представить на дисплее, и отправьте эти кадры для отображения с постоянной скоростью.
  • Начать и прекратить подачу на дисплей.

Типичное (простое) WebVR приложение будет работать так:

  1. Navigator.getVRDisplays() используется для получения ссылки на ваш VR-дисплей.
  2. VRDisplay.requestPresent() используется для начала представления на дисплей VR.
  3. Выделенный VRDisplay.requestAnimationFrame()  WebVR's используется для запуска цикла рендеринга приложения с правильной частотой обновления для отображения.
  4. Внутри цикла рендеринга берутся данные, необходимые для отоброжения текущего кадра  (VRDisplay.getFrameData()), дважды нарисуйте отображаемую сцену - один раз для просмотра в каждом глазу, затем отправьте отображаемый вид на дисплей, чтобы показать пользовотелю (VRDisplay.submitFrame()).

Кроме того, WebVR 1.1 добавляет ряд событий Window объекту, чтобы JavaScript мог реагировать на изменения состояния дисплея.

Примечание: Вы можете найте намого больше о том, как работает API в Using the WebVR API и WebVR Concepts статьях.

Использование контроллеров: Объединение WebVR с API-интерфейсом геймпада

Многие аппаратные настройки WebVR оснащены контроллерами, которые сочетаются с гарнитурой. Они могут быть использованы в WebVR приложениях через Gamepad API, и, в частности, Gamepad расширения API, которые добавляют API функции для доступа к позе контроллера, haptic actuators, и многоe другое.

Примечание: Наша Using VR controllers with WebVR статья объясняет основы использования VR-контроллеров в приложениях WebVR.

WebVR Интерфейс

VRDisplay
Представляет любое устройство VR, поддерживаемое этим API. VRDisplay включает в себя общую информацию, такую как идентификаторые устройств и  описания, а также методы для начала представления сцены VR, получения параметров глаз и возможностей отображения и других важных функций.
VRDisplayCapabilities
описывает возможности VRDisplay — его функции могут использоваться для тестирования возможностей устройства VR, например, может ли он возвращать информацию о местоположении.
VRDisplayEvent
Возвращает объект события (event) связанного с WebVR-событием (см. window object extensions , перечисленны ниже).
VRFrameData
Представляет всю информацию, необходимую для создания одного кадра сцены VR; созданный от  VRDisplay.getFrameData().
VRPose
Предстовляет состояние позиции на заданной временой отметке (которая включает в себя ориентацию, положение, скорость и ускорение).
VREyeParameters
Предоставляет доступ ко все информации, необзходимой для корректного отображения сцены для каждого задного глаза, включая информацию о поле зрения.
VRFieldOfView
Представляет поле зрения, определенное четырьмя различными значениями степени, описывающими представление из центральной точки.
VRLayerInit
Представляет слой, который должен быть представлен в VRDisplay.
VRStageParameters
Представляет значения, описывающие область сцены для устройств, поддерживающих опыт в помещении.

Расширения для других интерфейсов

WebVR API асширяет следующие API, добавляя перечисленные функции.

Геймпад

Gamepad.displayId Только для чтения
Возвращает VRDisplay.displayId связанного с  VRDisplayVRDisplay , которым гейпад управляет отображаемой сценой.

Навигатор

Navigator.activeVRDisplays Только для чтения
Возвращает массив, содержащий каждый VRDisplay объект, который в настоящее время отображается (VRDisplay.ispresenting является true).
Navigator.getVRDisplays()
Возвращает обещание, которое преобразуется в массив VRDisplay объектов,  представляющих любые доступные VR-дисплеи, подключенные к компьютеру.

Window события

Window.onvrdisplaypresentchange
Представляет обработчик событий, который будет выполняться, при изменении состояния отображения VR-дисплея — т.е. идёт от отображения до неотображения, или наоброт (когда vrdisplaypresentchange событие срабатывает).
Window.onvrdisplayconnect
Представляет обработчик событий, который будет запускаться, когда к компьютеру подключен совместимый VR-дисплей (когда vrdisplayconnect событие срабатывает).
Window.onvrdisplaydisconnect
Представляет обработчик событий, который будет зпускаться, когда совместимый VR-дисплей был отключён от компьютера (когда vrdisplaydisconnect событие срабатывает).
Window.onvrdisplayactivate
Представляет обработчик событий, который будет выполняться, когда дисплей может быть представлен (когда vrdisplayactivateсобытие срабатывает), например, HMD (Head Mounted Display) был перемещён, чтобы вывести его из режима ожидания, или проснулся, будучи перемещенным.
Window.onvrdisplaydeactivate
Представляет обработчик событий, который будет запускаться, когда дисплей больше не будет отображаться (когда vrdisplaydeactivate событие срабатывает), например, HMD (Head Mounted Display) перешёл в режим ожидания или спящий режим из-за периода бездействия.

Невыполненные window события

Следующие события перечислены в спецификации, but do not currently seem to be implemented anywhere as yet.

Window.onvrdisplayblur
Представляет обработчик событий, который будет выполняться, когда презентация на дисплей была преостановлена по какой-то причине в браузере, ОС или оборудованием VR (когда  vrdisplayblur событие срабатывает) — например, в то время как пользователь взаимодействует с системным меню или браузером, чтобы предотвратить отслеживание или потерю опыта.
Window.onvrdisplayfocus
Представляет обработчик событий, который будет выполняться, когда презентация на дисплей возобновляется после потери фокуса (когда vrdisplayfocus событие срабатывает).

Примеры

Вы можете найти несколько примеров в этих местах:

  • webvr-tests — очень простые примеры для сопровождения MDM WebVR документации.
  • Carmel starter kit — простые, хорошо прокомментированные примеры, которые идут вместе с Carmel,браузером WebVR от Facebook's .
  • WebVR.info samples — несколько более подробных примеров плюс исходный код
  • WebVR.rocks Firefox demos — демонстрация примеров
  • A-Frame homepage — примеры использования A-Frame

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

Спецификация Статус Комментарий
Gamepad Extensions Редакторский черновик

Определяет Experimental Gamepad extensions.

WebVR 1.1 Редакторский черновик Первоначальное определение

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support Нет[1] (Да) 55 (55)[2] Нет Нет Нет
Gamepad extensions Нет Нет Нет[3] Нет Нет Нет
Feature Android Webview Chrome for Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Samsung Internet for GearVR
Basic support Нет Нет[1] Нет Нет Нет Нет Нет (Да)
 
Gamepad extensions Нет Нет Нет Нет[3] Нет Нет Нет Нет

[1] Origin trials only.

[2] В настоящее время только в Windows и Mac OSX поддержка включена по умолчанию.

[3] Включено в Firefox Nightly и Beta, версии 55 и выше. Включено / отключено с помощью  dom.gamepad-extensions.enabled pref.

Смотрите также

  • vr.mozilla.org — Основная посадочная площадка Mozilla для WebVR с демонстрационными материалами, утилитами и другой информацией.
  • A-Frame — Веб-платформа с открытым исходным кодом для создания опыта VR.
  • webvr.info — Актуальная информация о WebVR, настройке браузера и сообществе.
  • MozVr.com — Демонстрации, загрузки и другие ресурсы от команды Mozilla VR.
  • threejs-vr-boilerplate — Полезный стартовый шаблон для написания приложений WebVR.
  • Web VR polyfill — JavaScript-реализация WebVR.

Метки документа и участники

Внесли вклад в эту страницу: Lyumih
Обновлялась последний раз: Lyumih,