Salut !
Je me suis lancé dans les lumières, mais le problème, c'est que ça donne ça... Est ce que quelqu'un a déjà eu le même problème ? Je peux pas donner de code, car il est un peu long
![]()
Salut !
Je me suis lancé dans les lumières, mais le problème, c'est que ça donne ça... Est ce que quelqu'un a déjà eu le même problème ? Je peux pas donner de code, car il est un peu long
![]()
Salut,
Je ne vois pas de problème sur l'image ...
Pourrais-tu expliciter un peu ce que tu voudrais afficher ?
Peut-être en mettant le "shade model" à GL_SMOOTH tu aurais une surface plus "arrondie". Tu pourrais également essayer d'éloigner un peu la lumière de la sphère.
glshademodel est déjà en GL_SMOOTH...
Sinon, moi je le vois le problèmeLa lumière est horrible ! Même en l'éloigant, ça fait pareil...
Ce que souhaite avoir, c'est ça (le nombre de polygone est le même):
![]()
yop,
il faut utiliser les normales. les lumieres opengl en ont besoin.
@+
je dirait même plus : il faut utiliser une normal par vertex![]()
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Mais j'utilise les normales pourtant, je ne verrai rien du tout sinon, non ?
oui mais la a priori tu utilise une normal par face (en fait la même normal pour chaque vertex de la face) alors qu'il faut une normal differente pour chaque vertex...
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Juste pour compléter bafman, il faut que dans ce cas précis, si tu veux une sphère lisse, que tu fasses la moyennes des 4 normales de faces adjacentes de chaque vertex pour calculer chaque normal de vertex.Envoyé par bafman
Hmm... Je fais comment pour calculer les normales pour les vertex ? J'ai une petite fonction pour faire ça par face, mais pour les vertex j'ai pas d'idée![]()
une fois que tu a tes normales par faces, tu fait :
pour chaque vertex :
addition des normal des faces liée au vertex
normalisation du resultat
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Salut,
En fait, s'il s'agit d'une sphère et que tu la crées centrée sur l'origine, tu as juste besoin de normaliser les vecteurs de coordonnées des points pour avoir les normales associées (en plus si c'est une sphère unité, le boulôt est déjà fait ...).
ha ouais c'est pas mal ca... j'y aurait pas pensé...
enfin bon l'aventage de ma technique c'est que c'est generique et donc que ca marche pour n'importe quel forme (si on ne prend pas en compte les histoire du cutoff angle, il suffit d'essayer avec un cube pour voir la limitation...)
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Partager