开启场景理解功能
OVRCameraRig的OVRManager组件中的Scene Support属性选择Supported或Required,之后Anchor Support就会自动变为Enabled;
展开Permission Requests On Startup, 点击Scene
点击Update AndroidManifest.xml, 更新安卓端的配置文件
当应用被打包并运行到头显中的时候,Quest系统会向发送是否允许应用访问空间数据的请求弹窗,允许之后,弹窗将不再出现,另外这个弹窗只能在头显中看到,电脑的开发者调试界面看不到。
配置场景理解功能
将Projects文件夹的OVRSceneManager添加到层级面板,在v65之后,Meta将MRUK取代了前者,但前者依旧是可以使用的。
创建Plane和Volume的预制体
Plane Prefab下创建一个Quad,将其y轴旋转设为180度
Volume Prefab会自动对下一层级的物体进行位置矫正,使其坐标值在0左右,但此中立方体的值的标准位置是(0,0,-0.5),为了防止z值被矫正,所以创建一个空父物体,以避免矫正;
将这两个预制件都拖给OVRSceneManager组件进行赋值,使它们作为构造场景理解的通用件。
打包运行
确保Meta Quest Link中的Setting>Beta>Spatial Data over Meta Quest Link已经打开,并且头显已经在当前场景下进行过空间设置,头显如果没有进行过空间设置,那么Unity就无法获取场景数据,场景理解也就无法进行。
运行效果
通过空间设置,系统会得到一个场景模型,meta的scene api会根据场景模型,重建出一个与现实场景匹配的虚拟场景模型。
因为扫描的时候没有覆盖整个现实空间,并且透视功能依旧开启,所以没有覆盖到的空间就没有生成面片,现实空间就被暴露了出来。
这里构建世界的平面和立方体所采用的材质都是Unity的默认材质,也可以将材质设置成半透明或全透明,或者使用其他的纹理材质,具体是什么材质,按照项目的需求而定。
进一步模拟现实
如果我们要在虚拟空间中模拟一个现实场景,就像前面所探讨的空间设置那样通过扫描获得场景的数据,为了提高真实性,它应该具有一些现实场景的特性,包括但不限于碰撞,遮挡等效果。
更精确的物理碰撞效果(Mesh API)遮挡效果(Scene api 和 Depth api)