ETAPE 1 : Une sphère avec un éclairage diffus | |||||
Calculez l'image d'une sphère en vue cavalière avec un éclairage diffus. La fonction programmée pourrait avoir la signature suivante : [image]=RayTracer1(Scene,Window,Viewport); L'image sera ensuite affichée avec : ifig=10; f=scf(ifig); // pour créer un fenêtre f.color_map =graycolormap(256); Matplot(image*256); Le problème revient à calculez une matrice (150x150pixels par exemple) correspondant à l'intersection de droites partant du plan image avec la surface d'une sphère centrée en (0,0) et à calculer le produit scalaire de la normale à la surface avec les vecteurs d'une source lumineuse de direction Light=<1,1,1>. | ![]() | ||||
ETAPE 2 : réalisme du modèle d'éclairage | |||||
Ajoutez une intensité spéculaire et ambiante au modèle d'éclairage. | ![]() | ||||
ETAPE 3 : sources multiples de lumières | |||||
Gérez plusieurs éclairages avec atténuation en fonction de la position de la source et prise en compte des propriétés des surfaces. La fonction calculant l'intensité en un point pourrait avoir cette signature : [intensity]=Eclairages(Vobs,IAmb,Lights,Ps,Ns,Ka,Kd,Ks,ns); |
| ||||
ETAPE 4 : Anti-aliasing | |||||
Evitez l'effet de marches d'escalier en calculant une image plus précise que celle affichée... | |||||
ETAPE 5 : Texture, rugosité... | |||||
Perturbez la normale à la surface pour donner à la sphère un aspect rugueux. | |||||
ETAPE 6 : Opérations booléennes | |||||
Ajouter une deuxième sphère plus petite que vous soustrairez à la première. | |||||
ETAPE 7 : Et la couleur fûtPour prendre en compte les couleurs il faut manipuler 3 matrices (de pixels : RVB) mais il faut une autre procédure d'affichage (que Matplot) et donc un autre format d'image (voir le module SIP pour scilab : SIPtoolbox). |