WebVR API
Deprecated
Avoid using this feature in new projects. Development of the WebVR API halted in favor of WebXR. This feature may be a candidate for removal from web standards or browsers.>
Consider using the following features instead: WebXR.>
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Hinweis: Die WebVR-API wurde durch die WebXR-API ersetzt. WebVR wurde nie als Standard ratifiziert, wurde in sehr wenigen Browsern implementiert und standardmäßig aktiviert und unterstützte nur eine kleine Anzahl von Geräten.
WebVR bietet Unterstützung für die Einbindung von Virtual-Reality-Geräten – zum Beispiel Head-Mounted Displays wie das Oculus Rift oder HTC Vive – in Web-Apps, wodurch Entwickler die Möglichkeit haben, Positions- und Bewegungsinformationen vom Display in Bewegungen in einer 3D-Szene umzusetzen. Dies hat zahlreiche interessante Anwendungen, von virtuellen Produktpräsentationen und interaktiven Trainings-Apps bis hin zu immersiven Ego-Spielen.
Konzepte und Nutzung
Alle an Ihren Computer angeschlossenen VR-Geräte werden durch die Methode Navigator.getVRDisplays() zurückgegeben; jedes wird durch ein VRDisplay-Objekt repräsentiert.

VRDisplay ist die zentrale Schnittstelle in der WebVR-API — über ihre Eigenschaften und Methoden können Sie auf Funktionen zugreifen, um:
- Nützliche Informationen abzurufen, die es uns ermöglichen, das Display zu identifizieren, welche Fähigkeiten es hat, welche Controller damit verbunden sind und mehr.
- Frame-Daten für jeden Frame von Inhalten abzurufen, den Sie auf einem Display präsentieren möchten, und diese Frames mit einer konsistenten Rate zur Anzeige bereitzustellen.
- Präsentieren auf dem Display zu starten und zu stoppen.
Eine typische (einfache) WebVR-App würde so funktionieren:
Navigator.getVRDisplays()wird verwendet, um einen Verweis auf Ihr VR-Display zu erhalten.VRDisplay.requestPresent()wird verwendet, um mit der Präsentation auf dem VR-Display zu beginnen.- Die dedizierte Methode
VRDisplay.requestAnimationFrame()von WebVR wird verwendet, um die Render-Schleife der App mit der richtigen Bildwiederholrate für das Display auszuführen. - In der Render-Schleife greifen Sie auf die Daten zu, die benötigt werden, um den aktuellen Frame anzuzeigen (
VRDisplay.getFrameData()), zeichnen die angezeigte Szene zweimal – einmal für die Ansicht in jedem Auge – und übergeben dann die gerenderte Ansicht an das Display, um sie dem Benutzer anzuzeigen (VRDisplay.submitFrame()).
Darüber hinaus fügt WebVR 1.1 eine Reihe von Ereignissen am Window-Objekt hinzu, die es JavaScript ermöglichen, auf Änderungen des Display-Status zu reagieren.
Hinweis: Sie können viel mehr darüber erfahren, wie die API funktioniert, in unseren Artikeln Verwendung der WebVR-API und WebVR-Konzepte.
API-Verfügbarkeit
Die WebVR-API, die nie als Webstandard ratifiziert wurde, wurde zugunsten der WebXR-API veraltet, welche sich gut auf dem Weg befindet, den Standardisierungsprozess abzuschließen. Daher sollten Sie versuchen, vorhandenen Code auf die neuere API zu aktualisieren. Im Allgemeinen sollte der Übergang relativ schmerzlos sein.
Darüber hinaus erfordert WebVR auf einigen Geräten und/oder Browsern, dass die Seite über einen sicheren Kontext geladen wird, also über eine HTTPS-Verbindung. Wenn die Seite nicht vollständig sicher ist, sind die WebVR-Methoden und -Funktionen nicht verfügbar. Sie können dies leicht testen, indem Sie überprüfen, ob die Navigator-Methode getVRDisplays() NULL ist:
if (!navigator.getVRDisplays) {
console.error("WebVR is not available");
} else {
/* Use WebVR */
}
Verwendung von Controllern: Kombination von WebVR mit der Gamepad-API
Viele WebVR-Hardware-Setups enthalten Controller, die zusammen mit dem Headset verwendet werden. Diese können in WebVR-Anwendungen über die Gamepad-API und speziell die Gamepad Extensions-API genutzt werden, die API-Features für den Zugriff auf Controller-Posen, haptische Aktuatoren und mehr hinzufügt.
Hinweis: Unser Artikel Verwendung von VR-Controllern mit WebVR erklärt die Grundlagen, wie VR-Controller mit WebVR-Apps verwendet werden.
WebVR-Schnittstellen
VRDisplay-
Repräsentiert jedes VR-Gerät, das von dieser API unterstützt wird. Es enthält generische Informationen wie Geräte-IDs und Beschreibungen sowie Methoden zum Starten der Präsentation einer VR-Szene, zum Abrufen von Augenparametern und Anzeigeoptionen sowie anderer wichtiger Funktionen.
VRDisplayCapabilities-
Beschreibt die Fähigkeiten eines
VRDisplay– seine Merkmale können verwendet werden, um VR-Gerätefähigkeitsprüfungen durchzuführen, z. B. ob es Positionsinformationen zurückgeben kann. VRDisplayEvent-
Repräsentiert das Ereignisobjekt von WebVR-bezogenen Ereignissen (siehe die unten aufgeführten Fenster-Ereignisse).
VRFrameData-
Repräsentiert alle Informationen, die benötigt werden, um einen einzelnen Frame einer VR-Szene zu rendern; wird von
VRDisplay.getFrameData()konstruiert. VRPose-
Repräsentiert den Positionszustand zu einem gegebenen Zeitpunkt (einschließlich Orientierung, Position, Geschwindigkeit und Beschleunigung).
VREyeParameters-
Bietet Zugriff auf alle Informationen, die erforderlich sind, um eine Szene für jedes Auge korrekt zu rendern, einschließlich Sichtfeldinformationen.
VRFieldOfView-
Repräsentiert ein Sichtfeld, das durch 4 verschiedene Grad-Werte beschrieben wird, die die Ansicht von einem Mittelpunkt aus beschreiben.
VRLayerInit-
Repräsentiert eine Ebene, die in einem
VRDisplaypräsentiert werden soll. VRStageParameters-
Repräsentiert die Werte, die den Bühnenbereich für Geräte beschreiben, die raumgroße Erlebnisse unterstützen.
Erweiterungen zu anderen Schnittstellen
Die WebVR-API erweitert die folgenden APIs und fügt die aufgelisteten Funktionen hinzu.
Gamepad
Gamepad.displayIdSchreibgeschützt-
Gibt die
VRDisplay.displayIddes zugehörigenVRDisplayzurück – dasVRDisplay, dessen Szenenanzeige das Gamepad steuert.
Navigator
-
Gibt ein Array zurück, das jedes
VRDisplay-Objekt enthält, das derzeit präsentiert (VRDisplay.isPresentingisttrue). -
Gibt ein Promise zurück, das in ein Array von
VRDisplay-Objekten aufgelöst wird, die alle verfügbaren, mit dem Computer verbundenen VR-Displays repräsentieren.
Fenster-Ereignisse
vrdisplaypresentchange-
Wird ausgelöst, wenn sich der Präsentationszustand eines VR-Displays ändert – z. B. von Präsentation zu keine Präsentation oder umgekehrt.
vrdisplayconnect-
Wird ausgelöst, wenn ein kompatibles VR-Display mit dem Computer verbunden wurde.
vrdisplaydisconnect-
Wird ausgelöst, wenn ein kompatibles VR-Display vom Computer getrennt wurde.
vrdisplayactivate-
Wird ausgelöst, wenn ein Display präsentiert werden kann.
vrdisplaydeactivate-
Wird ausgelöst, wenn ein Display nicht mehr präsentiert werden kann.
Beispiele
Sie finden eine Reihe von Beispielen an diesen Orten:
- webvr-tests — sehr einfache Beispiele, die die MDN-WebVR-Dokumentation begleiten.
- Carmel-Starter-Kit — schöne einfache, gut kommentierte Beispiele, die mit Carmel, Facebooks WebVR-Browser, einhergehen.
- WebVR.info-Beispiele — etwas ausführlichere Beispiele plus Quellcode
- A-Frame-Homepage — Beispiele, die die Verwendung von A-Frame zeigen
Spezifikationen
Diese API wurde in der alten WebVR API spezifiziert, die von der WebXR Device API abgelöst wurde. Sie ist nicht mehr im Standardisierungsprozess.
Bis alle Browser die neuen WebXR-APIs implementiert haben, wird empfohlen, sich auf Frameworks wie A-Frame, Babylon.js oder Three.js oder auf ein Polyfill zu verlassen, um WebXR-Anwendungen zu entwickeln, die in allen Browsern funktionieren. Lesen Sie Metas Anleitung Portierung von WebVR auf WebXR für weitere Informationen.
Browser-Kompatibilität
Siehe auch
- A-Frame — Open-Source-Webframework für den Bau von VR-Erlebnissen.
- webvr.info — Aktuelle Informationen über WebVR, Browser-Einrichtung und Community.
- threejs-vr-boilerplate — Eine nützliche Startervorlage zum Schreiben von WebVR-Apps.
- Web VR-Polyfill — JavaScript-Implementierung von WebVR.
- WebVR-Verzeichnis — Liste qualitativ hochwertiger WebVR-Sites.