Lightning Generator

Introduction au Ray Tracing

Introduction



En infographie (informatique graphique), il existe plusieurs techniques de synthèse d'images.
Vous connaisser la technique classique qui consiste à créer l'image de toutes pièces en intervenant à toutes les étapes de la création, c'est ce que nous appelons communément 3D.
La 3D est assez pratique pour effectuer des animations d'objets géométriques avec un rendu simpliste, mais dés lors qu'il faut obtenir un rendu réaliste cela devient très fatiguant.
Le Ray Tracing (suivi de rayons) est la technique à la Terminator (brutale comme la vie) pour créer des images, parce qu'elle ne fait pas preuve de finesse dans la mesure où elle consite à lancer des rayons dans l'espace et de calculer leurs intersections avec d'éventuels objets d'une scène 3D.

Historiquement, la première utilisation de la technique du suivi de rayons fut en 1968 par Appel ([APPE68]); c'était, au départ, une technique d'élimination des faces cachées comme l'algorithme du peintre...
C'est dans les années 80 que cet algorithme commença à être réellement exploité comme les chercheurs s'étaient rendu compte qu'il pouvait non seulement effectuer une élimination sûre des faces cachées mais aussi donner un rendu hyperréaliste.
Depuis, les améliorations n'ont pas cessé au niveau du rendu, du temps de calcul, des objets... Tant et si bien qu'aujourd'hui le Ray Tracing est la technique incontournable pour qui veut se prétendre infographiste.

Le système de vision



Comme nous l'avons dit plus haut, en Ray Tracing nous nous contentons de lancer des rayons dans l'espace et de calculer la couleur éventuelle de l'objet rencontré.
Le Ray Tracing permet de créer une image 2D d'un scène 3D, nous devons tracer ou lancer des rayons depuis le point d'observation jusqu'à un pixel donné ; si l'écran est 640x480 il faudra lancer 307200 rayons pour constituer l'image (je pense que vous commencez à comprendre pourquoi on dit que le Ray Tracing est gourmand en temps de calcul, mais cela n'est qu'un début).
Pour chaque pixel de l'écran de vision, il faut créer un vecteur allant du point d'observation vers le pixel, il faut bien sur placer l'écran dans l'espace.

Comme le Ray Tracing est une simulation de la réalité, il faut indiquer comment elle est perçue, pour ce faire nous devons indiquer où se place la caméra (l'oeil), où regarder, tout cela dans l'espace.
L'ensemble point d'observation + écran forme une pyramide dont la base est la caméra, la scène doit être contenue dans cette pyramide pour être visible directement.

Rayons et pixels



Comme je l'ai dit plus haut, nous effectuons un balayage de l'écran avec des rayons lumineux, le rayon part du point d'observation, passe par le pixel (x,y,z) de l'écran puis intercepte ou non une surface d'objet.

Le Forward Raytracing



Pour l'instant tout ce que nous avons vu n'était pas difficile à comprendre et à mettre en oeuvre, une fois qu'un rayon rencontre une surface il faut simplement réussir à déterminer la couleur de cette dernière.

Imaginez une pièce où il y ait un canapé rouge accolé au mur, au dessus du canapé un mirroir et une lampe éclairant la pièce en envoyant des rayons lumineux dans toutes les directions, nous plaçons la caméra de manière à ne voir que le canapé et le miroir.
La lampe envoie des rayons dant toute la pièce, nous allons en suivre quelques-uns :

· le rayon A quitte la lampe mais ne rencontre aucun objet, 
sa contibution dans l'image observée par la caméra est donc nulle;

· le rayon B quitte la lampe, rencontre le miroir
qui le réfléchit en le renvoyant vers le canapé
qui le renvoie cette fois vers le plan image, 
le rayon B contribue donc à l'image finale; 

· le rayon C quitte la lampe, rencontre la miroir 
qui le renvoie directement vers le plan image.
Le rayon à chaque étape (intersection) change de couleur si la surface intesectée n'est pas de la même couleur que la sienne, dans le cas du rayon B blanc, il devient rouge une fois le canapé rencontré.

Nous venons d'effectuer, de manière grossière, ce que fait un ray tracer.
Nous avons suivi le chemin emprunté par un rayon lumineux (un photon) dans son parcours d'une scène.
Plus précisèement nous avons fait du suivi de rayons en avant, comme vous vous en doutez de nombreux rayons ne participent pas à l'image, il serait donc plus pratique et surtout plus rapide de ne lancer que les rayons participants à la constitution directe de l'image.

Il existe, heureusement, le ray tracing arrière qui permet de faire cela.

Le Backward Raytracing



Avec cette méthode, nous lançons les rayons depuis l'oeil vers les objets, des objets vers les sources lumineuses.
Nous ne nous intéressons plus qu'aux rayons intervenant de manière directe dans la scène visible donc nous gagnons du temps.

De par le fait que le forward ray tracing soit coûteux en temps de calcul, le terme Ray Tracing est utilisé exclusivement pour le Backward Ray Tracing.
Le terme 'backward' souligne le fait que nous suivons le rayon depuis son point final (l'écran) jusqu'à son éventuelle origine.

Les divers types de rayons



Jusquà présent nous n'avons vu et parlé que d'un type : les rayons de vision (allant de l'oeil à l'écran) mais il y en a d'autres tout aussi importants.

Les rayons d'illumination ou d'ombrage sont les rayons joignant une source lumineuse à un point d'une surface donnée, ils illuminent le point de la surface s'ils ne rencontrent pas d'obstacle opaque.

Les rayons réfléchis transportent la quantité lumineuse réfléchie par une surface vers une autre. Ce sont ces rayons qui cractérisent la propriété d'un miroir, un miroir a généralement son coefficient de réfexion à 1 ce qui signifie que toute l'énergie lumineuse reçue est renvoyée. Ils peuvent aussi être appelés rayons spéculaires.

Les rayons transmis transportent la quantité lumineuse à travers une surface vers une autre. Ce sont les rayons de transparence, pour une surface parfaitement transparente le coefficient de transparence vaut 1.

Les rayons d'illumination ou d'ombrage



Imaginez vous sur une scène de théatre éclairée par deux sources lumineuses A et B.
De votre position sans vous déplacer vous distiguez parfaitement la source A, elle ne subit aucune atténuation.
De votre position, la source B vous est entièrement cachée par une objet placé entre B et vous.
Au point où vous vous trouvez seule la souce A vous éclaire, donc seule son intensité serait prise en compte dans l'équation d'éclairage (Rendering Equation).
Seuls les rayons lumineux qui ne rencontrent pas d'obstacle opaque éclairent une scène, c'est en suivant cette idéee que l'on génère les ombres d'une image de synthèse.

Les rayons de réflexion



Comme je l'ai dit plus haut, un mirroir est une suface parfaitement réfléchissante ou, si vous voulez, avec laquelle tous les rayons arrivant repartent.
Les rayons arrivants peuvent subir un changement de couleur si celle de la surface rencontrée est différente.
Les rayons qui sont réléchis vérifient les propriétés suivantes :
· le rayon R réfléchi appartient au plan défini
par le rayon I incident et la normale N
à la surface au point d'intersection; 

· l'angle A entre le rayon I et la normale N
est le même qu'entre la normale N et le rayon R.

Les rayons transmis



Le rayon transmis T est le rayon qui passe à travers une suface donc d'un milieu d'indice n1 à un milieu d'indice n2, les propriétés caractérisant ce rayon sont :

le rayon T réfléchi appartient au plan défini par le rayon I incident et la normale N à la surface au point d'intersection;
il vérifie l'égalité de Snell-Descartes qui est exprimée par 'n1.Sin A= n2.Sin B', A est l'angle entre le rayon incident I et la normale N, B est l'angle entre la normale N et le rayon T transmis.

C'est la différence entre les indices des milieux (n1/n2) qui provoque la déformation caractéristique des surfaces transparentes.

Le retour de la récursivité



La récursivité joue un rôle capital dans le rendu réaliste des images par ray tracing, je vais vous expliquer pourquoi.

Pour pouvoir tracer l'histoire du pixel par lequel passe le rayon vision, nous devons ranger chaque intersection avec une surface dans un arbre binaire (la branche gauche correspond au rayon réfléchi et la droite au rayon transmis) de profondeur défini par le niveau de récursion.
Le fait de gérer l'arbre de manière récursive évite une gestion explicite qui serait très ennuyeuse et gourmande en mémoire, comme nous nous intéressons qu'à un rayon vision à la fois une seule branche de l'arbre est parcouru à la fois.

Quant un rayon de vision rencontre la surface d'un objet, le rayon réfléchi ou transmis constitue une sorte de nouveau rayon vision et il faut réitérer ce processus autant de fois que nécessaire, c'est à ce niveau qu'intervient la récursivité parce qu'avec la même routine nous pouvons gérer les divers types de rayon (vision, réfléchi, transmis).
Si nous calculons une image avec une profondeur de récursion 1, nous aurons juste une image avec les faces cachées éliminées et un éclairage élémentaire.

La touche finale : l'aliasing



Comme vous le savez maintenant le Ray Tracing est un processu de sampling, de par ce fait, il manque toujours des informations et cela se constate plus précisément aux limites d'une surface.
Par exemple, une sphère apparaît avec des bords cassés sans antialiasing, parce qu'aux bords de la sphère les rayons lumineux ne sont pas assez nombreux pour décrire le changement, il manque des informations pour constituer une image nette d'où les cassures observées.

Il existe plusieurs techniques d'antialiasing comme :

le supersampling qui consiste à lancer plus d'un rayon vision à travers un même pixel et de faire la moyenne des intensités de chancun d'entre eux après leur parcours;

le supersampling qui reprend l'idée donnée plus haut mais de manière intelligente, seul les endroits où il y a un changement de couleur brusque sont subdivisés et resamplés récursivement.

Il existe d'autres techniques d'antialiasing mais nous n'en parlerons pas cette fois puisque nous nous contentons d'effectuer un survol des divers constituants d'un noyau de ray tracer.

L'équation de rendering



C'est l'équation qui lie tous les éléments vus auparavant pour déterminer la couleur d'un point donné.
Il existe plusieurs équations ayant chacune leur intérêt mais la plus simple est celle apportée par Whitted en 1980 qui permet d'avoir des effets de reflets et de transparences.

Conclusion et chute



Le Ray Tracing est une technique pour produire des images réalistes, sa mise en oeuvre est simple en principe mais n'est pas évidente, c'est la raison pour laquelle la réalité est très difficile à reproduire, tant les paramètres réels sont nombreux.


Article tiré du magzine 'ST-magazine' No 69 de Février 1993, rédigé par Elysée Ade, auteur d'un logiciel de raytracing.



Cet article provient de Lightning Generator
http://www.lightning-generator.org

L'URL de cet article est:
http://www.lightning-generator.org/Introduction-Au-Ray-Tracing-SectionArt-1.html






All logos, images and trademarks in this site are property of their respective owner.
The comments are property and reponsability of their posters, all the rest © 2002-2012 by Lightning Generator
Special thanks to Graphinc for the design of Lightning Generator s'logos.

Powered By Slackware   Povray   [Valid RSS]
PUBLICITE
Thumbnail Screenshots by Thumbshots