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, zum Beispiel durch Angabe des Auges, für das die Ansicht relevant ist, und der Eckpunkte 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 Ereignisobjekt eines visibilitymaskchange-Ereignisses zur Verfügung, das jedes Mal ausgelöst wird, wenn sich der für den Benutzer angezeigte Teil der Ansicht ändert, um neue Informationen zur Aktualisierung der Ansicht bereitzustellen.
Konstruktor
XRVisibilityMaskChangeEvent()-
Erstellt und liefert ein neues
XRVisibilityMaskChangeEvent-Objekt.
Instanz-Eigenschaften
Zusätzlich zu den von ihrer übergeordneten Schnittstelle Event geerbten Eigenschaften bietet XRVisibilityMaskChangeEvent die folgenden:
eyeSchreibgeschützt-
Das Auge, auf das die Maske angewendet wird.
indexSchreibgeschützt-
Der Index der aktuellen
XRViewimXRViewerPose.viewsArray. indicesSchreibgeschützt-
Gibt die Indexposition jedes Koordinatenpaares (nicht einzelner Array-Index) innerhalb des
verticesArrays an, das die Dreiecke definiert, die zum Zeichnen des derzeit sichtbaren Teils der Szene verwendet werden, die in derXRViewangezeigt wird. sessionSchreibgeschützt-
Die
XRSession, zu der das Ereignis gehört. verticesSchreibgeschützt-
Ein Array, das die Menge der möglichen Koordinatenwerte repräsentiert, die in einer Sichtbarkeitsmaske verwendet werden können. Wenn dieses Array leer ist, wird die gesamte Region der
XRViewgezeichnet.
Instanz-Methoden
Obwohl XRSessionEvent keine Methoden definiert, erbt es Methoden von seiner übergeordneten Schnittstelle Event.
Beispiele
>Three.js-Beispiel
Dieses Snippet 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 mit der XRView.projectionMatrix der relevanten XRView und einer Standard-XRRigidTransform gezeichnet werden.
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-Snippet stammt aus diesem Fork von WebXRManager.js.
Spezifikationen
| Spezifikation |
|---|
| WebXR Device API> # xrvisibilitymaskchangeevent-interface> |