Asset Loading
Der Asset Loader ist in erster Linie ein Modul zum Laden von Szenen-Inhalten (Meshes, Texturen, ...). Dabei setzen wir auf das von Khronos entwickelte Format glTF. Eine glTF-Datei kann, im Gegensatz zu anderen Formaten wie Waveform OBJ, ganze Szenen beschreiben (samt node-graph, Kameras, Animationen und mehr). Das Asset Loader-Modul soll dies später auch weitgehend unterstützen, zunächst (in den ersten Wochen) aber lediglich einzelne Meshes laden können und iterativ erweitert werden.
Durch das feature ganze Szenen laden zu können ergeben sich (noch offene) Fragen bezüglich der Szenendarstellung. In jedem Fall wird eine Form von Szene-Graph benötigt, aber wie simpel dessen Implementierung sein soll hängt von mehreren Faktoren ab:
- Wollen wir im gesamten Projekt nur einmal eine Form von Szene-Graph implementieren, müsste dieser dann wahrscheinlich vom Asset Loader-Modul implementiert werden
- Alternativ könnte das Asset Loader-Modul auch via callbacks oder über eine API einen Szene-Graphen nutzen, der von einem anderen Modul implementiert wird
- Soll das Asset Loader-Modul eine vereinfachte Szenendarstellung implementieren, die zwar die Iteration über alle Knoten in einem Szene-Graph erlaubt, aber keine Sortierung (z.B. basierend auf Distanz zur Kamera für back-to-front rendering) oder sonstige erweiterte features?
- Soll eine Transformation der Daten (z.B. Vertices, Texturen) nach dem Laden ermöglicht werden?
- Es geht hier z.B. um das Erzeugen von LOD oder Reduktion der Präzision (32-bit zu 16-bit float bei vertices)
- Solche Transformationen könnten als Methode einer Mesh-Klasse implementiert werden und hätten damit nicht direkt Einfluss auf die Implementation der Szenendarstellung
Bei unserem Treffen am 9. Mai sind wir damit verblieben, dass wir uns erst mit anderen Gruppen absprechen müssen bevor wir diese Fragen endgültig klären können.
-
Vorschlag zur API der ersten Version des asset-loaders: Trevor -
Recherche zu frameworks/libs: Mara, Mark -
Erstellen eines Dreieck-Meshs als glTF-Datei: Susanne -
Cube mit Texturen: Susanne -
Implementation von load_mesh()
: Mara, Susanne -
Fix der ausstehenden Kommentare im merge request !19 (merged) (Trevor) -
Entscheidung bzgl. pointer in vertexGroup
struct, siehe Diskussion in !19 (merged) (Trevor, Alex)