XRBoundedReferenceSpace: boundsGeometry 属性
只读的 XRBoundedReferenceSpace
属性 boundsGeometry
是一个 DOMPointReadOnly
对象数组,用于指定构成多边形的点,用户被允许在此多边形内移动。每个点都被视为一个二维点,并且必须位于地面水平(即,其 y
坐标必须为 0)。
此边界通常由用户配置,使用控制其 XR 硬件的软件。这可以通过用户走动来界定他们想要使用的空间,或通过使用其 XR 输入设备绘制房间的形状来完成。理论上,一个更高级的系统可能会使用传感器或其他检测方法来确定专用 XR 房间的边界(注意我们是如何小心地不称之为“全息甲板”的?)。
值
boundsGeometry
属性是 DOMPointReadOnly
对象的一个数组,每个对象定义一个顶点,构成一个多边形,用户被要求保持在此多边形内。每个点必须位于地板水平,其 y
坐标值设置为 0。此外,数组中每个点的 w
值始终为 1。此外,点必须按顺时针顺序排列。
boundsGeometry
中的每个条目都等于房间本机边界几何点列表中的一个条目,该条目乘以原点偏移的逆矩阵。换句话说,边界是可用空间的物理限制,已偏移,以便参考空间的边界点都相对于 XRBoundedReferenceSpace
的有效原点定义。
用法说明
有界参考空间的“原点”始终位于地面水平,即 y
为 0。通常,x
和 z
的原点位于空间中心或其附近,并且方向设置为指向逻辑上的前方,根据底层平台或 XR 硬件的需要。
为了降低房间边界被用于 指纹识别 的风险,boundsGeometry
数组中的每个点可能会被四舍五入或调整一定数量。规范建议浏览器将点移动到最近的 5 厘米(同时避免超出硬件的物理限制)。
边界大小
XRBoundedReferenceSpace
不适用于非常大的有界区域。相反,它适用于单房间空间,从本机原点算起,任何方向的可用移动空间不超过约 15 米。也就是说,边界会无限向上延伸,因为边界仅在二维中定义。
如果您需要创建多房间空间,或者一个非常大或需要不同地板水平的空间,您应该改用无界 XRReferenceSpace
,并根据需要自行强制执行边界。
边界形状
boundsGeometry
定义的形状可以像正方形一样简单,也可以像需要的那样复杂,可能包含凹形和/或凸形部分。但是,您无法使用 XRBoundedReferenceSpace
表示具有不平坦地板水平的空间。地面始终位于 y
= 0。
您的内容设计不应要求用户超出 boundsGeometry
指定的边界,这一点很重要。但是,如果用户周围环境允许他们以可能超出定义边界的方式移动,您的内容必须能够优雅地处理这种情况,这不被视为错误条件。
虽然有些示例会渲染网格或其他形状来向用户显示边界,但在实际应用程序中,您不应该这样做。但是,浏览器应向用户提供有关任何风险(例如,如果他们继续移动可能撞到物理墙壁的风险)的适当警告。
规范
规范 |
---|
WebXR Device API # dom-xrboundedreferencespace-boundsgeometry |
浏览器兼容性
加载中…