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.
Instanzeigenschaften
Zusätzlich zu den unten aufgeführten Eigenschaften erbt XRSession Eigenschaften von seinem übergeordneten Interface, EventTarget.
depthDataFormatSchreibgeschützt-
Gibt das Tiefenerkennungsdatenformat zurück, mit dem die Sitzung konfiguriert wurde.
depthUsageSchreibgeschützt-
Gibt die Verwendung der Tiefenerkennung zurück, mit der die Sitzung konfiguriert wurde.
domOverlayStateSchreibgeschützt-
Bietet Informationen über das DOM-Overlay, falls die Funktion aktiviert ist.
enabledFeaturesSchreibgeschützt-
Gibt ein Array der gewährten Sitzungsfunktionen zurück.
environmentBlendModeSchreibgeschü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.
inputSourcesSchreibgeschü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. interactionModeSchreibgeschü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.
preferredReflectionFormatSchreibgeschützt-
Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für die Texturdaten der Lichtschätzung verwendet wird.
renderStateSchreibgeschützt-
Ein
XRRenderStateObjekt, 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. visibilityStateSchreibgeschü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 vonrequestAnimationFrame()zurückgegeben wurde. end()-
Beendet die WebXR-Sitzung. Gibt ein
Promisezurü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 derWindow.requestAnimationFrame()Methode. requestHitTestSource()-
Fordert ein
XRHitTestSourceObjekt an, das die Abonnementprüfung für Treffer erledigt. requestHitTestSourceForTransientInput()-
Fordert ein
XRTransientInputHitTestSourceObjekt an, das die Abonnementprüfung für Treffer eines transienten Eingabeelements erledigt. requestLightProbe()-
Fordert ein
XRLightProbean, das Lichtinformationen an einem bestimmten Punkt in der Umgebung des Benutzers schätzt. requestReferenceSpace()-
Fordert an, dass ein neues
XRReferenceSpacedes angegebenen Typs erstellt wird. Gibt ein Versprechen zurück, das mit dem angefordertenXRReferenceSpaceoderXRBoundedReferenceSpaceaufgelöst wird, oder wirft eineNotSupportedErrorDOMException, 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
XRSessionObjekt gesendet, nachdem die WebXR-Sitzung beendet wurde und alle hardwarebezogenen Funktionen abgeschlossen sind. Das Ereignis wird durch ein Objekt des TypsXRSessionEventdargestellt. Ebenfalls verfügbar über dieonendEreignishandler-Eigenschaft. inputsourceschange-
Ein Ereignis des Typs
XRInputSourcesChangeEvent, das an dieXRSessiongesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen geändert hat. Ebenfalls verfügbar über dieoninputsourceschangeEreignishandler-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. DasselectEreignis wird nach demselectstartEreignis gesendet und unmittelbar bevor dasselectendEreignis gesendet wird. Wennselectnicht gesendet wird, wurde die Auswahlaktion vor der Fertigstellung abgebrochen. Ebenfalls verfügbar über dieonselectEreignishandler-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 dreiselect*Ereignisse, die gesendet werden. Ebenfalls verfügbar über dieonselectendEreignishandler-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 erstesession*Ereignis, das gesendet wird. Ebenfalls verfügbar über dieonselectstartEreignishandler-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 demsqueezeendEreignis gesendet, um anzuzeigen, dass die Quetschaktion vorbei ist. Ebenfalls verfügbar über dieonsqueezeEreignishandler-Eigenschaft. squeezeend-
Ein
XRInputSourceEvent, das an dieXRSessiongesendet wird, wenn die primäre Quetschaktion endet, unabhängig davon, ob die Aktion erfolgreich war oder nicht. Ebenfalls verfügbar über dieonsqueezeendEreignishandler-Eigenschaft. squeezestart-
Ein Ereignis des Typs
XRInputSourceEvent, das an dieXRSessiongesendet 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 dieonsqueezestartEreignishandler-Eigenschaft. visibilitychange-
Ein
XRSessionEvent, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitszustand, wie durch denvisibilityStateangegeben, ändert. Ebenfalls verfügbar über dieonvisibilitychangeEreignishandler-Eigenschaft. visibilitymaskchange-
Ein
XRVisibilityMaskChangeEvent, das an die Sitzung gesendet wird, wenn sich der für den Benutzer sichtbare Teil derXRViewändert und damit Leistungsverbesserungen ermöglicht, indem der Browser nur den sichtbaren Teil der aktualisierten Ansicht zeichnet. Ebenfalls verfügbar über dieonvisibilitymaskchangeEreignishandler-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.
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
:xr-overlayPseudo-Klasse