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.
Instanzeigenschaften
Zusätzlich zu den nachfolgend aufgeführten Eigenschaften erbt XRSession Eigenschaften von seinem übergeordneten Interface, EventTarget.
depthDataFormatSchreibgeschützt-
Gibt das Tiefendatenformat zurück, mit dem die Sitzung konfiguriert wurde.
depthUsageSchreibgeschützt-
Gibt die Tiefennutzungsart 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 Sitzungsmerkmale zurück.
environmentBlendModeSchreibgeschü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.
inputSourcesSchreibgeschü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. interactionModeSchreibgeschü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.
preferredReflectionFormatSchreibgeschützt-
Gibt das bevorzugte Reflektionsformat dieser Sitzung zurück, das für die Texturdaten zur Beleuchtungsschätzung verwendet wird.
renderStateSchreibgeschützt-
Ein
XRRenderStateObjekt, 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. visibilityStateSchreibgeschü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 vonrequestAnimationFrame()zurückgegeben wurde. end()-
Beendet die WebXR-Sitzung. Gibt ein
Promisezurü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 derWindow.requestAnimationFrame()Methode. requestHitTestSource()-
Fordert ein
XRHitTestSourceObjekt an, das die Hit-Test-Subscription verwaltet. requestHitTestSourceForTransientInput()-
Fordert ein
XRTransientInputHitTestSourceObjekt an, das die Hit-Test-Subscription für eine temporäre Eingabequelle verwaltet. requestLightProbe()-
Fordert ein
XRLightProbean, das Beleuchtungsinformationen an einem gegebenen Punkt in der Umgebung des Benutzers schätzt. requestReferenceSpace()-
Fordert an, dass ein neuer
XRReferenceSpacedes angegebenen Typs erstellt wird. Gibt ein Promise zurück, das mit dem angefordertenXRReferenceSpaceoderXRBoundedReferenceSpaceaufgelöst wird, oder wirft einNotSupportedErrorDOMException, 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 TypXRSessionEventdargestellt. Auch über dieonend-Ereignishandler-Eigenschaft verfügbar. inputsourceschange-
Ein Ereignis vom Typ
XRInputSourcesChangeEvent, das an dieXRSessiongesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen ändert. Auch über dieoninputsourceschange-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. Dasselect-Ereignis wird nach demselectstart-Ereignis gesendet und unmittelbar vor demselectend-Ereignis. Wennselectnicht gesendet wird, wurde die Auswahlaktion vor der Fertigstellung abgebrochen. Auch über dieonselect-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 dreiselect*-Ereignisse, die gesendet werden. Auch über dieonselectend-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 dersession*-Ereignisse, die gesendet werden. Auch über dieonselectstart-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 demsqueezeend-Ereignis gesendet, um anzuzeigen, dass die Quetschaktion beendet ist. Auch über dieonsqueeze-Ereignishandler-Eigenschaft verfügbar. squeezeend-
Ein
XRInputSourceEvent, das an dieXRSessiongesendet wird, wenn die primäre Quetschaktion endet, unabhängig davon, ob die Aktion erfolgreich war oder nicht. Auch über dieonsqueezeend-Ereignishandler-Eigenschaft verfügbar. squeezestart-
Ein Ereignis vom Typ
XRInputSourceEvent, das an dieXRSessiongesendet 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 dieonsqueezestart-Ereignishandler-Eigenschaft verfügbar. visibilitychange-
Ein
XRSessionEvent, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitsstatus gemäßvisibilityStateändert. Auch über dieonvisibilitychange-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.
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