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 PositionSensorVRDevice-Interface der WebVR API repräsentiert den Positionssensor der VR-Hardware. Sie können Informationen wie die aktuelle Position und Ausrichtung des Sensors in Bezug auf das Head-Mounted Display über die Methode PositionSensorVRDevice.getState() abrufen.

Instanzmethoden

PositionSensorVRDevice.getState()

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 wollen, im Gegensatz zu getImmediateState().

PositionSensorVRDevice.getImmediateState()

Gibt den aktuellen, unmittelbaren Zustand des Positionssensors zurück. Dies ist nur selten zu verwenden, für bestimmte spezielle Verwendungszwecke, wie z.B. das Abtasten der unmittelbaren Position eines Handorientierungssensors — oder zumindest wird es in Zukunft sein.

PositionSensorVRDevice.resetSensor()

Kann verwendet werden, um den Sensor zurückzusetzen, wenn gewünscht, wodurch die Positions- und Orientierungswerte auf Null zurückgesetzt werden.

Instanzeigenschaften

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

VRDisplay.displayId Schreibgeschützt

Gibt die ID für dieses spezielle VRDevice zurück. Die ID sollte sich über Browser-Neustarts hinweg nicht ändern, was es ermöglicht, Konfigurationsdaten darauf basierend zu speichern.

VRDisplay.displayName Schreibgeschützt

Ein menschenlesbarer Name zur Identifizierung des VRDevice.

Beispiele

Das folgende Beispiel verwendet die WebVR API, um die Ansicht einer einfachen 2D-Canvas-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 auf ein VRPose-Objekt zu, indem wir PositionSensorVRDevice.getState() verwenden und es in posState speichern. Wir prüfen dann, ob Positions- und Orientierungsinformationen im aktuellen Frame vorhanden sind, indem wir VRPose.position und VRPose.orientation verwenden (diese geben null zurück, wenn z.B. das Head-Mounted Display ausgeschaltet ist oder nicht auf den Positionssensor zeigt, was einen Fehler verursachen würde).

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

Browser-Kompatibilität

Siehe auch