Start · Sprachen · JavaScript · Referenz · VREyeParameters

VREyeParameters

Schnittstelle

Enthält die Rendering-Daten für ein einzelnes Auge eines VR-Headsets: Augenabstand-Versatz, Sichtfeld und empfohlene Render-Auflösung.

seit JavaScript WebVR 1.1 (veraltet, nie standardisiert; ersetzt d deprecated seit ja Kategorie: webapi

Signatur

interface VREyeParameters

Beschreibung

Das Interface VREyeParameters gehört zur veralteten WebVR API. Es enthält alle Informationen, die man braucht, um eine Szene für ein Auge korrekt darzustellen. Eine Instanz erzeugt man nicht selbst. Man bekommt sie über VRDisplay.getEyeParameters("left") bzw. VRDisplay.getEyeParameters("right").

Wichtige Eigenschaften (alle nur lesbar):

  • offset: ein Float32Array mit drei Werten (x, y, z). Er gibt den Versatz des Auges von der Mitte zwischen beiden Augen in Metern an und entspricht etwa dem halben Augenabstand (IPD).
  • renderWidth / renderHeight: empfohlene Breite und Höhe des Renderbereichs in Pixeln für dieses Auge.
  • fieldOfView (VRFieldOfView): das Sichtfeld in Grad (oben, rechts, unten, links). Diese Eigenschaft gilt als veraltet, stattdessen nimmt man die Projektionsmatrizen aus VRFrameData.

In der Praxis braucht man VREyeParameters vor allem, um die Größe des Canvas festzulegen. Für stereoskopisches Rendern liegen beide Augen nebeneinander, deshalb ist die Canvas-Breite die Summe beider renderWidth-Werte und die Höhe das Maximum der renderHeight-Werte. Für neue Projekte sollte man die WebXR Device API verwenden, die WebVR vollständig ersetzt.

Rückgabewert

Typ
VREyeParameters
Beschreibung
Wird von VRDisplay.getEyeParameters(whichEye) zurückgegeben. Es gibt keinen öffentlichen Konstruktor.

Beispiele

Augenparameter abrufen und ausgeben

// Nur in Browsern mit WebVR-Unterstützung (z. B. alter Firefox, Oculus Browser)
const init = async () => {
  if (!navigator.getVRDisplays) {
    console.log('WebVR wird nicht unterstützt – bitte WebXR verwenden.');
    return;
  }
  const [display] = await navigator.getVRDisplays();
  if (!display) return console.log('Kein VR-Headset gefunden.');

  const left = display.getEyeParameters('left');
  console.log('Offset links:', Array.from(left.offset));
  console.log(`Auflösung: ${left.renderWidth} x ${left.renderHeight}`);
};

init();
Offset links: [-0.032, 0, 0] Auflösung: 1512 x 1680

Canvas-Größe für Stereo-Rendering festlegen

const setupCanvas = (display, canvas) => {
  const left = display.getEyeParameters('left');
  const right = display.getEyeParameters('right');

  // Beide Augen nebeneinander rendern
  canvas.width = left.renderWidth + right.renderWidth;
  canvas.height = Math.max(left.renderHeight, right.renderHeight);
  console.log(`Canvas: ${canvas.width} x ${canvas.height}`);
};

navigator.getVRDisplays?.().then(([display]) => {
  if (display) setupCanvas(display, document.querySelector('canvas'));
});
Canvas: 3024 x 1680

Augenabstand (IPD) berechnen

const getIPD = (display) => {
  const l = display.getEyeParameters('left').offset;
  const r = display.getEyeParameters('right').offset;
  const ipd = Math.hypot(r[0] - l[0], r[1] - l[1], r[2] - l[2]);
  return `${(ipd * 1000).toFixed(1)} mm`;
};

navigator.getVRDisplays?.().then(([d]) => d && console.log('IPD:', getIPD(d)));
IPD: 64.0 mm

// Wichtig · Fallstricke

Veraltet: WebVR wurde nie standardisiert und ist in allen gängigen Browsern entfernt oder abgeschaltet (Chrome hatte es nur hinter einem Flag, Firefox hat es entfernt). Nutze stattdessen die WebXR Device API. Dort entsprechen XRView und XRWebGLLayer.getViewport() dieser Funktion.

  • Prüfe die Unterstützung immer vorher, z. B. mit 'getVRDisplays' in navigator.
  • fieldOfView ist schon innerhalb von WebVR 1.1 veraltet. Nimm für die Projektion VRFrameData.leftProjectionMatrix bzw. rightProjectionMatrix.
  • renderWidth/renderHeight sind nur Empfehlungen. Kleinere Werte verbessern die Leistung, machen das Bild aber unschärfer.
  • Die Werte können sich ändern, z. B. wenn der Nutzer den IPD-Regler am Headset verstellt. Frage sie deshalb bei einem vrdisplaypresentchange-Ereignis neu ab.
  • WebVR benötigt einen sicheren Kontext (HTTPS).