Wie speichert man triangle strip meshes als obj?
Bin gerade dabei einen viewer und exporter für meshes aus dem mmorpg kal online zu schreiben, allerdings hab ich beim exportieren ein paar probleme. Die Oberflächen der Meshes werden als Triangle Strips abgespeichert, aber obj unterstützt, soweit ich das mitbekommen habe, nur Polygon Meshes. Wie kann man die Triangle Strip informationen korrekt als Polygonmeshes abspeichern?
Beispiel zu einem der Meshes:
So sieht der Stab aus:
http://img336.imageshack.us/img336/2...hot1mk5.th.png
Er besteht aus 2 SubMeshes.
Speichern der Vertizen funktioniert.
Um die Indices der triangle strips als polygone abzuspeichern, geh ich einfach alle indices durch und speichere die letzten 3 in der form "f x/x/x y/y/y z/z/z" ab. Das ganze funktioniert zwar soweit, dass das Objekt in 3dsmax importiert werden kann, allerdings besteht das Objekt dann nicht mehr aus nur 2 SubMeshes sondern scheinbart aus einem SubMesh pro triangle strip.
gsm ist das gerade bearbeitete Sub Mesh.
Code:
for(int j = 2; j < gsm.indexCount; j=j++)
{
std::string x = Ogre::StringConverter::toString(1+gsm.indexList[j-2]);
std::string y = Ogre::StringConverter::toString(1+gsm.indexList[j-1]);
std::string z = Ogre::StringConverter::toString(1+gsm.indexList[j]);
oDat += "f " + x + "/" + x + "/" + x + " ";
oDat += y + "/" + y + "/" + y + " ";
oDat += z + "/" + z + "/" + z + "\n";
}
http://img336.imageshack.us/img336/2...ck02gq8.th.jpg
Eigentlich besteht es aber aus noch viel mehr SubMeshes als auf dem letzten Bild sichtbar waren. Scheinbar war jedes SubMesh 2 mal vorhanden. Laufvariablen der Schleifen hab ich kontrolliert.
http://img319.imageshack.us/img319/4...ck03mr4.th.jpg
Hier ein Auszug aus der obj Datei mit den Informationen für das zweite SubMesh:
Code:
#----------------
#Vertex Positions
#----------------
v -5.4258 0 -0.000434
v -5.42279 0 -0.000434
v -5.4258 0 -0.003434
v -5.42279 0 -0.003434
v -5.42279 0 -0.000434
v -5.42279 0.003 -0.000434
v -5.42279 0.003 -0.003434
v -5.42279 0.003 -0.003434
v -5.4258 0.003 -0.003434
v -5.4258 0.003 -0.000434
v -5.4258 0.003 -0.003434
v -5.4258 0 -0.000434
v -5.42279 0 -0.003434
v -5.42279 0.003 -0.003434
v -5.4258 0 -0.003434
v -5.4258 0.003 -0.003434
v -5.4258 0 -0.000434
v -5.4258 0.003 -0.000434
v -5.42279 0 -0.000434
v -5.42279 0.003 -0.000434
#----------------
#Normals
#----------------
vn -0.816496 -0.408248 0.408248
vn 0.333333 -0.666667 0.666667
vn -0.333333 -0.666667 -0.666667
vn 0.816496 -0.408248 -0.408248
vn 0.333333 -0.666667 0.666667
vn 0.666667 0.666667 0.333333
vn 0.408248 0.408248 -0.816497
vn 0.408248 0.408248 -0.816497
vn -0.666667 0.666667 -0.333333
vn -0.408248 0.408248 0.816497
vn -0.666667 0.666667 -0.333333
vn -0.816496 -0.408248 0.408248
vn 0.816496 -0.408248 -0.408248
vn 0.408248 0.408248 -0.816497
vn -0.333333 -0.666667 -0.666667
vn -0.666667 0.666667 -0.333333
vn -0.816496 -0.408248 0.408248
vn -0.408248 0.408248 0.816497
vn 0.333333 -0.666667 0.666667
vn 0.666667 0.666667 0.333333
#----------------
#Texture Coordinates
#----------------
vt 1 0
vt 0 0
vt 1 1
vt 0 1
vt 1 1
vt 1 0
vt 0 0
vt 1 1
vt 0 1
vt 0 0
vt 1 0
vt 0 1
vt 1 1
vt 1 0
vt 0 1
vt 0 0
vt 1 1
vt 1 0
vt 0 1
vt 0 0
#----------------
#Polygons
#----------------
f 1/1/1 1/1/1 2/2/2
f 1/1/1 2/2/2 3/3/3
f 2/2/2 3/3/3 4/4/4
f 3/3/3 4/4/4 4/4/4
f 4/4/4 4/4/4 5/5/5
f 4/4/4 5/5/5 5/5/5
f 5/5/5 5/5/5 6/6/6
f 5/5/5 6/6/6 4/4/4
f 6/6/6 4/4/4 7/7/7
f 4/4/4 7/7/7 7/7/7
f 7/7/7 7/7/7 8/8/8
f 7/7/7 8/8/8 8/8/8
f 8/8/8 8/8/8 6/6/6
f 8/8/8 6/6/6 9/9/9
f 6/6/6 9/9/9 10/10/10
f 9/9/9 10/10/10 10/10/10
f 10/10/10 10/10/10 3/3/3
f 10/10/10 3/3/3 3/3/3
f 3/3/3 3/3/3 11/11/11
f 3/3/3 11/11/11 12/12/12
f 11/11/11 12/12/12 10/10/10
f 12/12/12 10/10/10 10/10/10
f 10/10/10 10/10/10 13/13/13
f 10/10/10 13/13/13 13/13/13
f 13/13/13 13/13/13 14/14/14
f 13/13/13 14/14/14 15/15/15
f 14/14/14 15/15/15 16/16/16
f 15/15/15 16/16/16 16/16/16
f 16/16/16 16/16/16 17/17/17
f 16/16/16 17/17/17 17/17/17
f 17/17/17 17/17/17 18/18/18
f 17/17/17 18/18/18 19/19/19
f 18/18/18 19/19/19 20/20/20
Und hier eine Textdatei mit den Indices für das triangle strip
Code:
Vertices
(-5,425795, 0, -0,000434 | | -0,8164965, -0,4082482, 0,4082482 | 0, 1)
(-5,422794, 0, -0,000434 | | 0,3333333, -0,6666666, 0,6666666 | 0, 0)
(-5,425795, 0, -0,003434 | | -0,3333333, -0,6666666, -0,6666666 | 1, 1)
(-5,422794, 0, -0,003434 | | 0,8164965, -0,4082482, -0,4082482 | 1, 0)
(-5,422794, 0, -0,000434 | | 0,3333333, -0,6666666, 0,6666666 | 1, 1)
(-5,422794, 0,003, -0,000434 | | 0,6666666, 0,6666666, 0,3333333 | 0, 1)
(-5,422794, 0,003, -0,003434 | | 0,4082483, 0,4082483, -0,8164966 | 0, 0)
(-5,422794, 0,003, -0,003434 | | 0,4082483, 0,4082483, -0,8164966 | 1, 1)
(-5,425795, 0,003, -0,003434 | | -0,6666666, 0,6666666, -0,3333333 | 1, 0)
(-5,425795, 0,003, -0,000434 | | -0,4082483, 0,4082483, 0,8164966 | 0, 0)
(-5,425795, 0,003, -0,003434 | | -0,6666666, 0,6666666, -0,3333333 | 0, 1)
(-5,425795, 0, -0,000434 | | -0,8164965, -0,4082482, 0,4082482 | 1, 0)
(-5,422794, 0, -0,003434 | | 0,8164965, -0,4082482, -0,4082482 | 1, 1)
(-5,422794, 0,003, -0,003434 | | 0,4082483, 0,4082483, -0,8164966 | 0, 1)
(-5,425795, 0, -0,003434 | | -0,3333333, -0,6666666, -0,6666666 | 1, 0)
(-5,425795, 0,003, -0,003434 | | -0,6666666, 0,6666666, -0,3333333 | 0, 0)
(-5,425795, 0, -0,000434 | | -0,8164965, -0,4082482, 0,4082482 | 1, 1)
(-5,425795, 0,003, -0,000434 | | -0,4082483, 0,4082483, 0,8164966 | 0, 1)
(-5,422794, 0, -0,000434 | | 0,3333333, -0,6666666, 0,6666666 | 1, 0)
(-5,422794, 0,003, -0,000434 | | 0,6666666, 0,6666666, 0,3333333 | 0, 0)
Indices
(0 0 1 2 3 3 4 4 5 3 6 6 7 7 5 8 9 9 2 2
10 11 9 9 12 12 13 14 15 15 16 16 17 18 19 )