|
Sujet : [3D] Lightmap |
| LeGreg |
Alload a écrit a écrit :
C'est vrai que l'éclairage par pixel sera un grand pas en avant, mais est-ce que l'on pourra juste avec lui afficher la radiosité, etc... comme on peut le faire avec les lightmaps?
|
Tu as le choix entre deux methodes:
- une methode globale ultra realiste mais
irrealisable en temps reelle et non view-dependant
(hors dans une scene 3D une petite voire bonne partie de l'eclairement depend du point de vue)
- une methode semi-locale qui permet de realiser des effets
d'eclairages suffisamment realistes pour etre credibles
(la radiosite etant limitee au terme ambiant, le reste
etant simule en ombre dynamique, phong ou blinn par pixel etc..). L'agencement des lumieres peut etre tres complique mais ca reste realisable en temps reel.
illustration: le renderer de base de 3DSMax est limite aux methodes semi-locales (plus raytracing optionnel) mais le rendu est ameliorable grandement si l'on utilise les methodes d'illuminations globales. (plugin luminaire gratuit: http://www.maxshade.com/ , ou les produits ExLuna : http://www.exluna.com/products/bmrt/ )
Enfin, je dis ca mais je ne sais absolument
pas ce que nous reserve l'avenir
(vu que beaucoup de choses qui nous paraissaient
difficiles d'acces il y a quelques annees,
se font quasiment sans probleme maintenant..)
A+
LEGREG |
| bjone |
bin l'idée à l'origine des lightmaps, c'était de simuler des éclairages complexes avec peu de triangles.
par exemple tu prends un mur "plan" de quake 1, ou tu as que 2 triangles, dans les outils de "compilation" dèrrière l'éditeur de niveau, le générateur de lightmaps va créer une texture d'une certaine résolution, puis il va:
- paramétrer chaque pixel de coordonnée u,v de cette lightmap en fonction de la position spaciale du "plan" du mur.
- itérer à travers tous ces pixels et calculer en fonction du point x,y,z dans l'espace assigné au pixel, l'éclairage en ce point... (un x,y,z évolue au fur & à mesure que tu fais les pixels en u,v)
- l'éclairage, comme d'hab, consistant à faire le produit scalaire entre la normale en ce point (qui est constante sur tout le plan d'ailleurs) avec le vecteur point 3d->lumière (normalisé).
si le vecteur point 3d->lumière entre en intersection avec des éléments du décor (escalier, poutre....), l'éclairage de cette lumière n'est pas comtabilisée dans la somme finale...
c là ou la lightmap est puissante, il est actuellement "impossible" de calculer en temps réel l'intersection entre le vecteur vertex->lumière et d'autres polygones...
mais symétriquement, la lightmap est par essence statique. |