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, bevor Sie diese produktiv verwenden.
Die XRSession
-Schnittstelle der WebXR Device API repräsentiert eine laufende XR-Sitzung und bietet Methoden und Eigenschaften zur Interaktion mit und Steuerung der Sitzung. Um eine WebXR-Sitzung zu eröffnen, verwenden Sie die Methode requestSession()
der Schnittstelle XRSystem
.
Mit XRSession
-Methoden können Sie die Position und Ausrichtung des Betrachters abfragen (die XRViewerPose
), Informationen über die Umgebung des Benutzers sammeln und Bilder an den Benutzer präsentieren. XRSession
unterstützt sowohl Inline- als auch immersive virtuelle und erweiterte Realitätsmodi.
Instanzeigenschaften
Zusätzlich zu den unten aufgeführten Eigenschaften erbt XRSession
Eigenschaften von seiner übergeordneten Schnittstelle EventTarget
.
depthDataFormat
Experimentell Nur lesbar-
Gibt das Tiefensensing-Datenformat zurück, mit dem die Sitzung konfiguriert wurde.
depthUsage
Experimentell Nur lesbar-
Gibt die Tiefensensing-Nutzung zurück, mit der die Sitzung konfiguriert wurde.
domOverlayState
Experimentell Nur lesbar-
Bietet Informationen über das DOM-Overlay, wenn das Feature aktiviert ist.
environmentBlendMode
Experimentell Nur lesbar-
Gibt den Blendmodus dieser Sitzung zurück, der angibt, wie viel der realen Umgebung durch das XR-Gerät sichtbar ist und wie das Gerät die Bilddarstellung mit ihr vermischen wird.
inputSources
Experimentell Nur lesbar-
Gibt eine Liste der
XRInputSource
s dieser Sitzung zurück, die jeweils ein Eingabegerät darstellen, das zur Steuerung der Kamera und/oder Szene verwendet wird. interactionMode
Experimentell Nur lesbar-
Gibt den Interaktionsmodus dieser Sitzung zurück, der den optimalen Raum (laut User-Agent) für die Anwendung beschreibt, um eine interaktive Benutzeroberfläche für die aktuelle Sitzung zu zeichnen.
preferredReflectionFormat
Experimentell Nur lesbar-
Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für Beleuchtungsschätzungs-Texturdaten verwendet wird.
renderState
Experimentell Nur lesbar-
Ein
XRRenderState
-Objekt, das Optionen enthält, die beeinflussen, wie die Bilder gerendert werden. Dies umfasst Dinge wie die Nah- und Fernabschnitte (Entfernungen, die definieren, wie nah und wie weit Objekte sein können und dennoch gerendert werden), sowie Informationen zum Sichtfeld. visibilityState
Experimentell Nur lesbar-
Ein String, der angibt, ob das Bildmaterial der Sitzung für den Benutzer sichtbar ist und, falls ja, ob es sichtbar ist, jedoch derzeit nicht das Ziel für Benutzereingaben ist.
Instanzmethoden
XRSession
bietet die folgenden Methoden zusätzlich zu denen, die von seiner übergeordneten Schnittstelle EventTarget
geerbt werden.
cancelAnimationFrame()
Experimentell-
Entfernt einen Rückruf aus dem Satz von Animations-Frame-Rendering-Rückrufen der
XRSession
, wobei der zugehörige Handle verwendet wird, der zuvor von einem Aufruf vonrequestAnimationFrame()
zurückgegeben wurde. end()
Experimentell-
Beendet die WebXR-Sitzung. Gibt ein
promise
zurück, das aufgelöst wird, wenn die Sitzung heruntergefahren wurde. requestAnimationFrame()
Experimentell-
Plant die angegebene Methode, die beim nächsten Mal aufgerufen wird, wenn der User-Agent daran arbeitet, einen Animations-Frame für das WebXR-Gerät zu rendern. Gibt einen ganzzahligen Wert zurück, der zur Identifizierung der Anfrage für die Zwecke der Stornierung des Rückrufs mit
cancelAnimationFrame()
verwendet werden kann. Diese Methode ist mit der MethodeWindow.requestAnimationFrame()
vergleichbar. requestHitTestSource()
Experimentell-
Fordert ein
XRHitTestSource
-Objekt an, das die Hit-Test-Subscription verwaltet. requestHitTestSourceForTransientInput()
Experimentell-
Fordert ein
XRTransientInputHitTestSource
-Objekt an, das die Hit-Test-Subscription für eine vorübergehende Eingabequelle verwaltet. requestLightProbe()
Experimentell-
Fordert ein
XRLightProbe
an, das Beleuchtungsinformationen 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 Promise zurück, das mit dem angefordertenXRReferenceSpace
oderXRBoundedReferenceSpace
aufgelöst wird, oder wirft eineNotSupportedError
DOMException
, wenn der angeforderte Raumtyp vom Gerät nicht unterstützt wird. updateRenderState()
Experimentell-
Aktualisiert die Eigenschaften des Render-Zustands der Sitzung.
Ereignisse
Die folgenden Ereignisse werden an XRSession
-Objekte ausgeliefert.
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
dargestellt. Auch über dieonend
-Ereignishandler-Eigenschaft verfügbar. inputsourceschange
Experimentell-
Ein Ereignis vom Typ
XRInputSourcesChangeEvent
, das an dieXRSession
gesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen geändert hat. Auch über dieoninputsourceschange
-Ereignishandler-Eigenschaft verfügbar. select
Experimentell-
Ein Ereignis vom Typ
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 Knopfs durch den Benutzer, das Aussprechen eines Befehls oder dem Ausführen einer erkennbaren Geste. Dasselect
-Ereignis wird nach demselectstart
-Ereignis gesendet und unmittelbar vor demselectend
-Ereignis. Wennselect
nicht gesendet wird, wurde die Auswahlaktion abgebrochen, bevor sie abgeschlossen wurde. Auch über dieonselect
-Ereignishandler-Eigenschaft verfügbar. selectend
Experimentell-
Ein Ereignis vom Typ
XRInputSourceEvent
, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte seine primäre Aktion beendet oder getrennt wird, während es eine primäre Aktion verarbeitet. Zum Beispiel: Bei Knopf- oder Trigger-Aktionen bedeutet dies, dass der Knopf 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
Experimentell-
Ein Ereignis vom Typ
XRInputSourceEvent
, das an das Sitzungsobjekt gesendet wird, wenn eines seiner Eingabegeräte erstmals vom Benutzer so betätigt wird, dass die primäre Aktion begonnen wird. Dies ist das erste dersession*
-Ereignisse, die gesendet werden. Auch über dieonselectstart
-Ereignishandler-Eigenschaft verfügbar. squeeze
Experimentell-
Ein
XRInputSourceEvent
, das gesendet wird, um anzuzeigen, dass eine primäre Quetschaktion erfolgreich abgeschlossen wurde. Dies zeigt an, dass das gedrückte Gerät losgelassen wurde, und kann beispielsweise 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
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 dieonsqueezeend
-Ereignishandler-Eigenschaft verfügbar. squeezestart
Experimentell-
Ein Ereignis vom Typ
XRInputSourceEvent
, das an dieXRSession
gesendet wird, wenn der Benutzer ein quetschbares Steuergerät zunächst drückt. Dies kann beispielsweise ein Trigger sein, der verwendet wird, um Objekte zu greifen, oder tatsächlich das Quetschen, wenn man einen haptischen Handschuh trägt. Auch über dieonsqueezestart
-Ereignishandler-Eigenschaft verfügbar. visibilitychange
Experimentell-
Ein
XRSessionEvent
, das an die Sitzung gesendet wird, wenn sich ihr Sichtbarkeitsstatus ändert, wie durchvisibilityState
angezeigt. Auch über dieonvisibilitychange
-Ereignishandler-Eigenschaft verfügbar.
Beispiel
Dieses Beispiel erstellt eine neue XRSession
im inline
-Modus, damit sie innerhalb eines HTML-Elements angezeigt werden kann, ohne dass ein dediziertes AR- oder VR-Betrachtungsgerä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 |
Browser-Kompatibilität
BCD tables only load in the browser