hallo, ich habe mit anim8or diesen körper erstellt und möchte ihn von hand einlesen.
es soll nur der würfel dargestellt werden.
ich weiss aber nicht wie ich das in glbasic bewerkstellligen soll, mit triangles oder welchen opengl-befehl .in diesem feld stehen die daten : // cube01static float cube01_coords[] = { !
mit glVertex3f gibt es immer lücken in jeder seite.
die daten kann ich schon einlesen als datei, aber nicht darstellen.
// File "D:\anim\test.c"
// Export object "object01"
#include "Anim8orExport.h"
// cube01
static float cube01_coords[] = {
-10.0457, -8.91096, -7.49137,
8.58356, -8.77404, -11.6534,
8.57806, 7.92072, -11.1287,
-10.0512, 7.7838, -6.96675,
-5.88146, -9.49472, 11.1287,
-5.88696, 7.20004, 11.6534,
12.7423, 7.33696, 7.49137,
12.7478, -9.3578, 6.96675,
-10.0457, -8.91096, -7.49137,
-10.0512, 7.7838, -6.96675,
-5.88696, 7.20004, 11.6534,
-5.88146, -9.49472, 11.1287,
8.58356, -8.77404, -11.6534,
12.7478, -9.3578, 6.96675,
12.7423, 7.33696, 7.49137,
8.57806, 7.92072, -11.1287,
-10.0512, 7.7838, -6.96675,
8.57806, 7.92072, -11.1287,
12.7423, 7.33696, 7.49137,
-5.88696, 7.20004, 11.6534,
-10.0457, -8.91096, -7.49137,
-5.88146, -9.49472, 11.1287,
12.7478, -9.3578, 6.96675,
8.58356, -8.77404, -11.6534,
};
static float cube01_normals[] = {
0, 0, -1,
0, 0, -1,
0, 0, -1,
0, 0, -1,
0, 0, 1,
0, 0, 1,
0, 0, 1,
0, 0, 1,
-1, 0, 0,
-1, 0, 0,
-1, 0, 0,
-1, 0, 0,
1, 0, 0,
1, 0, 0,
1, 0, 0,
1, 0, 0,
0, 1, 0,
0, 1, 0,
0, 1, 0,
0, 1, 0,
0, -1, 0,
0, -1, 0,
0, -1, 0,
0, -1, 0,
};
static float cube01_texcoords[] = {
0, 0,
1, 0,
1, 1,
0, 1,
0, 0,
0, 1,
1, 1,
1, 0,
0, 0,
0, 1,
0, 1,
0, 0,
1, 0,
1, 0,
1, 1,
1, 1,
0, 1,
1, 1,
1, 1,
0, 1,
0, 0,
0, 0,
1, 0,
1, 0,
};
static int cube01_indices[] = {
0, 2, 1,
0, 3, 2,
4, 6, 5,
4, 7, 6,
8, 10, 9,
8, 11, 10,
12, 14, 13,
12, 15, 14,
16, 18, 17,
16, 19, 18,
20, 22, 21,
20, 23, 22,
};
static unsigned char cube01_matindices[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
};
static Anim8orMaterial cube01_materials[] = {
{
{ 0.188, 0.914, 0.11, 1, }, // Ambient color
{ 0.188, 0.914, 0.11, 1, }, // Diffuse color
{ 1, 1, 1, 1, }, // Specular color
{ 0, 0, 0, 1, }, // Emissive color
0.3, 0.7, 0.2, 0, 32, 1, //Ka, Kd, Ks, Ke, PhongSize, Brilliance
"", // ambient texture
"", // diffuse texture
"", // speculal texture
"", // emissive texture
"", // transparency texture
"", // bumpmap texture
"", // texture
},
};
static struct Anim8orMesh cube01 = {
"cube01", 24, 36, cube01_indices, cube01_matindices,
cube01_coords, cube01_normals, cube01_texcoords, cube01_materials,
};
// Object object01
struct Anim8orObject object_object01 = {
"object01", 1, // Num Meshes
&cube01,
};
Nimmst Du GL_TRIANGLE_STRIP oder GL_QUADS?
ich habe beide ausprobiert.
triangle und quads.
es fehlt immer ein dreieck in der fläche.
mfg
Probier TRIANGLE_STRIP. Wo hast Du den Code eigentlich her?
Probier auch mal glDisable(GL_CULL_FACE);
ich habe den code "datei.c" exportiert von anim8or.
"c" lässt sich am leichtesten einlesen , auswerten und in opengl verarbeiten.
wie heisst dieser befehl eigentlich im original bei opengl?
mfg
Wir reden hier OpenGL. In GLBasic geht das alles so wie Du's schreibst eh nicht.
Wir reden hier OpenGL. In GLBasic geht das alles so wie Du's schreibst eh nicht.
jetzt kann ich den export-code "datei.c" von anim8or in glbasic eingelesen. auch mit den farbwerten :
-Ambient color
-Diffuse color
-Specular color
ich musste den befehl "polygon" nehmen von opengl.
mfg
dann mach
glBegin (GL_POLYGON)
im Ernst - Anim8or kann 3ds exportieren und das kann man in .ddd umwandeln und mit X_LOADOBJ laden. alles andere ist doch Unsinn für ein einfaches Model.
wenn ich ein kranauto mit einem 3gelenk-kranausleger konstruiere möchte ich die 3 kranausleger einzeln ansprechen. der grund: die 3 krangelenke werden mit dem auto zusammen einzeln am nullpunkt vom 3d-programm hergestellt, aber zusammen in einer datei mit dem auto.
nun kann ich dann die 3 ausleger einzeln laden und hintereinandersetzen, jedes krangelenk kann ich dann einzeln für sich bewegen. wenn ich den unteren bewege, werden die beiden folgenden mitgenommen, behalten aber ihre eigene drehung und senkung relativ zum unteren gelenk.
das 2. gelenk nimmt nur das obere mit usw.
wenn du mir mal sagen kannst, wie ich das inder 3ds mache und dann alle einzeln laden kann usw, dann ist dein format .ddd gut.
zur zeit kann ich mit meinem eigenen programm aus der datei alle körper einzeln mit nummer heausholen und setzen.
mfg
Mach alle einzelteile so, dass das Gelenk zum Vorgänger im Nullpunkt liegt. Der Arm entlang der X-Achse.
Dann lad' die einzelteile und mach:
X_MOVEMENT auto...
X_ROTATION yuto..
X_DRAWOBJ auto
X_PUSHMATRIX
X_MOVEMENT 1.Arm, relativ zum Auto
X_ROTATION 1.Arm rel. zum Auto
X_DRAWOBJ 1.Arm
X_PUSHMATRIX
usw...
Ich hab' im engl. Forum so mal einen Hubschrauber gemacht.