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 vor der Verwendung auf produktiven Webseiten.

Das XRSession-Interface der WebXR Device API repräsentiert eine laufende XR-Sitzung und bietet Methoden und Eigenschaften, die zur Interaktion mit und Steuerung der Sitzung verwendet werden. Um eine WebXR-Sitzung zu öffnen, verwenden Sie die Methode requestSession() des XRSystem-Interfaces.

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

EventTarget XRSession

Instanzeigenschaften

Neben den unten aufgeführten Eigenschaften erbt XRSession Eigenschaften von seinem übergeordneten Interface EventTarget.

depthDataFormat Experimentell Schreibgeschützt

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

depthUsage Experimentell Schreibgeschützt

Gibt die Nutzung des Tiefensensordaten zurück, mit der die Sitzung konfiguriert wurde.

domOverlayState Experimentell Schreibgeschützt

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

enabledFeatures Experimentell Schreibgeschützt

Gibt ein Array von gewährten Sitzungs-Features zurück.

environmentBlendMode Experimentell Schreibgeschützt

Gibt den Mischmodus 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ätekopie damit mischen wird.

inputSources Experimentell 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 Szene verwendet wird.

interactionMode Experimentell Schreibgeschützt

Gibt den Interaktionsmodus dieser Sitzung zurück, der beschreibt, welcher Raum (gemäß dem Benutzeragenten) am besten geeignet ist, um interaktive UI für die aktuelle Sitzung zu zeichnen.

preferredReflectionFormat Experimentell Schreibgeschützt

Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für die Beleuchtungsschätzungstexturdaten verwendet wird.

renderState Experimentell Schreibgeschützt

Ein XRRenderState-Objekt, das Optionen enthält, die beeinflussen, wie die Bilder gerendert werden. Dazu gehören Dinge wie die Nah- und Fernabschnitte (Entfernungen, die definieren, wie nah und wie weit weg Objekte sein können und trotzdem gerendert werden), sowie Informationen über das Sichtfeld.

visibilityState Experimentell Schreibgeschützt

Ein String, der angibt, ob das Bildmaterial der Sitzung dem Benutzer sichtbar ist und falls ja, ob es sichtbar ist, aber aktuell nicht Ziel von Benutzereingaben.

Instanzmethoden

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

cancelAnimationFrame() Experimentell

Entfernt einen Rückruf aus dem Set von Animationsframe-Rendering-Rückrufen von XRSession, unter Angabe des identifizierenden Handles, das von einem vorherigen Aufruf von requestAnimationFrame() zurückgegeben wurde.

end() Experimentell

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

requestAnimationFrame() Experimentell

Plant die angegebene Methode zur Ausführung, wenn der Benutzeragent das nächste Mal ein Animationsframe für das WebXR-Gerät rendert. Gibt einen ganzzahligen Wert zurück, der zur Identifizierung der Anfrage für die Zwecke der Stornierung des Rückrufs mithilfe von cancelAnimationFrame() verwendet werden kann. Diese Methode ist vergleichbar mit der Methode Window.requestAnimationFrame().

requestHitTestSource() Experimentell

Fordert ein XRHitTestSource-Objekt an, das die Treffertest-Abonnementverarbeitung übernimmt.

requestHitTestSourceForTransientInput() Experimentell

Fordert ein XRTransientInputHitTestSource-Objekt an, das die Treffertest-Abonnementverarbeitung für eine temporäre Eingabequelle übernimmt.

requestLightProbe() Experimentell

Fordert ein XRLightProbe an, das Lichtinformationen 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 Versprechen zurück, das mit dem angeforderten XRReferenceSpace oder XRBoundedReferenceSpace aufgelöst wird oder wirft einen NotSupportedError DOMException, wenn der angeforderte Raumtyp vom Gerät nicht unterstützt wird.

updateRenderState() Experimentell

Aktualisiert die Eigenschaften des Renderzustands der Sitzung.

Ereignisse

Die folgenden Ereignisse werden an XRSession-Objekte geliefert.

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 repräsentiert und ist auch über die Ereignis-Handler-Eigenschaft onend verfügbar.

inputsourceschange Experimentell

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

select Experimentell

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 Auslösers, Touchpads oder einer Taste, dem Äußern eines Befehls oder dem Ausführen einer erkennbaren Geste durch den Benutzer. Das select Ereignis wird nach dem selectstart Ereignis und unmittelbar vor dem selectend Ereignis gesendet. Wenn select nicht gesendet wird, wurde die Auswahlaktion abgebrochen, bevor sie abgeschlossen war. Auch über die Ereignis-Handler-Eigenschaft onselect verfügbar.

selectend Experimentell

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 Verarbeitung einer primären Aktion getrennt wird. Zum Beispiel: Für Tasten- oder Auslöseaktionen bedeutet dies, dass die Taste losgelassen wurde; für gesprochene Befehle bedeutet dies, dass der Benutzer zu sprechen aufgehört hat. Dies ist das letzte der drei select* Ereignisse, das gesendet wird. Auch über die Ereignis-Handler-Eigenschaft onselectend verfügbar.

selectstart Experimentell

Ein Ereignis des Typs XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte zum ersten Mal vom Benutzer aktiviert wird, um die primäre Aktion zu starten. Dies ist das erste zu sendende session* Ereignis. Auch über die Ereignis-Handler-Eigenschaft onselectstart verfügbar.

squeeze Experimentell

Ein XRInputSourceEvent, das gesendet wird, um anzuzeigen, dass eine primäre Quetschaktion erfolgreich abgeschlossen wurde. Dies zeigt an, dass das gequetschte Gerät freigegeben wurde und beispielsweise das Fallenlassen eines gegriffenen Objekts darstellen kann. Es wird unmittelbar vor dem squeezeend Ereignis gesendet, um anzuzeigen, dass die Quetschaktion beendet ist. Auch über die Ereignis-Handler-Eigenschaft onsqueeze 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 Ereignis-Handler-Eigenschaft onsqueezeend verfügbar.

squeezestart Experimentell

Ein Ereignis des Typs XRInputSourceEvent, das an die XRSession gesendet wird, wenn der Benutzer einen quetschbaren Controller erstmals drückt. Dies kann zum Beispiel ein Auslöser sein, der verwendet wird, um das Greifen von Objekten zu repräsentieren, oder könnte tatsächlich das Quetschen darstellen, wenn ein haptischer Handschuh getragen wird. Auch über die Ereignis-Handler-Eigenschaft onsqueezestart verfügbar.

visibilitychange Experimentell

Ein XRSessionEvent, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitsstatus gemäß dem visibilityState ändert. Auch über die Ereignis-Handler-Eigenschaft onvisibilitychange verfügbar.

Beispiel

Dieses Beispiel richtet eine neue XRSession im inline-Modus ein, sodass sie 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

Specification
WebXR Device API
# xrsession-interface

Browser-Kompatibilität