3Dexplorateur : Comment utiliser les .cpp OpenGL

Signaler
Messages postés
65
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
11 décembre 2006
-
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006
-
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

Messages postés
8
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
22 avril 2004

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...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
pourquoi tu te fait chier? regarde bien dans les options 3dexplorer te propose aussi de generer le main de test
Messages postés
65
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
11 décembre 2006

comment tu fais, je n'ai pas vu comment dans tools/option...
j ai la version 1.833 non enregistre...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
t'aurai un link ou le d/l ?

g le retrouve plus
Messages postés
65
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
11 décembre 2006

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
Messages postés
65
Date d'inscription
mardi 24 février 2004
Statut
Membre
Dernière intervention
11 décembre 2006

C'EST bon, pas con, on peut pas editer ces message :?
Messages postés
36
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
13 juillet 2006

ou trouver ce 3D Explorateur s'il vous plait. impossible avec google