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.