#1 

04-11-2009 13:28:56

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Salut les gars, je ne comprend pas ce mot, je crois avoir compris que c'est une droite perpendiculaire à un plan, mais si quelqu'un pouvait m'expliquer plus en détail ça serait cool.
nottement pour un objet 3d, comment definit-on la normale et quelle est son utilité ?
merci pour votre aide.


Hors ligne


#2 

04-11-2009 15:08:07

TUpac
Membres
Avatar de TUpac
Date d'inscription:
Messages: 387
IP: 90.29.47.217
Courriel

C'est effectivement une droite perpendiculaire à un plan. J'ai bien galéré mais j'ai fait ça sur un triangle d'un terrain afin d'orienter mon node face au terrain.

triangle3df tri;
vector3df A,B,C;
A = vector3df(cible->gpos().X + 5,    0,cible->gpos().Z); // positione les vecteurs en triangle
B = vector3df(cible->gpos().X - 3.57f,    0,cible->gpos().Z +3.57);
C = vector3df(cible->gpos().X - 3.57f,    0,cible->gpos().Z -3.57);
tri.pointA = A + vector3df(0,sol->terrain->getHeight(A.X,A.Z),0); // pose les vecteurs sur le sol
tri.pointB = B + vector3df(0,sol->terrain->getHeight(B.X,B.Z),0);
tri.pointC = C + vector3df(0,sol->terrain->getHeight(C.X,C.Z),0);

vector3df nor = tri.getNormal().normalize(); // normalize, il faut bien ...
cible->node->setRotation(nor.getHorizontalAngle()+ vector3df(-90,0,0)); // rotation de la cible

C'est un système perso qui ressemble bien à du bricolage mais ça fonctionne. J'espère que ça t'aidera.


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#3 

04-11-2009 15:36:14

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Merci Tupac, ce systeme m'aidera surement, mais pour l'instant je n'ai pas besoin de code, j'aimerais juste comprendre l'aspect théorique.
visiblement tu te sers de la normale pour definir une orientation, mais je ne comprend pas comment est definit la normale ?


Hors ligne


#4 

04-11-2009 15:42:15

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.158.189
Courriel

Sans trop rentrer dans les détails,
Première notion, le vecteur normal d'une face est en fait le vecteur représentant la perpendiculaire au plan formé par une face ou une surface donnée.
Deuxième notion liée au normal face, chacun de ces vecteurs doit être normalisé (longueur comprise entre 0.0 et 1.0).

Ce fameux vecteur à comme principale utilité de permettre l'interaction de nos faces dont il est la normal, avec la lumière.

Je verrais d'ici à demain pour faire un petit tuto la dessus, les lights, hmmm vaste sujet wink


Force et sagesse...

Hors ligne


#5 

04-11-2009 16:30:59

TUpac
Membres
Avatar de TUpac
Date d'inscription:
Messages: 387
IP: 90.29.47.217
Courriel

C'est tout a fait ca ! utilisé par le moteur pour l'éclairage , spéculaires , collisions ....

ps: tmyke, si tu nous sort un tuto complet sur les normales en un jour je te tire mon chapeau (noir, bien sur wink)


"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."

Hors ligne


#6 

04-11-2009 16:38:16

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 81.51.158.189
Courriel

Cela sera surtout un tuto sur les grands principes de l'éclairage. C'est un tuto que j'avais écris pour N3xtD, et donc il existe déjà,
je n'ai qu'a le copier et adpater pour le forum wink


Force et sagesse...

Hors ligne


#7 

04-11-2009 16:45:50

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Super tmyke, j'ai hâte d'en savoir plus.
je suis curieux de savoir comment sont calculé les vecteurs normale ,puis comment il sont normalisé(d'ailleur ça porte à confusion)
Enfin en tout cas merci pour votre aide


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
168 invités en ligne
membre en ligne: -
RSS Feed