This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

Стерео рендеринг

Unigine поддерживает "легкий для глаз" стерео 3D-рендеринг "из коробки" для всех поддерживаемых видеокарт. Стереоскопическая 3D-визуализация на базе Unigine обеспечивает поистине захватывающий опыт даже в большом поле зрения или на трех мониторах. Это полностью родное решение для API DirectX и OpenGL, которое не требует установки каких-либо специальных драйверов. В зависимости от установленного стереорежима единственными требованиями к оборудованию являются оборудование, необходимое для стереоскопического просмотра (например, очки с активным затвором, пассивные поляризованные или анаглифические) или специальное устройство вывода.

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

Стерео режимы#

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

Стереобиблиотеки находятся в папке lib/ UNIGINE SDK.

Отдельные изображения#

Внимание
Функционал, описанный в этой главе, недоступен в Community редакции SDK.
Чтобы использовать этот функционал вам необходимо получить лицензию на Sim SDK.

Этот режим служит для вывода двух отдельных изображений для каждого глаза. Его можно использовать с любыми устройствами вывода VR / AR, которые поддерживают раздельный вывод изображений, например для 3D-видео очков или шлемов (HMD). См. Дополнительные сведения о рендеринге ниже .

Чтобы запустить стереорежим с отдельными изображениями, загрузите плагин Separate.

Separate images stereo mode

Стереорежим с отдельными изображениями

Quad Buffered Stereo#

Внимание
Функционал, описанный в этой главе, недоступен в Community редакции SDK.
Чтобы использовать этот функционал вам необходимо получить лицензию на Sim SDK.

В этом режиме используется лучшая из аппаратной поддержки 3D стерео в видеокартах NVIDIA Quadro, которые поддерживают четырехкратную буферизацию. Unigine использует это для достижения хорошей производительности. Однако другие карты NVIDIA также поддерживают этот режим и не демонстрируют более низкого уровня производительности.

Чтобы включить режим Quad Buffered Stereo, следуйте инструкциям .

Oculus Rift#

Этот режим используется для поддержки головного дисплея Oculus Rift (также доступен режим HD).

Чтобы запустить режим Oculus Rift, загрузите плагин Oculus .

Anaglyph Mode#

Анаглифическое стерео просматривается через красно-голубые анаглифические очки. См. Дополнительные сведения о рендеринге ниже .

Чтобы запустить стерео режим Анаглиф:

  1. Укажите определение STEREO_ANAGLYPH при запуске (вместе с другими обязательными аргументами CLI ).
  2. Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_ANAGLYPH

Anaglyph stereo mode

Анаглифический стерео режим

Interlaced Lines#

Режим чересстрочного стерео используется с мониторами с чересстрочной разверткой и поляризованными 3D-очками. См. Дополнительные сведения о рендеринге ниже .

Примечание
В этом режиме разрешение изображения по вертикали уменьшается вдвое.

Чтобы запустить стереорежим с чересстрочной разверткой:

  1. Укажите определение STEREO_INTERLACED при запуске (вместе с другими обязательными аргументами CLI ).
  2. Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_INTERLACED

Interlaced lines stereo mode

Стереорежим с чересстрочными линиями

Split Stereo#

Горизонтальный и вертикальный стереорежимы поддерживаются для дисплеев MasterImage 3D без стекла. Такой же режим (горизонтальный или вертикальный) выбран в настройках драйвера графического чипа. Подробнее о рендеринге см. Ниже .

Чтобы запустить режим горизонтального стерео:

  1. Укажите определение STEREO_HORIZONTAL при запуске (вместе с другими обязательными аргументами CLI ).
  2. Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_HORIZONTAL

Horizontal stereo mode

Горизонтальный стерео режим

Чтобы запустить вертикальный стереорежим:

  1. Укажите определение STEREO_VERTICAL при запуске (вместе с другими обязательными аргументами CLI ).
  2. Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_VERTICAL

Vertical stereo mode

Вертикальный стереорежим

Стерео модель рендеринга#

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

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

Конвейер стерео рендеринга Unigine#

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

  • В режиме Анаглиф используется материал постобработки post_stereo_anaglyph и только одна цель рендеринга. Два изображения фильтруются по красному и синему каналам, накладываются друг на друга и выводятся на экран для просмотра через цветные очки.
  • В режиме разделения изображений используется материал постобработки post_stereo_separate . Он создает две цели рендеринга и выводит изображения для левого и правого глаза, смещенные относительно друг друга, на два отдельных монитора.
  • В режиме Oculus Rift используется материал постобработки post_stereo_separate . Изображения для левого и правого глаза выводятся на соответствующую половину экрана, и линзы дисплея Oculus Rift искажают их, чтобы глаза воспринимали эти изображения так же, как в реальном мире.
  • В случае режима Quad Buffer используется материал постобработки post_stereo_separate .
  • В режиме Interlaced lines используется материал постобработки post_stereo_interlaced . Этот режим основан на чересстрочном кодировании. Например, изображение для левого глаза может отображаться на нечетных строках пикселей с одной поляризацией, а изображение для правого глаза - на четных строках с другой поляризацией.
  • Горизонтальный и вертикальный стереорежимы используют только одну цель рендеринга. После этого драйвер графического чипа обрабатывает его как два изображения, выровненных по горизонтали или вертикали (в зависимости от установленного режима), и растягивает их на экране для создания стереоэффекта. Если используется горизонтальный стерео режим, применяется материал постобработки post_stereo_horizontal . В случае вертикального стереорежима используется материал постобработки post_stereo_vertical .

Если стерео-рендеринг отключен (например, когда приложение 3D Vision переключается в оконный режим), используется материал post_stereo_replicate , и шейдер постобработки создает простое моно-изображение (то же самое для всех окон просмотра, если есть много). Этот материал позволяет переключиться на нормальный рендеринг и избежать черного экрана, когда движок не рендерит стереопары.

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

Просмотр настроек#

Настройки, позволяющие настроить стерео для комфортного просмотра, находятся на дополнительной вкладке Stereo в главном меню . Они доступны для всех стереорежимов.

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

Настройка стерео#

Стерео-рендерингом можно управлять с помощью следующего кода:

  • Стерео скрипт stereo.h (находится в папке data/core/scripts/system). По умолчанию он включен в системный скрипт unigine.cpp. Вы можете изменить сценарий stereo.h, чтобы изменить конфигурацию камеры по умолчанию.
  • Если вы решите не включать стереосценарий в системный, вы можете установить соответствующее определение стереорежима и управлять параметрами стерео напрямую через engine.render.setStereoRadius() и engine.render.setStereoDistance() функций. В этом случае вам необходимо реализовать свою собственную конфигурацию камеры в функции render() системного скрипта:
    Исходный код (UnigineScript)
    int render() {
    	
    	#ifdef STEREO_MODE
    		// implementation of a custom camera configuration
    	#endif
    	
    	return 1;
    }
Примечание
Определение STEREO_MODE должно быть указано при запуске приложения в качестве аргумента параметра командной строки -extern_define.

Скрытая область#

Некоторые пиксели не видны в VR. Вы можете оптимизировать производительность рендеринга, пропустив их. Для таких пикселей доступны следующие режимы отсечения:

  • Режим отбраковки на основе OpenVR - отбраковка выполняется с использованием сеток, возвращаемых OpenVR. Обратите внимание, что результат отбраковки зависит от используемого HMD.
  • Пользовательский режим отсечения: отсечение выполняется с использованием овальной или круглой сетки, определяемой настраиваемыми параметрами.

Вы можете указать настраиваемую сетку , представляющую такую ​​скрытую область, настроить ее преобразование и назначить ее области просмотра.

Чтобы установить значение через консоль, используйте консольную команду render_stereo_hidden_area.

Последнее обновление: 08.08.2022
Build: ()