【新】Unity Meta Quest MR 开发(一):Passthrough 透视配置


此教程相关的详细教案,文档,思维导图和工程文件会分享在 Spatial XR 社区。这是一个高质量 XR 开发者社区,博主目前在内担任 XR 开发的讲师。该社区提供专人答疑、完整进阶教程、从零到一项目孵化保姆服务(包含产品上架App lab)、投资|融资对接、工程文件下载等服务。

社区链接:
SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子

在这里插入图片描述


📕教程说明

这期教程我将会介绍如何在 Unity 中,利用 Meta XR SDK,去配置 Meta Quest 中的 Passthrough 透视功能。通过 Quest 的视频透视(VST)技术,我们能够戴上头显看到一个虚拟与现实互相融合的世界。因此开启透视是开发 Quest MR 功能最基本的步骤。通过这期教程的配置,我们能够戴上头显看到现实环境,并且能够看到现实环境中的虚拟物体。

环境配置可参考:https://blog.csdn.net/qq_46044366/article/details/133967343

配置一个基本的玩家物体可以参考前几期教程:https://blog.csdn.net/qq_46044366/article/details/134097455

系列教程专栏:https://blog.csdn.net/qq_46044366/category_12118293.html

配套的视频链接:
https://www.bilibili.com/video/BV14e41127eM

​电脑操作系统:Windows 11

使用的 VR 设备:Meta Quest 3(Quest 系列都适用)

使用的 Unity 版本:2022.3.15 f1c1 LTS (这里推荐使用 2021 及以上的 LTS 版本)

Meta XR SDK 版本:v60

官方文档:https://developer.oculus.com/documentation/unity/unity-gs-overview/

官方 MR 透视配置文档:
https://developer.oculus.com/documentation/unity/unity-passthrough-gs/

最终效果:

在这里插入图片描述


📕配置透视的串流调试功能

开启了这个功能后,就可以在设备与电脑串流的条件下运行支持透视的软件。这时候可以直接通过点击 Unity 编辑器中的运行按钮,在头显中看到透视的场景。这样就更加方便调试,不用每次打包到头显中运行。

透视串流调试的要求:

  1. Quest 的系统版本要在 v37 及以上。
  2. Oculus 电脑客户端软件的版本要在 v37 及以上,并且确保设置-> Beta 测试版中的 “开发者 Runtime 功能” 和 “通过 Oculus Link 透视” 选项是开启的。
    在这里插入图片描述
  3. 使用 USB 3.0 的数据线将头显和电脑进行串流。

官方说明:
https://developer.oculus.com/documentation/unity/unity-passthrough-use-over-link/
https://developer.oculus.com/documentation/unity/unity-link/


📕第一步:设置 OVRManager

首先我们新建一个场景,删除场景中的 Main Camera。然后搜索 OVRCameraRig 这个 Prefab(将搜索的选项改为 In Packages 或者 All),将它拖到场景中。这个物体就相当于 XR 中的玩家物体。

在这里插入图片描述
找到 OVRCameraRig 中的 OVR Manager 脚本,接下来需要做的步骤是:

1) 在 Quest Features 的 General 选项中,将 Passthrough Support 设为 Supported 或者 Required ,这样打包的应用就能开启透视功能。

2)勾选 Insight Passthrough 下的 Enable Passthrough。这样在应用启动时就会初始化透视的功能。如果不想在程序启动时就初始化,可以取消勾选 Enable Passthrough,然后在自己的脚本中通过代码设置 OVRManager.instance.isInsightPassthroughEnabled = true/false 来控制透视的开启和关闭,这里的作用相当于手动勾选或取消 Enable Passthrough。

在这里插入图片描述

另外,OVR Manager 中有个 Tracking Origin Type 参数需要注意一下,它相当于追踪的参考系,参数分为 Eye Level, Floor Level 和 Stage。

这三个参数的区别可以参考我之前写的这篇文章:https://blog.csdn.net/qq_46044366/article/details/131616046

我将 Tracking Origin Type 设为了 Floor Level,另外 Target Devices 需要勾选上自己使用的设备:

在这里插入图片描述


📕第二步:添加 OVRPassthroughLayer 脚本

接下来,我们随便在一个物体上添加 OVRPassthroughLayer 脚本,我是新建了一个空物体,然后把脚本上的 Placement 设为 Underlay:

在这里插入图片描述

Quest 中透视的现实场景相当于单独的一个图层,而我们的虚拟场景和虚拟物品相当于另外的图层。

当 Placement 设置成 Underlay 的时候,相当于透视的现实图层置于应用图层的最底端,这时候现实图层位于虚拟图层之下。可以理解为现实场景充当背景,虚拟物体叠加在现实场景上,也可以理解为虚拟物体会把现实物体遮挡住

当 Placement 设置成 Overlay 的时候,则反之。相当于现实图层置于应用最顶层,也就是现实图层位于虚拟图层之上,这个时候现实场景会把整个虚拟场景覆盖掉,我们只能看到现实场景,看不到虚拟物体。

因为我们想要在透视下的现实场景中看到虚拟物体,所以我们要选择 Underlay。

📕第三步:在场景中添加虚拟物体

我这里在 OVRCameraRig 物体前面添加了一个 Cube 方块:

在这里插入图片描述
但是如果这时候尝试运行程序,你会发现即使设置了 OVRPassthroughLayer 的 Placement 为 Underlay,自己还是看不到现实场景,只能看到虚拟场景。因为我们还有几个步骤要做。


📕第四步:设置相机

在 Hierarchy 面板中找到 OVRCameraRig/TrackingSpace/CenterEyeAnchor 这个子物体,它相当于我们的眼部相机。

在这里插入图片描述

然后在 Inspector 面板中,将 Camera 组件的 Clear Flags 设为 Solid Color,然后将 Background 的 alpha 值设为 0,也就是将背景的透明度设为0。Background 的颜色决定了透视场景的颜色,如果设为黑色(RGB 都是 0),则看到的是默认的透视颜色。如果是 Quest pro 或者 Quest 3 或者是之后拥有彩色透视的设备,那么看到的就是彩色透视的场景(和现实中的场景颜色一样)。如果是 Quest 2,看到的就是 Quest 2 默认的黑白透视场景。

在这里插入图片描述
在这里插入图片描述

现在,透视的环境配置已经完成了。


📕第五步(可选):删除场景中的天空盒

如果我们想要在完全透视的场景下,可以不需要渲染天空盒。

在 Unity 菜单栏选择 Window -> Rendering -> Lighting ,点击 Environment 选项,将 Skybox Material 设为 None。

在这里插入图片描述

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
### 回答1: 在使用Quest开发无缝场景加载时,需要注意以下几点技巧: 1. 避免资源过度消耗:在场景切换过程中,需要加载的资源,如果过度消耗资源会导致卡顿和延迟,因此需要在设计场景时尽可能减少资源的使用。 2. 合理布局场景:当一个大型场景需要分成多个区域进行加载时,需要考虑不同区域之间的联系,尽量设计成相邻的区域,以提高场景切换的稳定性。 3. 异步加载:使用异步加载可以避免长时间等待资源加载完成,提高场景加载的效率和稳定性。 4. 懒加载:将场景的资源按需加载,只有在实际需要用到的时候才进行加载,这样可以避免不必要的资源浪费,提高场景的加载速度。 5. 预处理场景:在场景运行前,对场景进行预处理和优化,尽量减少在场景运行时的资源消耗和运行开销,以提高场景的流畅性和稳定性。 综上所述,无缝场景加载需要综合考虑资源的使用、场景的设计、异步加载、懒加载和预处理等因素,以实现流畅稳定的场景加载效果。 ### 回答2: 在进行Quest Unity开发的过程中,保持场景流畅稳定的无缝加载是非常重要的。以下是一些技巧,可以帮助你实现这一目标。 首先,你应该正确地管理场景对象。在每个场景中,只加载必要的对象。这样可以减少内存使用量,并且加快场景加载速度。 其次,你可以尝试使用场景剪辑来帮助实现流畅的加载。使用场景剪辑可以使你的场景在加载时只显示其中的部分,而不是全部加载。这样减少了渲染负载,可以提高场景的性能。 第三,你可以采用异步加载来减少场景加载时间。使用异步加载可以在主线程之外加载场景资源,这可以减少在场景加载期间的延迟和画面卡顿。 最后,你还可以优化场景的渲染和材质,从而减少场景的复杂度。这可以使场景更快地渲染,从而加快场景的加载速度。 综上所述,使用正确的管理和加载技巧,以及良好的渲染优化,可以实现流畅稳定的无缝场景加载。这些技巧可以帮助你打造出更好的Quest Unity应用程序,提供更好的用户体验。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY-nb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值