LUMIÈRES


LES OBJETS LUMIÈRES
ATTRIBUTS D´UNE LUMIÈRE
ANIMATION DES LUMIÈRES LUMIÈRES ATTACHÉES

















































LES OBJETS LUMIÈRES

La lumière par défaut

         Au lancement du programme, et à chaque invocation de la commande ´ini light´, la lumière numéro de type simple 1 est automatiquement créée; elle est définie par:
         1) Son numéro 1
         2) La position de la lampe = (-750,-500,-1000)
         3) Par sa couleur blanche = (1,1,1)

Créer une lumière

         La commande light(id) crée la lumière d´identificateur id identique à la lumière 1 par défaut.
         Pour modifier une lumière il suffit de changer ses attributs.
         displ light: Permet d´afficher les lumières: Un disque de la couleur de la lumière est affiche en sa position et, si c´est un spot, sa direction est tracée.

ATTRIBUTS D´UNE LUMIÈRE

Position

         Par défaut une lumière est ponctuelle, c´est à dire qu´elle est supposée n´occuper qu´un point de l´espace référencé par la commande:
         eye light.
Exemples:
         1) $eye light(1): Imprime (-750.0,-500.0,-1000.0).
         2) eye light(1)=500,-500,-750: Modifie la position de la lumière 1.

Couleur

col light(id): retourne la couleur la couleur de la lumière id.
col light(id)=r,v,b: modifie cette couleur.
Exemples:
         1) w=col light(1); donne à w la couleur de la lumière 1.
         2) col light(2)=(col light(1))/2; donne à la lumière 2 la moitié de celle de la lumiere 1.

Spot

         Un spot de révolution est défini par son type:
         type light(id)="aim"
              avec un point de visée:
aim light(id)=xa,ya,za
         type light(id)="axis"
              avec une direction:
axis light(id)=dx,dy,dy

         position: eye light(id)=xe,ye,ze.

         ouverture: foc light(id)=f.

         une loi de variation de son éclairement en fonction de l´angle que fait le rayon avec la direction joignant sa position à son point de visée: roll light.

         un coefficient exponentiel ext light(id)=c.
Exemples:
         1) eye light(2)=0,-200;
         aim light(2)=0,0,0;
         col light(2)=1;
         foc light(2)=PI/4;
         roll light(2)=10;

Définit un spot situé sur l´axe des y à 200 au dessus de l´origine, regardant l´origine, et formant un cône de lumière rouge d´ouverture PI/4 dont l´intensité diminue selon (cos(a))^10 lorsque l´angle ade varie de 0 à PI/4.
         2) light(3);
         eye light(3)=200;
         aim light(3)=-1;
         foc light(3)=PI/3;
         col light(3)=0,1;
         roll light(3)=0;

Définit un spot situé sur l´axe des x a 200 à droite de l´origine, regardant l´origine, et formant un cône de lumière rouge d´ouverture PI/3 dont l´intensité passe brusquement de 1 à 0 pour le demi angle PI/3.

Atténuation

coe light(id)=c1,c2,c3 permet de contrôler l´atténuation de la lumière en fonction de sa distance au point éclairé.

ANIMATION DES LUMIÈRES

         Des trajectoires peuvent être affectées à tous les attributs d´une lumière pour la contrôler au cours du temps:

Animation de la position

         traj(ni)tran(x1,y1,z1, x21,y2,z2, ...)vertex(1)light(id) anime la position de la lumière id en ni images sur la ligne polygonale (x1,y1,z1, x21,y2,z2, ...).

Animation de la couleur

         traj(ni)col(r1,v1,b1, r2,v2,b2, ..)light(id) anime la couleur de la lumière id en ni images sur la ligne polygonale (r1,v1,b1, r2,v2,b2, ..).

Animation d´un spot

         traj(ni)aim(x1,y1,z1, x2,y2,z2, ...)light(id) anime le point de visée de la lumière id sur ni images selon la ligne polygonale (x1,y1,z1, x21,y2,z2, ...).
         traj(ni)tran(x1,y1,z1, x2,y2,z2, ...)axis light(id) anime la direction de la lumière id en ni images sur la ligne polygonale (x1,y1,z1, x21,y2,z2, ...).
        
traj(ni)foc(f1,f2, ...)light(id) anime la focale de la lumière id en ni images sur les valeurs (f1,f2, ...).
        
traj(ni)roll(r1,r2, ...)light(id) anime la loi de variation de la lumière id en ni images sur les valeurs (r1,r2, ...).

EN COURS DE DEVELOPPEMENT


Remarque:
         Les volumes éclairés par un spot doivent avoir un lissage de PHONG (illum vol n=3,...)
         Un spot conique de base quelconque est défini par:
         1) Une position eye light
         2) Un point de visée (commande ´aim light´)
         3) Une base (commande ´line light´)
         4) Éventuellement une loi (see ´roll light´)
         5) Une ouverture quelconque du spot peut être définie par:
         frame light(num)=n1,n2,...

Mappes de lumières

texture light(n1)=n2,r,v,b,c,dx,dy,dz,an
         L´image numéro n2 sera mappée sur une sphère centrée en la position de la lumière n1 et jouera le rôle d´un verre modifiant la couleur de cette lumière dans la proportion r,v,b, c est le côté de la fenêtre d´antialliasage
         Si (dx,dy,dz,an) est présent, la sphère est tournée de l´angle an autour de l´axe dx,dy,dz
         Une ouverture peut être définie par ´foc light num=f´ (entre .01 et 10)

Ombres portées

         Anyflo n´est pas un "lancer de rayon" et les ombres portées ne doivent être employées que pour des bases de données très simples, sinon utiliser un "ray tracing".
         Les volumes faisant des ombres doivent être en illum = 3 (PHONG)
         Pour optimiser les calculs on peut:
         1) Spécifier les volumes (r1,r2,...) recevant une shadow de la lumière n1
         ´shadow light n1=r1,r2,...´
         2) Spécifier les volumes (p1,p2,...) portant une shadow de la lumière n1
         ´vol light n1=p1,p2,...´
         3) ´ini intersection´ et ´generate intersection vol(p1,p2,...)

LUMIÈRES ATTACHÉES

         Par défaut toutes les lumières définies éclairent toute la scène. Mais il est possible d´attacher certaines lumières à certains objets, ou certains objets à certaines lumières:

Lumières attachées à un objet

attach light vol(idv)=idl
         Attache la lumière idl au volume idv. Le volume idv ne sera éclairé que par la lumière idl.

Volumes attachés à une lumière

attach vol light(idl)=idv
         Attache le volume idv à la lumière idl. La lumière idl n´éclairera que le volume idv.