Skip to content

Latest commit

 

History

History
80 lines (57 loc) · 2.97 KB

001-webxr-technology.md

File metadata and controls

80 lines (57 loc) · 2.97 KB

ADR › Three.js als Framework für WebXR

status proposed
date 2023-04-18
deciders Finn Gedrath

Kontext und Problemstellung

WebXR ist eine Sammlung von standardisierten Browser-APIs, mit der Virtual Reality (VR) und Augmented Reality (AR) im Web umgesetzt werden können.

Entscheidungstreiber

  • Ease-of-use
  • Browser-Support
  • Simplicity
  • Documentation

In Betracht gezogene Optionen

  • Standard WebXR API mit WebGL
  • A-Frame
  • three.js

Ergebnis der Entscheidung

Gewählte Option: "Three.js", weil es am besten ausfällt (siehe unten)}. Vorallem, da es eine sehr gute Dokumentation hat und die JavaScript API es ermöglicht die Funktionen gut kennen zu lernen. Werden die Szenen komplexer, kann es sinnvoll sein auf A-Frame zu wechseln.

Consequences

  • 🟢 Gut, weil Abstraktion der WebGL API ermöglicht es uns, uns auf die Entwicklung der Anwendung zu konzentrieren.
  • 🟢 Gut, weil ein Wechsel auf A-Frame gut möglich ist, wenn die Szenen komplexer werden.
  • 🟡 Neutral, weil Abhängigkeit von einer Library entsteht.

Pro und Kontra der Optionen

Standard WebXR API mit WebGL

  • 🟢 Gut, weil standardisierte API kann besser verstanden werden.
  • 🟢 Gut, weil standardisierte API ermöglicht es, die Technologie zu erweitern.
  • 🔴 Schlecht, weil hohe Komplexität und selbst offizielle WebXR Beispiele mit Hilfe einer Library weg-abstrahiert werden.

A-Frame

https://aframe.io/docs/1.4.0/components/webxr.html

  • 🟢 Gut, weil Abstraktion der WebGL API
  • 🟢 Gut, weil deklerative Szenenbeschreibung über Web-Componenten
  • 🟢 Gut, weil viele Plugins bestehen, mit denen sich die Funktionalität erweitern lassen
  • 🟢 Gut, weil WebXR and AR.js support besteht um tracking zu ermöglichen
  • 🟢 Gut, weil A-Frame auf three.js aufbaut
  • 🟡 Neutral, weil Abhänigkeit von einer Library

three.js

https://threejs.org/docs/

  • 🟢 Gut, weil Abstraktion der WebGL API
  • 🟢 Gut, weil viele Plugins bestehen, mit denen sich die Funktionalität erweitern lassen
  • 🟢 Gut, weil näher einer JS API als A-Frame
  • 🟡 Neutral, weil setup vollständig in JS erfolgt

Weitere Informationen