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 getState()
-Methode der PositionSensorVRDevice
-Schnittstelle 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 sollten, 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 in jedem Frame einer requestAnimationFrame
-Schleife 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 holen wir uns ein VRPose
-Objekt mit getState()
und speichern es in posState
. Wir überprüfen dann, ob Positions- und Orientierungsinformationen im aktuellen Frame vorhanden sind, indem wir VRPose.position
und VRPose.orientation
nutzen (diese geben null
zurück, wenn beispielsweise das Headset ausgeschaltet ist oder nicht auf den Positionssensor gerichtet ist, was einen Fehler verursachen würde).
Wir geben dann die x-, y- und z-Position und Orientierungswerte zu Informationszwecken aus und verwenden diese Werte, um die Variablen xPos
, yPos
, zPos
, xOrient
, yOrient
und zOrient
zu aktualisieren, die zur Aktualisierung des Szenen-Renderings in jedem Frame verwendet werden.