Bonjour!
Voilà je suis en train de faire un loader ASE, pour l'instant les tests sont plutôt concluants, mais je m'heurte à un problème super bizarre. Tout d'abord j'ai bien fait comme écrit dans le topic sur le sujet des normales, c'est à dire que mes vertices et mes normales y deviennent z et mes normales z deviennent -y.
Pour l'instant je ne charges que les vertices et les normales (je m'attaquerai aux textures quand tout marchera bien). Voilà le problème : sur un modèle assez complexe, le problème ne se voit pas, toutefois sur un modèle simple, un cube, il y a UNE face, et seulement une seule, qui a des comportements étranges, comme si la normale était mal spécifié, alors que j'ai regarder plusieurs fois, j'ia pris plusieurs modèles de cube, et à chaque fois le même problème ! Pour l'instant j'affiche mes objets avec les appels à glBegin/glEnd, mais je les mettrait en VBO dès que ça marchera bien.
Parceque c'est assez dur à expliquer, je vous donne le zip contenant l'exe et les fichiers.
http://membres.lycos.fr/hl2connection/ase.zip (clique droit enregistret sous)
C'est le vrai bazarre dans le zip, parceque ce projet me sert aussi de test pour le moteur physique Newton, donc désolé ^^. Le seul truc intéressant ici c'est les fichiers objloader.h, objloader.cpp et main.cpp.
Lancez le exe et regardez les faces supérieures, à un moment donné vous verrez un éclairage bizarre sur l'une des faces. Suivez cette face, et à chaque fois c'est que cette face qui a un éclairage bizarre ! C'est vraiment à n'y rien comprendre :/, puisque je les charge toutes de la même façon.
Encore plus étrange, si je remplace :
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glColor3f (0.75, 0.75, 0.75);
glColorMaterial (GL_FRONT_AND_BACK, GL_SPECULAR);
glColor3f (1.0f, 1.0f, 1.0f);
glColorMaterial (GL_FRONT_AND_BACK, GL_EMISSION);
glColor3f (0.0f, 0.0f, 0.0f);
glMaterialf (GL_FRONT, GL_SHININESS, 100);
par ça :
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glColor3f (0.75, 0.75, 0.75);
glColorMaterial (GL_FRONT_AND_BACK, GL_EMISSION);
glColor3f (0.0f, 0.0f, 0.0f);
j'ai plus de problème. Bref si quelqu'un pourrait analyser le code, je pige rien, j'ai écrit tout ce que fait exactement la fonction dessiner dans un fichier, tout correspond bien avec le fichier d'origine et tout, je pige rien :/.
Partager