XRSession

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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, bevor Sie diese produktiv verwenden.

Die XRSession-Schnittstelle der WebXR Device API repräsentiert eine laufende XR-Sitzung und bietet Methoden und Eigenschaften zur Interaktion mit und Steuerung der Sitzung. Um eine WebXR-Sitzung zu eröffnen, verwenden Sie die Methode requestSession() der Schnittstelle XRSystem.

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

EventTarget XRSession

Instanzeigenschaften

Zusätzlich zu den unten aufgeführten Eigenschaften erbt XRSession Eigenschaften von seiner übergeordneten Schnittstelle EventTarget.

depthDataFormat Experimentell Nur lesbar

Gibt das Tiefensensing-Datenformat zurück, mit dem die Sitzung konfiguriert wurde.

depthUsage Experimentell Nur lesbar

Gibt die Tiefensensing-Nutzung zurück, mit der die Sitzung konfiguriert wurde.

domOverlayState Experimentell Nur lesbar

Bietet Informationen über das DOM-Overlay, wenn das Feature aktiviert ist.

environmentBlendMode Experimentell Nur lesbar

Gibt den Blendmodus dieser Sitzung zurück, der angibt, wie viel der realen Umgebung durch das XR-Gerät sichtbar ist und wie das Gerät die Bilddarstellung mit ihr vermischen wird.

inputSources Experimentell Nur lesbar

Gibt eine Liste der XRInputSources dieser Sitzung zurück, die jeweils ein Eingabegerät darstellen, das zur Steuerung der Kamera und/oder Szene verwendet wird.

interactionMode Experimentell Nur lesbar

Gibt den Interaktionsmodus dieser Sitzung zurück, der den optimalen Raum (laut User-Agent) für die Anwendung beschreibt, um eine interaktive Benutzeroberfläche für die aktuelle Sitzung zu zeichnen.

preferredReflectionFormat Experimentell Nur lesbar

Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für Beleuchtungsschätzungs-Texturdaten verwendet wird.

renderState Experimentell Nur lesbar

Ein XRRenderState-Objekt, das Optionen enthält, die beeinflussen, wie die Bilder gerendert werden. Dies umfasst Dinge wie die Nah- und Fernabschnitte (Entfernungen, die definieren, wie nah und wie weit Objekte sein können und dennoch gerendert werden), sowie Informationen zum Sichtfeld.

visibilityState Experimentell Nur lesbar

Ein String, der angibt, ob das Bildmaterial der Sitzung für den Benutzer sichtbar ist und, falls ja, ob es sichtbar ist, jedoch derzeit nicht das Ziel für Benutzereingaben ist.

Instanzmethoden

XRSession bietet die folgenden Methoden zusätzlich zu denen, die von seiner übergeordneten Schnittstelle EventTarget geerbt werden.

cancelAnimationFrame() Experimentell

Entfernt einen Rückruf aus dem Satz von Animations-Frame-Rendering-Rückrufen der XRSession, wobei der zugehörige Handle verwendet wird, der zuvor von einem Aufruf von requestAnimationFrame() zurückgegeben wurde.

end() Experimentell

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

requestAnimationFrame() Experimentell

Plant die angegebene Methode, die beim nächsten Mal aufgerufen wird, wenn der User-Agent daran arbeitet, einen Animations-Frame für das WebXR-Gerät zu rendern. Gibt einen ganzzahligen Wert zurück, der zur Identifizierung der Anfrage für die Zwecke der Stornierung des Rückrufs mit cancelAnimationFrame() verwendet werden kann. Diese Methode ist mit der Methode Window.requestAnimationFrame() vergleichbar.

requestHitTestSource() Experimentell

Fordert ein XRHitTestSource-Objekt an, das die Hit-Test-Subscription verwaltet.

requestHitTestSourceForTransientInput() Experimentell

Fordert ein XRTransientInputHitTestSource-Objekt an, das die Hit-Test-Subscription für eine vorübergehende Eingabequelle verwaltet.

requestLightProbe() Experimentell

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

requestReferenceSpace() Experimentell

Fordert an, dass ein neuer XRReferenceSpace des angegebenen Typs erstellt wird. Gibt ein Promise 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() Experimentell

Aktualisiert die Eigenschaften des Render-Zustands der Sitzung.

Ereignisse

Die folgenden Ereignisse werden an XRSession-Objekte ausgeliefert.

end Experimentell

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

inputsourceschange Experimentell

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

select Experimentell

Ein Ereignis vom Typ 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 Knopfs durch den Benutzer, das Aussprechen eines Befehls oder dem Ausführen einer erkennbaren Geste. Das select-Ereignis wird nach dem selectstart-Ereignis gesendet und unmittelbar vor dem selectend-Ereignis. Wenn select nicht gesendet wird, wurde die Auswahlaktion abgebrochen, bevor sie abgeschlossen wurde. Auch über die onselect-Ereignishandler-Eigenschaft verfügbar.

selectend Experimentell

Ein Ereignis vom Typ XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte seine primäre Aktion beendet oder getrennt wird, während es eine primäre Aktion verarbeitet. Zum Beispiel: Bei Knopf- oder Trigger-Aktionen bedeutet dies, dass der Knopf losgelassen wurde; bei gesprochenen Befehlen bedeutet es, dass der Benutzer das Sprechen beendet hat. Dies ist das letzte der drei select*-Ereignisse, die gesendet werden. Auch über die onselectend-Ereignishandler-Eigenschaft verfügbar.

selectstart Experimentell

Ein Ereignis vom Typ XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte erstmals vom Benutzer so betätigt wird, dass die primäre Aktion begonnen wird. Dies ist das erste der session*-Ereignisse, die gesendet werden. Auch über die onselectstart-Ereignishandler-Eigenschaft verfügbar.

squeeze Experimentell

Ein XRInputSourceEvent, das gesendet wird, um anzuzeigen, dass eine primäre Quetschaktion erfolgreich abgeschlossen wurde. Dies zeigt an, dass das gedrückte Gerät losgelassen wurde, und kann beispielsweise das Fallenlassen eines gegriffenen Objekts darstellen. Es wird unmittelbar vor dem squeezeend-Ereignis gesendet, um anzuzeigen, dass die Quetschaktion beendet ist. Auch über die onsqueeze-Ereignishandler-Eigenschaft verfügbar.

squeezeend Experimentell

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

squeezestart Experimentell

Ein Ereignis vom Typ XRInputSourceEvent, das an die XRSession gesendet wird, wenn der Benutzer ein quetschbares Steuergerät zunächst drückt. Dies kann beispielsweise ein Trigger sein, der verwendet wird, um Objekte zu greifen, oder tatsächlich das Quetschen, wenn man einen haptischen Handschuh trägt. Auch über die onsqueezestart-Ereignishandler-Eigenschaft verfügbar.

visibilitychange Experimentell

Ein XRSessionEvent, das an die Sitzung gesendet wird, wenn sich ihr Sichtbarkeitsstatus ändert, wie durch visibilityState angezeigt. Auch über die onvisibilitychange-Ereignishandler-Eigenschaft verfügbar.

Beispiel

Dieses Beispiel erstellt eine neue XRSession im inline-Modus, damit sie innerhalb eines HTML-Elements angezeigt werden kann, ohne dass ein dediziertes AR- oder VR-Betrachtungsgerä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

Specification
WebXR Device API
# xrsession-interface

Browser-Kompatibilität

BCD tables only load in the browser