[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/API/XRView/transform [Back]  [Original]

XRView: transform-Eigenschaft - Web-APIs | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

XRView: transform-Eigenschaft

Eingeschrnkt verfgbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Experimentell: Dies ist eine experimentelle Technologie
berprfen Sie die Browser-Kompatibilittstabelle sorgfltig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen untersttzenden Browsern verfgbar.

Die schreibgeschtzte transform-Eigenschaft des XRView-Interfaces ist ein XRRigidTransform-Objekt, das die Position und Orientierung des Blickpunkts relativ zum XRReferenceSpace angibt, das angegeben wurde, als die Methode XRFrame.getViewerPose() aufgerufen wurde, um das View-Objekt zu erhalten.

Mit dem transform knnen Sie dann die Ansicht als Kamera innerhalb der 3D-Szene positionieren. Wenn Sie stattdessen die traditionellere View-Matrix bentigen, knnen Sie diese mit view.transform.inverse.matrix erhalten; dies liefert die zugrunde liegende matrix der inverse des Transforms.

In diesem Artikel

Wert

Ein XRRigidTransform-Objekt, das die Position und Orientierung des durch das XRView dargestellten Blickpunkts angibt.

Beispiele

Fr jede Ansicht, die die dargestellte Szene bildet, reprsentiert das transform der Ansicht die Position und Orientierung des Betrachters oder der Kamera relativ zum Ursprung des Referenzraums. Sie knnen dann die Inverse dieser Matrix verwenden, um die Objekte in Ihrer Szene zu transformieren, um ihre Platzierung und Orientierung anzupassen und die Bewegung des Betrachters durch den Raum zu simulieren.

In diesem Beispiel sehen wir einen Umriss eines Codeausschnitts, der whrend des Renderns eines XRFrame verwendet wird und der das View-Transform verwendet, um Objekte whrend des Renderings in der Welt zu platzieren.

js
const modelViewMatrix = mat4.create();
const normalMatrix = mat4.create();

for (const view of pose.views) {
  const viewport = glLayer.getViewport(view);
  gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);

  for (const obj of world.objects) {
    mat4.multiply(modelViewMatrix, view.transform.inverse.matrix, obj.matrix);
    mat4.invert(normalMatrix, modelViewMatrix);
    mat4.transpose(normalMatrix, normalMatrix);

    obj.render(modelViewMatrix, normalMatrix);
  }
}

Zwei Matrizen werden auerhalb der Render-Schleife erstellt; dies vermeidet das wiederholte Allokieren und Deallokieren der Matrizen und reduziert im Allgemeinen den Overhead, indem dieselbe Matrix fr jedes gerenderte Objekt wiederverwendet wird.

Dann iterieren wir ber jedes XRView in der Liste der views von XRViewerPose. In der Regel gibt es zwei: eines fr das linke Auge und eines fr das rechte, aber es kann auch nur eines sein, wenn der monokulare Modus aktiviert ist. Derzeit untersttzt WebXR nicht mehr als zwei Ansichten pro Pose, obwohl Raum fr die Erweiterung der Spezifikation gelassen wurde, um dies in Zukunft mit einigen Ergnzungen zur API zu untersttzen.

Fr jede Ansicht erhalten wir ihren Viewport und bergeben diesen mit gl.viewport() an WebGL. Fr das linke Auge wird dies die linke Hlfte der Leinwand sein, whrend das rechte Auge die rechte Hlfte verwendet.

Dann iterieren wir ber jedes Objekt, das die Szene bildet. Die Model-View-Matrix jedes Objekts wird berechnet, indem seine eigene Matrix, die die eigene Position und Orientierung des Objekts beschreibt, mit den zustzlichen Position- und Orientierungsanpassungen multipliziert wird, die erforderlich sind, um die Bewegung der Kamera nachzuvollziehen. Um die "kamera-fokussierte" Transform-Matrix in eine "objekt-fokussierte" zu konvertieren, verwenden wir die Inverse des Transforms, indem wir die Matrix nehmen, die von view.transform.inverse.matrix geliefert wird. Die resultierende Model-View-Matrix wird alle bentigten Transformationen anwenden, um das Objekt basierend auf den relativen Positionen des Objekts und der Kamera zu bewegen und zu rotieren. Dies simuliert die Bewegung der Kamera, obwohl wir tatschlich das Objekt bewegen.

Wir berechnen dann die Normalen fr die Model-View-Matrix, indem wir sie invertieren und dann transponieren.

Schlielich rufen wir die render()-Routine des Objekts auf, wobei wir die modelViewMatrix und normalMatrix bergeben, damit der Renderer das Objekt korrekt platzieren und beleuchten kann.

Hinweis: Dieses Beispiel ist aus einem greren Beispiel abgeleitet... <<<--- finish and add link --->>>

Spezifikationen

Spezifikation
WebXR Device API
# dom-xrviewgeometry-transform

Browser-Kompatibilitt


Web Proxy Viewer  |  New URL  |  Original Page