XRRigidTransform: matrix 属性
只读 XRRigidTransform
属性 matrix
返回对象表示的变换矩阵。 然后可以使用返回的矩阵预乘列向量,以按 orientation
指定的 3D 旋转旋转向量,然后按 position
平移它。
WebGL 中使用的所有 4x4 变换矩阵都存储在 16 元素 Float32Array
中。 值以列优先顺序存储在数组中; 也就是说,在移到右边的下一列并将其写入数组之前,每列都从上到下写入数组。 因此,对于数组 [a0, a1, a2, …, a13, a14, a15]
,矩阵如下所示
在首次请求时,matrix
将被计算。 之后,出于性能原因,它应该被缓存。
在本节中,针对更高级的读者,我们将介绍 API 如何计算指定变换的矩阵。 它首先分配一个新矩阵,并将 4x4 单位矩阵写入其中
这是一个不会改变任何应用于其的点、向量或对象的方位或位置的变换。
接下来,position
被放置到右手列中,如下所示,从而得到一个平移矩阵,该矩阵将坐标系在每个维度上变换指定距离,而不会发生旋转变化。 这里,px、py 和 pz 是 DOMPointReadOnly
position
的 x
、y
和 z
成员的值。
然后通过从 orientation
指定的单位四元数计算列向量旋转矩阵来创建一个旋转矩阵
最终变换 matrix
是通过按 (translation * rotation)
的顺序将平移矩阵乘以旋转矩阵来计算的。 这将得到 matrix
返回的最终变换矩阵
在此示例中,将创建一个变换来创建一个矩阵,该矩阵可以在 WebGL 对象的渲染过程中用作变换,以放置对象以匹配给定的偏移量和方位。 然后将 matrix
传递到一个库函数中,该函数使用 WebGL 渲染与给定名称匹配的对象,并使用指定的变换矩阵来定位和调整其方向。
let transform = new XRRigidTransform(
{ x: 0, y: 0.5, z: 0.5 },
{ x: 0, y: -0.5, z: -0.5, w: 1 },
);
drawGLObject("magic-lamp", transform.matrix);
BCD 表格仅在浏览器中加载