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.
depthDataFormatExperimentell Schreibgeschützt-
Gibt das Tiefensensordatenformat zurück, mit dem die Sitzung konfiguriert wurde.
depthUsageExperimentell Schreibgeschützt-
Gibt die Nutzung des Tiefensensordaten zurück, mit der die Sitzung konfiguriert wurde.
domOverlayStateExperimentell Schreibgeschützt-
Bietet Informationen über das DOM-Overlay, wenn das Feature aktiviert ist.
enabledFeaturesExperimentell Schreibgeschützt-
Gibt ein Array von gewährten Sitzungs-Features zurück.
environmentBlendModeExperimentell 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.
inputSourcesExperimentell Schreibgeschützt-
Gibt eine Liste der
XRInputSources dieser Sitzung zurück, von denen jede ein Eingabegerät darstellt, das zur Steuerung der Kamera und/oder Szene verwendet wird. interactionModeExperimentell 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.
preferredReflectionFormatExperimentell Schreibgeschützt-
Gibt das bevorzugte Reflexionsformat dieser Sitzung zurück, das für die Beleuchtungsschätzungstexturdaten verwendet wird.
renderStateExperimentell 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. visibilityStateExperimentell 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
promisezurü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
XRLightProbean, das Lichtinformationen an einem bestimmten Punkt in der Umgebung des Benutzers schätzt. requestReferenceSpace()Experimentell-
Fordert an, dass ein neuer
XRReferenceSpacedes angegebenen Typs erstellt wird. Gibt ein Versprechen zurück, das mit dem angefordertenXRReferenceSpaceoderXRBoundedReferenceSpaceaufgelöst wird oder wirft einenNotSupportedErrorDOMException, 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.
endExperimentell-
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 TypXRSessionEventrepräsentiert und ist auch über die Ereignis-Handler-Eigenschaftonendverfügbar. inputsourceschangeExperimentell-
Ein Ereignis des Typs
XRInputSourcesChangeEvent, das an dieXRSessiongesendet wird, wenn sich die Liste der aktiven XR-Eingabequellen geändert hat. Auch über die Ereignis-Handler-Eigenschaftoninputsourceschangeverfügbar. selectExperimentell-
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. DasselectEreignis wird nach demselectstartEreignis und unmittelbar vor demselectendEreignis gesendet. Wennselectnicht gesendet wird, wurde die Auswahlaktion abgebrochen, bevor sie abgeschlossen war. Auch über die Ereignis-Handler-Eigenschaftonselectverfügbar. selectendExperimentell-
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-Eigenschaftonselectendverfügbar. selectstartExperimentell-
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-Eigenschaftonselectstartverfügbar. squeezeExperimentell-
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 demsqueezeendEreignis gesendet, um anzuzeigen, dass die Quetschaktion beendet ist. Auch über die Ereignis-Handler-Eigenschaftonsqueezeverfügbar. squeezeendExperimentell-
Ein
XRInputSourceEvent, das an dieXRSessiongesendet wird, wenn die primäre Quetschaktion endet, unabhängig davon, ob die Aktion erfolgreich war oder nicht. Auch über die Ereignis-Handler-Eigenschaftonsqueezeendverfügbar. squeezestartExperimentell-
Ein Ereignis des Typs
XRInputSourceEvent, das an dieXRSessiongesendet 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-Eigenschaftonsqueezestartverfügbar. visibilitychangeExperimentell-
Ein
XRSessionEvent, das an die Sitzung gesendet wird, wenn sich der Sichtbarkeitsstatus gemäß demvisibilityStateändert. Auch über die Ereignis-Handler-Eigenschaftonvisibilitychangeverfü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> |
Browser-Kompatibilität
Loading…