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 设备 API # dom-xrboundedreferencespace-boundsgeometry |
浏览器兼容性
BCD 表格仅在浏览器中加载