This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
基础
专业(SIM)
UnigineEditor
界面概述
资源工作流程
Version Control
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
统一的Unigine着色器语言 UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
材质和着色器
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
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
Tutorials

立体渲染

Unigine为所有受支持的视频卡开箱即用地支持“随心所欲”的立体3D渲染。由Unigine驱动的3D立体可视化即使在大视野内或在三台显示​​器上也能提供真正的沉浸式体验。它是DirectX和Vulkan API的完全本机解决方案,不需要安装任何特殊的驱动程序。根据设置的立体声模式,唯一的硬件要求是立体观看所需的设备(例如,主动式快门眼镜,被动式偏光或立体眼镜)或专用的输出设备。

注意
使用立体声渲染时,您可能会注意到性能下降。之所以会发生这种情况,是因为所有视口实际上每帧都渲染两次。

立体声模式#

Unigine支持的应用程序有几种立体声渲染模式。要启用它们,不需要任何特殊步骤或修改。只需使用一个现成的插件库,设置所需的启动选项,您的应用程序即可使用立体声!

立体声库位于UNIGINE SDK的lib/文件夹中。

分开的图像#

此模式用于为每只眼睛输出两个单独的图像。它可以与任何支持单独图像输出的VR / AR输出设备一起使用,例如用于3D视频眼镜或头盔(HMD)。请参见下面有关渲染的更多详细信息

要启动单独的图像立体声模式,请加载Separate插件

Separate images stereo mode

单独的图像立体声模式

Quad Buffered Stereo#

此模式使用能够进行四倍缓冲的NVIDIA Quadro视频卡中对3D立体声的最佳本机硬件支持。 Unigine利用它来获得良好的性能。但是,其他NVIDIA卡也支持此模式,并且性能不会降低。

要启用Quad Buffered Stereo模式,请遵循说明

Oculus Rift#

此模式用于支持Oculus Rift头戴式显示器(也提供HD模式)。

要启动Oculus Rift模式,请加载 Oculus插件

Anaglyph Mode#

立体浮雕立体可以通过红-青立体浮雕眼镜观看。请参见下面有关渲染的更多详细信息

要启动Anaglyph立体声模式:

  1. 在启动时指定 STEREO_ANAGLYPH 定义(以及其他必需的 CLI 参数)。
  2. 运行64位应用程序(或其调试版本)。
命令行
main_x64 -extern_define STEREO_ANAGLYPH

Anaglyph stereo mode

立体立体立体声模式

Interlaced Lines#

隔行立体声模式与隔行立体声监视器和偏光3D眼镜一起使用。请参见下面有关渲染的更多详细信息

注意
在此模式下,图像的垂直分辨率降低一半。

要启动隔行扫描立体声模式:

  1. 在启动时指定 STEREO_INTERLACED 定义(以及其他必需的 CLI 参数)。
  2. 运行64位应用程序(或其调试版本)。
命令行
main_x64 -extern_define STEREO_INTERLACED

Interlaced lines stereo mode

隔行扫描线立体声模式

Split Stereo#

无玻璃的MasterImage 3D显示器支持水平和垂直立体声模式。 在图形芯片驱动程序设置中选择了相同的模式(水平或垂直模式)。 请参见下面有关渲染的更多详细信息

要启动水平立体声模式:

  1. 在启动时指定 STEREO_HORIZONTAL 定义(以及其他必需的 CLI 参数)。
  2. 运行64位应用程序(或其调试版本)。
命令行
main_x64 -extern_define STEREO_HORIZONTAL

Horizontal stereo mode

水平立体声模式

要启动垂直立体声模式:

  1. 在启动时指定 STEREO_VERTICAL 定义(以及其他必需的 CLI 参数)。
  2. 运行64位应用程序(或其调试版本)。
命令行
main_x64 -extern_define STEREO_VERTICAL

Vertical stereo mode

垂直立体声模式

立体渲染模型#

立体渲染模型使用不对称的平截头体平行轴投影(称为离轴)来创建最佳的立体对,而没有垂直视差(垂直向角落移动)。
,将创建两个具有平行视线的相机,每只眼睛一个。它们相对于中心位置在水平方向上分开(此距离称为眼睛分开距离,可以进行调整以避免立体视觉引起的眼睛疲劳)。当远平面与近平面平行时,两个摄像机都使用不对称的视锥,但它们相对于视轴不对称。它可以将两个摄像机的投影平面正确地对准零视差平面(即屏幕)。不对称的平截头体平行轴投影不会在拐角处产生任何扭曲,从而使立体图像完全舒适。

渲染时,位于相机焦距(即其投影平面)前面的对象会被视为从屏幕弹出。屏幕后面的对象似乎在屏幕后面,传达了景深的印象。

Unigine立体渲染管线#

Unigine引擎使用适当的后期处理着色器为两只眼睛计算图像。应用哪种着色器取决于所选的立体声模式。

  • Anaglyph 模式使用 post_stereo_anaglyph 后处理材质和仅一个渲染目标。 两个图像由红色和蓝色通道过滤,叠加并输出到屏幕上,以通过有色眼镜观看。
  • 分离图像 模式使用 post_stereo_separate 后处理材质。 它创建两个渲染目标,并将相对于彼此偏移的左眼图像和右眼图像输出到两个单独的监视器上。
  • Oculus Rift 模式使用 post_stereo_separate 后处理材质。 左眼和右眼的图像被输出到屏幕的相应一半,Oculus Rift显示屏的镜头使它们失真,以使眼睛察觉到该图像的方式与在现实世界。
  • Quad Buffer模式的情况下,使用 post_stereo_separate 后处理材质。
  • 隔行扫描线 模式使用 post_stereo_interlaced 后处理材质。 此模式基于隔行编码。例如,左眼的图像可以显示在具有一种偏振的奇数行像素上,而右眼的图像可以显示在具有另一种偏振的偶数行上。
  • 水平和垂直 立体模式仅使用一个渲染目标。之后,图形芯片驱动程序将其作为水平或垂直对齐的两个图像(取决于设置模式)进行处理,并将其拉伸到屏幕上以创建立体声效果。 如果使用水平立体模式,则会应用 post_stereo_horizo​​ntal 后处理材质。 在 vertical 立体声模式下,将使用 post_stereo_vertical 后处理材质。

如果禁用了立体渲染(例如,当3D Vision应用程序切换到窗口模式时),则使用 post_stereo_replicate 材质,并且后处理着色器将创建一个简单的单色图像(如果存在,则所有视口都相同)很多)。当引擎未渲染立体声对时,此材质允许切换到正常渲染并避免黑屏。

立体渲染经过优化,性能友好,同时又不影响视觉质量。例如,阴影贴图仅渲染一次并用于双眼;几何图形剔除也仅执行一次。大多数渲染通道仍是翻倍的,这就是为什么关闭不必要的通道或将全局着色器质量设置为较低级别以最大程度地降低性能下降的原因。

定制立体声#

立体声渲染可以通过以下代码控制:

  • 立体声脚本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控制台命令。

最新更新: 2024-12-13
Build: ()