XRVisibilityMaskChangeEvent
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Das XRVisibilityMaskChangeEvent der WebXR Device API beschreibt den sichtbaren Teil eines XRView für den Benutzer, nachdem sich die Ansicht geändert hat. Dies erfolgt beispielsweise durch die Angabe des Auges, für das die Ansicht relevant ist, sowie 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 das Ereignisobjekt eines visibilitymaskchange Ereignisses zur Verfügung, das jedes Mal ausgelöst wird, wenn sich der sichtbare Teil der Ansicht für den Benutzer ändert, um neue Informationen zur Aktualisierung der Ansicht bereitzustellen.
Konstruktor
XRVisibilityMaskChangeEvent()-
Erstellt und gibt ein neues
XRVisibilityMaskChangeEvent-Objekt zurück.
Instanzeigenschaften
Zusätzlich zu den Eigenschaften, die von seiner übergeordneten Schnittstelle, Event, geerbt werden, bietet XRVisibilityMaskChangeEvent Folgendes:
eyeSchreibgeschützt-
Das Auge, auf das die Maske angewendet wird.
indexSchreibgeschützt-
Der Index des aktuellen
XRViewimXRViewerPose.viewsArray. indicesSchreibgeschützt-
Gibt die Indexposition jedes Koordinatenpaares (nicht einzelner Array-Indizes) im
verticesArray an, die die Dreiecke definieren, die verwendet werden, um den derzeit sichtbaren Teil der Szene darzustellen, die imXRViewangezeigt wird. sessionSchreibgeschützt-
Die
XRSession, zu der das Ereignis gehört. verticesSchreibgeschützt-
Ein Array, das die Menge möglicher Koordinatenwerte repräsentiert, die in einer Sichtbarkeitsmaske verwendet werden können. Wenn dieses Array leer ist, wird die gesamte Region des
XRViewgezeichnet.
Instanzmethoden
Während XRSessionEvent keine Methoden definiert, erbt es Methoden von seiner übergeordneten Schnittstelle, Event.
Beispiele
>Three.js Beispiel
Dieser Ausschnitt zeigt, wie visibilitymaskchange verwendet werden könnte, um nur den sichtbaren Teil des XRView in einer Three.js-Anwendung zu zeichnen. Die neue Ansicht muss mit der XRView.projectionMatrix des relevanten XRView und einem standardmäßigen 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 Codeausschnitt stammt von diesem Fork von WebXRManager.js.
Spezifikationen
| Spezifikation |
|---|
| WebXR Device API> # xrvisibilitymaskchangeevent-interface> |