XRRigidTransform: matrix-Eigenschaft
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die schreibgeschützte XRRigidTransform
-Eigenschaft matrix
gibt die Transformationsmatrix zurück, die durch das Objekt repräsentiert wird. Die zurückgegebene Matrix kann dann mit einem Spaltenvektor vor multipliziert werden, um den Vektor mit der 3D-Rotation, die durch die orientation
angegeben wird, zu rotieren und dann mit der position
zu übersetzen.
Wert
Ein Float32Array
mit 16 Einträgen, das die 4x4-Transformationsmatrix darstellt, die durch die position
- und orientation
-Eigenschaften beschrieben wird.
Anwendungshinweise
Matrixformat
Alle 4x4-Transformationsmatrizen, die in WebGL verwendet werden, sind in 16-Element-Float32Array
s gespeichert. Die Werte werden in Spalten-Major-Ordnung in das Array eingefügt; das heißt, jede Spalte wird von oben nach unten in das Array geschrieben, bevor zur nächsten Spalte rechts gewechselt und diese in das Array geschrieben wird. Daher sieht die Matrix für das Array [a0, a1, a2, …, a13, a14, a15]
so aus:
Bei der ersten Anfrage wird die matrix
berechnet. Danach sollte sie aus Leistungsgründen zwischengespeichert werden.
Erstellen der Matrix
In diesem Abschnitt, der sich an fortgeschrittene Leser richtet, erläutern wir, wie die API die Matrix für die angegebene Transformation berechnet. Es beginnt mit der Zuweisung einer neuen Matrix und dem Schreiben einer 4x4-Einheitsmatrix in diese:
Dies ist eine Transformation, die weder die Orientierung noch die Position eines Punktes, Vektors oder Objekts, auf das sie angewendet wird, verändert.
Anschließend wird die position
in die rechte Spalte eingefügt, wie hier dargestellt, was zu einer Translationsmatrix führt, die ein Koordinatensystem um die angegebene Entfernung in jeder Dimension transformiert, ohne dass eine rotatorische Änderung erfolgt. Hierbei sind px, py und pz die Werte der x
-, y
- und z
-Mitglieder von DOMPointReadOnly
position
.
Dann wird eine Rotationsmatrix erstellt, indem eine Spaltenvektor-Rotationsmatrix aus dem Einheitsquaternion erstellt wird, das durch orientation
angegeben ist:
Die endgültige Transformationsmatrix
wird berechnet, indem die Translationsmatrix mit der Rotationsmatrix multipliziert wird, in der Reihenfolge (translation * rotation)
. Dies ergibt die endgültige Transformationsmatrix, wie sie von matrix
zurückgegeben wird:
Beispiele
In diesem Beispiel wird eine Transformation erstellt, um eine Matrix zu generieren, die während des Renderings von WebGL-Objekten als Transformation verwendet werden kann, um Objekte so zu platzieren, dass sie einem bestimmten Versatz und einer bestimmten Ausrichtung entsprechen. Die matrix
wird dann an eine Bibliotheksfunktion übergeben, die WebGL verwendet, um ein Objekt mit dem angegebenen Namen unter Verwendung der angegebenen Transformationsmatrix zu rendern, um es zu positionieren und auszurichten.
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);
Spezifikationen
Specification |
---|
WebXR Device API # dom-xrrigidtransform-matrix |
Browser-Kompatibilität
BCD tables only load in the browser