Ich erstelle ein Spiel mit OpenGL (über SDL) und C ++ (über Visual Studios 2010 Professional). Während des Spiels werde ich 3D-Charakteranimationen verwenden. Ich möchte für alle 3D-Modelle (mit Ausnahme des Geländes) Wellenfront * .obj-Dateien verwenden. Die Charaktere müssen fließende Bewegungen (realistisch) mit bis zu 250-500 Bildern haben (zum Gehen, Laufen, Sprinten, Springen, Hocken, Krabbeln usw.). Ich möchte entweder md2 oder md3 verwenden, aber das von mir verwendete 3D-Modellierungs- / Animationswerkzeug (Blender 3D 2.57) unterstützt keines von beiden. Das Spiel läuft nur unter Windows.
Was ich brauche, ist ein kleiner, aber leistungsstarker * .obj-Loader und -Parser, der Animationen unterstützt. Es muss in C ++ geschrieben und von SDL verwendbar sein.
Vielen Dank
Okay, nachdem ich mir alle Dateiformate angesehen habe, in die Blender exportieren kann ... Ich habe mich für 3DS entschieden, da es beim Exportieren des Standardwürfels das kleinste Dateiformat erzeugt. Vielen Dank an Daniel für die Empfehlung von 3DS!
Antworten:
OBJ unterstützt keine Animation. Weitere Informationen finden Sie hier .
Für einen kompatiblen OBJ-Loader fällt lib-obj ein .
Wenn Sie zu Hause brauen möchten und sicherstellen können, dass die Datei nur Dreiecke enthält; Keine Quads usw., das Parsen eines OBJ ist willkürlich (sein einziger Text!):
Im Zweifelsfall beachten Sie die Spezifikation .
quelle
Nur weil Blender Ihnen einen Exporter für Wavefront anbietet, heißt das nicht, dass auch die gesamte Animation exportiert wird. Wavefront OBJ kennt keine Animation!
Andererseits ist es durchaus möglich, ein Exporter-Add-On für md2 / md3 zu implementieren, und AFAIK gibt es bereits.
Abgesehen davon, so wie ich es verstanden habe, beabsichtigen Sie, das vollständige Netz für jeden Animationsrahmen zu speichern. Dies ist eine sehr ineffiziente Methode zur Animation. Ein besserer Ansatz wäre, nur Keyframes zu speichern und zwischen diesen zu interpolieren. Oder noch besser: Implementieren Sie ein Netzverformungssystem, das mit dem Animationssystem von Blender kompatibel ist, oder implementieren Sie ein eigenes Netzverformungssystem für Blender und Ihr Programm. Das Animieren einfacher Ganzobjekttransformationen ist einfach. Netzverformungen in Blender treten normalerweise über den eingebauten Ankermodifikator auf. Es ist jedoch durchaus möglich, einen eigenen Netzverformungsoperator als Ersatz für den Ankermodifikator zu implementieren.
ATM Ich entwickle ein Export / Import-Blender-Add-On, das alle aktuell geladenen Daten im JSON-Format speichert. entweder eine große Datei oder eine einzelne Datei für jeden Datenblock. Die Hauptidee besteht darin, es mit WebGL zu verwenden (dh eine WebGL-Engine zu implementieren, mit der Dinge geladen werden können, die ursprünglich für die Blender Game Engine erstellt wurden). Vielleicht kann ich Sie daran interessieren, JSON zum Speichern von Modellen und Informationen zu verwenden.
quelle
Obwohl die .obj-Spezifikation Animationen nicht nativ unterstützt, können Sie durch einfaches Erweitern mit einer separaten .anm-Datei brillante Animationen ohne Knochen erhalten.
Schauen Sie sich Folgendes an: - http://public.sanguinelabs.co.uk/expose/product.php?id=wastudio
Dies bietet ein sehr einfach zu verwendendes Tool zum Erstellen der Animationen sowie eine Open-Source-Modellbibliothek (für OpenGL), mit der Sie die animierten Modelle schnell in Ihrem Projekt zum Laufen bringen können.
Hinweis: Ich bin der Entwickler von Wavefront Animation Studio und libwavefront. Wenn Sie Verbesserungen oder Fehler melden möchten, senden Sie mir bitte eine E-Mail. Die Software wurde während meiner Zeit an der Universität entwickelt, weil ich es äußerst umständlich fand, Animationen mit den derzeit verfügbaren komplexen Tools und Bibliotheken zu erstellen und anzuzeigen.
quelle
Die Antwort auf das, was Sie suchen, ist nicht * .obj, da es einer Bitmap für Animationen ziemlich ähnlich ist (Sie können es mit Blender exportieren, aber Sie müssen Blender anweisen, jedes Bild als einzelne * .obj-Datei zu exportieren [NICHT EFFIZIENT IN JEDER ASPEKTE], wie ein Film und seine Bilder). Was Sie wirklich suchen, ist Collada. Es gibt einen Mesh-Loader namens Assimp, der wie eine Million Mesh-Formate geladen wird (ich verwende ihn für meine neue Engine). Und was Sie über * .3DS gesagt haben, ist nicht immer wahr.
quelle