Table of Contents

Vor der Entwicklung von erweiterter Realität eine 3D-engine wählen

Der erste Schritt in der AR-entwicklung ist die Auswahl einer geeigneten 3D-engine. Dieses Kapitel erläutert, warum eine 3D-engine benötigt wird, gängige 3D-engines in der AR-entwicklung und deren jeweilige vor- und Nachteile.

Warum AR eine 3D-engine benötigt

Erweiterte Realität ist nicht einfach das überlagern von 2D- oder 3D-bildern auf dem Kamerabild. Es ist ein Echtzeit-3D-system, dessen Kernfähigkeiten auch umfassen können:

  • Modellierung echter Kamera Um virtuelle Objekte realistisch in der realen Welt erscheinen zu lassen, muss die Projektionsmatrix der Kamera in der 3D-engine entsprechend den Parametern des tatsächlichen Kamerabilds (z.B. intrinsische/extrinsische Parameter, Verzerrungsmodell) angepasst werden.
  • Verwaltung des räumlichen Koordinatensystems Einheitliche Verwaltung der Position und Ausrichtung zwischen Gerät, Umgebung und AR-inhalten. Verantwortlich für Auswahl, Festlegung und Umrechnung zwischen Weltkoordinaten, Kamerakoordinaten und Gerätekoordinaten.
  • Echtzeit-3D-rendering Umsetzung realistischer Verdeckungseffekte zwischen virtuellen Objekten und Umgebung basierend auf geschätzter Szenentiefe oder rekonstruierten Gittern. Simulation von Schatten basierend auf Lichtschätzalgorithmen für eine überzeugende Verschmelzung von Realität und Virtualität.
  • Ressourcen- und Lebenszyklusverwaltung Verwaltung virtueller AR-ressourcen und -inhalte, einschließlich deren Laden, Anzeige und Entfernen während des Lebenszyklus.

Diese Fähigkeiten bilden die Kernverantwortlichkeiten einer typischen 3D-engine. Daher ist die Auswahl einer geeigneten 3D-engine, abhängig von den konkreten Projektanforderungen, eine notwendige Voraussetzung für die schnelle Realisierung von AR-effekten.

Gängige 3D-engines

EasyAR unterstützt mehrere 3D-engines, darunter gängige wie Unity, Unreal oder native Entwicklung (Native). EasyAR bietet Beispiele und Entwicklerdokumentation für Unity und Native.

Unity

Unity positioniert sich als universelle Echtzeit-3D-engine und ist derzeit die erste Wahl für die meisten AR-entwickler. Unity unterstützt nativ plattformübergreifende Entwicklung für Windows/macOS sowie iOS/Android/visionOS. Das Unity-Ökosystem ist ausgereift, mit umfangreicher Dokumentation und Beispielen.

Native

Im Vergleich zur Verwendung von hochgradig gekapselten Engines wie Unity bietet die direkte AR-entwicklung basierend auf nativen Grafik-APIs (wie OpenGL, Vulkan, Metal) folgende Vorteile: Geringere Systemabhängigkeiten, extrem schlanke Laufzeitumgebung, tiefgreifende Anpassbarkeit des Kameramodells und zugrunde liegender Algorithmen. Die Entwicklung mit nativen APIs birgt jedoch hohe Projekt- und Wartungskosten, fehlende ausgereifte Editoren und Debugging-tools, geringe Iterationseffizienz, hohe Schwierigkeit bei plattformübergreifender Entwicklung und ist daher für schnelle Produktlieferungen ungeeignet. Sie wird typischerweise für einfache Funktionalitäten genutzt.

Web

Web benötigt keine Installation und ist browserbasiert nutzbar, was Verteilungs- und Erreichbarkeitskosten extrem niedrig hält. Natürlich plattformübergreifend, geeignet für schnelles Online-stellen und Zugriff durch große Nutzerzahlen. Die Entwicklungsschwelle ist relativ niedrig, das Frontend-Ökosystem ist ausgereift.

Derzeit ist Web in AR-anwendungen noch stark eingeschränkt, hauptsächlich durch Leistungsbeschränkungen des Browsers und Sicherheitssandboxen, die Kernfähigkeiten wie Bewegungstracking, Verdeckung oder präzise Lichtsimulation beeinträchtigen. Der Zugriff auf Gerätefunktionen ist eingeschränkt, Konsistenz und Stabilität sind schwer zu gewährleisten. Daher eignet sich WebAR für "leichte Präsentationen und Marketing", nicht jedoch für hochpräzise, interaktionsstarke komplexe AR-anwendungen.

Weiterführende Literatur