Hi,
im Rahmen des anderen Posts stoße ich im Internet immer wieder auf sehr widersprüchliche Meinungen darüber, welches Format gut/schlecht ist, sich wofür eignet, veraltet ist usw.
Ich habe momentan ein paar Formate im Auge:
Milkshape .ms3d
3dStudio .3ds
Blender .blender
Ausserdem habe ich einen Exporter für .blender zu .xml gefunden.
Ich würde gerne wissen, welche Formate ihr nutzt, wie ihr die obigen bewertet und welche Gründe euch dazu bewogen haben, das Format zu wählen, das ihr gewählt habt.
.ms3d: Milkshape ist nicht Freeware und über die Verwendbarkeit des Formats weiss ich bisher auch nichts (Lizenzrechtlich)
.3ds: wird als vollkommen veraltet bezeichnet, beschränkt in der Verwendung, ausserdem bin ich mir auch hier bisher nicht über die Lizenz im Klaren
.blender: habe ich noch keine Spezifikationen gefunden, auf deren Basis is einen Importer hätte schreiben können. Ansonsten ist es Freeware, und scheint ziemlich viel zu unterstützen.
Registriert: Di Jul 01, 2003 18:59 Beiträge: 887 Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
ah fileformats, there are lots of them and none offer all that you want.
I started out with .3ds (gl3ds now glModel). For no reason actualy but for its name and having an 3d editor that could export that.
Next i made a sidestep to milkshape ascii becuase i could edit the fileformat by hand if not to complicated mesh is used and most important for me it allowed bone animation.
Something i never got around to is to apply a milkshape ascii to a .3ds file. Still on my todolist to make an editor for that. That would give good meshes, actualy mesh support is not that good in milkshape ascii.
Next i discovered google sketchup and after working with that i want no other 3d editor anymore. So along came a .obj exporter for sketchup and loading support for my now called glModel unit.
Here on the forums i discovered that directx also has a nice 3d format both for meshes and 3d animation, but it is not as easy to parse as i would like.
But as you already did have a browse here on the forum on fileformats there has been a lot of discussion on it. But it in the end you should go with the format that works best for you and your engine and 3d editor.
For me that is now Google Sketchup and .obj and still milkshape ascii for bone animation.
In the meantime i made quite a lot of research about various formats...
On the one hand the directX format offers a lot, but on the other hand i found out, that textures and shaders all need to be generated by DirectX (however that does work) and therefore you are very bound. I doubt this format is so easy to be implemented in an opengl app..
I also had a look on .obj but i didn't really went through it. I now use the Collada format, which is an xml format.
I think it's great, it offers wide range of possibilities, from boneanimation, over different effects and so on
But the two best things in my opinion are the very detailed documentation (over 300 pages) and the xml style. Actually you do not really need the documentation, once you've got such a file, it is nearly selfexplaining.
And blender offers an exporter for collada too
My importer didnt take me much time to write. It now supports basic functions (vertices, normals, colors, uvmapping)
Was dort vielleicht nicht steht: Der Blender Collada Exporter hat einen Fehler irgendwo bei den Bones drin und wird seit 2006 (?) nicht mehr weiterentwickelt.
Also stehen wieder neue Formate im Raum..
.x und .obj sehe ich mir gerade an. Und ich habe beschlossen, solange keine Loader für irgendwas zu schreiben, bis ich mich wirklich entschieden habe.. Ich habe hier jetz 3 rudimentäre Loader (milkshape, 3ds, collada) und habe zum glück in keinen bisher sonderlich viel zeit investiert, aber trotzdem...
Also Sascha hat sich in einem anderen Thread für .x ausgesprochen. Wenn ich das vollumfänglich in ogl nutzen kann, wär es durchaus interessant, aber ich habe hier eine PDF rumliegen, in der bemängelt wird, dass Texturen und Shader in dem Format immer mit DirectX erzeugt werden müssen..
Dann noch das .obj Format, darüber bin ich gerade noch am Lesen
Beide sind zumindest durch die Ascii version lesbar und das ist mir wichtig. Xml ist nicht zwingend notwendig aber nur Binary wär mir zu wenig...
Was habt ihr bisher für Erfahrungen mit den Formaten gesammelt?
(Ich würde ja vorschlagen, mal eine Umfrage zu starten, wer welche 3DFormate verwendet, aber es wird wohl herauskommen, dass die Mehrzahl was eigenes nutzt ^^, und wär das in Blender mit Python nicht so .. eigenartig, würd ichs wohl auhc machen)
OBJ hat leider den Nachteil das du immer ein extra File für die Bones/Animations benötigst und je nach Komplexität des Models es auch in mehrere Teilmodels zerlegen musst. Ich kann mir jedenfalls bei besten Willen nicht vorstellen, dass man mit OBJ ein riesiges komplexes und geriggtes Model verwalten kann.
Für statische Objekte finde ich OBJ aber sehr gut zu nutzen
Kleine randfrage:
Hat irgendwer zufällig ein hübhsches *.x modell rumfliegen, am besten mit bone-animationen etc..?
Bräucht mal eins für testzwecke..
@Thread:
OBJ ist für statische objekte durchaus brauchbar... allerdings alles was darüber hinausgeht würde ich mir einfach ein eigenes format entwickeln.. da hast du dann alles so wie du es brauchst und gut ist ^^ Ist aufjedenfall unaufwändiger als alle anderen Formate auf biegen und brechen so hinzudrehen das sie zur eigenen Engine passen.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hi,
kannst dir ja mal Restlessansehen (basiert auf obj). Man kann ja auch nur das File-Format nutzen und dir nen eigenen Loader schreiben. Nachteil: Nur ein Exporter für Blender, allerdings kann Blender ja vieles importieren.
OBJ ist für statische objekte durchaus brauchbar... allerdings alles was darüber hinausgeht würde ich mir einfach ein eigenes format entwickeln.. da hast du dann alles so wie du es brauchst und gut ist ^^ Ist aufjedenfall unaufwändiger als alle anderen Formate auf biegen und brechen so hinzudrehen das sie zur eigenen Engine passen.
Aya
Das hab ich mir ja auch schon gedacht. Allerdings hab ich derzeit Blender als "Entwicklungsumgebung" für 3d Objekte und ich glaube nicht, dass es mir gelingen wird, in Python einen exporter zu schreiben...
Okay so kommt also Restless auch mit ins Spiel. Das Format ist lesbar, das ist schonmal gut und wenn wir hier den Entwickler in unseren Reihen haben, ist das auch ein Vorteil ich hab mir die Specs angesehen und frage mich, warum faces manchmal durch g und manchmal durch f definiert werden. Bei mir steht in der Datei etwas ala
Code:
o Suzanne
mtl ~defmtl
g 606448 f
und laut der Specs:
Code:
v [x] [y] [z] ([bone_id] [weight])*
o [object_name]
mtl [material_name]
uv [u] [v]
[f or g] ([vertex_id]/[uv_id])3 [s or f]
(op [data_type] [property_name]
opval [data])*
Wann ist es denn nun f und wann g und wofür steht g?
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Beides sind Face-Definitionen.
Also wenn ein 'f' steht, dann hat das face vertex und uv coordinaten, bei einem 'g' nur die vertex coordinaten.
Hat etwas mit dem Einlesen der Datei zu tun. Das spart etwas Zeit.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Ja, die Normalen werden per Laufzeit berechnet. Bei Modellen ohne Animation natürlich nur einmal nach dem Laden.
Bei Animationen nur, wenn nötig. Weitere Informationen dazu stehen im pdf NormalCalcuation.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.