XRRigidTransform: matrix 屬性
只讀的 XRRigidTransform 屬性 matrix 返回由該物件表示的變換矩陣。然後,可以透過將此返回的矩陣與列向量預乘,來使向量在由 orientation 指定的 3D 旋轉後進行旋轉,再由 position 進行平移。
值
一個包含 16 個條目的 Float32Array,它表示由 position 和 orientation 屬性描述的 4x4 變換矩陣。
用法說明
矩陣格式
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);
規範
| 規範 |
|---|
| WebXR Device API # dom-xrrigidtransform-matrix |
瀏覽器相容性
載入中…