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

View in English Always switch to English

XRSession

Eingeschränkt verfügbar

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

Want more support for this feature? Tell us why.

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 XRSession Interface der WebXR Device API repräsentiert eine laufende Sitzung zwischen einer Webanwendung und dem XR-Gerät eines Benutzers (zum Beispiel ein VR-Headset). Es stellt Methoden und Eigenschaften zur Verfügung, mit denen die Sitzung interagiert und gesteuert werden kann. Um eine WebXR-Sitzung zu eröffnen, verwenden Sie die requestSession() Methode des XRSystem Interfaces.

Mit den Methoden von XRSession können Sie die Position und Orientierung des Betrachters (die XRViewerPose) abfragen, Informationen über die Umgebung des Benutzers sammeln und Bilder dem Benutzer präsentieren. XRSession unterstützt sowohl Inline- als auch immersive Modi für virtuelle und erweiterte Realität.

EventTarget XRSession

Instanzeigenschaften

Zusätzlich zu den unten aufgeführten Eigenschaften erbt XRSession Eigenschaften von seinem übergeordneten Interface, EventTarget.

depthDataFormat Schreibgeschützt

Gibt das Tiefenerkennungsdatenformat zurück, mit dem die Sitzung konfiguriert wurde.

depthUsage Schreibgeschützt

Gibt die Verwendung der Tiefenerkennung zurück, mit der die Sitzung konfiguriert wurde.

domOverlayState Schreibgeschützt

Bietet Informationen über das DOM-Overlay, falls die Funktion aktiviert ist.

enabledFeatures Schreibgeschützt

Gibt ein Array der gewährten Sitzungsfunktionen zurück.

environmentBlendMode Schreibgeschützt

Gibt den Blendmodus dieser Sitzung zurück, der angibt, wie viel von der realen Umgebung durch das XR-Gerät sichtbar ist und wie das Gerät die Gerätebilder damit mischt.

inputSources Schreibgeschützt

Gibt eine Liste der XRInputSources dieser Sitzung zurück, von denen jede ein Eingabegerät darstellt, das zur Steuerung der Kamera und/oder der Szene verwendet wird.

interactionMode Schreibgeschützt

Gibt den Interaktionsmodus dieser Sitzung zurück, der beschreibt, welcher Raum laut Benutzeragent für die Anwendung am besten geeignet ist, um interaktive Benutzeroberflächen für die aktuelle Sitzung zu zeichnen.

preferredReflectionFormat Schreibgeschützt

Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für die Texturdaten der Lichtschätzung verwendet wird.

renderState Schreibgeschützt

Ein XRRenderState Objekt, das Optionen enthält, die beeinflussen, wie die Bilder gerendert werden. Dazu gehören Dinge wie die Nah- und Fern-Clipping-Ebenen (Abstände, die definieren, wie nah und wie weit entfernt sich Objekte befinden können und trotzdem gerendert werden), sowie Informationen über das Sichtfeld.

visibilityState Schreibgeschützt

Ein String, der angibt, ob die Bilder der Sitzung für den Benutzer sichtbar sind und gegebenenfalls, ob sie sichtbar sind, aber derzeit nicht das Ziel für Benutzereingaben sind.

Instanzmethoden

XRSession stellt die folgenden Methoden zusätzlich zu denen bereit, die von seinem übergeordneten Interface, EventTarget, geerbt werden.

cancelAnimationFrame()

Entfernt einen Callback aus den Animationsrahmen-Rendering-Callbacks von XRSession, gegeben durch das Identifikations-Handle, das von einem vorherigen Aufruf von requestAnimationFrame() zurückgegeben wurde.

end()

Beendet die WebXR-Sitzung. Gibt ein Promise zurück, das aufgelöst wird, wenn die Sitzung beendet wurde.

requestAnimationFrame()

Plant die angegebene Methode, um beim nächsten Mal aufgerufen zu werden, wenn der User-Agent an der Darstellung eines Animationsrahmens für das WebXR-Gerät arbeitet. Gibt einen ganzzahligen Wert zurück, der verwendet werden kann, um die Anfrage zum Zwecke des Abbruchs des Callbacks mit cancelAnimationFrame() zu identifizieren. Diese Methode ist vergleichbar mit der Window.requestAnimationFrame() Methode.

requestHitTestSource()

Fordert ein XRHitTestSource Objekt an, das die Abonnementprüfung für Treffer erledigt.

requestHitTestSourceForTransientInput()

Fordert ein XRTransientInputHitTestSource Objekt an, das die Abonnementprüfung für Treffer eines transienten Eingabeelements erledigt.

requestLightProbe()

Fordert ein XRLightProbe an, das Lichtinformationen an einem bestimmten Punkt in der Umgebung des Benutzers schätzt.

requestReferenceSpace()

Fordert an, dass ein neues XRReferenceSpace des angegebenen Typs erstellt wird. Gibt ein Versprechen zurück, das mit dem angeforderten XRReferenceSpace oder XRBoundedReferenceSpace aufgelöst wird, oder wirft eine NotSupportedError DOMException, wenn der angeforderte Raumtyp vom Gerät nicht unterstützt wird.

updateRenderState()

Aktualisiert die Eigenschaften des Renderzustands der Sitzung.

Ereignisse

Die folgenden Ereignisse werden an XRSession Objekte gesendet.

end

Wird an das XRSession Objekt gesendet, nachdem die WebXR-Sitzung beendet wurde und alle hardwarebezogenen Funktionen abgeschlossen sind. Das Ereignis wird durch ein Objekt des Typs XRSessionEvent dargestellt. Ebenfalls verfügbar über die onend Ereignishandler-Eigenschaft.

inputsourceschange

Ein Ereignis des Typs XRInputSourcesChangeEvent, das an die XRSession gesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen geändert hat. Ebenfalls verfügbar über die oninputsourceschange Ereignishandler-Eigenschaft.

select

Ein Ereignis des Typs XRInputSourceEvent, das an die Sitzung gesendet wird, wenn eine der Eingabequellen der Sitzung eine primäre Aktion erfolgreich abgeschlossen hat. Dies entspricht im Allgemeinen dem Drücken eines Triggers, Touchpads oder einer Taste, einem gesprochenen Befehl oder einer erkennbaren Geste. Das select Ereignis wird nach dem selectstart Ereignis gesendet und unmittelbar bevor das selectend Ereignis gesendet wird. Wenn select nicht gesendet wird, wurde die Auswahlaktion vor der Fertigstellung abgebrochen. Ebenfalls verfügbar über die onselect Ereignishandler-Eigenschaft.

selectend

Ein Ereignis des Typs XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte seine primäre Aktion beendet oder während der Bearbeitung einer primären Aktion die Verbindung getrennt wurde. Zum Beispiel: Bei Tasten- oder Trigger-Aktionen bedeutet dies, dass die Taste freigegeben wurde; bei gesprochenen Befehlen, dass der Benutzer das Sprechen beendet hat. Dies ist das letzte der drei select* Ereignisse, die gesendet werden. Ebenfalls verfügbar über die onselectend Ereignishandler-Eigenschaft.

selectstart

Ein Ereignis des Typs XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte zuerst vom Benutzer so betätigt wird, dass die primäre Aktion beginnt. Dies ist das erste session* Ereignis, das gesendet wird. Ebenfalls verfügbar über die onselectstart Ereignishandler-Eigenschaft.

squeeze

Ein XRInputSourceEvent, das gesendet wird, um anzuzeigen, dass eine primäre Quetschaktion erfolgreich abgeschlossen wurde. Dies bedeutet, dass das Gerät, das gequetscht wird, freigegeben wurde und kann z.B. das Fallenlassen eines gegriffenen Objekts darstellen. Es wird unmittelbar vor dem squeezeend Ereignis gesendet, um anzuzeigen, dass die Quetschaktion vorbei ist. Ebenfalls verfügbar über die onsqueeze Ereignishandler-Eigenschaft.

squeezeend

Ein XRInputSourceEvent, das an die XRSession gesendet wird, wenn die primäre Quetschaktion endet, unabhängig davon, ob die Aktion erfolgreich war oder nicht. Ebenfalls verfügbar über die onsqueezeend Ereignishandler-Eigenschaft.

squeezestart

Ein Ereignis des Typs XRInputSourceEvent, das an die XRSession gesendet wird, wenn der Benutzer einen quetschbaren Controller initial drückt. Dies kann beispielsweise ein Auslöser sein, der verwendet wird, um das Greifen von Objekten zu repräsentieren, oder tatsächliches Quetschen beim Tragen eines haptischen Handschuhs darstellen. Ebenfalls verfügbar über die onsqueezestart Ereignishandler-Eigenschaft.

visibilitychange

Ein XRSessionEvent, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitszustand, wie durch den visibilityState angegeben, ändert. Ebenfalls verfügbar über die onvisibilitychange Ereignishandler-Eigenschaft.

visibilitymaskchange

Ein XRVisibilityMaskChangeEvent, das an die Sitzung gesendet wird, wenn sich der für den Benutzer sichtbare Teil der XRView ändert und damit Leistungsverbesserungen ermöglicht, indem der Browser nur den sichtbaren Teil der aktualisierten Ansicht zeichnet. Ebenfalls verfügbar über die onvisibilitymaskchange Ereignishandler-Eigenschaft.

Beispiel

Dieses Beispiel etabliert eine neue XRSession im inline Modus, so dass es innerhalb eines HTML-Elements angezeigt werden kann, ohne dass ein dediziertes AR- oder VR-Anzeigegerät wie ein Headset erforderlich ist.

js
const XR = navigator.xr;

if (XR) {
  XR.requestSession("inline").then((xrSession) => {
    xrSession.requestReferenceSpace("local").then((xrReferenceSpace) => {
      xrSession.requestAnimationFrame((time, xrFrame) => {
        const viewer = xrFrame.getViewerPose(xrReferenceSpace);

        gl.bindFramebuffer(xrWebGLLayer.framebuffer);

        for (const xrView of viewer.views) {
          const xrViewport = xrWebGLLayer.getViewport(xrView);
          gl.viewport(
            xrViewport.x,
            xrViewport.y,
            xrViewport.width,
            xrViewport.height,
          );
        }
      });
    });
  });
} else {
  /* WebXR is not available */
}

Spezifikationen

Spezifikation
WebXR Device API
# xrsession-interface

Browser-Kompatibilität

Siehe auch