2016-12-12 2 views
0

Mein Spiel wird viele Low Poly Meshes mit harten Kanten verwenden. Das bedeutet, dass eine Eckpunktposition mehr als eine Normal- und UV-Koordinate verwenden wird. Daher wäre es sinnvoll, Vertex Positionen, Normalen und UVs in 3 separate Arrays aufzuteilen und dann 3 Indizes pro Vertex zu verwenden, um das Mesh zu konstruieren. Gibt es irgendwelche Datenformate für Meshes, die skelettierte Animationen, Lichter, Texturen, Materialien und all diesen Müll zusammen mit separaten Indexpositionen, Normalen und UVs unterstützen? Oder ist es eher eine Frage, wie ich die Daten im 3D-Editor (Blender) speichere?Welche Mesh-Datenformate liefern Indizes für Positionen, Normalen und UV-Coords separat?

Antwort

2

Leider gibt es keine effiziente Möglichkeit, verschiedene Indizes für Position, Normale, UV usw. zu verwenden. Jede Kombination müsste ein separater Vertex sein.

This Thread diskutiert die Angelegenheit, aber es ist im Allgemeinen viel effizienter, einzelne Vertices zu verwenden.

Wenn Sie sich für den Export von einem 3D-Editor in ein OBJ-Format entscheiden, wird jeder Vertex zusammen mit seinen Daten in der Datei bereitgestellt.

This video zeigt ein vollständiges Beispiel zum Laden einer .obj-Datei, von Blender bis OpenGL.

+0

Ich bemerkte auch, dass .obj-Dateien diese Art der Speicherung von Vertices verwenden. Es gibt alle Positionen, Normalen und UVs und die Flächen sind aus 3 * 3 ganzen Zahlen aufgebaut. Leider hat Obj nicht alle Funktionen, die ich brauche. Ich habe mich jetzt entschieden, einfach nur mit .dae zu bleiben und dann werde ich einfach die 3 separaten Arrays selbst laden und sie indexieren, wenn ich das Mesh lade. Auf diese Weise muss ich nicht so viele Daten an meine Shader senden, und ich kann mehr Berechnungen auf die Grafikkarte übertragen, was eine gute Sache zu sein scheint, da mein Programm die Grafikkarte überhaupt nicht trainieren wird. Danke! – stimulate

+0

@stimulate Kein Problem, vergiss nicht, als Antwort zu markieren :) – SporreKing

+0

hehe gierigen alten Geezer du;) – stimulate

Verwandte Themen