专题栏目:ARVRMR虚拟现实

Quest Browser浏览器正式支持WebXR混合现实体验

正如Connect 2022的公告一样,Meta Quest2和Meta Qust Pro端的Meta Quest Browser浏览器现在已经增加了对WebXR混合现实服务的支持。

Meta Quest Browser现在支持以下WebXR规范:

  • WebXR Augmented Reality Module (Passthrough)

  • WebXR Plane Detection Module

  • WebXR Anchors Module

Passthrough透视

Passthrough为Meta Quest头显提供了物理世界的实时3D可视化。在以前,你无法使用WebXR向用户展示真实世界。但现在Meta Quest Browser浏览器现在已经增加了对WebXR混合现实服务的支持。

Passthrough在Quest Pro是全彩,而Quest 2则是灰度。

要使用Passthrough,请在请求WebXR会话时使用新的”immersive-ar”模式:

navigator.xr.requestSession("immersive-ar").then((session) => { xrSession = session;});

你可以检测浏览器中是否支持Passthrough,如下所示:

navigator.xr.isSessionSupported('immersive-ar').then((supported) => { if (!supported) { return; } // 'immersive-ar' sessions are supported. // Page should advertise AR support to the user.}

你必须在透明背景绘制内容,否则将无法看到Passtrough环境。

你可以在这里体验一个基本的Passtrough示例。

平面检测

除了在防护系统中定义你的工作空间外,你同时可以转到Settings > Guardian > Mixed Reality 来定义房间设置,如办公桌、沙发等。

然后,浏览器会把所述对象显示为具有世界位置的平面形状。

要启用这一功能,你必须在请求会话时传递”plane-detection”功能描述符:

const session = await navigator.xr.requestSession("immersive-ar", { requiredFeatures: ["plane-detection"]});

然后,浏览器请求用户访问房间设置信息,如果被允许,则将其呈现给会话。

启用所述功能后,XRSession将包含包含XRPlanes的新数组“detectedPlanes”。每个XRPlane都包含一个世界位置和一个多边形。目前,相关多边形在Meta Quest头显始终是水平或垂直矩形。你可以使用这些多边形进行命中测试、与VR对象的交互、遮挡等等。

由于很少有人运行防护系统的房间设置,XRSession添加了一个名为“initiateRoomCapture”的新助手功能。这个助手功能将从沉浸式会话中触发防护系统的房间设置。建议你在确定“detectedPlanes”数组中没有平面时调用所述函数。这个“detectedPlanes”数组不会立即填充,因此在会话创建后等待2到3秒,然后再做出决定。每个会话只能调用此函数一次。

你可以在这里体验一个基本的平面检测示例。

持久性锚点

锚点允许你定义现实世界中的位置。定义后,无论设备的原点在何处,锚点都会保持在同一空间中。这允许你在现实世界中放置虚拟对象或为场景设置公共原点。

Meta Quest头显同时支持持久锚,从而允许你在沉浸式会话中保存和恢复相关位置。

你可以通过调用带有位置和XRSpace的“createAnchor”来创建非持久性锚点。这将返回一个具有获取其世界位置的API的对象。即使头显的原点被重置,所述位置在现实世界中都将始终相同。

要创建持久性锚点,请对锚点对象调用“requestPersistentHandle”。生成的字符串可以由站点存储。要恢复锚点,站点可以调用“restorePersistentAnchor”,它在相同位置返回锚点对象。

一个站点目前一次只能创建8个持久性锚点。如果会话在隐私模式下运行,则锚点不会持续。这意味着,如果在隐私模式下保存锚点并关闭,然后重新打开隐私模式,你无法再恢复持久性锚点。清除站点的历史记录同样会删除永久性锚点。

你可以在这里体验一个基本的持久性锚点示例。

发表评论

相关文章