Start · Sprachen · JavaScript · Referenz · VREyeParameters.maximumFieldOfView

VREyeParameters.maximumFieldOfView

Eigenschaft

Schreibgeschützte Eigenschaft, die als <code>VRFieldOfView</code>-Objekt das größte Sichtfeld angibt, das das Headset für das jeweilige Auge unterstützt.

seit JavaScript Veraltet (WebVR 1.0, nicht standardisiert) – in ke deprecated seit ja Kategorie: webapi

Signatur

VREyeParameters.maximumFieldOfView

Beschreibung

maximumFieldOfView ist eine schreibgeschützte Eigenschaft der Schnittstelle VREyeParameters aus der alten WebVR-API. Sie liefert ein VRFieldOfView-Objekt. Dieses beschreibt mit den vier Winkeln upDegrees, rightDegrees, downDegrees und leftDegrees, wie groß das Sichtfeld für ein Auge höchstens sein kann. Die Angaben sind in Grad und beziehen sich jeweils auf die Blickmitte des Auges.

Ein VREyeParameters-Objekt erhält man über VRDisplay.getEyeParameters("left") bzw. getEyeParameters("right"). In frühen Entwürfen der WebVR-API gab es neben maximumFieldOfView auch minimumFieldOfView, recommendedFieldOfView und currentFieldOfView. Damit konnten Anwendungen ein eigenes Sichtfeld innerhalb der Gerätegrenzen wählen, zum Beispiel ein kleineres Sichtfeld, um Rechenleistung zu sparen. Mit dem Entwurf WebVR 1.1 fielen diese Eigenschaften weg. Übrig blieb nur noch fieldOfView.

Die Eigenschaft ist heute nur noch für historischen Code oder für die Pflege alter VR-Anwendungen interessant. Neue Projekte sollten die WebXR Device API verwenden. Dort ergibt sich das Sichtfeld aus der Projektionsmatrix XRView.projectionMatrix.

Rückgabewert

Typ
VRFieldOfView
Beschreibung
Ein Objekt mit den Eigenschaften upDegrees, rightDegrees, downDegrees und leftDegrees (jeweils number, in Grad). Es beschreibt das größte Sichtfeld, das für dieses Auge unterstützt wird.

Beispiele

Maximales Sichtfeld des linken Auges auslesen (mit Funktionsprüfung)

const logMaxFov = async () => {
  if (!('getVRDisplays' in navigator)) {
    console.log('WebVR wird nicht unterstützt – bitte WebXR verwenden.');
    return;
  }
  const displays = await navigator.getVRDisplays();
  if (displays.length === 0) {
    console.log('Kein VR-Gerät gefunden.');
    return;
  }
  const eye = displays[0].getEyeParameters('left');
  const fov = eye.maximumFieldOfView;
  if (!fov) {
    console.log('maximumFieldOfView ist in diesem WebVR-Stand nicht verfügbar.');
    return;
  }
  console.log(`oben: ${fov.upDegrees}°, unten: ${fov.downDegrees}°`);
  console.log(`links: ${fov.leftDegrees}°, rechts: ${fov.rightDegrees}°`);
};

logMaxFov();
WebVR wird nicht unterstützt – bitte WebXR verwenden. (auf einem alten WebVR-1.0-Browser z. B.: oben: 53.09°, unten: 53.09° / links: 47.52°, rechts: 46.63°)

Gesamtes horizontales und vertikales Sichtfeld berechnen

// Summiert die Halbwinkel eines VRFieldOfView-Objekts
const totalFov = (fov) => ({
  horizontal: fov.leftDegrees + fov.rightDegrees,
  vertical: fov.upDegrees + fov.downDegrees
});

// Beispielwerte, wie sie maximumFieldOfView liefern könnte
const maxFov = { upDegrees: 53, downDegrees: 53, leftDegrees: 47, rightDegrees: 46 };
console.log(totalFov(maxFov));
{ horizontal: 93, vertical: 106 }

Gewünschtes Sichtfeld auf die Gerätegrenzen begrenzen

// Begrenzt ein gewünschtes Sichtfeld auf das vom Gerät unterstützte Maximum
const clampFov = (wanted, max) => ({
  upDegrees: Math.min(wanted.upDegrees, max.upDegrees),
  downDegrees: Math.min(wanted.downDegrees, max.downDegrees),
  leftDegrees: Math.min(wanted.leftDegrees, max.leftDegrees),
  rightDegrees: Math.min(wanted.rightDegrees, max.rightDegrees)
});

const max = { upDegrees: 50, downDegrees: 50, leftDegrees: 45, rightDegrees: 45 };
const wanted = { upDegrees: 60, downDegrees: 40, leftDegrees: 45, rightDegrees: 50 };
console.log(clampFov(wanted, max));
{ upDegrees: 50, downDegrees: 40, leftDegrees: 45, rightDegrees: 45 }

// Wichtig · Fallstricke

  • Veraltet und entfernt: maximumFieldOfView gab es nur im frühen WebVR-1.0-Entwurf. In WebVR 1.1 wurde die Eigenschaft gestrichen. Die WebVR-API selbst wurde durch die WebXR Device API ersetzt und aus allen großen Browsern entfernt (Chrome, Firefox, Edge; Safari hat sie nie unterstützt).
  • Selbst Browser mit WebVR 1.1 liefern hier undefined. Prüfe die Eigenschaft deshalb immer, bevor du sie verwendest, oder nimm stattdessen VREyeParameters.fieldOfView.
  • Die Winkel sind Halbwinkel, gemessen von der Blickmitte des Auges aus. Das gesamte horizontale Sichtfeld ist leftDegrees + rightDegrees. Die Werte können unsymmetrisch sein.
  • WebVR und WebXR laufen nur in einem sicheren Kontext (HTTPS). Außerdem kann eine Permissions-Policy (xr-spatial-tracking) den Zugriff sperren.
  • Der Ersatz in WebXR: Das Sichtfeld steckt in XRView.projectionMatrix. Bei Bedarf kann man es aus der Matrix zurückrechnen.