Quelqu'un pourrait t'il m'expliquer comment on calcul la normal d'un point svp ?(pour l'instant je l'utilise dans le cas du smooth shading).
En fait je sais comment faire pour une face, comme un carré par exemple, mais j'ai beacoup de mal a me représenter géométriquement la normale d'un point, comme dans une sphere par exemple.
un algo automatique pour calculer la normale a un point, dans un mesh, c'est d'abord de calculer la normale de chaque triangle (avec un produit vectoriel)
Puis ensuite, pour un sommet donné, recencer les triangles dont il fait parti, et faire la moyenne des normales de chacun de ces triangles.
escuser moi d'intervenir et pire de poser des questions ridicules... Mais en fait, j'ai souvent vu le concept de normale sans jamais comprendre de quoi il s'agissait vraiment et surtout ... Comment ou la calcule. Bizaremrnt, j'ai vu les vecteur mais ma prof de math a été incapable de m'explique ce s'était la normale d'une surface...
Ta prof n'a probablement pas fait d'image de synthese, ça ne veut pas dire qu'elle est nulle.
La normale a une surface est orthogonale a la surface.
Elle va servir pour un calcul d'éclairage, mais aussi, par exemple, pour gérer des rebonds !
Si par exemple, tu veux rebondir contre une surface, la normal a cette surface, au point de rebond, sera la bissectrice entre ta direction d'arrivée et ta direction de rebond
ok...mais mathématiquement, c'est quoi la formule ? Parce que pour moi, ab x ac, c'est un produitscalaire et ça donne un réel, pas un vecteur. Et la notation ab^ac, je connais pas! Donc, je vous demanderai juste comment on fait un produit vectoriel. Tout bêtement en multipliant ses coordonnées une a une ? Et c'est ca la normale ?
EDIT : j'ai lu un peu plus haut qu'on parlait de "moyenne des normales des surfaces dont fait partie le point"...
Attention !! Ca dépend beaucoup du sens des normales !
Le produit vectoriel n'est pas commutatif : <math>\(\vec{a} \times \vec{b} = - \left(\vec{b} \times \vec{a}\right)\)</math>
je commence a cmprendre... Maintenant, ça c'est pour 2 vecteur. Pour trois 4 ou plus ... Est ce que par exemple :
a^b^c = (a^b)^c ? En gros, est ce que on doit d'abord calculer le produit des 2 premier avant de faire le résultat par le troisieme? Ou est ce que on doit le faire direct dans la formule... ? Ce qui la rendrait plus compliquée. C'est pas grave, mais j'aimerai savoir comment elle est transformée.
Note 1: j'ai jamais vu moi ça! Et pourtant je suis en math fortes vous en êtes ou au niveau scolaire ? Et vous en étiez ou quand vous avez après ça ? Flou!
Note 2 : wikipedia, c'est compreensible mais vachement hard. Je vais prendre une aspirine !
je commence a cmprendre... Maintenant, ça c'est pour 2 vecteur. Pour trois 4 ou plus ... Est ce que par exemple :
a^b^c = (a^b)^c ?
????? le produit vectoriel permet de donner un vecteur normale à ces deux vecteur. Donc (a^b) donne une normal à a et b et (a^b)^c donne une normale à (a^b) et c. Ce n'est pas la même chose
Ce que l'on t'as dit est de faire une normale sur chaque surface contenant un point(utilisant deux vecteur contenant ce point par surface) et ensuite de faire la somme de toute ces normales et ensuite de normaliser. Cela te donnera une approximation de la normal au point
Citation
Note 1: j'ai jamais vu moi ça! Et pourtant je suis en math fortes vous en êtes ou au niveau scolaire ? Et vous en étiez ou quand vous avez après ça ? Flou!
En effet, dans ton cas, il est inutile de faire plusieurs produits vectoriels dans ton cas, comme l'a dit justement mongaulois.
Citation
Note 1: j'ai jamais vu moi ça! Et pourtant je suis en math fortes vous en êtes ou au niveau scolaire ? Et vous en étiez ou quand vous avez après ça ? Flou!
Sur le monde du travail, bac +5 en maths/informatique spécialité imagerie
je commence a cmprendre... Maintenant, ça c'est pour 2 vecteur. Pour trois 4 ou plus ... Est ce que par exemple :
a^b^c = (a^b)^c ? En gros, est ce que on doit d'abord calculer le produit des 2 premier avant de faire le résultat par le troisieme? Ou est ce que on doit le faire direct dans la formule... ? Ce qui la rendrait plus compliquée. C'est pas grave, mais j'aimerai savoir comment elle est transformée.
oui le produit vectoriel est associatif :
<math>\(\vec a \times \vec b \times \vec c = \left( \vec a \times \vec b \right) \times \vec c = \vec a \times \left( \vec b \times \vec c \right)\)</math>
Citation : pierre_24
Note 1: j'ai jamais vu moi ça! Et pourtant je suis en math fortes vous en êtes ou au niveau scolaire ? Et vous en étiez ou quand vous avez après ça ? Flou!
Note 2 : wikipedia, c'est compreensible mais vachement hard. Je vais prendre une aspirine !
Je termine un Master de recherche en mathématiques/informatique donc Bac+5 bientôt en thèse .
Sinon le produit vectoriel j'ai vu ça en tout début de première année de prépa (maths sup MPSI) .
Attention quand même : le produit vectoriel de deux vecteurs donne un vecteur de direction normale aux deux autres, mais pour que ce soit une "normale" il faut que la norme du résultat soit égale à 1, et donc que les deux vecteurs que l'on multiplie soient unitaires ( = de norme égale à 1).
par exemple
....e
.../|
../.|
./..|
a---d
|\..|
|.\.|
|..\|
b---c
tu as trois surfaces (imagine en 3D en non coplanaire bien sûre) abc, acd et ade.
Pour calculer la norme en a, tu calcul la norme des trois surface :
v1 = ab^ac
v2 = ac^ad
v3 = ad^ae
ensuite ta norme en a sera
Va =v1 +v2 +v3
Il suffit de la normer.
Attention
ab^ac = -1 * ac^ab
Aprés tout dépend comment tu utilise les normale bien sur. Le fait d'utiliser des normales aux sommet améliore le rendu car tu pourra ainsi calculer une norme différente sur chaque point de la surface
"car tu pourra ainsi calculer une norme différente sur chaque point de la surface"
Je ne suis pas tout a fait d'accord, le lissage utilisé (sans shaders) est celui de Gouraud. c'est a dire qu'a chaque sommet de chaque triangle, en fonction de la normale et de la lumiere, est calculé une couleur, et Gouraud fait une interpolation entre les 3 couleurs des sommets
C'est a dire qu'il n'y a pas de normale sur toute la surface, mais un dégradé, interpolation des couleurs des sommets.
Avec les shaders, on peut faire le lissage de Phong, qui lui interpole les normales, et recalcule pour chaque pixel la couleur en fonction de la lumiere. C'est bien sur infiniment plus calculatoire, mais plus "parfait" si j'ose dire. Meme si Gouraud a longtemps été l'algo pas trop calculatoire qui permettait de tres bons rendus
ahhhh les espaces vectoriels muni de l'addition et de la multiplication par un scalaire, quels bons souvenirs ça faire surgir en moi, j'en suis tout emoustillé
Je ne suis pas tout a fait d'accord, le lissage utilisé (sans shaders) est celui de Gouraud
C'est un rendu comme un autre.
Mais indirectement (mais de moins bonne facture certes) ca reviens à modifier la normale pour les point d'une surface.
Normales de points en Opengl
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html