XRBoundedReferenceSpace: boundsGeometry 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

只读的 XRBoundedReferenceSpace 属性 boundsGeometry 是一个 DOMPointReadOnly 对象数组,用于指定构成多边形的点,用户被允许在此多边形内移动。每个点都被视为一个二维点,并且必须位于地面水平(即,其 y 坐标必须为 0)。

此边界通常由用户配置,使用控制其 XR 硬件的软件。这可以通过用户走动来界定他们想要使用的空间,或通过使用其 XR 输入设备绘制房间的形状来完成。理论上,一个更高级的系统可能会使用传感器或其他检测方法来确定专用 XR 房间的边界(注意我们是如何小心地不称之为“全息甲板”的?)。

boundsGeometry 属性是 DOMPointReadOnly 对象的一个数组,每个对象定义一个顶点,构成一个多边形,用户被要求保持在此多边形内。每个点必须位于地板水平,其 y 坐标值设置为 0。此外,数组中每个点的 w 值始终为 1。此外,点必须按顺时针顺序排列。

boundsGeometry 中的每个条目都等于房间本机边界几何点列表中的一个条目,该条目乘以原点偏移的逆矩阵。换句话说,边界是可用空间的物理限制,已偏移,以便参考空间的边界点都相对于 XRBoundedReferenceSpace 的有效原点定义。

用法说明

有界参考空间的“原点”始终位于地面水平,即 y 为 0。通常,xz 的原点位于空间中心或其附近,并且方向设置为指向逻辑上的前方,根据底层平台或 XR 硬件的需要。

为了降低房间边界被用于 指纹识别 的风险,boundsGeometry 数组中的每个点可能会被四舍五入或调整一定数量。规范建议浏览器将点移动到最近的 5 厘米(同时避免超出硬件的物理限制)。

边界大小

XRBoundedReferenceSpace 不适用于非常大的有界区域。相反,它适用于单房间空间,从本机原点算起,任何方向的可用移动空间不超过约 15 米。也就是说,边界会无限向上延伸,因为边界仅在二维中定义。

如果您需要创建多房间空间,或者一个非常大或需要不同地板水平的空间,您应该改用无界 XRReferenceSpace,并根据需要自行强制执行边界。

边界形状

boundsGeometry 定义的形状可以像正方形一样简单,也可以像需要的那样复杂,可能包含凹形和/或凸形部分。但是,您无法使用 XRBoundedReferenceSpace 表示具有不平坦地板水平的空间。地面始终位于 y = 0。

您的内容设计不应要求用户超出 boundsGeometry 指定的边界,这一点很重要。但是,如果用户周围环境允许他们以可能超出定义边界的方式移动,您的内容必须能够优雅地处理这种情况,这不被视为错误条件。

虽然有些示例会渲染网格或其他形状来向用户显示边界,但在实际应用程序中,您不应该这样做。但是,浏览器应向用户提供有关任何风险(例如,如果他们继续移动可能撞到物理墙壁的风险)的适当警告。

规范

规范
WebXR Device API
# dom-xrboundedreferencespace-boundsgeometry

浏览器兼容性