XRRigidTransform: свойство matrix
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Только для чтения XRRigidTransform свойство matrix возвращает матрицу преобразования, представленную объектом. Полученную матрицу затем можно умножить слева на столбец-вектор, чтобы повернуть вектор на 3D угол, заданный orientation, а затем переместить его на position.
Значение
Массив Float32Array содержащий 16 элементов, представляющий 4x4 матрицу преобразования, описываемую свойствами position и orientation.
Примечания по использованию
Формат матрицы
Все 4x4 матрицы преобразований, используемые в WebGL, хранятся в 16-элементных массивах Float32Array. Значения хранятся в массиве в порядке следования столбцов сверху вниз; то есть каждый столбец записывается в массив сверху вниз, прежде чем перейти к следующему столбцу справа и записать его в массив. Таким образом, для массива [a0, a1, a2, …, a13, a14, a15], матрица выглядит следующим образом:
При первом запросе matrix вычисляется. После этого он должен быть кэширован для повышения производительности.
Создание матрицы
В этом разделе, предназначенном для более опытных пользователей, рассматривается, как API вычисляет матрицу для заданного преобразования. Начинается с выделения новой матрицы и записи в неё единичной 4x4 матрицы:
Это преобразование не изменит ни ориентацию, ни положение любой точки, вектора или объекта, к которому оно применяется.
Затем position помещается в правый столбец, как показано ниже, что приводит к матрице переноса, которая преобразует систему координат на указанное расстояние по каждому измерению без поворота. Здесь px, py и pz — значения членов x, y, и z объекта DOMPointReadOnly position.
Затем создаётся матрица вращения путём вычисления матрицы вращения столбца-вектора из унитарного кватерниона, заданного 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);
Спецификации
| Спецификация |
|---|
| API устройств WebXR # dom-xrrigidtransform-matrix |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
matrix |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRRigidTransform/matrix