现在有个需求是PC端串流在某些特定时候需要开启透视。我研究了两天发现一些坑,记录一下方便查阅,也给没踩坑的朋友一些思路方案。
先说结论,如果要打PC端或者在Unity编辑器中开启,那么OpenXR当前是不行的可能还需要一个长期的过程,必须需要切换到Oculus。当然Unity官方指出使用ARFoundation的混合现实可以做到,具体参考这里。
因为当前项目是OpenXR框架的,所以想在改动比较小的情况下进行。所以直接切换XR Plug-in Management到Oculus就好了。
准备工作
可以参考官网。
Meta Quest 版本需要 v37.0 或更高版本
首先下载Meta XR All-in-One SDK
其实只需要安装Meta XR Core SDK一个就够透视了。
首先目前SDK的版本是 com.meta.xr.sdk.core-64.0.0 ,只用装这一个就可以了。
我就是直接下载了core的zip包,并配置了manifest.json
"com.meta.xr.sdk.core": "file:local/com.meta.xr.sdk.core-64.0.0",
另外您必须在 Oculus PC 应用程序(现在叫Meta Quest Link,就是Meta大厅)中单击“设置” > “测试版” ,启用“开发者运行时功能”和“Passthrough over Meta Quest Link”。如下图:
当然要开启透视,必须通过有线或者Air串流MetaQuestLink软件。
Unity中的设置
切换到Oculus,并解决掉所有警告和报错,如果你装有OpenXR,他会提示你需要从包管理器中remove掉openxr。
没有出现小叹号说明准备工作做好了。
开始配置
首先需要两个脚本,OVRManager和OVRPassthroughLayer,也只需要这两个。
OVRManager里的General里需要把PassthroughSupport改为Required
然后Insight Passthrough勾选,只有这两个地方需要变动。
这样在初始化的时候就初始化Passthrough功能了。
Layer中我需要透视相机完全覆盖场景,所以选择了Overlay,如果你需要把3D物品显示到上层需要改为Underlay。建议先改到Overlay,调试成功后再进行开发。这样不用去管相机设置。
因为在设置成Underlay的时候,因为游戏里的天空盒子等会遮挡透视层可能会影响你的判断,你可以需要自行设置相机,例如下面的代码:
passthroughLayer.enabled = true;// Set camera background to transparentOVRCameraRig ovrCameraRig = GameObject.Find("OVRCameraRig").GetComponent<OVRCameraRig>(</