Впервые на русском: Документация 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 Rift, особенно когда речь идёт о мелкой детализации. Убедитесь, что текст большой и достаточно чёткий для того, чтобы его можно было прочитать и при этом избежать тонких объектов и декоративных текстур в местах, где пользователи будут фиксировать своё внимание.

Разрешение экрана

Настоящая версия Oculus Rift имеет OLED-дисплей с низкой стойкостью и с разрешением 2160×1200, а также частотой обновления кадров в 90 Гц. Это является серьёзным скачком вперёд по сравнению с оригинальным DK1 во многих отношениях, который выдавал разрешение 1280×720, обладал высокой стойкостью, частотой обновления кадров в 60 Гц и LCD дисплеем. Более высокое разрешение означает, что изображения становятся более чёткими и резкими, а низкая стойкость и высокая частота обновления кадров устраняют большую часть размытия движения (то есть размывание при движении головы), которое было обнаружено у DK1.

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

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

Рисунок 1. «Эффект экрана двери»

Понимание и предотвращение мерцания экрана

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

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

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

Чем выше частота обновления кадров, тем менее заметным становится мерцание. Это одна из причин, по которой так критически важно работать на скорости 75 fps (кадров в секунду) с синхронизацией по горизонтали без буферизации. Поскольку аппаратное обеспечение виртуальной реальности будет улучшаться и совершенствоваться со временем, частота обновления кадров и частота кадров, скорее всего, превысят 75 fps.

Разрешение визуализации

Oculus Rift обладает разрешением дисплея 2160×1200, но искажение линз требует, чтобы визуализированное изображение на экране было преобразовано для того, чтобы казаться нормальным для зрителя. Чтобы обеспечить адекватную плотность пикселей для преобразования, каждый глаз требует такого отрендеренного изображения, которое на самом деле больше, чем разрешение его половины экрана.

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

Этот процесс более подробно описан в SDK.

Динамически отображаемые «самозванцы»/биллборды

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

Вы можете использовать эту относительную нечувствительность к восприятию глубины на расстоянии для того, чтобы высвободить вычислительную мощность при использовании текстур «самозванцев» или биллбордов вместо цельного 3D пейзажа. Например, вместо рендеринга далёкого холма в 3D вы можете просто использовать плоское изображение холма на одном полигоне, который появляется в левом и правом изображениях для каждого глаза. Это изображение воспринимается глазами в виртуальной реальности так же, как и в традиционных трёхмерных играх.

Примечание: Эффективность этих «самозванцев» будет варьироваться в зависимости от размера задействованных объектов, индикаторов глубины внутри и вокруг этих объектов и контекста, в котором они появляются. [1] Вам следует провести индивидуальное тестирование с активными пользователями для того, чтобы гарантировать, что «самозванцы» выглядят и ощущаются правильно. Убедитесь в том, что «самозванцы» находятся достаточно далеко от камеры для того, чтобы незаметно сливаться, и что взаимодействие между реальными и «искусственными» элементами пейзажа не нарушает погружения.

Нормальное отображение и параллактическое отображение

Метод, известный как «нормальное отображение», обеспечивает реалистичные световые сигналы для передачи глубины и текстуры без добавления деталей вершин данной 3D модели. Хотя он широко используется в современных играх, он гораздо менее привлекателен при просмотре в стереоскопическом 3D. Поскольку нормальное отображение не учитывает бинокулярное несоответствие или параллакс движения, оно создает изображение, которое похоже на плоскую текстуру, нарисованную на модели объекта.

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

 

[1] Эллисон, Р. С., Гиллам, Б. Д., Вечеллио, Э. (2009). Бинокулярная дискриминация глубины и оценка глубины вне пространства взаимодействия. Журнал «Видение», 9, 1–14.

 

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

 

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