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

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.

Das Interface PositionSensorVRDevice der WebVR API repräsentiert den Positionssensor einer VR-Hardware. Über die Methode PositionSensorVRDevice.getState() können Sie Informationen wie die aktuelle Position und Ausrichtung des Sensors relativ zum Head-Mounted Display abrufen.

Instanzeigenschaften

Dieses Interface definiert keine eigenen Eigenschaften, erbt aber die Eigenschaften seines übergeordneten Interfaces VRDisplay.

VRDisplay.displayId Schreibgeschützt

Gibt die ID dieses bestimmten VRDevice zurück. Die ID sollte auch nach einem Neustart des Browsers gleich bleiben, damit darauf basierende Konfigurationsdaten gespeichert werden können.

VRDisplay.displayName Schreibgeschützt

Ein menschenlesbarer Name zur Identifizierung des VRDevice.

Instanzmethoden

PositionSensorVRDevice.getState()

Gibt den aktuellen Zustand des Positionssensors für den aktuellen Frame (z. B. innerhalb des aktuellen Callbacks von window.requestAnimationFrame) oder für den vorherigen Frame in einem VRPose-Objekt zurück. Normalerweise sollten Sie diese Methode statt getImmediateState() verwenden.

PositionSensorVRDevice.getImmediateState()

Gibt den momentanen Zustand des Positionssensors zurück. Diese Methode ist nur für seltene Sonderfälle vorgesehen, beispielsweise um die unmittelbare Position eines Sensors für die Handausrichtung abzutasten – oder wird zumindest künftig dafür vorgesehen sein.

PositionSensorVRDevice.resetSensor()

Kann bei Bedarf verwendet werden, um den Sensor zurückzusetzen und die Positions- und Ausrichtungswerte auf null zu setzen.

Beispiele

Das folgende Beispiel verwendet die WebVR API, um die Ansicht einer einfachen 2D-Canvas-Szene bei 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 rufen wir mit PositionSensorVRDevice.getState() ein VRPose-Objekt ab und speichern es in posState. Anschließend prüfen wir mithilfe von VRPose.position und VRPose.orientation, ob für den aktuellen Frame Positions- und Ausrichtungsinformationen vorliegen. Diese Eigenschaften geben null zurück, wenn beispielsweise das Head-Mounted Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was sonst zu einem Fehler führen würde.

Anschließend geben wir die x-, y- und z-Werte für Position und Ausrichtung zu Informationszwecken aus. Außerdem aktualisieren wir mit diesen Werten die Variablen xPos, yPos, zPos, xOrient, yOrient und zOrient, mit denen die Darstellung der Szene bei jedem Frame aktualisiert wird.

Browser-Kompatibilität

Siehe auch