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

View in English Always switch to English

XRVisibilityMaskChangeEvent

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Das XRVisibilityMaskChangeEvent der WebXR Device API beschreibt den Teil einer XRView, der für den Benutzer sichtbar ist, nachdem sich die Ansicht geändert hat, beispielsweise durch Angabe des Auges, für das die Ansicht relevant ist, und der Vertices einer Sichtbarkeitsmaske, die den sichtbaren Teil der Ansicht definiert. Dies ermöglicht Leistungsverbesserungen, indem der Browser nur den sichtbaren Teil der aktualisierten Ansicht zeichnet.

Ein XRVisibilityMaskChangeEvent-Objekt steht als das Ereignisobjekt eines visibilitymaskchange Ereignisses zur Verfügung, das jedes Mal ausgelöst wird, wenn sich der dem Benutzer angezeigte Teil der Ansicht ändert, um neue Informationen zur Aktualisierung der Ansicht bereitzustellen.

Event XRVisibilityMaskChangeEvent

Konstruktor

XRVisibilityMaskChangeEvent()

Erstellt und gibt ein neues XRVisibilityMaskChangeEvent-Objekt zurück.

Instanz-Eigenschaften

Neben den von der Elternschnittstelle Event geerbten Eigenschaften bietet XRVisibilityMaskChangeEvent die folgenden:

eye Schreibgeschützt

Das Auge, auf das die Maske angewendet wird.

index Schreibgeschützt

Der Index der aktuellen XRView im XRViewerPose.views Array.

indices Schreibgeschützt

Gibt die Indexposition jedes Koordinatenpaars (nicht einzelne Array-Indizes) im vertices Array an, die die Dreiecke definieren, die für das Zeichnen des derzeit sichtbaren Teils der Szene im XRView verwendet werden.

session Schreibgeschützt

Die XRSession, zu der das Ereignis gehört.

vertices Schreibgeschützt

Ein Array, das die Menge der möglichen Koordinatenwerte darstellt, die in einer Sichtbarkeitsmaske verwendet werden können. Wenn dieses Array leer ist, wird der gesamte Bereich der XRView gezeichnet.

Instanz-Methoden

Obwohl XRSessionEvent keine Methoden definiert, erbt es Methoden von seiner Elternschnittstelle Event.

Beispiele

Three.js Beispiel

Dieser Ausschnitt zeigt, wie visibilitymaskchange verwendet werden könnte, um nur den sichtbaren Teil der XRView in einer Three.js-Anwendung zu zeichnen. Die neue Ansicht muss unter Verwendung der XRView.projectionMatrix der relevanten XRView und einer Standard-XRRigidTransform gezeichnet werden.

js
session.addEventListener("visibilitymaskchange", onVisibilityMaskChange);

function onVisibilityMaskChange(event) {
  const geometry = new BufferGeometry();
  geometry.setIndex(new BufferAttribute(event.indices, 1));
  const vertices = new Float32Array((event.vertices.length / 2) * 3);
  let x = 0,
    y = 0;
  while (x < event.vertices.length) {
    vertices[y++] = event.vertices[x++];
    vertices[y++] = event.vertices[x++];
    vertices[y++] = -1;
  }

  geometry.setAttribute("position", new BufferAttribute(vertices, 3));

  const mask = event.eye === "left" ? leftEyeMask : rightEyeMask;
  const matrix = cameras[event.eye === "left" ? 0 : 1].projectionMatrix;
  mask.geometry = geometry;
  mask.material = new ShaderMaterial({
    vertexShader: _visibility_mask_vertex,
    fragmentShader: _visibility_mask_fragment,
    uniforms: {
      clipMatrix: { value: matrix },
    },
  });

  maskScene = new Scene();
  maskScene.add(leftEyeMask);
  maskScene.add(rightEyeMask);
}

Der Code-Schnipsel ist von diesem Fork von WebXRManager.js entnommen.

Spezifikationen

Spezifikation
WebXR Device API
# xrvisibilitymaskchangeevent-interface

Browser-Kompatibilität