Видеоуроки
Interface
Essentials
Advanced
Полезные советы
Принципы работы
Свойства (properties)
Компонентная Система
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров узла
Setting Up Materials
Setting Up Properties
Освещение
Landscape Tool
Sandworm (Experimental)
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Objects
Sound Objects
Pathfinding Objects
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
UnigineScript
C++
C#
Унифицированный язык шейдеров UUSL
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Art Samples
Tutorials

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

Unigine supports "easy on the eye" stereo 3D rendering out-of-the box for all supported video cards. Unigine-powered 3D stereoscopic visualization provides the truly immersive experience even at the large field of view or across three monitors. It is a completely native solution for both DirectX and OpenGL APIs and does not require installing any special drivers. Depending on the set stereo mode, the only hardware requirements are the equipment necessary for stereoscopic viewing (for example, active shutter glasses, passive polarized or anaglyph ones) or a dedicated output device.Unigine поддерживает "легкий для глаз" стерео 3D-рендеринг "из коробки" для всех поддерживаемых видеокарт. Стереоскопическая 3D-визуализация на базе Unigine обеспечивает поистине захватывающий опыт даже в большом поле зрения или на трех мониторах. Это полностью родное решение для API DirectX и OpenGL, которое не требует установки каких-либо специальных драйверов. В зависимости от установленного стереорежима единственными требованиями к оборудованию являются оборудование, необходимое для стереоскопического просмотра (например, очки с активным затвором, пассивные поляризованные или анаглифические) или специальное устройство вывода.

Примечание
You may notice a drop in performance when using stereo rendering. This happens because all viewports are effectively rendered twice each frame.Вы можете заметить падение производительности при использовании стерео рендеринга. Это происходит потому, что все окна просмотра эффективно визуализируются дважды за каждый кадр.

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

There are several modes of stereo rendering available for Unigine-powered application. To enable them, no special steps or modifications are required. Just use a ready-compiled plugin library, set the desired start-up option and you application is stereo-ready!Для приложения на платформе Unigine доступно несколько режимов стерео-рендеринга. Для их включения никаких специальных действий или модификаций не требуется. Просто используйте готовую скомпилированную библиотеку плагинов, установите желаемый вариант запуска, и ваше приложение готово для стерео!

Stereo libraries are located in the lib/ folder of the UNIGINE SDK.Стереобиблиотеки находятся в папке lib/ UNIGINE SDK.

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

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

This mode serves to output two separate images for each of the eye. It can be used with any VR/AR output devices that support separate images output, e.g. for 3D video glasses or helmets (HMD). See further details on rendering below.Этот режим служит для вывода двух отдельных изображений для каждого глаза. Его можно использовать с любыми устройствами вывода VR / AR, которые поддерживают раздельный вывод изображений, например для 3D-видео очков или шлемов (HMD). См. Дополнительные сведения о рендеринге ниже .

To launch Separate images stereo mode, load the AppSeparate plugin.Чтобы запустить стереорежим с отдельными изображениями, загрузите плагин AppSeparate .

Separate images stereo mode

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

Quad Buffered StereoQuad Buffered Stereo#

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

This mode uses the best of the native hardware support of 3D stereo in NVIDIA Quadro video cards which are capable of quad buffering. Unigine utilizes it to gain a good performance. However, other NVIDIA cards also support this mode and show no lower level of performance.В этом режиме используется лучшая из аппаратной поддержки 3D стерео в видеокартах NVIDIA Quadro, которые поддерживают четырехкратную буферизацию. Unigine использует это для достижения хорошей производительности. Однако другие карты NVIDIA также поддерживают этот режим и не демонстрируют более низкого уровня производительности.

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

Oculus RiftOculus Rift#

This mode is used to support the Oculus Rift head-mounted display (the HD mode is also available).Этот режим используется для поддержки головного дисплея Oculus Rift (также доступен режим HD).

To launch Oculus Rift mode, load the AppOculus plugin.Чтобы запустить режим Oculus Rift, загрузите плагин AppOculus .

Anaglyph ModeAnaglyph Mode#

Anaglyph stereo is viewed with red-cyan anaglyph glasses. See further details on rendering below.Анаглифическое стерео просматривается через красно-голубые анаглифические очки. См. Дополнительные сведения о рендеринге ниже .

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

  1. Specify the STEREO_ANAGLYPH definition on the start-up (together with other required CLI arguments).Укажите определение STEREO_ANAGLYPH при запуске (вместе с другими обязательными аргументами CLI ).
  2. Run the 64-bit application (or its debugging version).Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_ANAGLYPH

Anaglyph stereo mode

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

Interlaced LinesInterlaced Lines#

Interlaced stereo mode is used with interlaced stereo monitors and polarized 3D glasses. See further details on rendering below.Режим чересстрочного стерео используется с мониторами с чересстрочной разверткой и поляризованными 3D-очками. См. Дополнительные сведения о рендеринге ниже .

Примечание
In this mode, the vertical resolution of the image is dropped in half.В этом режиме разрешение изображения по вертикали уменьшается вдвое.

To launch the interlaced lines stereo mode:Чтобы запустить стереорежим с чересстрочной разверткой:

  1. Specify the STEREO_INTERLACED definition on the start-up (together with other required CLI arguments).Укажите определение STEREO_INTERLACED при запуске (вместе с другими обязательными аргументами CLI ).
  2. Run the 64-bit application (or its debugging version).Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_INTERLACED

Interlaced lines stereo mode

Interlaced lines stereo modeСтереорежим с чересстрочными линиями

Split StereoSplit Stereo#

Horizontal and Vertical stereo modes are supported for glass-free MasterImage 3D displays. The same mode (a horizontal or a vertical one) is selected in the graphics chip driver settings. See further details on rendering below.Горизонтальный и вертикальный стереорежимы поддерживаются для дисплеев MasterImage 3D без стекла. Такой же режим (горизонтальный или вертикальный) выбран в настройках драйвера графического чипа. Подробнее о рендеринге см. Ниже .

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

  1. Specify the STEREO_HORIZONTAL definition on the start-up (together with other required CLI arguments).Укажите определение STEREO_HORIZONTAL при запуске (вместе с другими обязательными аргументами CLI ).
  2. Run the 64-bit application (or its debugging version).Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_HORIZONTAL

Horizontal stereo mode

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

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

  1. Specify the STEREO_VERTICAL definition on the start-up (together with other required CLI arguments).Укажите определение STEREO_VERTICAL при запуске (вместе с другими обязательными аргументами CLI ).
  2. Run the 64-bit application (or its debugging version).Запустите 64-битное приложение (или его отладочную версию).
Shell-команды
main_x64 -extern_define STEREO_VERTICAL

Vertical stereo mode

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

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

The stereo rendering model uses asymmetric frustum parallel axis projection (called off-axis) to create optimal stereo pairs without vertical parallax (vertical shift towards the corners).
It means, two cameras with parallel lines of sight are created, one for each eye. They are separated horizontally relative to the central position (this distance is called the eye separation distance and can be adjusted to avoid eyestrain from stereoscopic viewing). Both cameras use asymmetric frustum, when the far plane is parallel to the near plane, yet they are not symmetrical about the view axis. It enables to correctly align projection planes of two cameras to the zero parallax plane (i.e. the screen). Asymmetric frustum parallel axis projection produces no distortions in the corners making the stereoscopic image completely comfortable to the eye.
Модель стерео-рендеринга использует асимметричную проекцию усеченной параллельной оси (называемую внеосевой ) для создания оптимальных стереопар без вертикального параллакса (вертикальный сдвиг к углам). (Br) Это означает создаются две камеры с параллельными линиями обзора, по одной на каждый глаз. Они разделены по горизонтали относительно центрального положения (это расстояние называется расстоянием разделения глаз, и его можно регулировать, чтобы избежать утомления глаз от стереоскопического просмотра). Обе камеры используют асимметричную усеченную вершину, когда дальняя плоскость параллельна ближней плоскости, но они не симметричны относительно оси обзора. Это позволяет правильно выровнять плоскости проекции двух камер относительно плоскости нулевого параллакса (т.е. экрана). Асимметричная проекция на параллельную ось усеченного конуса не вызывает искажений в углах, делая стереоскопическое изображение полностью комфортным для глаза.

When rendered, objects that get in front of the camera's focal distance (that is, its projection plane) are perceived as popping out of the screen; objects that are behind it appear to be behind the screen and convey the impression of scene depth.При визуализации объекты, которые попадают на расстояние фокусного расстояния камеры (то есть ее плоскость проекции), воспринимаются как выскакивающие из экрана; объекты, находящиеся за ним, кажутся скрытыми за экраном и создают впечатление глубины сцены.

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

Unigine engine calculates the images for both eyes using the appropriate postprocess shader. Which shader is applied depends on the chosen stereo mode.Движок Unigine вычисляет изображения для обоих глаз, используя соответствующий шейдер постобработки. Какой шейдер применяется, зависит от выбранного стереорежима.

  • Anaglyph mode uses the post_stereo_anaglyph postprocess material and only one render target. Two images are filtered by red and blue channels, superimposed and output onto the screen to be viewed through colored glasses.В режиме Анаглиф используется материал постобработки post_stereo_anaglyph и только одна цель рендеринга. Два изображения фильтруются по красному и синему каналам, накладываются друг на друга и выводятся на экран для просмотра через цветные очки.
  • Separate images mode uses the post_stereo_separate postprocess material. It creates two render targets and outputs left and right eye images that are offset relative to each other onto the two separate monitors. В режиме разделения изображений используется материал постобработки post_stereo_separate . Он создает две цели рендеринга и выводит изображения для левого и правого глаза, смещенные относительно друг друга, на два отдельных монитора.
  • Oculus Rift mode uses the post_stereo_separate postprocess material. Images for the left and right eyes are output onto the corresponding half of the screen and lenses of the Oculus Rift display distort them to make the eyes perceive this images the same way as in the real world.В режиме Oculus Rift используется материал постобработки post_stereo_separate . Изображения для левого и правого глаза выводятся на соответствующую половину экрана, и линзы дисплея Oculus Rift искажают их, чтобы глаза воспринимали эти изображения так же, как в реальном мире.
  • In case of Quad Buffer mode, the post_stereo_separate postprocess material is used.В случае режима Quad Buffer используется материал постобработки post_stereo_separate .
  • Interlaced lines mode uses the post_stereo_interlaced postprocess material. This mode is based on the interlaced coding. For example, the image for the left eye can be displayed on the odd rows of pixels with one polarization and the image for the right eye - on the even rows with other polarization.В режиме Interlaced lines используется материал постобработки post_stereo_interlaced . Этот режим основан на чересстрочном кодировании. Например, изображение для левого глаза может отображаться на нечетных строках пикселей с одной поляризацией, а изображение для правого глаза - на четных строках с другой поляризацией.
  • Horizontal and Vertical stereo modes use only one render target. After that, the graphics chip driver handles it as two images aligned horizontally or vertically (depending on the set mode) and stretches them onto the screen to create a stereo effect. If the horizontal stereo mode is used, the post_stereo_horizontal postprocess material is applied. In case of the vertical stereo mode, the post_stereo_vertical postprocess material is used. Горизонтальный и вертикальный стереорежимы используют только одну цель рендеринга. После этого драйвер графического чипа обрабатывает его как два изображения, выровненных по горизонтали или вертикали (в зависимости от установленного режима), и растягивает их на экране для создания стереоэффекта. Если используется горизонтальный стерео режим, применяется материал постобработки post_stereo_horizontal . В случае вертикального стереорежима используется материал постобработки post_stereo_vertical .

If stereo rendering is disabled (for example, when 3D Vision application is switched to the windowed mode), post_stereo_replicate material is used and the postprocess shader creates a simple mono image (the same for all viewports, if there are many). This material allows to switch to normal rendering and avoid the black screen when the engine is not rendering stereo pairs.Если стерео-рендеринг отключен (например, когда приложение 3D Vision переключается в оконный режим), используется материал post_stereo_replicate , и шейдер постобработки создает простое моно-изображение (то же самое для всех окон просмотра, если есть много). Этот материал позволяет переключиться на нормальный рендеринг и избежать черного экрана, когда движок не рендерит стереопары.

Stereo rendering is optimized to be performance friendly while not compromising the visual quality. For example, shadow maps are only rendered once and used for both eyes; geometry culling is also performed only once. Most of the rendering passes are still doubled, that is why it might make sense to turn off unnecessary passes or set a global shader quality to lower level to minimize the performance drop.Стерео рендеринг оптимизирован для повышения производительности без ущерба для качества изображения. Например, карты теней визуализируются только один раз и используются для обоих глаз; отбраковка геометрии также выполняется только один раз. Большинство проходов рендеринга по-прежнему удваиваются, поэтому имеет смысл отключить ненужные проходы или установить более низкое качество глобального шейдера, чтобы минимизировать падение производительности.

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

Settings that allow adjusting stereo for comfortable viewing are found on the additional Stereo tab in the main menu. They are available for all stereo modes.Настройки, позволяющие настроить стерео для комфортного просмотра, находятся на дополнительной вкладке Stereo в главном меню . Они доступны для всех стереорежимов.

Distance Distance to the screen. This is a distance in world space to the zero parallax plane, i.e. to the point where two views line up.
Примечание
The higher the value, the further from the viewer the rendered scene is and the lesser stereo effect is.The higher the value, the further from the viewer the rendered scene is and the lesser stereo effect is.
The higher the value, the further from the viewer the rendered scene is and the lesser stereo effect is.
Расстояние до экрана. Это расстояние в мировом пространстве до плоскости нулевого параллакса, то есть до точки, где выстраиваются два изображения.
Примечание
The higher the value, the further from the viewer the rendered scene is and the lesser stereo effect is.Чем выше значение, тем дальше от зрителя находится визуализированная сцена и тем меньше стереоэффект.
Radius Half of the eye separation distance. The eye separation distance is the distance of interaxial separation between the cameras used to create stereo pairs.
Примечание
The higher the value, the stronger stereo effect is.The higher the value, the stronger stereo effect is.
The higher the value, the stronger stereo effect is.
Половина расстояния между глазами. Расстояние между глазами - это расстояние между осями между камерами, используемыми для создания стереопар.
Примечание
The higher the value, the stronger stereo effect is.Чем выше значение, тем сильнее стереоэффект.
Offset An offset after perspective projection.Смещение после перспективной проекции.

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

Stereo rendering can be controlled via the following code:Стерео-рендерингом можно управлять с помощью следующего кода:

  • Stereo script stereo.h (located in data/core/scripts/system folder). By default it is included in the system script unigine.cpp. You can modify the stereo.h script in order to change the default camera configuration.Стерео скрипт stereo.h (находится в папке data/core/scripts/system). По умолчанию он включен в системный скрипт unigine.cpp. Вы можете изменить сценарий stereo.h, чтобы изменить конфигурацию камеры по умолчанию.
  • If you choose not to include the stereo script into the system one, you can set the appropriate stereo mode definition and control stereo parameters directly via engine.render.setStereoRadius() and engine.render.setStereoDistance() functions. In this case, you need to implement your own camera configuration in the render() function of the system script:
    Исходный код (UnigineScript)
    int render() {
    	
    	#ifdef STEREO_MODE
    		// implementation of a custom camera configuration
    	#endif
    	
    	return 1;
    }
    Если вы решите не включать стереосценарий в системный, вы можете установить соответствующее определение стереорежима и управлять параметрами стерео напрямую через engine.render.setStereoRadius() и engine.render.setStereoDistance() функций. В этом случае вам необходимо реализовать свою собственную конфигурацию камеры в функции render() системного скрипта:
    Исходный код (UnigineScript)
    int render() {
    	
    	#ifdef STEREO_MODE
    		// implementation of a custom camera configuration
    	#endif
    	
    	return 1;
    }
Примечание
The STEREO_MODE definition should be specified on the application start-up as the argument of the -extern_define command-line option.Определение STEREO_MODE должно быть указано при запуске приложения в качестве аргумента параметра командной строки -extern_define.

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

Some pixels are not visible in VR. You can optimize rendering performance by skipping them. The following culling modes are available for such pixels:Некоторые пиксели не видны в VR. Вы можете оптимизировать производительность рендеринга, пропустив их. Для таких пикселей доступны следующие режимы отсечения:

  • OpenVR-based culling mode - culling is performed using meshes returned by OpenVR. Take note, that culling result depends on HMD used. Режим отбраковки на основе OpenVR - отбраковка выполняется с использованием сеток, возвращаемых OpenVR. Обратите внимание, что результат отбраковки зависит от используемого HMD.
  • Custom culling mode - culling is performed using an oval or circular mesh determined by custom adjustable parameters. Пользовательский режим отсечения: отсечение выполняется с использованием овальной или круглой сетки, определяемой настраиваемыми параметрами.

You can specify a custom mesh representing such hidden area, adjust its transformation and assign it to a viewport.Вы можете указать настраиваемую сетку , представляющую такую ​​скрытую область, настроить ее преобразование и назначить ее области просмотра.

To set the value via the console, use the render_stereo_hidden_area console command.Чтобы установить значение через консоль, используйте консольную команду render_stereo_hidden_area.

Статьи в этом разделе

Последнее обновление: 25.11.2020