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

Виртуальная реальность – это невероятная среда для погружения. Она создаёт сенсационую возможность быть полностью перенесённым в виртуальный (или реальный, но воссозданный с помощью цифровых технологий) трёхмерный мир. Кроме того, она даёт возможность погрузиться куда глубже, чем привычные технологии с использованием обычного экрана. Подготовленные рекомендации предназначены для того, чтобы помочь разработчикам создавать контент, который даст пользователям безопасный и приятный способ использовать устройства от Oculus. Разработчики несут ответственность за то, чтобы их контент отвечал всем требованиям стандартов индустрии, следовал всем рекомендациям по безопасности и комфорту, а также они обязаны ознакомиться со всей необходимой научной литературой по этой теме.

Документация Oculus для разработчиков:

  1. Введение в рекомендации
  2. Бинокулярное зрение, стереоскопическая визуализация и индикаторы глубины
  3. Поле зрения и масштаб

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

Обзор

Если контент для виртуальной реальности игнорирует фундаментальные рекомендации, он может вызвать неприятные ощущения у некоторых пользователей. Так называемая «болезнь симуляции» представляет собой комбинацию из симптомов, связанных с дискомфортом глазного дна, дезориентацией, тошнотой. Исторически большая часть этих проблем была вызвана использованием не оптимизированного должным образом оборудования для виртуальной реальности – например, с наличием системной задержки. Oculus Rift представляет собой новое поколение устройств для виртуальной реальности, которое поможет решить проблемы ранее существовавших систем. Но даже с безупречной аппаратной оптимизацией неправильно разработанный контент может привести к неприятному пользовательскому опыту.

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

Примечание: Как и с любой другой технологией, чрезмерное использование наших устройств без перерывов не рекомендуется для разработчиков, конечных пользователей и самих устройств. Пожалуйста, изучите последнюю версию «Предупреждений о здоровом и безопасном использовании» по ссылке: www.oculus.com/warnings.

Рендеринг
  • Используйте искажающие шейдеры Oculus VR. Внедрение своего собственного решения для искажения, даже когда оно выглядит верно, часто приводит к дискомфорту пользователей.
  • Получайте точную проекцию матрицы и используйте модель головы Oculus по умолчанию. Любые отклонения от оптического потока, которые в реальной среде вызываются движениями головы, вызывают проблемы с движением глаз и дискомфорт в теле.
  • Поддерживайте погружение в виртуальную реальность от начала и до конца. Например, не закрепляйте одно изображение перед пользователем – вроде единой заставки на весь экран, которая не отвечает на движения головы – так как это может вызвать дезориентацию в пространстве.
  • Изображения предоставляются для каждого глаза в отдельности, и они потому они должны отличаться в зависимости от угла зрения; эффекты постобработки (например, искажения цвета, сама цветопередача) должны идти для двух глаз последовательно так же, как и должна рендериться правильная глубина по оси Z, чтобы создать правильно сформированное изображение.
  • Рассмотрите вариант суперупрощения и/или сглаживания для устранения эффекта низкого разрешения, которое будет проявляться наихудшим образом в центре экрана для каждого глаза.
Минимизация задержки
  • Ваш код должен работать с равной или большей частотой кадров по сравнению с тем, как обновляется дисплей Oculus Rift, его виртуальная синхронизация и буферная память. Лаги и зависшие кадры становятся причиной вибрации, которая вызывает дискомфорт в виртуальной реальности.
  • Идеально, если вы будете стремиться достигнуть задержки в 20 мс или меньше (измеряется с помощью встроенного в Oculus Rift тестера задержки). Организуйте свой код таким образом, чтобы минимизировать время между слиянием сенсоров (чтением сенсоров Rift) и рендерингом.
  • Задержка игрового цикла не является единой постоянной и меняется время от времени. SDK использует несколько трюков (например, прогнозированное отслеживание TimeWarp («Дыра во времени»)), чтобы защищать пользователя от эффектов задержки, но сделать всё возможное, чтобы вы могли свести к минимуму вариативность в разбежке задержки на протяжении всего пользовательского опыта.
  • Используйте прогнозированное отслеживание SDK, чтобы убедиться в том, что вы обеспечиваете точный временной параметр вызова этой функции. Значение прогнозированного отслеживания варьируется в зависимости от задержки приложения и должно настраиваться для каждого отдельного приложения индивидуально.
  • Обратитесь в исходному коду OculusRoomTiny для того, чтобы использовать его в качестве примера минимизации задержки и применения надлежащих техник рендеринга в вашем коде.
Оптимизация
  • Уменьшите разрешение буфера для рендеринга каждого глаза для того, чтобы сохранить видеопамять и улучшить частоту кадров.
  • Несмотря на то, что снижение разрешения экрана может показаться хорошим методом для улучшения производительности, получаемое в результате преимущество обусловлено в первую очередь его влиянием на разрешение экрана для рендеринга каждого глаза. Снижение разрешения буфера для рендеринга каждого глаза при одновременном сохранении разрешения экрана может улучшить производительность с меньшей потерей качества визуализации, чем при снижении их обоих.
Отслеживание головы и точки взгляда
  • Избегайте визуальных эффектов, нарушающих чувство стабильности у пользователя во время его пребывания в виртуальной среде. Вращение или движение линии горизонта или других крупных компонентов среды пользователя в конфликте с реальными движениями пользователя в пространстве (или их отсутствием) может вызвать дискомфортные ощущения.
  • Дисплей должен отвечать на движения пользователя на протяжении всего времени без исключений. Даже в меню, когда контент стоит на паузе, или во время заставок, пользователь должен иметь возможность оглядеться и посмотреть вокруг себя.
  • Используйте позиционное отслеживание SDK и модель головы для того, чтобы виртуальные камеры вращались и двигались в соответствии с движениями головы и тела; диспропорции вызывают чувство дискомфорта.
Позиционное отслеживание
  • Отрендеренное изображение должно отвечать непосредственно всем физическим действиям пользователя; не манипулируйте усилением движения виртуальной камеры. Использование единого глобального масштаба модели головы – это наиболее оптимальный вариант (например, для преобразования футов в метры, для сжатия или увеличения размеров игрока), но не прибегайте к масштабированию движений головы независимо от межзрачкового расстояния.
  • С позиционным отслеживанием пользователи теперь могут управлять своим углом обзора и рассматривать места, которые вы не ожидали, что будут подвергаться рассматриваю: например, объекты, находящиеся внизу, выступы, углы. Рассмотрите более внимательно свой подход к отрисовке и рендерингу заднего фона и прочего.
  • При определённых обстоятельствах пользователи могут использовать позиционное отслеживание для скольжения через виртуальную среду (например, просовывать голову через стены или другие внутренние объекты среды). Наши наблюдения показывают, что пользователи, как правило, избегают таких действий после того, как понимают, что это возможно, если только они не сознают, что это является возможностью обманывать ход спроектированной игры. Тем не менее, разработчики должны планировать, как обращаться с камерами при скольжении сквозь объекты в среде. Один из подходов к проблеме такой: можно инициировать отображение сообщения, которое говорит пользователям, что они покинули объём пространства, отслеживаемый камерой (хотя технически они могут ещё оставаться в зоне отслеживания).
  • Выводите для пользователя уведомляющие предупреждения о том, что они приближаются (но заблаговременно до того, как это произойдёт) к краям зоны позиционного отслеживания, а также обратную связь о том, как они могут изменить собственное местоположение, чтобы избегать потери отслеживания.
  • Мы рекомендуем вам не оставлять виртуальную среду для отображения на экране Oculus Rift, если пользователь перестаёт быть в зоне видимости камеры, где возможно позиционное отслеживание. Гораздо менее неприятно, когда вид исчезает вплоть до чёрного экрана или становится слабее (например, понижается яркость или контраст) прежде, чем позиционное отслеживание будет прекращено. Убедитесь, что предоставляете пользователю обратную связь, которая даёт её понять, что именно произошло и как это исправить.
  • Ухудшение или отключение позиционного отслеживания вызывает дискомфорт. Избегайте этого всеми возможными способами тогда, когда это реально, и затемняйте экран или, по крайней мере, сделайте возможным сохранение ориентации в пространстве при использовании модели головы SDK, когда позиционное отслеживание недоступно.
Акселерация
  • Акселерация создаёт несоответствие между вашим визуальным, вестибулярным, проприоцептивным чувствами. Минимизируйте продолжительность и частоту таких ситуаций. Сделайте акселерацию максимально короткой (предпочтительно – мгновенной), насколько это возможно.
  • Помните, что акселерация значит не только ускорение во время движения вперёд; к ней относится любое изменение в движении пользователя, будь то направленное движение или просто увеличение скорости движения. Замедление или остановка, переворот во время движения или во время замирания на месте, шагание или боковое движение – всё это виды акселерации.
  • Сделайте акселерацию, которая будет инициироваться и контролироваться пользователем тогда, когда это возможно. Тряска, подёргивания или подпрыгивание камеры будут вызывать дискомфорт у игрока.
Скорость движения
  • Просмотр виртуальной среды со стационарного положения является наиболее удобным способом просмотра в виртуальной реальности; тем не менее, когда требуется просмотр во время совершаемого движения и перемещения в среде, пользователям наиболее удобно двигаться через виртуальную среду с постоянной скоростью. Скорость движения в реальной среде будет более комфортной. Для справки: люди ходят со средней скоростью в 1,4 м/с.
  • Телепортация между двумя точками вместо хождения между ними в некоторых случаях требует эксперимента, так как она может вызывать дезориентацию. Если вы выбрали использование телепортации, обеспечьте адекватные визуальные ориентиры, которые помогут пользователям понять, где именно они находятся, а также сохранят их исходное чувство ориентации настолько, насколько это возможно.
  • Движение в одном направлении, пока взгляд направлен в другом направлении, может быть дезориентирующим. Минимизируйте необходимость у пользователя смотреть в стороны во время движения, особенно если необходимо передвигаться быстрее скорости обычного шага.
  • Избегайте вертикальных линейных колебаний, которые могут быть наиболее дискомфортными при частоте 0,2 Гц, и вращений вокруг не вертикальной оси, которые наиболее дискомфортны при частоте 0,3 Гц.
Камеры
  • Приближение или отдаление с помощью камеры может вызывать или усиливать «болезнь симуляции», особенно, если при этом движения головы пользователя и камеры не соответствуют друг другу как 1:1. Мы советуем не использовать эффекты «зума», пока дальнейшие исследования и развитие технологий не позволят найти наиболее комфортную и удобную для пользователя реализацию этого эффекта.
  • Для контента от лица третьего лица необходимо иметь в виду, что рекомендации по акселерации и движениям применяются к камере так же, как для контента от первого лица, независимо от того, что делает аватар. Кроме того, пользователи должны иметь полную свободу смотреть вокруг, что может добавить новые требования к разработке вашего контента.
  • Избегайте использования углов Эйлера везде, где это возможно; лучше использовать кватернионы. Попробуйте посмотреть прямо вверх и прямо вниз для теста камеры. Это всегда должно быть стабильным и соответствовать ориентации вашей головы.
  • Избегайте использования эффектов «качания головы». Это создаёт серию небольших, но при этом некомфортных акселераций.
Управление и тестирование «болезни симуляции»
  • Протестируйте ваш контент с большим количеством беспристрастных пользователей, чтобы убедиться, что он комфортен для широкой аудитории. Как разработчик, вы являетесь наихудшим вариантом для тестирования контента. Неоднократное использование и знакомство с Oculus Rift делает вас менее восприимчивым к вашему контенту, из-за чего вы менее восприимчивы к «болезни симуляции» или любому отклонению от ожидаемого результата, по сравнению с новым пользователем.
  • Реакция людей и терпимость к «болезни симуляции» различается, и болезнь, вызываемая визуальным рядом и движением, легче проявляется в шлемах виртуальной реальности, чем при использовании компьютера или телеэкрана. Ваша аудитория не будет «качаться» для получения опыта при использовании вашего контента, не ждите от неё этого.
  • Рассмотрите механизмы реализации, которые позволяют пользователям регулировать интенсивность визуальной составляющей. Это будет особенностью контента; также настройки могут включать в себя скорость движения, величину акселерации или ширину отображаемого поля зрения. Любые настройки такого рода должны быть установлены по умолчанию на самом низком уровне интенсивности.
  • Для всех настроек, которые настраиваются пользователем и которые связаны с управлением «болезнью движения», нужно иметь в виду, что пользователи могут захотеть изменить их на лету во время использования контента (например, по мере привыкания к виртуальной реальности или во время усталости). Когда это возможно, позвольте пользователям изменять эти настройки во время игрового процесса без необходимости перезапуска.
  • Независимый визуальный фон, который соответствует реальной инерциальной системе координат игрока (как, например, скайбокс, который не двигается и не отвечает на действия контроллера, но может быть просмотрен с помощью движений головы), должен уменьшать визуальный конфликт с вестибулярным аппаратом и повышать комфорт (см. Позиционное отслеживание).
  • Изображения с высокой пространственной частотой (например, полосы, мелкие текстуры) могут улучшать восприятие движения в виртуальной среде, что приводит к дискомфорту. Используйте – или предлагайте опцию – сгладить текстуры в среде (например, использованием текстур со сплошным цветом, а не с орнаментом), чтобы предоставить наиболее комфортный опыт для чувствительных пользователей.
Уровень стереоскопической глубины («Трёхмерность»)
  • Для инвидуализированного реализма и правильно масштабированного мира используйте векторы разделения глаз, которые предоставляются SDK посредством профиля пользователя.
  • Помните, что восприятие глубины от стереопсиса чувствительно к близкому расстоянию, но становится значительно менее чувствительным с увеличением расстояния. Две горы в милях друг от друга на большом расстоянии обеспечат пользователю такое же чувство глубины, как две ручки в дюймах друг от друга на вашем столе.
  • Хотя увеличение расстояния между виртуальными камерами может повысить ощущение глубины от стереопсиса, остерегайтесь непреднамеренных побочных эффектов, которые могут возникнуть. Во-первых, это может заставить пользователей сводить глаза к центру больше обычного, что может привести к напряжению глаз, если вы не перемещаете объекты соответственно дальше от камер. Во-вторых, это может вызвать перцепционные аномалии и дискомфорт, если у вас не получится масштабировать движение головы также, как разделение глаз.
Пользовательский интерфейс
  • Пользовательский интерфейс должен быть трёхмерной частью виртуального мира и находиться примерно в 2-3 метрах от зрителя – даже если он просто нарисован на плавающем плоском многоугольнике, цилиндре или сфере, которые парят перед пользователем.
  • Не вынуждайте пользователя вращать глазами в глазницах, чтобы увидеть пользовательский интерфейс. Идеально, если ваш пользовательский интерфейс будет помещаться в центральной зоне примерно одной трети области просмотра пользователя. В противном случае пользователь должен иметь возможность изучать пользовательский интерфейс с помощью движений головы.
  • Соблюдайте осторожность при создании элементов пользовательского интерфейса, которые перемещаются или масштабируются с помощью движений головы (например, длинное меню, которое прокручивается или двигается при движениях головой для того, чтобы прочитать его). Убедитесь, что такие элементы точно реагируют на движения пользователя и легко читаются, не создавая отвлекающих движений или дискомфорта.
  • Стремитесь к тому, чтобы интегрировать элементы пользовательского интерфейса в среду как интуитивно родные и выделяющиеся части трёхмерного мира. Например, количество боеприпасов может отображаться на оружии пользователя, а не на плавающем графическом интерфейсе.
  • Рекомендуем изображать любой крестик, сетку или курсор на той же глубине, что и объект, на который они указывают; в противном случае они могут выглядеть как дублирующееся изображение, если изображение не находится в той плоскости глубины, на которой сходятся глаза.
Управление аватаром
  • Устройства ввода данных не видны пользователю во время того, как он надевает Oculus Rift. Реализуйте использование знакомых ему контроллеров в качестве метода ввода по умолчанию. Если клавиатура абсолютно необходима в том или ином случае, имейте в виду, что пользователи будут вынуждены полностью полагаться на тактильные ощущения (при использовании клавиш), чтобы найти элементы управления.
  • Рассмотрите возможность использования движений головы в качестве прямого контроля и управления или в качестве способа ввести чувствительный фон в вашу схему управления.
Звук
  • При создании звука имейте в виду, что источник выхода наушников следует за движениями головы пользователя, когда он их носит, но также остаётся в покое при использовании внешнего микрофона. Позвольте пользователям выбирать свое устройство вывода звука в настройках игры и следите за тем, чтобы звуки в игре доносились из правильных локаций с учётом того, в каком положении находится голова пользователя относительно устройства вывода.
  • Реализация речи NPC (неигрового персонажа) по центральному аудиоканалу или в равной степени по левому и правому каналам одновременно является обычной практикой, однако это может привести к потере эффекта глубокого погружения в виртуальную реальность. Пространственная обработка аудио, даже выполненная грубо, может улучшить пользовательский опыт.
  • Помогайте пользователю придерживаться зоны позиционного отслеживания с помощью звукового дизайна. Например, звуку следует становиться громче тогда, когда пользователь наклоняется к его источнику, даже если сам аватар пользователя в то же время остаётся неподвижным.
Контент
  • По рекомендациям, связанным с расстоянием: один метр в реальном мире соответствует примерно одной единице расстояния в Unity.
  • Оптика Oculus Rift делает его наиболее удобным для просмотра объектов, которые находятся в пределах от 0,75 до 3,5 метров от глаз пользователя. Хотя вся виртуальная окружающая среда может занимать любой диапазон глубины, объекты, которые пользователи будут искать в течение длительных периодов времени (например, меню и аватары), должны попадать в этот диапазон.
  • Приближение глаз к объектам, расположенным ближе, чем диапазон комфортного расстояния, указанного выше, может привести к смещению фокуса глаз, что сделает чёткие визуализированные объекты размытыми, а также приведёт к утомляемости глаз.
  • Яркие изображения, особенно на периферии, могут вызывать заметное мерцание дисплея для чувствительных пользователей; если это возможно, используйте более тёмные цвета, чтобы избежать дискомфорта пользователя.
  • Виртуальный аватар, представляющий тело пользователя в виртуальной реальности, может иметь плюсы и минусы. С одной стороны, он может увеличить погружение и помочь чувствовать себя более устойчиво во время пребывания в виртуальной реальности, чем когда аватару противопоставляется превращение игрока в бестелесную сущность во время управления от первого лица. С другой стороны, несоответствия между реальными и виртуальными телами пользователя могут привести к необычным ощущениям (например, взгляд вниз и просмотр тела идущего аватара в то время, когда сам пользователь сидит на стуле). Учитывайте эти факторы при разработке своего контента.
  • Учитывайте размер и текстуру изображения так же, как и в любой другой системе, где проблема визуального разрешения и наложения текстур является проблемой (например, избегайте использования очень тонких объектов).
  • Неожиданные вертикальные акселерации, а также те, которые сопровождают процесс перемещения по неровной или холмистой местности, могут создать дискомфорт. Обдумайте вариант выравнивания этих поверхностей или удержание точки обзора пользователя при пересечении такого ландшафта.
  • Имейте в виду, что пользователю предоставляется беспрецедентный уровень глубокого погружения, и пугающий или шокирующий контент может оказать сильное влияние и мощный эффект на пользователей (особенно чувствительных), причём более сильный, чем все пользовательские опыты в прошлом. Убедитесь, что игроки заранее видят предупреждение о содержании такого контента, чтобы они могли решить, хотят они такое испытать или нет.
  • Не полагайтесь полностью на стереоскопический 3D эффект для обеспечения глубины вашего контента. Освещение, текстура, параллакс (способ перемещения объектов по отношению друг к другу в то время, как перемещается сам пользователь) и другие визуальные элементы в равной степени (если даже не больше) важны для передачи глубины и пространства пользователю. Эти признаки глубины должны соответствовать направлению и величине стереоскопического эффекта.
  • Проектируйте окружающую среду и взаимодействие с ней таким образом, чтобы свести к минимуму необходимость в обстрелах, шагах назад или вращении, что может вызывать дискомфорт в виртуальной реальности.
  • Люди, как правило, совершают движения своими головами/телами, если им приходится переводить взгляд и удерживать его на расстоянии более 15-20 градусов угла зрения от того места, где они сейчас находятся. Избегайте того, чтобы принуждать пользователя совершать такие телодвижения, чтобы предотвратить усталость и дискомфорт в мышцах.
  • Не забывайте, что пользователь может смотреть в любом направлении в любое время; убедитесь, что он не увидят ничего, что нарушит его чувство глубокого погружения (например, технические мошенничества в рендеринге среды).
Внешний вид аватара
  • При создании контента вы можете выбрать: либо чтобы игрок ощущал себя как призрак (без физического присутствия) или находился в другом теле, которое сильно отличается от его или ее собственного. Например, вы можете реализовать перенос игрока в рамках вашего контента в историческую фигуру, вымышленного персонажа, анимацию, дракона, великана, орка, амебу или любой другой вариант из всего множества возможностей. Любые аватары такого рода не будут вызывать проблемы у пользователей, если вы будете придерживаться рекомендаций по оптимальным методам обеспечения комфорта и дадите возможность пользователям получить интуитивно понятное управление.
  • Когда аватар необходим для того, чтобы представлять самого игрока в виртуальной среде, он может отвлекать от глубокого погружения, если игрок смотрит вниз и видит тело или руки, которые сильно отличаются от его или ее собственных. Например, ощущение глубокого погружения женщины может быть нарушено, если она смотрит вниз и видит руки или тело мужчины. Предоставление возможности игрокам настраивать отображение своих рук и тел может значительно улучшить ощущение глубокого погружения. Если это требует слишком много затрат или усложняет ваш проект, вы всё равно можете принять меры для того, чтобы свести к минимуму различия между виртуальной реальностью и настоящим миром. Например, избегайте чрезмерно очевидных мужских или женских особенностей тела в видимых частях аватара. Перчатки и одежда унисекс, которые отвечают теме вашего контента, также могут помочь сохранить неопределённость в аспектах идентификации аватара: таких как пол, тип тела и цвет кожи.
Здоровье и безопасность

Внимательно ознакомьтесь и следуйте предупреждениям, которые идут в комплекте с Oculus Rift (см. www.oculus.com/warnings), для сохранения здоровья и обеспечения безопасности для вас, любого, кто тестирует ваш контент, и ваших пользователей.

Безопасные изображения и светочувствительные судороги

Считается, что определённые типы изображений могут вызывать светочувствительные судороги у небольшой части населения. [1] Международная организация по стандартизации в настоящее время работает над созданием стандарта для содержания изображений, чтобы уменьшить риск светочувствительных судорог. Вы несёте ответственность за то, чтобы следить за стандартами и знакомиться с литературой по вопросам светочувствительных судорог и безопасности изображений, а также создавать свой контент в соответствии со стандартами и лучшими рекомендациями по этим вопросам.

[1] Международный стандарт ISO/DIS 9241-391.2, Эргономика взаимодействия человеческих систем – Часть 391: Требования, анализ и соблюдение испытательных методов для снижения риска светочувствительных судорог (утвержденный и ожидающий публикации периодический обзор).

 

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

 

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