Nenedeira
Bürger
Auch auf die Gefahr hin, hier altbekanntes aufzuführen:
Ich habe mich ein bisschen mit dem Wavefront-obj-Dateiformat beschäftigt, das unter Umständen für einen evenutellen zukünftigen Importer interessant sein könnte:
Also: obj-Dateien scheinen recht einfach aufgebaut zu sein.
Die Materialbibliothek sieht folgendermaßen aus:
Ich habe keine Ahnung, was die Werte bedeuten, ich vermute, es sind Basiswerte für die Beleuchtung. Am wichtigsten ist wohl der Dateiname.
Das "Mesh" hier ist ein Würfel, die Textur ein einfaches buntes Quadrat. Ich habe hier der Einfachheit halber bereits definierte Punkte wiederverwendet, aber eigentlich muss man für jedes Dreieck die Punkte neu definieren, damit die Textur nicht knittert...
EDIT: Hier steht's nochmal richtig - man muss nur lange genug googeln http://www.martinreddy.net/gfx/3d/OBJ.spec
Ich habe mich ein bisschen mit dem Wavefront-obj-Dateiformat beschäftigt, das unter Umständen für einen evenutellen zukünftigen Importer interessant sein könnte:
Also: obj-Dateien scheinen recht einfach aufgebaut zu sein.
Code:
// Definiere die Datei mit der Materialbibliothek
mtllib wuerfel.mtl
// gib dem aktuellen Teilobjekt einen Namen (hier: Objekt Würfel, Teil 0)
g Tri Wuerfel 0
// wähle ein Material aus (Name wird in der Material-Datei definiert)
usemtl Wuerfel
// Definiere Koordinaten der Punkte (eingeleitet jeweils durch ein v für Vertex
v 0 0 0
v 0 0 1
v 0 1 0
v 0 1 1
v 1 0 0
v 1 0 1
v 1 1 0
v 1 1 1
// Definiere die Texturkoordinaten
// (eingeleitet durch vt , wohl für für vertex-texture, erlaubt sind Werte zwischen 0 und 1)
vt 0 1
vt 1 1
vt 0 0
vt 1 0
vt 0 0
vt 1 0
vt 0 1
vt 1 1
// Definiere die Punktnormalen (eingeleitet durch vn für vertex-normal) Die hier sind jetzt nicht normalisiert, sowas kann ich nicht im Kopf...
vn -1 -1 -1
vn -1 -1 1
vn -1 1 -1
vn -1 1 1
vn 1 -1 -1
vn 1 -1 1
vn 1 1 -1
vn 1 1 1
// Definiere die Dreiecke
// eingeleitet durch f für face
// Die Syntax hier ist: f v/vt/vn v/vt/vn v/vt/vn wobei vt und vn optional sind
// Die Punkte werden in der Reihenfolge nummeriert, in der sie bei den Vertices eingelesen wurden, beginnend mit 1
f 1/1/1 2/2/2 3/3/3
f 2/2/2 4/4/4 3/3/3
f 1/1/1 5/5/5 2/2/2
f 2/2/2 5/5/5 6/6/6
f 2/2/2 6/6/6 8/8/8
f 2/2/2 8/8/8 4/4/4
f 5/5/5 7/7/7 8/8/8
f 5/5/5 8/8/8 6/6/6
f 1/1/1 3/3/3 5/5/5
f 3/3/3 7/7/7 5/5/5
f 3/3/3 4/4/4 8/8/8
f 3/3/3 8/8/8 7/7/7
// definiere nächsten Teil
g Tri Wuerfel 1
// wähle nächstes Material
usemtl Holz
// definiere neue Punkte
v ...
// definiere neue Texturkoordinaten bezogen auf das neue Material
vt ...
etc...
Die Materialbibliothek sieht folgendermaßen aus:
Code:
newmtl Wuerfel
Ka 1 1 1
Kd 1 1 1
Ks 0 0 0
d 1
Ns 0
map_Kd box.bmp
Ich habe keine Ahnung, was die Werte bedeuten, ich vermute, es sind Basiswerte für die Beleuchtung. Am wichtigsten ist wohl der Dateiname.
Das "Mesh" hier ist ein Würfel, die Textur ein einfaches buntes Quadrat. Ich habe hier der Einfachheit halber bereits definierte Punkte wiederverwendet, aber eigentlich muss man für jedes Dreieck die Punkte neu definieren, damit die Textur nicht knittert...
EDIT: Hier steht's nochmal richtig - man muss nur lange genug googeln http://www.martinreddy.net/gfx/3d/OBJ.spec
Zuletzt bearbeitet: