XRRigidTransform: matrix property
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Thuộc tính chỉ đọc matrix của giao diện XRRigidTransform trả về ma trận biến đổi được đại diện bởi đối tượng. Ma trận được trả về sau đó có thể được nhân trước với một vector cột để xoay vector theo phép quay 3D được chỉ định bởi orientation, sau đó dịch chuyển nó theo position.
Giá trị
Một Float32Array chứa 16 phần tử, đại diện cho ma trận biến đổi 4x4 được mô tả bởi các thuộc tính position và orientation.
Ghi chú sử dụng
>Định dạng ma trận
Tất cả ma trận biến đổi 4x4 được sử dụng trong WebGL được lưu trữ trong Float32Array gồm 16 phần tử. Các giá trị được lưu trữ trong mảng theo thứ tự cột-chính; tức là mỗi cột được ghi vào mảng từ trên xuống trước khi chuyển sang cột tiếp theo ở bên phải và ghi vào mảng. Do đó, đối với mảng [a0, a1, a2, …, a13, a14, a15], ma trận trông như sau:
Ở lần yêu cầu đầu tiên, matrix được tính toán. Sau đó, nó nên được lưu vào bộ nhớ đệm vì lý do hiệu suất.
Tạo ma trận
Trong phần này, dành cho người đọc nâng cao hơn, chúng tôi trình bày cách API tính toán ma trận cho phép biến đổi được chỉ định. Nó bắt đầu bằng cách phân bổ một ma trận mới và ghi ma trận đơn vị 4x4 vào đó:
Đây là một phép biến đổi sẽ không thay đổi hướng hoặc vị trí của bất kỳ điểm, vector hoặc đối tượng nào được áp dụng.
Tiếp theo, position được đặt vào cột bên phải, tạo ra một ma trận dịch chuyển sẽ biến đổi hệ tọa độ theo khoảng cách được chỉ định trong mỗi chiều, không có thay đổi quay. Ở đây px, py, và pz là các giá trị của các thành viên x, y, và z của DOMPointReadOnly position.
Sau đó một ma trận quay được tạo bằng cách tính toán một ma trận quay vector cột từ quaternion đơn vị được chỉ định bởi orientation:
matrix biến đổi cuối cùng được tính bằng cách nhân ma trận dịch chuyển với ma trận quay, theo thứ tự (translation * rotation). Điều này tạo ra ma trận biến đổi cuối cùng được trả về bởi matrix:
Ví dụ
Trong ví dụ này, một phép biến đổi được tạo để tạo ra một ma trận có thể được sử dụng làm phép biến đổi trong quá trình kết xuất các đối tượng WebGL, nhằm đặt các đối tượng khớp với một độ lệch và hướng nhất định. Sau đó matrix được truyền vào một hàm thư viện sử dụng WebGL để kết xuất một đối tượng khớp với một tên nhất định bằng cách sử dụng ma trận biến đổi được chỉ định để định vị và định hướng nó.
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);
Thông số kỹ thuật
| Specification |
|---|
| WebXR Device API> # dom-xrrigidtransform-matrix> |