介绍
CAVE沉浸式系统包含单主机多屏和多主机多屏两种系统架构。此文档主要介绍融合输出与单机多屏输出,这两种方式都属于单主机多屏。均以使用UniCAVE输出到前左右下为例。引用的Package为UniCAVE2019。
融合输出
实现原理
(猜测)是将多块物理屏幕融合成为一块大屏,然后运行显示一个和大屏分辨率相同的应用程序即可。
实际效果
融合输出即打开一个Unity应用程序,将前后左右上下的画面分别输出到对应的部分。编辑器如图:
实际部署中如何投射到每个对应的显示器,这个过程不清楚,目前还未实际部署。
实现过程
-
可直接使用UniCAVE中的Prefab来进行修改,这里使用C4_Seq_4Displays_1PC。如果不需要VRPN及多主机,可以将相应的网络脚本以及VRPN脚本移除掉。
-
在Displays上添加PhysicalDisplayManager.cs,并点击Assign Children To This Manager,将所有的PhysicalDisplay注册到Manager。设置MachineName,勾选是否全屏。相关DisplayNumber及DisplayResolution并未发现有什么实质作用。
-
设置每个PhsicalDispaly。比较重要的参数有Transform的位置旋转、宽高、勾选Is 3D,设置Window Bounds,勾选Dual Pipe,这是因为测试中,使用PhysicalDisplayManager后主动立体失效,所以需要勾选Dual Pipe,并设置左右眼的ViewPort。以前屏幕为例,设置如图:
-
控制输出区域的参数基本为Window Bounds、Viewport。具体说明(个人理解):
- Window Bounds:当前每块物理屏幕的显示区域。==此参数也用来计算每个相机的投影矩阵。==X、Y为左下角屏幕坐标。W、H为宽高。
- Viewport:控制每块物理屏幕输出到融合后的整个物理屏幕的Viewport的哪个区域,这里示例的融合后的显示屏分辨率为1920x1080(好像UniCAVE是直接获取的Screen宽高,调整Game视图的分辨率是无效的)。X、Y为左下角屏幕坐标。W、H为宽高。
-
至此,运行即可看到如图效果:
单机多屏
实现原理
主要实现原理是将场景中的多个物理屏幕的相机画面输出到对应的物理屏幕。此方式可以使用主动立体,设置方式为ProjectSetting->Player->XRSettings,勾选VirtualRealitySupported,清空SDKs列表,添加StereoDisplay(non head-mounted)。并需要在ProjectSetting->Player->OtherSettings的Windows GraphicsAPI使用DirectX。
实际效果
打开一个Unity应用程序,将前后左右上下的画面分别输出到对应的显示器。编辑器如图:
实现过程
-
单机多屏不需要挂载PhysicalDisplayManager.cs脚本。
-
可直接使用UniCAVE中的Prefab来进行修改,这里使用C4_Seq_4Displays_1PC。如果不需要VRPN及多主机,可以将相应的网络脚本以及VRPN脚本移除掉。
-
设置每个PhsicalDispaly。比较重要的参数有Transform的位置旋转、宽高、勾选Use Specific Display,设置Display编号,勾选Is 3D,设置Window Bounds(设置方法可参考融合输出),以前屏幕为例,设置如图:
-
至此,运行即可看到如图效果:
参考连接
官网
UniCAVE
UniCAVE_Examples
UniCAVE 2019 Package Installation
Scripts Documentation
Setup Guide
Prefab Documentation