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.

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-Geräte-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 den XRSession-Methoden können Sie die Position und Orientierung des Betrachters (die XRViewerPose) abfragen, Informationen über die Umgebung des Benutzers sammeln und Bildmaterial 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 nachfolgend aufgeführten Eigenschaften erbt XRSession Eigenschaften von seinem übergeordneten Interface, EventTarget.

depthDataFormat Schreibgeschützt

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

depthUsage Schreibgeschützt

Gibt die Tiefennutzungsart 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 Sitzungsmerkmale zurück.

environmentBlendMode Schreibgeschützt

Gibt den Blend-Modus dieser Sitzung zurück, der angibt, wie viel von der realen Umgebungswelt durch das XR-Gerät sichtbar ist und wie das Gerät das Bildmaterial mit ihr mischen wird.

inputSources Schreibgeschützt

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

interactionMode Schreibgeschützt

Gibt den Interaktionsmodus dieser Sitzung zurück, der den besten Bereich beschreibt (laut Benutzeragent), in dem die Anwendung interaktive Benutzeroberflächen für die aktuelle Sitzung zeichnen sollte.

preferredReflectionFormat Schreibgeschützt

Gibt das bevorzugte Reflektionsformat dieser Sitzung zurück, das für die Texturdaten zur Beleuchtungsschätzung verwendet wird.

renderState Schreibgeschützt

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

visibilityState Schreibgeschützt

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

Instanzmethoden

XRSession stellt die folgenden Methoden zusätzlich zu den von seinem übergeordneten Interface EventTarget geerbten Methoden bereit.

cancelAnimationFrame()

Entfernt einen Rückruf aus dem Set von Animationsbild-Rückrufen von XRSession, gegeben den identifizierenden Handle, der durch einen vorherigen Aufruf von requestAnimationFrame() zurückgegeben wurde.

end()

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

requestAnimationFrame()

Planen Sie die angegebene Methode, um das nächste Mal aufgerufen zu werden, wenn der User-Agent an der Darstellung eines Animationsbildes für das WebXR-Gerät arbeitet. Gibt einen ganzzahligen Wert zurück, der verwendet werden kann, um die Anforderung zu identifizieren, mit der cancelAnimationFrame() Verwendung eines Rückrufs abgebrochen werden kann. Diese Methode ist vergleichbar mit der Window.requestAnimationFrame() Methode.

requestHitTestSource()

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

requestHitTestSourceForTransientInput()

Fordert ein XRTransientInputHitTestSource Objekt an, das die Hit-Test-Subscription für eine temporäre Eingabequelle verwaltet.

requestLightProbe()

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

requestReferenceSpace()

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 ein NotSupportedError DOMException, falls der angeforderte Raumtyp nicht vom Gerät unterstützt wird.

updateRenderState()

Aktualisiert die Eigenschaften des Renderzustands der Sitzung.

Ereignisse

Die folgenden Ereignisse werden an XRSession-Objekte übermittelt.

end

Wird an das XRSession-Objekt gesendet, nachdem die WebXR-Sitzung beendet ist 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

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

select

Ein Ereignis vom Typ XRInputSourceEvent, das der Sitzung gesendet wird, wenn eine der Eingabequellen der Sitzung erfolgreich eine Hauptaktion abgeschlossen hat. Dies entspricht im Allgemeinen dem Drücken eines Auslösers, Touchpads oder einer Taste durch den Benutzer, dem 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 vor der Fertigstellung abgebrochen. Auch über die onselect-Ereignishandler-Eigenschaft verfügbar.

selectend

Ein Ereignis vom Typ XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte seine Hauptaktion beendet oder während der Ausführung einer Hauptaktion getrennt wird. Zum Beispiel: Für Tasten- oder Auslöseraktionen bedeutet dies, dass die Taste 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

Ein Ereignis vom Typ XRInputSourceEvent, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte vom Benutzer in einer Weise initialisiert wird, die das Beginnen der Hauptaktion verursacht. Dies ist das erste der session*-Ereignisse, die gesendet werden. Auch über die onselectstart-Ereignishandler-Eigenschaft verfügbar.

squeeze

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 kann z. B. 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

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

Ein Ereignis vom Typ XRInputSourceEvent, das an die XRSession gesendet wird, wenn der Benutzer zunächst einen quetschbaren Controller drückt. Dies könnte zum Beispiel ein Auslöser sein, der zum Greifen von Objekten verwendet wird, oder könnte tatsächlich das Quetschen darstellen, wenn ein haptischer Handschuh getragen wird. Auch über die onsqueezestart-Ereignishandler-Eigenschaft verfügbar.

visibilitychange

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

Beispiel

Dieses Beispiel erstellt eine neue XRSession im inline-Modus, sodass sie innerhalb eines HTML-Elements angezeigt werden kann. Dadurch wird vermieden, dass ein spezielles 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