[ mini moteur 3D ] - Eclairage d'une facette ??

- Eclairage d'une facette ?? [ mini moteur 3D ] - Programmation

Marsh Posté le 28-01-2002 à 00:49:17    

Ben voila j'ai commencé un mini moteur 3D en c++, un truc très basique enfin c'est histoire de me faire la main quoi !!
 
Est ce que quelqu'un connaitrait le calcul de la "quantité de lumière" sur une facette éclairée par une source lumineuse ?

Reply

Marsh Posté le 28-01-2002 à 00:49:17   

Reply

Marsh Posté le 28-01-2002 à 01:07:30    

G pas la formule exacte mais ca doit dependre du fluide ke la lumiere traverse, du type de la source, de pas mal de choses en fait...  
 
Essai de te trouver des cours de Sup Optique sur le net, ou alors un prof de prepa ou d'ecole d'inge ki aime bcp les forums...


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 28-01-2002 à 01:11:36    

tu as la normale de la facette ?
tu prends un point moyen de la facette...  
et tu fais un produit scalaire entre la normale de la facette, et le vecteur point_moyen->source_lumière (normalisé), et tu as une valeur entre -1 et 1,cosinus de l'angle entre les 2 vecteurs, qu'il faut donc limiter entre 0 et 1.

Reply

Marsh Posté le 28-01-2002 à 01:13:34    

ou sinon encore + simple, tu considère que la source de lumière est très éloignée, donc tous les rayons sont //, t'as juste à faire le produit scalaire de la normale avec un vecteur constant.

Reply

Marsh Posté le 28-01-2002 à 02:44:09    

si tu programmes sous DirectX ou OpenGl tu peux
utiliser les modeles d'eclairages utilisées par ces API.
 
Les modeles d'eclairages sont assez divers.  
 
Il faut d'abord decrire la reponse des materiaux. Le modele le plus general est la description BRDF qui detaille la quantité de lumière renvoyé dans chaque direction en fonction de la quantité de lumière reçue sur un element de surface (fonction qui prend deux directions en argument et renvoie l'intensite lumineuse percue).
C'est un modele general et qui englobe en fait tous les autres modeles.
 
Ce modele peut etre simplifie et decompose en trois composantes
qui sont calcules localement en fonction d'une unique source (ce qui est utilise par OpenGL):
une composante ambiante qui est une constante d'eclairement independante de l'angle de vision et de l'angle d'eclairage.
Une composante diffuse qui est dépendante de l'angle d'eclairage par rapport à la surface. Cette composante est indépendante de l'angle de vision. (effet mat)
Une composante spéculaire qui est dépendante de l'angle d'éclairage et de l'angle de vue de la surface. (effet brillant).
L'ajout d'une nouvelle source consiste a ajouter les resultantes. Le modele d'eclairage géré par les cartes 3D est dit local parce qu'il ne tient pas compte des propriétés des materiaux environnants. C'est le plus utilisé parce qu'il nécessite peu de calcul.
 
Il y a des modeles d'eclairages beaucoup plus complexes, dits globaux qui tiennent compte des interactions lumineuses entre des surfaces qui agissent comme des sources: modele de la radiosite qui n'est pas resolvable en temps reel. (mais qui peut servir a calculer des lightmaps pour des scenes statiques).
 
La gestion des eclairages dans la 3D est un vaste sujet..
 
LEGREG

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed