Spec-Zone.ru › Web APIs

Концепции WebVR

Устарело: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её всё ещё поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или поддерживается только для совместимости. Избегайте её использования и, при возможности, обновите существующий код; см. таблицу совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любое время.

Примечание: API WebVR заменён на API WebXR. WebVR никогда не был ратифицирован как стандарт, реализовывался и активировался по умолчанию в очень немногих браузерах и поддерживал небольшое количество устройств.

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

История VR

Виртуальная реальность — это нечто новое — концепция уходит корнями намного дальше, чем кампания по сбору средств Oculus Rift в 2012 году. Люди экспериментируют с ней на протяжении десятилетий.

В 1939 году был создан прибор View-Master, позволявший людям видеть 3D-изображения. Прибор отображал изображения, хранящиеся на картонных дисках, содержащих стереоскопические 3D-пары небольших цветных фотографий. После многолетней разработки военные заинтересовались использованием таких технологий, и в 1961 году появился проект Headsight — это включало шлем с видеоэкраном и системой отслеживания головы.

В течение следующих нескольких десятилетий проводились различные эксперименты, но они уже не ограничивались научными лабораториями и полями сражений. В конечном итоге поп-культура взяла верх, и режиссёры фильмов показали свои видения виртуальной реальности. Были созданы фильмы, такие как «Трон» (1982) и «Матрица» (1999), где люди могли перенести себя в совершенно новый кибермир или были заперты в нём, даже не зная, принимая его за реальный мир.

Первые попытки создания VR-игр были масштабными и дорогостоящими — в 1991 году Virtuality Group создала VR-аркадный автомат с очками и перенесла такие популярные игры, как Pac-Man, в виртуальную реальность. В 1993 году Sega представила свои VR-очки на выставке Consumer Electronics Show. Компании экспериментировали, но рынок и потребители не были убеждены — нам пришлось подождать до 2012 года, чтобы увидеть реальный пример успешного VR-проекта.

VR в наши дни

Так что же нового? Для достижения приемлемого пользовательского опыта оборудование виртуальной реальности должно предоставлять высокоточные, низкозадержные данные; компьютеры, на которых работают приложения VR, должны быть достаточно мощными, чтобы обрабатывать всю эту информацию. Только недавно такая точность и мощность стали доступны по доступной цене, если вообще доступны. Ранние прототипы VR стоили десятки тысяч долларов, в то время как более современные гарнитуры, такие как HTC VIVE и Meta Quest, доступны за сотни долларов, и существуют более дешёвые решения — мобильные решения на базе устройств, такие как Google Cardboard.

В программной сфере Valve создала программное обеспечение SteamVR, которое совместимо с VIVE и другими решениями и служит для предоставления доступа к программному обеспечению, например, к удобному VR-интерфейсу.

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

Устройства ввода

Обработка ввода для приложений виртуальной реальности — интересная тема — это совершенно новый опыт, для которого необходимо разрабатывать специализированные пользовательские интерфейсы. В настоящее время существует множество подходов, начиная от классической клавиатуры и мыши и заканчивая новыми, такими как Leap Motion и контроллеры VIVE. Это вопрос проб и ошибок, чтобы увидеть, что работает в конкретных ситуациях и какие входы лучше всего подходят для вашего типа игры.

Настройка оборудования VR

Существует два основных типа настройки: мобильная или подключенная к компьютеру. Их минимальные конфигурации оборудования следующие:

  • Мобильная: гарнитура виртуальной реальности (HMD) создаётся с использованием смартфона — который выступает в качестве VR-дисплея — установленного в VR-крепление, такое как Google Cardboard, которое содержит необходимые линзы для стереоскопического отображения того, что проецируется на мобильный экран.Mobile based VR setup
  • Подключенная к компьютеру: VR-система подключается к вашему компьютеру — это включает в себя гарнитуру виртуальной реальности (HMD), содержащую экран с высоким разрешением в ландшафтном формате, на который выводятся изображения для левого и правого глаза, в которой также присутствует линза для каждого глаза, чтобы обеспечить разделение сцены левого и правого глаза (стереоскопическое зрение.) Настройка также включает в себя отдельный датчик положения, который определяет положение/ориентацию/скорость/ускорение вашей головы и постоянно передаёт эту информацию компьютеру. Computer based VR Setup

Примечание: Системы, подключенные к компьютеру, иногда не включают в себя датчик положения, но обычно он есть.

Другое оборудование, которое дополняет VR-опыт, включает:

  • Датчик распознавания рук: Датчик, отслеживающий положение и движение вашей руки, позволяя ей стать интересным контроллером и объектом в мирах VR-игр. Наиболее продвинутым на сегодняшний день является Leap Motion, который работает с компьютером (подключённым к Oculus Rift) и также может работать, подключённый к мобильному устройству (последний вариант находится на экспериментальной стадии).
  • Джойстик: Мы можем настроить контроллер Xbox или аналогичный для работы как клавиатура в браузере — это открывает дополнительные возможности взаимодействия с VR-веб-страницей. Некоторые джойстики работают с мобильной настройкой, но они подключаются по Bluetooth, поэтому не работают с WebVR.
  • Датчик отслеживания взгляда (экспериментальный): Проект FOVE — первая гарнитура, которая считывает едва заметные движения глаз.
  • Датчик отслеживания мимики лица (экспериментальный): Исследователи из Университета Южной Калифорнии и подразделения Oculus компании Facebook тестировали новые способы отслеживания выражений лица и переноса их на виртуального персонажа.
  • Более сложная система датчиков определения положения: Например, HTC VIVE оснащена двумя датчиками положения, расположенными в противоположных углах пространства, которые охватывают всё пространство и позволяют наслаждаться VR-опытом в пространствах до 5 м х 5 м.

Положение и ориентация, скорость и ускорение

Как упоминалось выше, датчик положения обнаруживает информацию о HMD и постоянно выводит её, что позволяет постоянно обновлять сцену в соответствии с движением, вращением и т. д. головы. Но что именно представляет собой эта информация?

Position and Orientation VR setup

Выводимая информация подразделяется на четыре категории:

  1. Положение — Положение HMD вдоль трёх осей в трёхмерном координатном пространстве. x — слева направо, y — вверх-вниз, а z — вперёд-назад относительно датчика положения. В WebVR координаты x, y и z представлены массивом, содержащимся в VRPose.position.

  2. Ориентация — Вращение HMD вокруг трёх осей в трёхмерном координатном пространстве. Тангаж — вращение вокруг оси x, курс — вращение вокруг оси y, и крен — вращение вокруг оси z. В WebVR тангаж, курс и крен представлены первыми тремя элементами массива, содержащегося в VRPose.orientation.

  3. Скорость — Существуют два типа скорости, которые необходимо учитывать в VR:

    • Линейная — Скорость вдоль любой оси, по которой перемещается HMD. Эту информацию можно получить, используя VRPose.linearVelocity.
    • Угловая — Скорость вращения HMD вокруг любой оси. Эту информацию можно получить, используя VRPose.angularVelocity.
  4. Ускорение — Существуют два типа ускорения, которые необходимо учитывать в VR:

    • Линейное — Ускорение движения вдоль любой оси, по которой перемещается HMD. Эту информацию можно получить, используя VRPose.linearAcceleration.
    • Угловое — Ускорение вращения HMD вокруг любой оси. Эту информацию можно получить, используя VRPose.angularAcceleration.

Поле зрения

Поле зрения (FOV) — это область, которую каждый глаз пользователя может разумно увидеть. Оно примерно имеет форму пирамиды, лежащей на одной стороне, с вершиной внутри головы пользователя, а остальная часть пирамиды исходит от глаза пользователя. У каждого глаза есть своё поле зрения, слегка перекрывающее друг друга.

FOV related properties

FOV определяется следующими значениями:

  • VRFieldOfView.upDegrees: Количество градусов вверх, на которое простирается поле зрения.
  • VRFieldOfView.rightDegrees: Количество градусов вправо, на которое простирается поле зрения.
  • VRFieldOfView.downDegrees: Количество градусов вниз, на которое простирается поле зрения.
  • VRFieldOfView.leftDegrees: Количество градусов влево, на которое простирается поле зрения.
  • zNear, определённое VRDisplay.depthNear: Расстояние от центра головы пользователя до начала видимого FOV.
  • zFar, определённое VRDisplay.depthFar: Расстояние от центра головы пользователя до конца видимого FOV.

Значения по умолчанию для этих свойств будут немного отличаться в зависимости от VR-оборудования, хотя они обычно составляют около 53° вверх и вниз, и 47° влево и вправо, при zNear и zFar соответственно около 0,1 м и 10000 м.

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

Концепции для приложений VR

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

Стереоскопическое зрение

Стереоскопическое зрение — это нормальное зрение у людей и (большинства) животных — восприятие двух немного отличающихся изображений (по одному от каждого глаза) как одного изображения. Это приводит к восприятию глубины, помогая нам видеть мир в великолепном 3D. Чтобы воспроизвести это в приложениях VR, вам нужно отобразить две очень немного отличающиеся точки зрения бок о бок, которые будут восприниматься левым и правым глазами, когда пользователь использует гарнитуру.

How to create stereoscopic 3D images

Отслеживание головы

Основная технология, используемая для создания ощущения присутствия в 360º-сцене, благодаря гироскопу, акселерометру и компасу (магнитометру), встроенным в гарнитуру. Она имеет первостепенное значение, потому что заставляет наши глаза поверить, что мы находимся перед сферическим экраном, обеспечивая пользователям реалистичное погружение в холст приложения.

Напряжение глаз

Термин, часто используемый в VR, поскольку это основной недостаток использования гарнитуры — мы постоянно обманываем глаз тем, что показываем на холсте приложения, и это приводит к тому, что глаза работают гораздо больше, чем обычно, поэтому использование приложений VR в течение длительного времени может привести к напряжению глаз.

Чтобы свести к минимуму этот нежелательный эффект, необходимо:

  • Избегать фокусировки на разных глубинах (например, избегать использования большого количества частиц с разными глубинами).
  • Избегать схождения глаз (например, если у вас есть объект, который приближается к камере, ваши глаза будут следовать за ним и сходиться на нём).
  • Использовать более темный фон с более приглушёнными цветами, где это возможно; яркий экран утомит глаза.
  • Избегать резких изменений яркости.
  • Избегать отображения пользователю больших объёмов текста для чтения. Также следует быть осторожным с расстоянием между глазами/камерой и текстом для чтения. 0,5 м неудобно, а на расстоянии более 2 м стереоэффект начинает разрушаться, поэтому предпочтительнее значение где-то посередине.
  • Будьте осторожны с расстоянием между объектами и камерой в целом. Oculus рекомендует минимальное расстояние фокусировки в 0,75 м.
  • Использовать указатель, если пользователю нужно взаимодействовать с объектом в сцене — это поможет им правильно указать на него с меньшими усилиями.

В целом, путь наименьшего зрительного усилия обеспечит пользователю менее утомительный опыт.

Морская болезнь

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

Чтобы избежать морской болезни у наших пользователей (или по крайней мере свести к минимуму её эффекты), необходимо:

  • Всегда поддерживать отслеживание головы (это самое важное, особенно если это происходит в середине опыта).
  • Использовать постоянную скорость; избегать ускорения или замедления движений камеры (использовать линейное ускорение и избегать сглаживания, если это возможно).
  • Поддерживать высокую частоту кадров (менее 30 кадров в секунду считается неудобным).
  • Избегать резких и/или неожиданных поворотов камеры.
  • Добавить фиксированные точки отсчета для неподвижных объектов (иначе пользователь будет считать, что он находится в движении).
  • Не использовать постобработку глубины резкости или размытия движения, так как вы не знаете, на чём сфокусируются глаза.
  • Избегать изменений яркости (использовать текстуры с низкой частотой или эффекты тумана для создания плавных переходов освещения).

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

Задержка

Задержка — это время между физическим движением головы и визуальным отображением, достигающим глаз пользователя со экрана гарнитуры, обновляемого на экране. Это один из самых критических факторов для обеспечения реалистичного опыта. Люди могут обнаружить очень небольшие задержки — нам нужно поддерживать задержку ниже 20 миллисекунд, если они должны быть незаметными (например, монитор с частотой 60 Гц имеет время отклика 16 мс).

Гарнитура Oculus Rift имеет задержку 20 мс или меньше, но с мобильными установками на основе устройств она будет сильно зависеть от мощности процессора смартфона и других возможностей.

Частота кадров (кадров в секунду / FPS)

Согласно определению Википедии, частота кадров — это частота, с которой устройство отображения генерирует уникальные последовательные изображения, называемые кадрами. Частота 60 кадров в секунду — приемлемая для плавного пользовательского опыта, но в зависимости от производительности компьютера, на котором работает приложение, или сложности отображаемого контента, она может значительно снизиться. Менее 30 кадров в секунду обычно считается мерцающим и раздражающим для пользователя.

Одна из самых сложных задач — поддерживать постоянную и высокую частоту кадров, поэтому мы должны оптимизировать наш код, чтобы сделать его максимально эффективным. Предпочтительнее иметь приемлемую частоту кадров, которая не постоянно или внезапно меняется; для этого нужно свести к минимуму необходимое количество объектов, движущихся в сцену, и (в случае WebGL) попытаться уменьшить количество вызовов отрисовки.

Расстояние между зрачками (IPD)

Согласно определению Википедии, IPD — это расстояние между центрами зрачков двух глаз. IPD имеет важное значение для проектирования бинокулярных систем просмотра, где оба зрачка должны располагаться в пределах выходных зрачков системы просмотра.

Расстояние между зрачками (IPD) можно рассчитать с помощью VREyeParameters.offset в WebVR, которое равно половине IPD.

Это значение возвращается гарнитурой, и его значение может составлять примерно 60–70 мм; в случае некоторых гарнитур, таких как Oculus Rift, вы можете задать собственное IPD. Обычно мы не изменяем это значение, но вы можете поиграть с ним, чтобы изменить масштаб всей сцены. Например, если ваш IPD установлен в 6000 мм, пользователь будет видеть сцену, как великан, наблюдающий за миром лилипутов.

Степени свободы (DoF)

DoF относится к движению твердого тела в пространстве. Нет единообразия в создании аббревиатур для этого термина — мы можем найти упоминания о 3DoF в контексте датчиков, которые обнаруживают только вращательное отслеживание головы, и 6DoF, когда вход позволяет одновременно управлять положением и ориентацией. Мы даже иногда находим упоминания о 9DoF, когда оборудование содержит три датчика, такие как гироскоп, акселерометр и магнитометр, но результаты значений 3 x 3DoF фактически вернут отслеживание шести степеней свободы.

DoF напрямую связан с отслеживанием движения головы пользователя.

Конус фокусировки

Хотя наше поле зрения намного шире (примерно 180º), нам необходимо учитывать, что только в небольшой части этого поля вы можете воспринимать символы (центральные 60º) или читать текст (центральные 10º). Если у вас нет датчика отслеживания глаз, мы предполагаем, что центр экрана — это то, на чём пользователь фокусирует свои глаза.

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

3D позиционное аудио

3D позиционное аудио относится к группе эффектов, которые манипулируют звуком, чтобы смоделировать, как он звучал бы в трехмерном пространстве.

Это напрямую связано с Web Audio API, который позволяет размещать звуки на объектах, которые у нас есть на холсте, или запускать звуки в зависимости от части сцены, к которой пользователь движется или на которую смотрит.

© 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/WebVR_API/Concepts

Spec-Zone.ru

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