UniCAVE实现融合输出或多屏输出

介绍

CAVE沉浸式系统包含单主机多屏和多主机多屏两种系统架构。此文档主要介绍融合输出与单机多屏输出,这两种方式都属于单主机多屏。均以使用UniCAVE输出到前左右下为例。引用的Package为UniCAVE2019。

融合输出

实现原理

(猜测)是将多块物理屏幕融合成为一块大屏,然后运行显示一个和大屏分辨率相同的应用程序即可。

实际效果

融合输出即打开一个Unity应用程序,将前后左右上下的画面分别输出到对应的部分。编辑器如图:请添加图片描述请添加图片描述

实际部署中如何投射到每个对应的显示器,这个过程不清楚,目前还未实际部署。

实现过程

  1. 可直接使用UniCAVE中的Prefab来进行修改,这里使用C4_Seq_4Displays_1PC。如果不需要VRPN及多主机,可以将相应的网络脚本以及VRPN脚本移除掉。

  2. 在Displays上添加PhysicalDisplayManager.cs,并点击Assign Children To This Manager,将所有的PhysicalDisplay注册到Manager。设置MachineName,勾选是否全屏。相关DisplayNumber及DisplayResolution并未发现有什么实质作用。

  3. 设置每个PhsicalDispaly。比较重要的参数有Transform的位置旋转、宽高、勾选Is 3D,设置Window Bounds,勾选Dual Pipe,这是因为测试中,使用PhysicalDisplayManager后主动立体失效,所以需要勾选Dual Pipe,并设置左右眼的ViewPort。以前屏幕为例,设置如图:请添加图片描述

  4. 控制输出区域的参数基本为Window Bounds、Viewport。具体说明(个人理解):

    1. Window Bounds:当前每块物理屏幕的显示区域。==此参数也用来计算每个相机的投影矩阵。==X、Y为左下角屏幕坐标。W、H为宽高。请添加图片描述
    2. Viewport:控制每块物理屏幕输出到融合后的整个物理屏幕的Viewport的哪个区域,这里示例的融合后的显示屏分辨率为1920x1080(好像UniCAVE是直接获取的Screen宽高,调整Game视图的分辨率是无效的)。X、Y为左下角屏幕坐标。W、H为宽高。请添加图片描述
  5. 至此,运行即可看到如图效果:请添加图片描述

单机多屏

实现原理

主要实现原理是将场景中的多个物理屏幕的相机画面输出到对应的物理屏幕。此方式可以使用主动立体,设置方式为ProjectSetting->Player->XRSettings,勾选VirtualRealitySupported,清空SDKs列表,添加StereoDisplay(non head-mounted)。并需要在ProjectSetting->Player->OtherSettings的Windows GraphicsAPI使用DirectX。

实际效果

打开一个Unity应用程序,将前后左右上下的画面分别输出到对应的显示器。编辑器如图:请添加图片描述请添加图片描述

实现过程

  1. 单机多屏不需要挂载PhysicalDisplayManager.cs脚本。

  2. 可直接使用UniCAVE中的Prefab来进行修改,这里使用C4_Seq_4Displays_1PC。如果不需要VRPN及多主机,可以将相应的网络脚本以及VRPN脚本移除掉。

  3. 设置每个PhsicalDispaly。比较重要的参数有Transform的位置旋转、宽高、勾选Use Specific Display,设置Display编号,勾选Is 3D,设置Window Bounds(设置方法可参考融合输出),以前屏幕为例,设置如图:请添加图片描述

  4. 至此,运行即可看到如图效果:请添加图片描述
    请添加图片描述

参考连接

官网
UniCAVE
UniCAVE_Examples
UniCAVE 2019 Package Installation
Scripts Documentation
Setup Guide
Prefab Documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024春秋杯网络安全联赛夏季赛Crypto(AK)解题思路及用到的软件

2024春秋杯网络安全联赛夏季赛Crypto(AK) 2024春秋杯网络安全联赛夏季赛Crypto解题思路以及用到的软件 所有题用到的软件 1.vm(虚拟机kali)和Ubuntu,正常配置即可B站有很多。 2.Visual Studio Code(里面要配置python,crypto库和Sagemath数学软件系统S…

基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)

基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理,还缩短高校教师成果信息管理流程,使其系统化…

LINUX之MMC子系统分析

目录 1. 概念1.1 MMC卡1.2 SD卡1.3 SDIO 2. 总线协议2.1 协议2.2 一般协议2.3 写数据2.4 读数据2.5 卡模式2.5.1 SD卡模式2.5.2 eMMC模式 2.6 命令2.6.1 命令类2.6.2 详细命令 2.7 应答2.8 寄存器2.8.1 OCR2.8.2 CID2.8.3 CSD2.8.4 RCA2.8.5 扩展CSD 3. 关键结构3.1 struct sdh…

数学建模(7)——Logistic模型

一、马尔萨斯人口模型 import numpy as np import matplotlib.pyplot as plt# 初始人口 N0 100 # 人口增长率 r 0.02 # 时间段(年) t np.linspace(0, 200, 200)# 马尔萨斯人口模型 N N0 * np.exp(r * t)# 绘图 plt.plot(t, N, labelPopulation) plt.…

【数据结构】堆的实现以及建堆算法和堆排序

【数据结构】堆的实现以及建堆算法和堆排序 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】堆的实现以及建堆算法和堆排序前言一.堆的实现1.1 堆数据的插入1.2堆数据的删除 二.建堆算法和堆排序2.1思路分析2.…

java的转义字符,注释和代码规范

目录 1.Java运行机制 Java开发快速入门 Java开发注意事项和细节说明 Java学习方法 2.Java的转义字符 Java常用的转义字符 代码示例: 转义字符练习 3.初学java易犯错误 4.注释(comment) 单行注释与多行注释 文档注释 5.Java代码规…

Spark轨迹大数据处理_scalaSpark代码实两个GIS点(经纬度点)之间的方位角计算

终于有时间来搞一搞这个专栏了 首先声明一下 1、我这个代码是基于一个简化方位角模型,忽略了地球的曲率,适用于距离相对较短的距离。因为业务相关,这个方位角两个点的距离计算不会超过1000km。 2、我这个方位角的计算逻辑:是从一…

使用Top进行设备性能分析思路

Top命令 像windows一样,linux也有一个“进程管理”,可以在命令行执行 top ,就可以整体的查看当前机器的资源及进程情况。 在性能问题中,Top是使用较多的一个命令,一般用它可以从整体上了解系统的CPU、内存、IO情况&am…

MongoDB教程(十七):MongoDB主键类型ObjectId

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、Object…

【状态机动态规划 状态压缩】1434. 每个人戴不同帽子的方案数

本文涉及知识点 位运算、状态压缩、枚举子集汇总 动态规划汇总 LeetCode 1434. 每个人戴不同帽子的方案数 总共有 n 个人和 40 种不同的帽子,帽子编号从 1 到 40 。 给你一个整数列表的列表 hats ,其中 hats[i] 是第 i 个人所有喜欢帽子的列表。 请你…

建投数据人力资源系列产品获得欧拉操作系统及华为鲲鹏技术认证书

近日,经欧拉生态创新中心和华为技术有限公司测评,建投数据自主研发的人力资源管理系统、招聘管理系统、绩效管理系统、培训管理系统,完成了基于欧拉操作系统openEuler 22.03、华为鲲鹏Kunpeng 920(Taisha 200)的兼容性…

ASP.NET MVC

ASP.NET MVC与.NET Framework关系 .NET Framework是一个庞大的代码库,能为多种编程语言提供支持(如C#、VB、F#等)。同时.NET Framework 提供了多种技术框架,ASP.NET MVC是.NET Framework提供的众多技术框架中的一种,用于开发Web应用。 .NET …

B端:小小详情页蕴藏大学问,附大量案例 。

在B端(Business-to-Business,即企业与企业之间的商业模式)的设计中,详情页是一个非常重要的环节。虽然它可能看起来只是一个简单的页面,但实际上其中蕴藏着许多大学问。 用户需求与体验: 在B端设计中&…

【Docker】Docker-consul容器服务自动发现与注册

目录 一.Consul概述 1.解决了什么问题 2.什么叫微服务或者注册与发现 3.consul的模式 4.相关命令 二.consul 部署 1.consul服务器部署 2.部署docker容器 3.Nginx负载均衡器 3.1.安装启动nginx 3.2.配置nginx负载均衡 3.3.创建配置consul complate模板文件 3.4.添加…

基于Qt的上位机通用框架

0.前言 最近一年多的时间一直在开发设备控制相关的软件,加上之前在聚光的两年时间,前前后后开发这种设备控制类型的上位机软件也有三年的时间了。总结出了一套基于Qt的上位机编程框架,核心思想类似于C#的依赖注入,对象的初始化都…

JavaScript青少年简明教程:流程控制语句

JavaScript青少年简明教程:流程控制语句 JavaScript 提供了一系列的流程控制语句,用于控制代码的执行顺序。 条件语句 条件语句根据表达式的真假来执行不同的代码块。 if 语句 用于在条件为真时执行代码块。 语法: if(条件){ 条件满足执…

微信小程序获取蓝牙并实现内容打印

通过微信小程序如何实现获取蓝牙打印机并实现打印能力&#xff0c;之前做过一个测试Dome&#xff0c;能够获取附近的蓝牙打印机设备并实现打印,今天开放出来供大家参考。 wxml <!--右下角搜索--> <view class"ly-cass-box"><view class"ly-cas…

Hadoop、HDFS、MapReduce 大数据解决方案

本心、输入输出、结果 文章目录 Hadoop、HDFS、MapReduce 大数据解决方案前言HadoopHadoop 主要组件的Web UI端口和一些基本信息MapReduceMapReduce的核心思想MapReduce的工作流程MapReduce的优缺点Hadoop、HDFS、MapReduce 大数据解决方案 编辑 | 简简单单 Online zuozuo 地址…

广义线性模型(1)广义线性模型详解

一 GLM概述 广义线性模型&#xff08;Generalized Linear Models&#xff0c;GLM&#xff09;由 Nelder 和 Wedderburn 于 1972年提出和发表 &#xff0c;旨在解决普通线性回归模型无法处理因变量离散&#xff0c;并发展能够解决非正态因变量的回归建模任务的建模方法。 在广…

数据结构:二叉搜索树(简单C++代码实现)

目录 前言 1. 二叉搜索树的概念 2. 二叉搜索树的实现 2.1 二叉树的结构 2.2 二叉树查找 2.3 二叉树的插入和中序遍历 2.4 二叉树的删除 3. 二叉搜索树的应用 3.1 KV模型实现 3.2 应用 4. 二叉搜索树分析 总结 前言 本文将深入探讨二叉搜索树这一重要的数据结构。二…