PositionSensorVRDevice: getState()-Methode
Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.
Nicht standardisiert: Diese Funktion ist nicht standardisiert und befindet sich nicht auf dem Weg zur Standardisierung. Verwenden Sie sie nicht auf Produktionsseiten, die dem Web ausgesetzt sind: Sie funktioniert nicht für alle Benutzer. Es kann auch große Inkompatibilitäten zwischen Implementierungen geben, und das Verhalten kann sich in Zukunft ändern.
Die Methode getState()
des PositionSensorVRDevice
-Interfaces gibt den aktuellen Zustand des Positionssensors für den aktuellen Frame zurück (z. B. innerhalb des aktuellen window.requestAnimationFrame
-Callbacks) oder für den vorherigen Frame, enthalten in einem VRPose
-Objekt. Dies ist die Methode, die Sie normalerweise verwenden möchten, im Gegensatz zu PositionSensorVRDevice.getImmediateState
.
Syntax
getState()
Parameter
Keine.
Rückgabewert
Ein VRPose
-Objekt.
Beispiele
Das folgende Beispiel verwendet die WebVR-API, um die Ansicht einer einfachen CanvasRenderingContext2D
-Szene bei jedem Frame eines requestAnimationFrame
-Schleifens zu aktualisieren.
function setView() {
const posState = gPositionSensor.getState();
if (posState.hasPosition) {
posPara.textContent = `Position: x${roundToTwo(
posState.position.x,
)} y${roundToTwo(posState.position.y)} z${roundToTwo(posState.position.z)}`;
xPos = -posState.position.x * WIDTH * 2;
yPos = posState.position.y * HEIGHT * 2;
zPos = -posState.position.z > 0.01 ? -posState.position.z : 0.01;
}
if (posState.hasOrientation) {
orientPara.textContent = `Orientation: x${roundToTwo(
posState.orientation.x,
)} y${roundToTwo(posState.orientation.y)} z${roundToTwo(
posState.orientation.z,
)}`;
xOrient = posState.orientation.x * WIDTH;
yOrient = -posState.orientation.y * HEIGHT * 2;
zOrient = posState.orientation.z * 180;
}
}
Hier beziehen wir ein VRPose
-Objekt mit getState()
und speichern es in posState
. Dann überprüfen wir, ob Positions- und Orientierungsinformationen im aktuellen Frame vorhanden sind, indem wir VRPose.position
und VRPose.orientation
verwenden (diese geben null
zurück, wenn zum Beispiel das Head-Mounted Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was zu einem Fehler führen würde).
Anschließend geben wir die x-, y- und z-Position sowie die Orientierungswerte zu Informationszwecken aus und verwenden diese Werte, um die Variablen xPos
, yPos
, zPos
, xOrient
, yOrient
und zOrient
zu aktualisieren, die zur Aktualisierung der Szenenwiedergabe in jedem Frame verwendet werden.
Browser-Kompatibilität
BCD tables only load in the browser