能力
WebXR 通过模块暴露不同能力和新 API,PlayCanvas 将其集成以便使用。
已支持的 WebXR 模块
| 功能 | 说明 |
|---|---|
| 锚点 | 创建相对现实几何体稳定定位的空间锚点。 |
| 持久锚点 | 在会话之间保留锚点。 |
| 摄像头颜色 | 获取视图颜色纹理。 |
| 深度感知 | 获取深度纹理和距离查询,用于现实几何体遮挡虚拟对象及可靠摆放。 |
| DOM 叠加 | 在单目屏幕 AR 视图上叠加 DOM 元素。 |
| 手部追踪 | 光学追踪手部各关节。 |
| 命中测试 | 对现实几何体投射射线,获取交点位置和方向。 |
| 图像追踪 | 动态追踪指定图像的位置和朝向。 |
| 输入源 | 控制器、手、屏幕点击、注视等多种输入。 |
| 光照估计 | 估计现实主方向光的方向、颜色和强度,并以球谐形式提供环境光。 |
| 网格检测 | 获取现实三维网格、位置、方向和语义标签,可表示家具、屏幕、房间等静态几何体。 |
| 平面检测 | 获取平面几何、位置、方向、顶点和语义标签,可表示地板、墙、天花板、窗和门等大平面。 |
实验性功能
WebXR 持续新增 API,引擎也不断集成,但部分新功能可能稍晚支持。希望试验时,可以通过相关 optionalFeatures 标志启用。
注意
访问内部未公开 API 可能受引擎更新影响,不保证向后兼容。
以下示例启用实验性 WebXR Layers:
app.xr.start(cameraComponent, pc.XRTYPE_VR, pc.XRSPACE_LOCAL, {
optionalFeatures: [ 'layers' ],
callback: (err) => {
if (err) {
console.log(err);
return;
}
if (app.xr.session.renderState.layers) {
// get access to WebXR Layers
}
}
});