VR大空间,LBE大空间系列开发笔记-《空间轮廓标定》

继续上文,目前已经完成了空间地图的录制并赋予了设备空间识别定位的能力,空间地图的同步工作,接下来就可以进行互动区域的轮廓标定(常见需要标定的如空间中的墙壁边缘,承重柱,桌子,消防栓或者其他危险区域)。

轮廓的标定一般两个用途:

1:项目开发前期,用于动线规划的参考。

2:是为了防止玩家体验时候发生碰撞危险,用于项目中危险提示。

接下来直接开始创建一个项目,用一个简单的方法对空间轮廓进行标定。

一:在项目开始前首先建议做一些准备工作

(因为后续需要将工程中的画面串流到头显上进行空间数据采集,串画面的方式有很多种,云渲染,SteamVR无线/有线串流,背包,APP等,这几种方式的区别在文章尾部做一个区分

这里采用最简单的一种方式,SteamVR无线的方式。要求体验区域内需要覆盖5G频段的wifi信号,尽量设置避免路由器的2.4和5G频段的二合一。接下来需要将工程所在的电脑与头显连接到该网络下,需要保证在同一个局域网下。安装Steam软件,并在内容库中下载SteamVR工具。打开设备中的SteamBusiness应用,按照提示在PC端安装Vive business streaming串流软件。安装完毕后打开steamvr与vive business streaming。此时能看到两个窗口

此时在头显设备中可以看到一个名为VBS server的服务器,(如上图,vbs串流软件中设置的名字为VBS server,此名字可以更改),如果没有找到的话建议退出头显端串流重新进入,如果还是没有则需要检查是否在同一个网段或者版本号是否一致,如果还是没有的话建议等5分钟左右再次查找,(HTC有时候会发生这种问题,找不到服务器)。成功连接上后可看到streamvr默认画面(山顶别墅)

二:建立工程,将画面同步到头显

官方的一些教程文档参考:Unity: Getting Started With OpenXR | VIVE OpenXR - Developer Resourcesz​​​​​​z

1:这里用packagemanager的方式快速开始,打开项目Edit-ProjecSettings-PackageManager

输入以下内容,输入完毕后点击Save按钮

Name: Vive
URL: https://npm-registry.vive.com/
Scope(s): com.htc.upm

2:打开Window-PackageManager,选择My Registries,并选择ViveOpenxr Plugin-Install,目前已经更新到2.20版本,安装完毕后编辑器将自重启一次。

3:如果是学习测试的话,完成第二步后可以看到Samples标签,可以导入示例案例,对学习参考有帮助

4:再次打开Edit-ProjectSettings,在左侧菜单我们会看到多了一个XRPlug-in Managment菜单,选择该菜单。并在Windows平台下选中OpenXR。

5:左侧菜单选择OpenXR,设置PlayModeOpenXR Runtime为StreamVR,添加InteractionProfiles-> VIVE Focus3 Controller Interaction。

6:选择主场景相机-MainCamera右键,XR-Convert MainCamera to XR Rig,修改后场景主相机结构如图所示,XRRigTrackingMode设置为Default,Y offset设置为0, 实际运行时候画面相机Y高度则会根据玩家的身高变化。

此时运行场景,我们将实时看到编辑器中场景的同步画面。

此时Unity编辑器中MainCamera的(0,0,0)点坐标就是采集空间地图时设置的中心点。这时候我们虚拟场景相机距离原点的坐标与实际空间中头显与扫描中心点的坐标将保持一致。此时在空间中移动任何距离都将与虚拟场景进行同步,单位为米。所以我们只要把头显或者手柄移动的坐标实时画出来就可以得到空间轮廓了。

三:使用手柄,获取空间位置标定空间轮廓与障碍

我们可以通过手柄的扳机按键,通过按下扳机键 开始实时绘制空间轮廓。轮廓的位置就是手柄的位置,我们把手柄贴着墙面,承重柱等障碍走一圈 即可获得。

此程序需要自己写,不过示例程序中有参考,稍加改动即可。请看上面第二块内容的第3步,导入Samples。打开OpenXRInput场景,我们就能看到左右手柄的位置,此时我们只需要选择一个就可以

如图,官方场景中,已给到手柄的位置信息,以及按钮的获取事件都已经写好了,我们只需要在按下某一个按键时候记录手柄当前位置信息,然后将这些位置信息连城一条轮廓线即可。

但是需要注意的是,你此时运行场景会发现 手柄获取不到。这是因为我们需要配置交互文件,否则是不识别的。文件在第二大步的第5条。我们添加Vave Index Controller Profile文件,此时再次运行 我们能发现已经可以获取到位置信息了。

接下来你只需要沿着现实场景中,拿着手柄贴着墙面走一圈,并且在关键点触发记录位置信息,然后将位置信息还原连线即可获取到空间轮廓了,有了空间轮廓后我们就可以做空间动线规划参考,也可以做一些空间碰撞预警提示。

如下图通过关键点连线获取到的不规则且带有一根承重柱的空间信息,关键点采集不限于多少个,理论上每间隔1米采集一个也没问题。

回应开头关于画面同步部分

串流画面采集的方式有很多种,以上内容讲述了最简单最容易的一种,这几种方案呢各有优缺点。

云渲染:(未来发展方向的一种)

缺点:难度高,准备时间及投入成本比较大,吃带宽。

优点:头显算力解放,复杂的运算及渲染可以使用PC的算力效果好。

无线串流:(适用于网络环境简单,只有一两台设备的场地)

缺点:受限于网络,可能会被干扰卡顿。

优点:方便快捷,解放头显算力。基本上有头显就直接测,路由器基本上谁都有了吧。

问:一个空间中能无线串多少台设备?

5G信道9个,理论上一个信道3台设备没问题的,而且取决于你所设置的画面质量,但是理论归理论。实际由于空间信号的复杂程度 根本达不到。所以你能带10台已经很不错了。

有线串流(背包):(市场上基本上淘汰,除非追求极致的画面效果)

缺点:活动距离受限,无法超过线的距离,或者背包太重,市场刚开始就被淘汰的方案

优点:画面稳定质量高,解放头显算力。

APP:(市场主流方式,随着硬件性能的提高  采用的可能会更多)

缺点:需要打包测试,需要把数据回传或者保存设备再获取,增加开发时间

优点:所见所得,采集的信息一定是头显设备最终真实运行定位的信息。

其实目前推荐制作一体机版本,测试使用无线串流,上线使用一体机。目前云渲染也不错,但是设备受限,但是以后5G毫米波的普及,可能云渲染是个最佳的解决方案。

下一次讲一下动线规划的方式。最近忙项目上去了,更新比较慢请谅解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值