Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1749 connectés 

  FORUM HardWare.fr
  Programmation

  [OpenGL] Normales

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OpenGL] Normales

n°18074
Alload
Posté le 11-03-2001 à 17:10:25  profilanswer
 

C'est bien beau les normales indispensables pour que les lumières soient bien rendues, mais comment les calculer rapidement?
 
J'arrive facilement à trouver leurs coordonnées quand je travaille avec un cube, mais comment trouver les coordonnés pour une pyramide par exemple? Ou pour tout autre objet dont les cotés ne sont pas parallèles à un des axes du repère?

mood
Publicité
Posté le 11-03-2001 à 17:10:25  profilanswer
 

n°18075
chadenat
Posté le 11-03-2001 à 17:19:36  profilanswer
 

tu calcules la normale d'un triangle.Tu as les 3 sommets du triangle donc tu peux obtenir la normal du triangle en faisant un produit vectoriel.


---------------
http://www.chadenat.forez.com
n°18076
verdoux
And I'm still waiting
Posté le 11-03-2001 à 17:21:31  profilanswer
 

Pour un cube ou une pyramide, préciser les normales est inutile puisque ce sont des objets facettés.
 
Par contre si tu veux dessiner une sphère (ou une surface "douce" ) avec un ensemble de polygones, les normales ne doivent  plus êtres celles des polygones pour un meilleur rendu.

n°18084
Alload
Posté le 11-03-2001 à 17:42:37  profilanswer
 

chadenat > c'est quoi un produit vectoriel? :)
 
Verdoux > donc si je comprends bien, si j'utilise glBegin (GL_TRIANGLES) ou glBegin (GL_QUADS) ça ne sert à rien de préciser en plus les normales?

n°18090
chadenat
Posté le 11-03-2001 à 18:09:25  profilanswer
 

Pour une sphère Verdoux a raison il faut dire que les normales passent par le centre....
 
Sinon pour le produit vectoriel regarde dans un livre de math...


---------------
http://www.chadenat.forez.com
n°18091
Alload
Posté le 11-03-2001 à 18:30:19  profilanswer
 

Ben j'suis qu'en 1ère. On a pas du tout fait les produits vectoriels.

n°18094
z51
Posté le 11-03-2001 à 18:55:28  profilanswer
 

La normale d'un triangle se calcule par le produit vectoriel AB^AC par exemple où A, B et C sont les 3 sommets.
Si AB(x, y, z) et AC(x', y', z' ) alors  
AB^AC = (yz'-y'z, zx'-z'x, xy'-x'y)
En général la normale est normée.
 
Le calcul des lumières nécessite de connaître les normales aux sommets et non aux triangles. Pour les obtenir, il suffit de moyenner les normales des triangles auxquels le sommet appartient.
 
Maintenant il est inutile d'effectuer les calculs à chaque trame, il suffit juste de transformer les normales comme les autres sommets de l'objet.

 

[edit]--Message édité par z51--[/edit]

n°18097
verdoux
And I'm still waiting
Posté le 11-03-2001 à 19:16:23  profilanswer
 

Oui en 1ère ou en même en terminale, on voit pas les maths utiles pour la 3D (espaces vectoriels normés, matrices).

 

[edit]--Message édité par Verdoux--[/edit]

n°18131
darkoli
Le Petit Dinosaure Bleu
Posté le 11-03-2001 à 22:50:39  profilanswer
 

voici un exemple en c qui marche :
 
pour faire une surface toute lissée (genre une sphere), il faut faire la moyenne des normales. normalement il y a une normale par face mais la on en calcul une pour chaque point. c'est la somme des normales des faces ou se trouve le point (en gros).
 
// -----------------------------------------------------------------------------
void Calcul_Normale(double* a,double* b,double* c,double* n) {
 // paramètre : trois points a,b et c (tableau de 3 valeurs)
 // les point sont donnés dans l'ordre anti-horaire, si c'est  
 // pas le bon sens, ben il faut inverser les points
  double v[3],w[3];
  double lng=0;
 
  v[0]=c[0]-a[0];
  v[1]=c[1]-a[1];
  v[2]=c[2]-a[2];
  w[0]=b[0]-a[0];
  w[1]=b[1]-a[1];
  w[2]=b[2]-a[2];
 
  n[0]=v[1]*w[2] - w[1]*v[2];
  n[1]=v[2]*w[0] - w[2]*v[0];
  n[2]=v[0]*w[1] - w[0]*v[1];
  lng=sqrt((n[0]*n[0])+(n[1]*n[1])+(n[2]*n[2]));
  if (lng>0) {
    lng=1/lng;
    n[0]=n[0]*lng;
    n[1]=n[1]*lng;
    n[2]=n[2]*lng;
    }}
//------------------------------------------------------------------------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [OpenGL] Normales

 

Sujets relatifs
[OpenGL] Problèmes avec les faces d'une pyramide[OpenGL] Problèmes
[C/C++ opengl] Programmation d'un jeu réseau[OpenGL] Problème de compilation
[OpenGL] explosion ...sites sur directX et openGL
[OpenGL] L'activation des texture me change mes couleurs ![OpenGL] Question bête
[3D][OpenGL] T&LOpengl ou DirectX
Plus de sujets relatifs à : [OpenGL] Normales


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR