3D rauminhalte darstellung
Bei der Verwendung von AR ist es oft notwendig, virtuelle Objekte anzuzeigen. In einfachen Testbeispielen können einfache geometrische Formen verwendet werden, aber für die Entwicklung von Verbraucheranwendungen ist es im Allgemeinen erforderlich, hochpräzise 3D-Modelle und Animationen anzuzeigen. Dabei können Ereignisse und Interaktionen ausgelöst werden, wenn auf Modellknoten geklickt wird.
Modelle
Aktuell beliebte 3D-Modelle bestehen im Allgemeinen aus einem Dreiecksnetz (triangle mesh). Damit ein Modell realistisch aussieht, müssen wir jedem Dreieck ein Material (material) zuweisen. Materialien implementieren normalerweise ein bestimmtes Beleuchtungsmodell, dessen Inhalt aus Texturen und Beleuchtungsmodellparametern besteht.
- Texturen (texture) bestimmen die Grundfarbe jedes Punktes innerhalb eines Dreiecks. Die Texturen aller Dreiecke werden in einer oder mehreren diffusen Texturen gespeichert. In fortgeschrittenen Anwendungen können Texturen auch verwendet werden, um die Normalenrichtung oder andere Parameter jedes Punktes darzustellen.
- Das Beleuchtungsmodell (lighting model) definiert, wie das Objekt mit Licht interagiert. Üblich ist PBR. Beleuchtungsmodelle werden typischerweise mit Shadern implementiert. Parameter des PBR-Beleuchtungsmodells sind z.B. Farbe, Metallizität, Rauheit.
In der Anwendungsentwicklung werden 3D-Modelle im Allgemeinen nicht direkt in OpenGL / Metal / Vulkan / Direct3D geladen, sondern über eine 3D-Engine. Die 3D-Engine erfordert die Verwendung bestimmter 3D-Modellformate, wie z.B. das historische, gut lesbare obj/mtl-Format oder das derzeit beliebte glTF-Format.
Animation
Um Modelle zu bewegen, wird Skelettanimation (skeletal animation) verwendet. Knochen (bones) beziehen sich auf größere Modellknoten, die sich bei starrer Bewegung konsistent bewegen.
Um Animationen anzuzeigen, müssen die Position und Ausrichtung (Transformationsmatrix) der Modellknoten zur Laufzeit kontinuierlich aktualisiert werden. Die meisten 3D-Engines bieten Animationsfunktionen. Es reicht aus, die Animation in Animationssoftware zu bearbeiten und in einem von der 3D-Engine unterstützten Format zu exportieren, um sie in der Engine verwenden zu können. Das oben genannte glTF-Format umfasst ebenfalls Animationsfunktionen.
Interaktion
Wenn ein Benutzer auf einen Modellknoten klickt, müssen manchmal Ereignisse und Interaktionen ausgelöst werden. Üblicherweise werden Knochen in der Skelettanimation benannt. Mithilfe von Kollisionserkennung oder Strahlprüfung (ray casting) werden bei einem Klick Ereignisse ausgelöst, die den Namen des angeklickten Knochens zurückgeben. Die Ereignisbehandlung kann mit Skripten oder Anwendungscode erfolgen.
Anmerkung
Wenn Sie wenig Erfahrung mit 3D-Engines haben, wird dringend empfohlen, Unity für die Entwicklung Ihrer Anwendung zu verwenden. Das EasyAR Sense Unity Plugin bietet gute Unterstützung für Unity. Wenn Sie eine andere 3D-Engine verwenden, könnten Sie mit weniger Unterstützung und verfügbaren Ressourcen konfrontiert sein.