Start · Sprachen · JavaScript · Referenz · XREquirectLayer

XREquirectLayer

Schnittstelle

WebXR-Kompositionsschicht, die eine equirektanguläre Textur (360°- oder 180°-Panorama) direkt im Kompositor auf die Innenseite einer Kugel oder eines Kugelausschnitts abbildet.

seit JavaScript WebXR Layers API (Entwurf) – nur eingeschränkt ver Kategorie: webapi

Signatur

interface XREquirectLayer extends XRCompositionLayer

Beschreibung

XREquirectLayer gehört zum Modul WebXR Layers der WebXR Device API. Die Schicht erwartet eine Textur in equirektangulärer Projektion. Das ist das übliche Format für 360°- und 180°-Panoramen, meist mit einem Seitenverhältnis von 2:1 (360°) oder 1:1 (180°). Die Textur rendert nicht Ihre Anwendung in eine Kugel-Geometrie, sondern der Kompositor des XR-Geräts projiziert sie selbst auf die Innenseite einer Kugel. Dabei tastet er die Textur nur einmal ab und passt die Darstellung direkt vor der Anzeige an die aktuelle Kopfhaltung an. Das Ergebnis ist meist schärfer, flimmert weniger und ruckelt kaum, auch wenn die Anwendung Frames auslässt.

Einen Konstruktor gibt es nicht. Eine WebGL-gestützte Instanz erzeugen Sie mit XRWebGLBinding.prototype.createEquirectLayer(init), eine videogestützte mit XRMediaBinding.prototype.createEquirectLayer(video, init). Danach übergeben Sie die Schicht mit XRSession.prototype.updateRenderState({ layers: [...] }) an die Sitzung. Bei WebGL-Schichten schreiben Sie die Pixel in die Farbtextur, die XRWebGLBinding.prototype.getSubImage(layer, frame) liefert. Dynamische Inhalte zeichnen Sie in jedem Frame neu. Statische Schichten (isStatic: true) zeichnen Sie einmal und dann erst wieder, wenn needsRedraw auf true steht oder das Ereignis redraw eintritt.

Eigene Eigenschaften (alle beschreibbar):

  • space (XRSpace): Referenzraum, an dem die Kugel verankert ist.
  • transform (XRRigidTransform): Position und Ausrichtung des Kugelmittelpunkts relativ zu space.
  • radius (number): Kugelradius in Metern. Bei 0 liegt die Kugel unendlich weit entfernt, es gibt also keine Parallaxe.
  • centralHorizontalAngle (number): horizontaler Öffnungswinkel im Bogenmaß, Standard 2π.
  • upperVerticalAngle / lowerVerticalAngle (number): obere und untere Grenze im Bogenmaß, Standard π/2 bzw. -π/2.

Von XRCompositionLayer erbt die Schnittstelle layout, mipLevels, needsRedraw, blendTextureSourceAlpha, forceMonoPresentation und destroy(). Von XRLayer und EventTarget kommt die Ereignisbehandlung, etwa für redraw über addEventListener("redraw", …) oder die Eigenschaft onredraw. Typische Einsatzfälle sind Panorama-Betrachter, 360°-Videos, Skyboxen und Hintergründe für Menüs in immersiven Sitzungen.

Parameter

Name Typ Default Beschreibung
$init.space Pflicht XRSpace Referenzraum, in dem die Kugel verankert ist, z. B. aus session.requestReferenceSpace("local").
$init.viewPixelWidth Pflicht number Breite der Textur pro Ansicht in Pixeln (beim Equirect-Format meist doppelt so breit wie hoch).
$init.viewPixelHeight Pflicht number Höhe der Textur pro Ansicht in Pixeln.
$init.layout "mono" | "stereo" | "stereo-left-right" | "stereo-top-bottom" "mono" Aufteilung der Textur auf die Augen. "default" ist bei dieser Schicht nicht erlaubt.
$init.transform XRRigidTransform Identität Position und Ausrichtung des Kugelmittelpunkts relativ zu space.
$init.radius number 0 Radius in Metern; 0 bedeutet unendlich (Skybox).
$init.centralHorizontalAngle number 2π (≈ 6.28318) Horizontaler Abdeckungswinkel in Bogenmaß.
$init.upperVerticalAngle number π/2 (≈ 1.570795) Oberer vertikaler Grenzwinkel in Bogenmaß.
$init.lowerVerticalAngle number -π/2 (≈ -1.570795) Unterer vertikaler Grenzwinkel in Bogenmaß.
$init.isStatic boolean false Bei true wird nur einmalig bzw. nach redraw gezeichnet, was Speicher und Rechenzeit spart.
$init.colorFormat GLenum gl.RGBA Farbformat der Textur.
$init.depthFormat GLenum 0 (kein Tiefenpuffer) Optionales Format des Tiefenpuffers.
$init.mipLevels number 1 Anzahl der Mipmap-Stufen.
$init.textureType "texture" | "texture-array" "texture" "texture-array" (nur WebGL 2) legt beide Augen als Array-Schichten ab.
$init.clearOnAccess boolean true Legt fest, ob die Textur bei jedem Zugriff über getSubImage() geleert wird.

Rückgabewert

Typ
XREquirectLayer
Beschreibung
XRWebGLBinding.prototype.createEquirectLayer() gibt eine neue XREquirectLayer-Instanz zurück, die man über updateRenderState() an die Sitzung übergibt.