3Dexplorateur : Comment utiliser les .cpp OpenGL

Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006 - 19 avril 2004 à 12:21
jerome86600 Messages postés 36 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 13 juillet 2006 - 27 juin 2006 à 15:23
Bonjours.

J'ai fait un cube 100cm avec 3D studio max 6 et j ai enregistre en .3ds

J ai ouvert ce .3ds avec 3D explorateur pour l' enregistre sous .cpp en opengl.

J ai enfin ouvert ce .cpp avec visual studio pour constater que le carre a bien ete traduit en openGL.

J ai essaye d'integre ce .cpp poiur afficher le carre dans une fenetre mais je n'y arrive pas. voici le code, qui dois-je metre dans draw ? ou bien comment l afficher depuis le .cpp principale en laissant ces code dans le fichier d origine ?

/*
This file was produced by 3D Exploration Plugin: CPP Export filter.

3D Exploration

Copyright (c) 1999-2000 X Dimension Software

WWW http://www.xdsoft.com/explorer/
eMail info@xdsoft.com
*/
#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>

struct sample_MATERIAL{
GLfloat ambient[3];
GLfloat diffuse[3];
GLfloat specular[3];
GLfloat emission[3];
GLfloat alpha;
GLfloat phExp;
int texture;
};

static sample_MATERIAL materials [1] = {
{{0.117647f,0.117647f,0.117647f}, {0.776471f,0.878431f,0.341176f}, {0.752941f,0.752941f,0.752941f}, {0.0f,0.0f,0.0f}, 1.0f,8.0f,-1} //DefMat for Boîte01
};

// 8 Verticies
// 6 Texture Coordinates
// 6 Normals
// 12 Triangles

static BYTE face_indicies[12][9] = {
// Boîte01
{0,2,3 ,0,0,0 ,0,1,1 }, {3,1,0 ,0,0,0 ,1,0,0 }, {4,5,7 ,1,1,1 ,2,3,4 },
{7,6,4 ,1,1,1 ,4,5,2 }, {0,1,5 ,2,2,2 ,2,2,5 }, {5,4,0 ,2,2,2 ,5,5,2 },
{1,3,7 ,3,3,3 ,2,3,4 }, {7,5,1 ,3,3,3 ,4,5,2 }, {3,2,6 ,4,4,4 ,2,3,4 },
{6,7,3 ,4,4,4 ,4,5,2 }, {2,0,4 ,5,5,5 ,2,2,5 }, {4,6,2 ,5,5,5 ,5,5,2 }
};
static GLfloat vertices [8][3] = {
{-0.5f,-0.5f,-0.5f},{0.5f,-0.5f,-0.5f},{-0.5f,0.5f,-0.5f},
{0.5f,0.5f,-0.5f},{-0.5f,-0.5f,0.5f},{0.5f,-0.5f,0.5f},
{-0.5f,0.5f,0.5f},{0.5f,0.5f,0.5f}
};
static GLfloat normals [6][3] = {
{0.0f,0.0f,-1.0f},{0.0f,0.0f,1.0f},{0.0f,-1.0f,0.0f},
{1.0f,0.0f,0.0f},{0.0f,1.0f,0.0f},{-1.0f,0.0f,0.0f}
};
static GLfloat textures [6][2] = {
{0.0f,0.0f},{1.0f,0.0f},{0.0f,2.0f},
{1.0f,2.0f},{1.0f,1.0f},{0.0f,1.0f}
};
/*Material indicies*/
/*{material index,face count}*/
static int material_ref [1][2] = {
{0,12}
};
void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
{
GLfloat d[4];
d[0]=f[0];
d[1]=f[1];
d[2]=f[2];
d[3]=alpha;
glMaterialfv (GL_FRONT_AND_BACK,mode,d);
}
/*
* SelectMaterial uses OpenGL commands to define facet colors.
*
* Returns:
* Nothing
*/

void SelectMaterial(int i)
{
//
// Define the reflective properties of the 3D Object faces.
//
glEnd();
GLfloat alpha=materials[i].alpha;
MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
MyMaterial (GL_EMISSION, materials[i].emission,alpha);
glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
glBegin(GL_TRIANGLES);

};

GLint Gen3DObjectList()
{
int i;
int j;

GLint lid=glGenLists(1);
int mcount=0;
int mindex=0;
glNewList(lid, GL_COMPILE);

glBegin (GL_TRIANGLES);
for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
{
if(!mcount)
{
SelectMaterial(material_ref[mindex][0]);
mcount=material_ref[mindex][1];
mindex++;
}
mcount--;
for(j=0;j<3;j++)
{
int vi=face_indicies[i][j];
int ni=face_indicies[i][j+3];//Normal index
int ti=face_indicies[i][j+6];//Texture index
glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
glTexCoord2f(textures[ti][0],textures[ti][1]);
glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
}
}
glEnd ();

glEndList();
return lid;
};

7 réponses

boulfrite Messages postés 8 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 22 avril 2004
19 avril 2004 à 13:38
Heuuu...
En fait tu n'arrive pas a compiler, on rien ne s'affiche ?
Parce que si rien ne s'affiche, c'est peut etre que les parametres de ton viewport (matrices et visee) ne sont pas corrects ?
Sinon, ta fonction GLint Gen3DObjectList() te renvoie l'id d'une liste d'affichage.
Tu as donc simplement a lancer cette fonction une fois dans ton programme, recuperer le GLint qu'elle te donne, et dans la fonction Draw() de ta scene, a demander l'affichage de cette liste avec un glCallList ayant en parametre ledit GLint.

Je ne sais pas si je suis tres clair, j'en suis dsl...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
19 avril 2004 à 20:06
pourquoi tu te fait chier? regarde bien dans les options 3dexplorer te propose aussi de generer le main de test
0
Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006
20 avril 2004 à 20:10
comment tu fais, je n'ai pas vu comment dans tools/option...
j ai la version 1.833 non enregistre...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
20 avril 2004 à 20:45
t'aurai un link ou le d/l ?

g le retrouve plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006
22 avril 2004 à 17:25
con bon j ai trouve comment faire (en fait j avais pas la bonne version), grace a la version 2 il y a une liste deroulante juste apres save as/cpp (choisir Sample app et generate project dans export type)

merci quand meme pour l astuce, je t'appelle si je bloque dans les projets cree, j ai pas encore ouvert a plus
0
Amanobuo Messages postés 65 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 11 décembre 2006
22 avril 2004 à 17:26
C'EST bon, pas con, on peut pas editer ces message :?
0
jerome86600 Messages postés 36 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 13 juillet 2006
27 juin 2006 à 15:23
ou trouver ce 3D Explorateur s'il vous plait. impossible avec google
0
Rejoignez-nous