Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

PositionSensorVRDevice: getState() Methode

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.

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

js
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.

js
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.

Browser-Kompatibilität

Siehe auch