XRRigidTransform - 表示通过位置和方向描述的 3D 几何变换

XRRigidTransformWebXR API 接口,表示通过位置和方向描述的 3D 几何变换。

XRRigidTransform 用于指定整个 WebXR API 的转换,包括:

在这些地方使用 XRRigidTransform 而不是提供矩阵数据的原始数组的优点是 XRRigidTransform 会自动执行类似计算逆变换的操作。更好的是,一旦对它进行了计算,就对其进行了缓存,以便随后的请求明显更快。

构造函数

new XRRigidTransform()

创建一个新的 XRRigidTransform 对象,该对象表示应用指定位置和 / 或方向的变换。

属性

XRRigidTransform.position 只读

一个 DOMPointReadOnly,指定一个以米为单位的 3 维点,描述了转换的平移分量。w 属性始终为 1.0。

XRRigidTransform.orientation 只读

一个 DOMPointReadOnly,它包含描述转换的旋转分量的单元四元数。作为单位四元数,其长度始终为 1.0

XRRigidTransform.matrix 只读

一个 Float32Array,包含了 16 个元素,表示转换矩阵。有关如何使用数组表示矩阵的信息,请参见矩阵格式

XRRigidTransform.inverse 只读

返回一个 XRRigidTransform,它是此变换的逆过程。也就是说,如果将其应用于先前已通过原始变换进行了变换的对象,它将撤消该变换并返回原始对象。

使用注意

解释 XRRigidTransform 时,始终在应用位置之前将方向应用于受影响的对象。

实例

此代码段创建一个 XRRigidTransform,以指定相对于当前参考空间的偏移量和方向,以便在创建新的引用空间时使用。然后,它通过调用会话的 requestAnimationFrame() 方法来请求第一个动画帧回调。

xrSession.requestReferenceSpace(refSpaceType)
.then((refSpace) => {
  xrReferenceSpace = refSpace;
  xrReferenceSpace = xrReferenceSpace.getOffsetReferenceSpace(
        new XRRigidTransform(viewerStartPosition, cubeOrientation));
  animationFrameRequestID = xrSession.requestAnimationFrame(drawFrame);

规范

规范 状态 备注
WebXR Device API
XRRigidTransform 的定义
工作草案 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持7979 不支持 不支持 不支持 不支持
XRRigidTransform() 构造函数7979 不支持 不支持 不支持 不支持
inverse7979 不支持 不支持 不支持 不支持
matrix7979 不支持 不支持 不支持 不支持
orientation7979 不支持 不支持 不支持 不支持
position7979 不支持 不支持 不支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持79 未知 不支持 未知 不支持 不支持
XRRigidTransform() 构造函数 不支持79 未知 不支持 未知 不支持 不支持
inverse 不支持79 未知 不支持 未知 不支持 不支持
matrix 不支持79 未知 不支持 未知 不支持 不支持
orientation 不支持79 未知 不支持 未知 不支持 不支持
position 不支持79 未知 不支持 未知 不支持 不支持