Hey @ all,
ich habe mich inzwischen mit dem openGL Plugin für AutoIt beschäftigt und wollte nun mal fragen, ob man Modelle aus Blender oder Wings3D (kp mit welcher Dateiendung) in OpenGL einbinden kann, und wenn, dann wie?
mfG
Developer30
Hey @ all,
ich habe mich inzwischen mit dem openGL Plugin für AutoIt beschäftigt und wollte nun mal fragen, ob man Modelle aus Blender oder Wings3D (kp mit welcher Dateiendung) in OpenGL einbinden kann, und wenn, dann wie?
mfG
Developer30
ich habe nun gelesen, dass man, wenn man Modelle importieren will, eine Art Interpreter des Formates braucht. Wenn ich mir beispielsweise eine *.x-Datei ansehe, stelle ich fest, dass da so eine Art Messdaten gespeichert werden. Gibt es schon Interpreter unter AutoIt? Sonst sollte man sowas vielleicht mal entwickeln...
Hier noch ein Ausschnitt einer exportierten *.x-Datei:
xof 0303txt 0064
Material default {
1.0; 1.0; 1.0; 1.0;;
1.0;
1.0; 1.0; 1.0;;
0.0; 0.0; 0.0;;
}
Frame torus7 {
Mesh {
512;
1.0240701187946255, 1.514385739752228, -0.9960405271458745;,
1.0967070700574482, 1.696752173306031, -0.3640930813796961;,
1.1932914424366972, 1.5054164479163366, -0.33687617141137116;,
1.1241969904562827, 1.3319440131987754, -0.938003582274844;,
1.0240701187946255, 1.514385739752228, -0.9960405271458745;,
0.7933605171626882, 1.1660090665209153, -1.5091662332349445;,
0.6032091248639513, 1.2590793211509754, -1.466049685408546;,
0.8226670345675137, 1.5904656871973928, -0.9779490858803026;,
1.0240701187946255, 1.514385739752228, -0.9960405271458745;,
0.8226670345675137, 1.5904656871973928, -0.9779490858803026;,
0.8917614865479266, 1.763938121914954, -0.37682167501682934;,
1.0967070700574482, 1.696752173306031, -0.3640930813796961;,
1.0240701187946255, 1.514385739752228, -0.9960405271458745;,
1.1241969904562827, 1.3319440131987754, -0.938003582274844;,
0.9047390807527222, 1.000557647152358, -1.4261041818030877;,
0.7933605171626882, 1.1660090665209153, -1.5091662332349445;,
1.0967070700574482, 1.696752173306031, -0.3640930813796961;,
1.0002130535769937, 1.6853447308295946, 0.2904678340635543;,
1.1015034327227133, 1.4945653456508303, 0.2857618517169185;,
1.1932914424366972, 1.5054164479163366, -0.33687617141137116;,
1.0967070700574482, 1.696752173306031, -0.3640930813796961;,
0.8917614865479266, 1.763938121914954, -0.37682167501682934;,
0.7999734768339435, 1.7530870196494475, 0.24581634811146014;,
1.0002130535769937, 1.6853447308295946, 0.2904678340635543;,
1.0002130535769937, 1.6853447308295946, 0.2904678340635543;,
0.749278408641973, 1.4819000920312326, 0.867991253417115;,
0.8628068537329064, 1.3010426883566928, 0.8351194923164769;,
1.1015034327227133, 1.4945653456508303, 0.2857618517169185;,
1.0002130535769937, 1.6853447308295946, 0.2904678340635543;,
0.7999734768339435, 1.7530870196494475, 0.24581634811146014;,
0.5612768978441367, 1.5595643623553102, 0.795173988711019;,
0.749278408641973, 1.4819000920312326, 0.867991253417115;,
0.749278408641973, 1.4819000920312326, 0.867991253417115;,
0.38210566021552295, 1.1173908589377526, 1.2805544713472392;,
0.5135410958285965, 0.9543105463197001, 1.2275620295454353;,
0.8628068537329064, 1.3010426883566928, 0.8351194923164769;,
0.749278408641973, 1.4819000920312326, 0.867991253417115;,
0.5612768978441367, 1.5595643623553102, 0.795173988711019;,
0.21201113993982668, 1.2128322203183175, 1.1876165259399767;,
0.38210566021552295, 1.1173908589377526, 1.2805544713472392;,
0.38210566021552295, 1.1173908589377526, 1.2805544713472392;,
-0.045406469183681686, 0.647310258003211, 1.4653484778189494;,
0.10687870454873621, 0.5071557450302886, 1.4033436446111418;,
0.5135410958285965, 0.9543105463197001, 1.2275620295454353;,
0.38210566021552295, 1.1173908589377526, 1.2805544713472392;,
0.21201113993982668, 1.2128322203183175, 1.1876165259399767;,
-0.19465125134003358, 0.7656774190289062, 1.363398141005684;,
-0.045406469183681686, 0.647310258003211, 1.4653484778189494;,
-0.045406469183681686, 0.647310258003211, 1.4653484778189494;,
-0.4681731332617163, 0.1432237994286329, 1.3942400605087677;,
-0.29526965743807343, 0.027653549516405362, 1.3357031800841528;,
0.10687870454873621, 0.5071557450302886, 1.4033436446111418;,
-0.045406469183681686, 0.647310258003211, 1.4653484778189494;,
-0.19465125134003358, 0.7656774190289062, 1.363398141005684;,
-0.5967996133268431, ...
Alles anzeigen
Du musst einen eigenen Interpreter schreiben, der die Daten ausliest, und die Polygone entsprechend in den "Raum" malt. Wenn du einen eigenen Interpreter schreiben willst, würde ich empfehlen einfach mal ein nicht animiertes model als .obj zu speichern, und den Interpreter für den Anfang für dieses Format zu schreiben, da es sehr simpel aufgebaut ist.
Ich habe auch einen für dieses Format geschrieben, allerdings in C++, aber ich wollte ihn vereinfachen, und jetzt tut er nicht mehr.
Hier steht, wie simpel das Format aufgebaut ist http://en.wikipedia.org/wiki/Obj
clezZ: Gibt es nicht schon einen Haufen Interpreter? - Sonst würde ja keiner die openGL-Engine benutzten...
Also ich hab ewig im Internet nach einem .obj Interpreter in C++ gesucht, und hab nix gescheites gefunden
(außerdem wollte ich einen eigenen schreiben :D)
hattest du in c++ einen interpreter für openGL geschrieben?
also ich kenn mich mit openGL noch nicht so gut aus und weiß daher nicht, wie ich vertex verarbeiten soll...
hattest du in c++ einen interpreter für openGL geschrieben?
ja.
Schau mal, so sieht bspw. ein einfacher Würfel in .obj aus:
mtllib wurfel.mtl
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
usemtl Material
s 1
f 1 2 3 4
f 5 8 7 6
f 1 5 6 2
f 2 6 7 3
f 3 7 8 4
f 5 1 4 8
Alles anzeigen
Hinter den 'v' stehen die Koordinaten in der reihenfolge x,y,z.
Hinter den 'f' steht, wie die flächen aufgebaut sind. Also: die eins heißt, das der erste Punkt der Fläche die Koordinaten hat, die hinter dem 1. 'v' stehen, die zwei, das der Punkt die Koordinaten hat, die hinter dem zweiten 'v' stehen, also 1.000000 -1.000000 1.000000
Und ein Vertex ist eben ein Punkt im Raum sozusagen.