Das ist überhaupt nicht überraschend.
Von Discreet gibt es u.a. folgende Formate:
- *.3ds (3 D Studio)
- ASE AScii Export
Jetzt rate mal welches Format intern für 3D Studio gedacht ist und welches für den Export in andere Programme
. Daher gibt es soweit ich weiss nirgends offizielle Infos zu 3DS vom "Erfinder". D.h. die Dokus die es gibt sind Sachen, die Leute herausgefunden haben, indem Sie sich beispiele angesehen haben. Wenn von den leuten z.B. keiner Cinema hat, ist die Wahrscheinlichkeit sehr gross, dass Cinema irgend etwas anders macht als 3DS und die Dateien nicht funktionieren.
Ein anderes Beispiel sind von gMax oder von FSDS erzeugte MDL Dateien für die Microsoft Flugsimulatoren. Diese sind SEHR unterschiedlich. Z.B. fangen bei einem immer die Daten an der selben Stelle an. Wenn Du das hardkodierst, statt den "links" in der Datei zu folgen, kannst Du alle Dateien die mit dem Program geschrieben sind, lesen. Und wenn Du keine anderen hast, denkst Du halt "Wunderbar, funktioniert ja prima!". Aber es geht eben keine Datei aus dem anderen Program. Oder ein Program schreibt n-Ecke, ein anderes nur Dreiecke etc. Komplexe Dateiformate haben wahrscheinlich ca 1000 "Features". Bei 3DS kenn ich mich nicht so aus, aber z.B. MDL oder Bin (von Battle of Britain) hat knapp 200 verschiedene "Chunktypen", jedes typischerweise mit mehreren Parametern. Dazu gibt es eine Menge an Spezialfällen, z.B. Objekte, die nur aus Eckpunkten bestehen, aber keine Flächen haben. Da bin ich erst vor kurzem gegengestossen :-D
Es ist etwas blöde dass sich 3DS oder gar *.max dermassen als Austauschformat etabliert hat, im Gegensatz dazu, wie es von Discreet gedacht war. Aber es ist nun mal auf dem Internet das häufigste und David muss ja auch drauf schauen, dass man Modelle in dem Format im Internet bekommt.
Du musst auch unterscheiden zwischen dem Austauschformat in dem z.B. der 3D Modeller seine Arbeit abgibt, und dem vom Spiel intern benutzten Format.
Ich bin auch gerade mal wieder mit 3D Formaten am basteln. Als Austauschformat bevorzuge ich ASCII Formate. Im moment bastel ich mit ASC und ASE rum, allerdings z.B. *.x ist auch gut. Ein Flugzeug 3D modell ist dann ca 2-5MB gross. Das Laden pro Flugzeugtyp dauert ca 1-2 Sekunden :-D . Wenn Du also z.B. während des Spiels den Blick wendest und zum ersten mal kommt der Typ ins Blickfeld, musst Du halt erst mal warten
. Trotzdem, als Austauschformat ist es gut geeignet, beim Konvertieren kommt es auf ein paar Sekunden nicht drauf an und mit einem ASCII Format arbeitet sich schneller, weil man leicht Sachen überprüfen kann und sogar manuell editieren kann. Später muss ich im Spiel selber natürlich auf ein binäres Format umsteigen, das wird dann maximal einige hundert kB haben pro Modell. Bei *.X find ich übrigens nett, dass es das auch in einer binären Variante gibt.
Invertierte Normalen sind übrigens absoluter Standard beim Konvertieren
. Bei 3D Canvas z.B. gibts in der Hilfe ein ganzes Kapitel dazu, woher das kommt und vor allem wie man das dann wieder repariert. Es bleibt aber auch heute noch ein teilweise manueller Job.