A la base du raytracing, ou lancé de rayon, il y a cette célèbre branche de la physique qu'est l'optique. Les lois de l'optique on été découvertes par Snell.
Le principe de calcul d'images de synthèse à l'aide du raytracing se fonde sur la simulation mathématique du trajet d'un rayon lumineux.
La physique nous dit que le trajet d'un rayon lumineux est une ligne droite (en se plaçant dans un espace non courbé par les masses qui l'occupent !!!...). Mais de sa source émettrice au récepteur qu'il impressione le rayon lumineux subit toutes sortes de transformations en rencontrant divers objets. Sa propagation se fait toujours en ligne droite mais c'est sa direction qui change. Il peut donc être réfléchit, diffracté, réfracté, etc...
En fonction des matériaux rencontrés le rayon lumineux fait réagir les atomes : Cela permet alors de voir différentes couleurs.
Deux exemples de détournement des rayons lumineux :
Un rayon lumineux peut se propager dans différents milieux. Ces milieux n'ont pas les mêmes propriétés physiques. En particulier il n'ont pas la même réfringence. La réfringence n'est pas une valeur absolue ; un milieu est toujours plus ou moins réfringentpar rapport à un autre mileu. Le réfringence est en quelque sorte la capacité d'un milieu à "ralentir" la propagation du rayon lumineux. Dans l'illustration le milieu au-dessus du plan est moins réfringent que le milieu au-dessous. Le rayon ne peut pas poursuivre sa course en ligne droite. Il est dévié.
La lumière visible est une émission électro-magnétique, au même titre que les ondes radios. On ne rentrera pas ici dans le domaine délicat de la dualité onde-corpuscule !! Comme newton nous l'a si bien démontré avec son prisme triangulaire, la lumière blanche est, en fait, l'addition d'une multitude de lumières colorées. L'ensemble de ces lumières forme le spectre de la lumière blanche. A chaque couleur sa fréquence électromagnétique. Ainsi le spectre de la lumière visible s'étend de l'infra-rouge (basse fréquence) à l'ultra-violet (haute fréquence), ces deux limites ne faisant pas partie de la lumière visible !
La vision des couleurs dépends de l'aptitude des objets à réemettre une certaine fréquence lumineuse. On remarquera aussi que toutes les fréquences non réemises sont absorbées par l'objet. Les peuples du sud l'on bien compris, et depuis longtemps. Bien que ne connaissant pas la relation fréquence-énergie ils ont peint leurs maisons en blanc. Ainsi elle réemettent toute la lumière, et donc toute l'énergie, sans en absorber, il y fait meilleur à vivre l'été ! Par contre nos chauffages solaires qui alimentent en eau chaude certaines de nos maisons sont intégralement peint d'un noir mat. Là aucune lumière n'est réemise donc toute l'énergie est absorbée : ça chauffe !
Pour obtenir des images calculées on distingue deux étapes complémentaires : la modélisation et le rendu.
C'est l'étape imaginative du raytracing. Le raytracer décrit la scène qu'il veut rendre. Comme on est dans un domaine largement mathématique et informatique cette description a des limites. La scène doit être pensée en termes de combinaisons plus ou moins complexe de sphères, parallelépipèdes, cônes, cylindres, tores, et autres surfaces de bezier : Le tout est représenté sous forme de 3D dite filaire. Les objets sont alors des sortes de construction en "fil de fer".
Un exemple de code est le suivant :
#declare Column =
union {
cylinder {0.0*y, 0.4*y, 1.2}
cylinder {0.4*y, 3.6*y, 0.8}
cylinder {3.6*y, 4.0*y, 1.2}
torus {0.8, 0.4 translate 0.4*y}
torus {0.8, 0.4 translate 3.6*y}
}
// Four columns
object {Column translate -4*x rotate 000*y}
object {Column translate -4*x rotate 060*y}
object {Column translate -4*x rotate 120*y}
object {Column translate -4*x rotate 180*y}
// One object hovering over each column
union {
sphere {0, 1 translate -4*x rotate 000*y}
box {-0.9, 0.9 rotate <45,10,45> translate -4*x rotate 060*y}
cylinder {-x, x, 0.9 rotate <-20,20,-10> translate -4*x rotate 120*y}
torus {0.7, 0.4 rotate <50,45,0:gt; translate -4*x rotate 180*y}
translate 5.5*y
}
// A quick room
box {<-8,0,-12>, <8,12,8> hollow}
Les figures issues d'instruction de ce type (les instructions ci-dessus ne sont que des exemples sans rapport avec les figures présentes) sont à l'images de celles ci-dessous :
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Un bon départ : prendre une feuille de papier et dessiner ce que l'on va vouloir représenter.
Le raytracer peut modéliser ses scènes de plusieurs façon. La première, et la moins triviale, consiste à décrire dans un language de programmation donné les élements consituants la scène. C'est un gros effort d'imagination, de calcul, de positionnement à faire. Tout se passe dans la tête du raytracer ! La deuxième, moins rébarbative et plus directe demande l'utilisation de logiciels de modélisation. Ces logiciels crééent les objets, permettent, graphiquement, de les positionner, de les dimensionner, de les assembler. On conseillera cette méthode aux débutants. (Aux autres aussi d'ailleurs, c'est l'art qui parlera alors et non la technique ...).
A chacun de ces objets on pourra associer une texture. C'est la représentation colorées de la surface de l'objet. Voici les mêmes objets que précédement mais avec des textures différentes :
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
C'est l'étape purement informatique du raytracing. On donne a un outil de rendu les éléments, leur texture et il calcule point par point le résultat final. Pour ce faire on calcule le trajet d'un rayon lumineux de la source lumineuse à l'oeil. C'est l'étape qui demande le plus de ressources machine. Certaines scènes complexes peuvent demander des jours entiers avant d'être totalement finies !