Table of Contents

Vor der Entwicklung von Augmented Reality eine 3D-Engine auswählen

Der erste Schritt in der AR-Entwicklung ist die Auswahl einer geeigneten 3D-Engine. Dieses Kapitel erklärt, warum eine 3D-Engine benötigt wird, welche 3D-Engines in der AR-Entwicklung häufig vorkommen und welche Vor- und Nachteile sie jeweils haben.

Warum AR eine 3D-Engine benötigt

Augmented Reality ist nicht einfach das Überlagern von 2D- oder 3D-Bildern auf das Kamerabild, sondern ein Echtzeit-3D-System. Zu seinen Kernfähigkeiten können außerdem gehören:

  • Modellierung der realen Kamera

    Damit gerenderte virtuelle Objekte in der realen Welt realistischer wirken, muss die Projektionsmatrix der Kamera in der für das Rendering verwendeten 3D-Engine entsprechend den Parametern des tatsächlichen Kamerabilds angepasst werden, z. B. Intrinsics, Extrinsics und Verzerrungsmodell.

  • Verwaltung räumlicher Koordinatensysteme

    Einheitliche Verwaltung von Position und Pose von Geräten, Umgebung, AR-Inhalten und weiteren Elementen sowie Auswahl, Einrichtung und Umrechnung zwischen Weltkoordinaten, Kamerakoordinaten und Gerätekoordinaten.

  • Echtzeit-3D-Rendering

    Realistische Verdeckung zwischen virtuellen Objekten und der Umgebung auf Basis der in Echtzeit geschätzten Szenentiefe oder einer rekonstruierten mesh umsetzen und Schatten anhand von Algorithmen zur Beleuchtungsschätzung simulieren, um eine realistische Verschmelzung virtueller und realer Inhalte zu erzielen.

  • Ressourcen- und Lebenszyklusverwaltung

    Virtuelle AR-Ressourcen und Inhalte verwalten, einschließlich Lebenszyklusverwaltung wie Laden, Anzeigen und Entladen.

Diese Fähigkeiten bilden die Kernaufgaben einer typischen 3D-Engine. Daher ist die Auswahl einer geeigneten 3D-Engine entsprechend den konkreten Projektanforderungen eine der notwendigen Voraussetzungen, um AR-Effekte schnell umzusetzen.

Häufige 3D-Engines

EasyAR unterstützt mehrere 3D-Engines, darunter häufige 3D-Engines wie Unity, Unreal oder native Entwicklung. EasyAR stellt Beispiele und Entwicklungsdokumentation für Unity und Native bereit.

Unity

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

Native

Im Vergleich zur Verwendung höher abstrahierter Engines wie Unity bietet die direkte AR-Entwicklung auf Basis nativer Grafik-APIs wie OpenGL, Vulkan und Metal folgende Vorteile: weniger Systemabhängigkeiten, eine extrem schlanke Laufzeitumgebung und tiefgehende Anpassung von Kameramodellen und zugrunde liegenden Algorithmen. Native-API-Entwicklung hat hohe Engineering- und Wartungskosten, es fehlen ausgereifte Editoren und Debugging-Werkzeuge, die Iterationseffizienz ist niedrig und Cross-Plattform-Entwicklung ist schwierig. Sie ist für schnelle Produktlieferung ungünstig und wird in der Regel für die Implementierung einfacher Funktionen verwendet.

Web

Web erfordert keine Installation und kann direkt im Browser verwendet werden, wodurch Distribution und Nutzerreichweite sehr geringe Kosten verursachen. Es ist von Natur aus plattformübergreifend, eignet sich für schnelle Veröffentlichung und großflächigen Nutzerzugriff und hat mit einem ausgereiften Frontend-Ökosystem eine relativ niedrige Entwicklungshürde.

Derzeit ist Web in AR-Anwendungen weiterhin relativ eingeschränkt. Die wichtigsten Einschränkungen bestehen darin, dass die Leistung durch Browser und security sandbox begrenzt ist, die Unterstützung zentraler AR-Fähigkeiten wie motion tracking, occlusion und präzise Beleuchtung unzureichend ist, der Zugriff auf Gerätefunktionen eingeschränkt ist und Stabilität sowie Konsistenz schwer zu gewährleisten sind. Daher eignet sich Web AR für leichte Präsentation und Marketing, aber nicht für komplexe AR-Anwendungen mit hoher Präzision und starker Interaktion.

Weiterführende Lektüre