Prologue...
|
Dans ces pages vous allez trouver de nombreux renseignements utiles pour vos débuts dans le monde de l'image de synthèse. |
Pour les initiés, vous retrouverez certains éléments empruntés à droite et à gauche, notamment : |
|
D'ailleurs, un travail de titan est en cours de réalisation, par une équipe française : |
Allez donc voir le site du POV-Monde, vous m'en direz des nouvelles... |
|
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èeces 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. Nous venons d'effectuer, de meniè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 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 :
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 :
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.
|
et |