Anzeige von 3D-Rauminhalten
Bei der Verwendung von AR müssen normalerweise virtuelle Objekte angezeigt werden. In einfachen Test-sample können einfache geometrische Körper verwendet werden. Für verbraucherorientierte Entwicklung müssen jedoch in der Regel hochpräzise 3D-Modelle und Animationen angezeigt werden, und beim Klicken auf Modellknoten können Ereignisse und Interaktionen ausgelöst werden.
Modelle
Aktuell beliebte 3D-Modelle bestehen im Allgemeinen aus triangle mesh. Damit ein Modell realistisch aussieht, müssen wir jedem Dreieck ein material zuweisen. Material implementiert normalerweise ein lighting model, und sein Inhalt besteht aus texture und Parametern des lighting model.
- Texture bestimmt die Grundfarbe jedes Punkts in einem Dreieck. Die texture aller Dreiecke werden in einer oder mehreren diffuse texture abgelegt. In einigen erweiterten Anwendungen kann texture auch verwendet werden, um die Normalenrichtung oder andere Parameter jedes Punkts darzustellen.
- Lighting model definiert, wie ein Objekt mit Licht interagiert. Ein häufiges Beispiel ist PBR. Lighting model wird normalerweise mit shader implementiert. Parameter eines PBR lighting model sind Farbe, metallic, roughness usw.
In der Anwendungsentwicklung werden 3D-Modelle normalerweise nicht direkt auf OpenGL / Metal / Vulkan / Direct3D geladen, sondern über eine 3D engine. Eine 3D engine verlangt bestimmte 3D-Modellformate, wie das traditionsreiche und relativ lesbare obj / mtl-Format sowie das derzeit beliebte glTF-Format.
Animation
Damit sich ein Modell bewegt, wird skeletal animation benötigt. Bones bezeichnen große Modellknoten in einem 3D-Modell, die bei rigid-body-Bewegung eine konsistente Bewegung beibehalten.
Zur Anzeige von Animation müssen Position und pose (transformation matrix) der Modellknoten zur Laufzeit fortlaufend aktualisiert werden. Die meisten 3D engine bieten Animationsfunktionen. Sie müssen die Animation nur in Animationssoftware bearbeiten und in einem von der 3D engine unterstützten Format exportieren, dann kann sie in der 3D engine verwendet werden. Das oben genannte glTF-Format enthält ebenfalls Animationsfunktionen.
Interaktion
Wenn ein Benutzer auf einen Modellknoten klickt, müssen manchmal Ereignisse und Interaktionen ausgelöst werden. Normalerweise werden bones in skeletal animation benannt, und collision detection oder ray detection wird verwendet, um beim Klicken Ereignisse auszulösen und den Namen des angeklickten bone zurückzugeben. Die Ereignisverarbeitung kann mit Skripten oder Anwendungscode erfolgen.
Anmerkung
Wenn Ihnen Erfahrung mit 3D engine fehlt, wird dringend empfohlen, Unity für die Entwicklung Ihrer Anwendung in Betracht zu ziehen. EasyAR Sense Unity Plugin unterstützt Unity gut. Wenn Sie andere 3D engine verwenden, können Sie auf weniger Unterstützung und weniger verfügbare Ressourcen stoßen.