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 das aktuelle Frame zurück (z.B. innerhalb des aktuellen window.requestAnimationFrame-Callbacks) oder für das vorherige Frame, enthalten in einem VRPose-Objekt. Dies ist die Methode, die Sie normalerweise verwenden möchten, im Vergleich 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 greifen wir ein VRPose-Objekt mit getState() ab 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 verwenden (diese geben null zurück, falls zum Beispiel das Head-Mounted Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was zu einem Fehler führen würde.)

Wir geben dann zum Informationszweck die x-, y- und z-Position und Orientierungswerte aus und verwenden diese Werte, um die Variablen xPos, yPos, zPos, xOrient, yOrient und zOrient zu aktualisieren, die verwendet werden, um das Scene-Rendering in jedem Frame zu aktualisieren.

Browser-Kompatibilität

Siehe auch