Впервые на русском: Документация Oculus для разработчиков. Отслеживание

Продолжаем публикацию эксклюзивной информации для разработчиков от Oculus. Новый раздел посвящён отслеживанию. 

  1. Документация Oculus для разработчиков:
    1. Введение в рекомендации
    2. Бинокулярное зрение, стереоскопическая визуализация и индикаторы глубины
    3. Поле зрения и масштаб
    4. Методы рендеринга
    5. Движение
    6. Отслеживание
    7. «Болезнь симуляции»
    8. Пользовательский интерфейс
    9. Пользовательский ввод и навигация
    10. Заключение
    11. Введение в SDK для ПК
    12. Руководство разработчика
    13. Руководство по началу работы с ПК SDK
    14. Руководство ПК SDK для разработчика. Интеграция LibOVR
    15. Инициализация и перечень сенсоров
    16. Рендеринг в Oculus Rift
    17. Расширенная настройка рендеринга
    18. Управление связью с виртуальной реальностью
    19. Система безопасности Oculus Guardian
    20. Аудио Oculus Rift
    21. Контроллеры Oculus Touch
    22. Дополнительная информация об Oculus Touch
    23. Примеры использования SDK и геймпада
    24. Оптимизация вашего приложения
    25. Подключение контроллеров Oculus Touch
    26. Асинхронный SpaceWarp
    27. Дополнительная информация о подключении контроллеров Oculus Touch
    28. Справочная информация

Чтобы оставаться в курсе новостей о виртуальной реальности, подписывайтесь на наш Telegram!

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

Обзор
  • Сенсоры Oculus Rift собирают информацию о пользовательском отклонении в движениях, наклонах и кручении.
  • 6 видов глубины резкости (6DoF) позиционного отслеживания у Oculus Rift:
  1. Разрешите пользователям устанавливать точку начала координат в удобном для них положении с инструкцией по первоначальному местоположению.
  2. Не отключайте и не изменяйте отслеживание местоположения, особенно когда пользователь перемещается в реальном мире.
  3. Предупреждайте пользователя, когда он собирается оставить зону позиционного отслеживания камерой; затемните экран до того, как отслеживание будет потеряно.
  • Используйте код «модели головы», доступный в демоверсиях SDK от Oculus, на тот случай, когда отслеживание местоположения недоступно.
  • Оптимизируйте весь движок, чтобы минимизировать лаги и задержки.
  • Используйте прогнозирующий код отслеживания Oculus VR (доступен в демоверсиях SDK) для последующего сокращения времени ожидания.
  • Если задержка действительно неизбежна, изменяемые лаги хуже по сравнению с согласованными и одинаковыми.
Ориентационное отслеживание

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

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

 

Позиционное отслеживание

В Oculus Rift имеется функция отслеживания местоположения с шестью степенями свободы (6DoF). Под тканевым покрытием Oculus Rift находится массив инфракрасных микросветодиодов, которые отслеживаются в реальном пространстве с помощью включенной инфракрасной камеры. Позиционное отслеживание всегда должно соответствовать как 1:1 по отношению к движениям пользователя, если те находятся в зоне отслеживания камеры слежения. Усиление отслеживания положения по отношению к движениям игрока может быть дискомфортным.

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

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

Модель головы в первую очередь состоит из трёх векторов. Один вектор, условно говоря, накладывается на шею пользователя, при этом он начинается в начале точки отслеживания положения и указывает на «центральный глаз», который представляет собой точку, расположенную примерно на переносице пользователя. Два вектора исходят из «центрального глаза», один указывает на зрачок левого глаза, а другой – на правый. Более подробную документацию по данным о местоположении пользователя можно найти в SDK.

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

Хотя масштабирование комнаты имеет большой потенциал, оно также создает новые проблемы. Во-первых, пользователи могут покинуть область отслеживания камеры слежения и быть потерянными для позиционного отслеживания, что может быть очень неприятным. Чтобы поддерживать постоянный, непрерывный виртуальный опыт, вы должны предоставлять пользователям с помощью системы Oculus Guardian предупреждения при приближении к краям зоны отслеживания камеры ещё до потери позиционного отслеживания. Они также должны получать некую форму обратной связи, которая поможет им лучше выбирать для себя позицию перед камерой слежения.

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

Вторая проблема, связанная с отслеживанием положения, заключается в том, что пользователи теперь могут перемещать виртуальную камеру в необычные положения, которые ранее были невозможны. Например, пользователи могут перемещать камеру для просмотра объектов или вокруг препятствий, чтобы увидеть те части окружающей среды, которые будут скрыты от них в обычной видеоигре. С одной стороны, это открывает новые методы взаимодействия, такие как физическое перемещение вокруг какого-либо покрытия и поверхности или исследование объектов в окружающей среде. С другой стороны, пользователи могут найти технические несовершенства, которые вы, возможно, допустили при проектировании среды, которая обычно скрывалась бы без позиционного отслеживания. Позаботьтесь о том, чтобы творческие и технические элементы не нарушали ощущение погружения пользователя в виртуальную среду.

Связанная с этим проблема также заключается в том, что пользователь потенциально может использовать позиционное отслеживание для того, чтобы срезать маршрут через виртуальную среду, упираясь в стену или объект. Один из подходов в разработке среды заключается в том, чтобы сделать невозможными для пользователя срезания маршрута через неподвижный объект, пока он находится внутри зоны отслеживания камерой. Следуйте вышеуказанным рекомендациям, чтобы экран затемнялся вплоть до чёрного, прежде чем пользователь мог срезать маршрут перемещения через что-нибудь. Подобным образом не позволяйте пользователям приближаться к объектам, которые расположены ближе оптической зоны комфорта в 0,75-3,5 м, однако имейте в виду, что это может заставить зрителя чувствовать себя дистанцированным от всего, как будто он окружён невидимым барьером. Экспериментирование и тестирование необходимо для того, чтобы найти идеальное решение, балансирующее между юзабилити и комфортом.

Хотя мы рекомендуем разработчикам исследовать новые инновационные подходы к решению этих задач позиционного отслеживания, мы не одобряем те методы, которые действительно лишают пользователя позиционного отслеживания или иным образом меняют его поведение в то время, пока виртуальная среда находится в его поле зрения. При виде того, как виртуальная среда перестает отвечать на запросы (или реагируют по-разному) при позиционном отслеживании, особенно при движении в реальном мире, пользователь может почувствовать дискомфорт. Любой метод по борьбе с упомянутыми проблемами должен обеспечить пользователя адекватной обратной связью для того, чтобы он знал, что происходит и как он может возобновить нормальное взаимодействие со средой.

Задержка

Определим понятие задержки как общее время между движением головы пользователя и обновлением отображаемого изображения на экране (motion-to-photon), также она включает в себя время для ответа датчика, слияния, рендеринга, передачи изображения и отображения ответа.

Минимизация задержки имеет решающее значение для иммерсивной и комфортной виртуальной реальности, и низкая задержка отслеживания головы является частью того, что отличает Oculus Rift от других подобных технологий. Чем больше вы можете свести к минимуму задержку motion-to-photon в игре, тем более захватывающий и комфортный опыт будет у пользователя.

Один из подходов к борьбе с эффектами задержки является наша технология по прогнозу позиционного отслеживания. Несмотря на то, что на самом деле невозможно уменьшить длительность motion-to-photon, она использует актуальную информацию для того, чтобы предсказать, где пользователь будет находиться в будущем. Это компенсирует ту задержку, которая связана с процессом чтения датчиков и последующего рендеринга изображения на экране, что позволяет предвидеть, куда пользователь будет смотреть во время рендеринга, что позволяет добиться отрисовки этой части окружающей среды на экране вместо той, куда будет направлен взгляд пользователя во время считывания датчика. Мы рекомендуем разработчикам внедрить прогнозирующий код позиционного отслеживания, предоставленный в SDK. Более подробную информацию о том, как это работает, вы можете узнать в посте блога Стива Лавалля (Steve LaValle) «Скрытая сила предвидения» (The Latent Power of Prediction), а также в соответствующей части документации SDK.

В Oculus считается, что пороговое значение задержки для лучшего опыта в виртуальной реальности должно быть от 20 мс или ниже. Выше этого диапазона пользователи могут чувствовать себя менее погруженными и ощущать больший дискомфорт в виртуальной среде. Когда задержка превышает 60 мс, разобщение между движениями головы и движениями в виртуальном мира начинает вызывать чувство рассинхронизации, вызывающее дискомфорт и дезориентацию. Большие задержки считаются одной из основных причин «болезни симуляции». [1] Отдельно от проблем с комфортом задержка также может нарушать интерактивность и присутствие пользователя. Очевидно, что в идеальном мире чем ближе мы находимся к 0 мс, тем лучше. Если задержка неизбежна, она будет более неудобной, если она будет изменяемой. Поэтому вы должны стремиться к минимальной и наименее изменяемой задержке.

 

[1] Коласински, Э. M. (1995). «Болезнь симуляции» в виртуальной среде (ARTI-TR-1027). Александрия, ВА: Армейский исследовательский институт в области бихевиористской и социальной наук. Взято здесь: http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA295861

 

Примечание: Данный материал представлен для ознакомления, при перепечатывании ссылка на оригинал обязательна. Если вы хотите принять участие в помощи проекту, пишите на editor@vrgeek.ru

 

Если вы разработчик и вы хотите продолжить свою карьеру в лучших компаниях России, пишите на editor@vrgeek.ru с пометкой «Работа мечты», и мы поможем вам с этим.