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.
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
XRInputSource
s 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 vonrequestAnimationFrame()
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 MethodeWindow.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 angefordertenXRReferenceSpace
oderXRBoundedReferenceSpace
aufgelöst wird oder wirft einenNotSupportedError
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 TypXRSessionEvent
repräsentiert und ist auch über die Ereignis-Handler-Eigenschaftonend
verfügbar. inputsourceschange
Experimentell-
Ein Ereignis des Typs
XRInputSourcesChangeEvent
, das an dieXRSession
gesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen geändert hat. Auch über die Ereignis-Handler-Eigenschaftoninputsourceschange
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. Dasselect
Ereignis wird nach demselectstart
Ereignis und unmittelbar vor demselectend
Ereignis gesendet. Wennselect
nicht gesendet wird, wurde die Auswahlaktion abgebrochen, bevor sie abgeschlossen war. Auch über die Ereignis-Handler-Eigenschaftonselect
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 dreiselect*
Ereignisse, das gesendet wird. Auch über die Ereignis-Handler-Eigenschaftonselectend
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 sendendesession*
Ereignis. Auch über die Ereignis-Handler-Eigenschaftonselectstart
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 demsqueezeend
Ereignis gesendet, um anzuzeigen, dass die Quetschaktion beendet ist. Auch über die Ereignis-Handler-Eigenschaftonsqueeze
verfügbar. squeezeend
Experimentell-
Ein
XRInputSourceEvent
, das an dieXRSession
gesendet wird, wenn die primäre Quetschaktion endet, unabhängig davon, ob die Aktion erfolgreich war oder nicht. Auch über die Ereignis-Handler-Eigenschaftonsqueezeend
verfügbar. squeezestart
Experimentell-
Ein Ereignis des Typs
XRInputSourceEvent
, das an dieXRSession
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-Eigenschaftonsqueezestart
verfügbar. visibilitychange
Experimentell-
Ein
XRSessionEvent
, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitsstatus gemäß demvisibilityState
ändert. Auch über die Ereignis-Handler-Eigenschaftonvisibilitychange
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.
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 |