Dateiformat für statische und animierte 3D-Modelle

22

Ich schreibe gerade ein 3D-Spiel in C ++ mit OpenGL und komme zu dem Teil, in dem 3D-Modelle geladen werden. Deshalb suche ich nach gängigen Dateiformaten und Techniken, um

  • statische Netze anzeigen und
  • Rendern Sie animierte Netze.

Ich habe bereits eine ganze Reihe möglicher Formate und Techniken gefunden, wie Keyframe-Animationen, Skelett-Animationen, MD2 bis MD5, 3DS, X, Collada usw. pp.

Der Einfachheit halber möchte ich ein Format (und eine Technik) verwenden, die sowohl statische als auch animierte Netze zulässt. Meine Frage ist also, ob ein Format für diese Aufgabe geeignet ist und welches Sie vorschlagen würden. Und um es ein wenig zu verdeutlichen: Ich brauche keine superweichen Animationen oder brandneuen Features.

Nebenbemerkung: Da ich ein Mixer-Fan bin (aber kein Experte ;-)), wäre es hilfreich, wenn es damit verwendet werden kann - aber das sollte hier natürlich nicht der Show-Stopper sein.

stschindler
quelle

Antworten:

16

Lassen Sie mich vorschlagen, dass Sie Collada verwenden .

Es wird von DCC-Tools weitgehend unterstützt und ist gut standardisiert. Es unterstützt Skelettanimationen und ... nun, es kann fast alles, einschließlich Shader und Physik - diese sind für Sie nicht relevant.

Vertex-basierte Animationen wie im MDL- oder MD2-Format gehören mehr oder weniger der Vergangenheit an. Heutzutage sind die meisten Animationen Skelettanimationen (dh denken Sie, dass es sich um reibungslos manipulierte Charaktere handelt) und die Tools zur Inhaltserstellung sind für diese optimiert.

Blender hat einen funktionierenden Collada-Exporteur, aber wie immer kann es ärgerlich sein, Dinge aus Blender zu exportieren. Möglicherweise müssen Sie alternative Exportprogramme oder Dateiformate ausprobieren oder die Skripte manuell hacken, wenn Probleme auftreten.

So laden Collada, verwenden Bibliotheken wie FCollada oder ColladaDOM (Versuchen Sie nicht , es zu analysieren , auf eigene Faust, ist Collada ein wirklich Fett XML Monster ...). Es gibt auch Open Asset Import Library , die ~ 25 Dateiformate lädt, einschließlich Collada (und aller anderen von Ihnen erwähnten Formate). Es wäre eine ausgezeichnete Wahl, da es sich insbesondere an Spieleentwickler richtet und seine Ausgabe in einem für Echtzeit-Rendering geeigneten Format liefert. Aber um ehrlich zu sein: Ich bin einer der Mitautoren, also bin ich wahrscheinlich ein bisschen voreingenommen.

Last but not least : Das Dateiformat, mit dem Sie Ihre Assets importieren, sollte nicht die Fähigkeiten Ihrer Engine und die verwendeten Techniken definieren - es sollte eher umgekehrt sein. Ob Ihre Animationen sehr flüssig sind, hängt nicht vom Importformat ab, sondern davon, mit welcher Technik Sie Netze animieren und wie gut sie überhaupt modelliert werden. Das Importformat soll Ihnen nur dabei helfen, Ihre Daten aus Blender in Ihr Spiel zu bringen.

Alexander Gessler
quelle
Vielen Dank für Ihre ausführliche Antwort. Ich habe heute zum ersten Mal von Collada gehört (von einem Freund empfohlen) und war mir nicht sicher, ob es wirklich für den Einsatz in einer Produktionsumgebung geeignet ist. Ich werde es jetzt versuchen, danke. :-)
stschindler
2
Guter Rat, vor allem der Verweis auf AssImp. Ich würde COLLADA jedoch nicht vorschlagen, da niemand dies konsequent und korrekt zu unterstützen scheint und es für tatsächliche inhaltliche Zwecke ziemlich groß ist. Ich würde vorschlagen, etwas wie MD5 zu verwenden, das Ihnen das Grundgerüst verleiht und weitestgehend korrekt implementiert ist (glaube ich). Ich würde auch MD2 nicht ganz so leicht entlassen; Es gibt eine Menge Beispielmodelle dafür, und Sie können es einfach billig animieren (obwohl es für Ragdolls oder was haben Sie nutzlos ist).
ChrisE
Ich werde nur mit verschiedenen Dateiformaten herumspielen. Dank AssImp ist das ganz einfach. MD2 war in der Tat meine erste Idee, aber es ist ziemlich teuer, sie zu erstellen, anstatt nur die richtigen Knochen zu exportieren. Ragdolls werden in meinem Fall nicht benötigt, ich brauche nur animierte Modelle, keine Physik.
Stschindler
Es gibt zwar sehr schlechte Collada-Exporteure, aber zumindest ist das Format gut dokumentiert, sodass Sie immer wissen, wem die Schuld zusteht :-). MD5 ist auch ein guter Kandidat, aber ich weiß nicht, wie gut die Blender-Exporteure sind. MD2 hat eine sehr eingeschränkte Scheitelpunktdarstellung und leidet unter Größen- und Genauigkeitsbeschränkungen. Ich würde es wirklich nicht benutzen, es gibt keinen Grund, dies zu tun.
Alexander Gessler
wazim.com/Collada_Tutorial_1.htm ist ein ziemlich ausführliches Tutorial zum Laden von Collada, aber ich würde trotzdem empfehlen, stattdessen eine Bibliothek zu verwenden.
Exilyth