Registriert: Di Aug 09, 2011 07:33 Beiträge: 163
Programmiersprache: C/C++
Hallo,
Ich hatte mir mal einen eigenen *.obj Loader geschrieben, muss jedoch feststellen, dass *.obj zwar für statische Objekte ausreicht aber alles was darüber hinausgeht unzureichend ist. Jetzt suche ich ein neues Dateiformat was das quasi besser macht. Am liebsten würde ich mir selber was basteln, das Problem ist wohl leider nur, dass die Programme wie 3ds max, Blender etc. ihre eigene Scriptsprache haben und diese zu lernen für einen Importer/Exporter ist mir ehrlich gesagt doch zu anstrengend. Daher muss wohl doch was fertiges her und wollte mal nach empfehlungen von euch fragen.
Wichtige Dinge für die Unterstützung wären zum einen Animationen und es wäre außerdem gut, wenn man quasi gleich ein 2. Objekt mit importieren könnte (LOD) und wenns noch besser kommt ein weiteres für die Kollision.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Mit .obj bist du da eigentlich eh in bester Gesellschaft. Blender kann mehrere Objekte in eine .obj-Datei schreiben....und Animationen genauso(sind dann halt mehrere Dateien). Da kannst du sogar Objektnamen und den Pfad der dazugehörigen Textur mitreinschreiben lassen. Ich brauch das alles, zum Beispiel erstelle ich meine Maps in Blender und exportiere sie mit einer einzigen .obj-Datei in meine engine! Einfacher gehts nicht mehr! und Animationen, vor allem Bone-Animationen werdena uch mit .obj exportiert
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Di Aug 09, 2011 07:33 Beiträge: 163
Programmiersprache: C/C++
Ach das ist ja interessant Das schau ich mir mal an!
Edit// Also die Optionen beim Exporter sind definitiv gut. Aber wie kann ich denn z.B. eine Animation in eine Datei exportieren? Bei mir werden dann immer ganz viele Files exportiert Kenne mich nicht wirklich mit Blender aus.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Ja das mit den Animationen ist halt so ne Sache. Da wird quasi jede 30stel Sekunde der Animation in eine Datei geschrieben. Wie weit das geht kannst du in den Rendereinstellungen bei Blender festlegen, startframe: 1 und endframe ist standardmäßig auf 250 eingestellt! Also wenn du nur eine 2-sekündige Animation haben willst, stell das einfach von 1 bis 61. Und wie du mit dem exportieren Zeug umgehst...ist wieder ne andere Sache^^ Es wird halt immer das gesamte Objekt exporitert, mit globalen Koordinaten. Wenn du eine einfache von ort-zu-ort-bewegen-Animation machen willst empfehle ich dir da selbst was zu schreiben, das ist wesentlich ressourccenfreundlicher und vor allem für dich dann auch verstänlicher!! Und wenn du irgendwie bone-Animationen exportieren willst, das entsprechende Dateiformat heißt .bvh und wird auch von Blender unterstützt. Das ist auch ein textbasiertes Format, also vom Laden und Lesen durchaus machbar. Inwieweit du dich da reinsteigern willst ist deine Sache^^
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
In der Regel benutzt man für die Spieleentwicklung 3 Formate. Als erstes das Editor Format, z.B. ma, max, blend,... . Diese werden von den Grafikern verwendet, welche oft unterschiedliche Software benutzten aber die Files wird man auch nicht weiter geben.
Als zweites gibt es ein interchange format, z.B. FBX, png und ogg. Diese werden als transport zwischen den einzelnen Tools verwendet und müssen entsprechend von allen unterstützt werden und auch alle Arten von Daten speichern, die aus so ein Tool raus expotiert werden sollen.
Das dritte Format ist das Hardware format und ist in 99% der Fälle was eigenes. Dieses Format wird durch die bedingungen, der eigenen Software(models, shader, materials, scenegraph) und Hardware(iOS kan kein dxt1-5 aber pvrtc) bestimmt. Es wird ein Tool entwickelt, welches von dem interchange Format zu dem eigenen umwandeln kann. Oft sind in diesen converter noch optimierungsroutinen drin, wie z.B. Texturkompression oder triangle fan generierung und sortierung.
Das 2. Format aus zu lassen und direkt auf das 3. zu gehen machen eigentlich nur Firmen, die Leute für sowas entbehren können, sonnst ist es üblich existierende interchange formate zu verwenden und ein unabhängiges Tool zum Konvertieren zu schreiben. Denn dies macht man nur einmal und kann auch in scripten und build systemen mit eingepflegt werden(sollte es eine umfangreichere Produktion sein).
Ich empfehle FBX, png und ogg loader für deine Software zu verwenden und solltes du auf Performanceprobleme stossen, dann schreib dir ein Tool für ein eigenes Binary format. Ein 3. Format wird bei Indie Games eher selten verwendet, weil diese selten die Hardware ausreizen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Wir nutzen bei uns meist gekaufte Libarys für Schritt 2 und 3. Zum Teil holt man sich das von anderen Ubisoft-Studios oder beauftragt eine externe Firma das für uns zu entwickeln. Bei einem Multi-Millionen-Budget ist das auch weniger das Problem, insbesondere wenn Lizenzen für mehrere Projekte genutzt werden können
Ansonsten gibt's von mir noch einen Tip, der in der OpenSource-Welt gerne Anwendung findet: OgreXML. Also von der Ogre 3D Engine. Da gibt's zig Im- und Exporter (Und zwar wohl recht gute) für alle möglichen Sprachen und Editoren.
Mitglieder in diesem Forum: Bing [Bot] und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.