RENDU


MODES D´AFFICHAGE
MODÈLES D´ÉCLAIREMENT
AFFICHAGE PARTICULAIRE
LES MOTIFS
LES EXTENSIONS
LES FRACTALS
LES OMBRES PORTÉES

















































MODES D´AFFICHAGE

La mémoire d´image
Les modes d´affichage
La mise en perspective
Accès aux calculs de perspective

La mémoire d´image

         Si yes graphic est actif (valeur par défaut) la mémoire d´image est celle du processeur graphic. La commande displ écrit dans cette mémoire et le résultat apparait sur l´écran.
         La commande displ image displays an image stored in memory.
         Si no graphic est actif , le programme peut tourner sur une installation sans processeur graphic, les images pouvant être calculées et garées sur le disque.

Les modes d´affichage

         La commande displ permet de choisir le mode d´affichage:
         Si yes displ est actif (valeur par défaut) les affichages sont effectifs (OpenGL active les fonctions cablées de la carte graphique).
         Si no illum est actif (valeur par défaut) les affichages sont réalisés en "fil de fer"
         Si yes illum est actif, un zbuffer élimine les parties cachées et la couleur est calculée en chaque pixel en fonction:
         1) Des lumières (voir manuel.light.htm).
         2) Du modèle d´éclairement au point de la surface traitée (voir illum).
         3) De la position de l´eye (voir eye).

La mise en perspective

         La scène est construite dans un repère dit "absolu".
         Une caméra virtuellee est positionnée dans ce repère par les commandes:
(eye): position de la caméra.
(aim): point de visée.
(axis): direction.
(foc): ouverture.
(roll): roulis (inclinaison de la caméra sur l´axe oeil -> point de visée).
(type): "aim" ou "axis".
L´image est coupée par la fenêtre courante.
Les plans proche et lointain de la pyramide de visualisation sont définis par la commande cut.

La commande pers permet de choisir le type de projection:
         pers(1) ou yes pers (valeur par défaut): perspective conique.
         pers(0) ou non pers: perspective cylindrique.
         pers(2): perspective courbe.

Une perspective procédurale (écrite en langage ANYFLO) peut être définie par la donnée d´une fonction local sur une vue.
Une perspective procédurale (écrite en langage C) peut être définie par modification de la fonction pers_utilisateur du fichier utilb.c, il faut alors faire status pers=num avec num < 0.

Les vues sont activées par: validate view(id).
Il faut faire yes view pour rendre activer les vues multiples.

Une vue particulière peut être attachée à un volume par la commande:
         view vol(id_vol)=id_view

Il faut faire yes view pour rendre active toutes les vues.

validate pers vol(num): Permet de générer le volume déformé par la perspective, vu d´un autre oeil on obtient des effets étranges...

Une perspective arbitraire peut être obtenue sur une vue id par la donnée de la matrice 4*4 de passage du repère de l´oeil au repère de la perspective par la commande:
         generate pers(p0,p1,...,p15) view(id).
La commande pers(n) view(id)=p0,p1,...,p15 permet de modifier individuellement les matrices n = 1, 2, 3 et 4 de la vue id.
         n = 1: Repère absolu -> Repère de l´eye
         n = 2: Repère de l´oeil -> Repère de la perspective
         n = 3: Repère absolu -> Repère de la perspective
         n = 4: Repère de l´eye -> Repère absolu

Une perspective procédurale peut être définie en passant des noms de fonctions (au lieu de matrices) aux commandes:
         abs eye view(num) = "nom de fonction"
         eye pers view(num) = "nom de fonction"
         pers screen view(num) = "nom de fonction"
         screen abs view(num) = "nom de fonction"
         pers abs view(num) = "nom de fonction"
De telles fonctions sont de la forme:
         toto()
         {
         p = poi /* p = point dans le 1er repere */
         x = p[0]; y = p[1]; z = p[2]
         xp = ... /* Calcul du point dans le 2eme repere */
         yp = ...
         zp = ...
         validate pers(xp,yp,zp) /* Passe le resultat */
         }

Accès aux calculs de perspective

         En mode texture procédurale texture vol et en mode perspective procédurale (voir ci-dessus), différentes commandes permettent de récupérer ou de modifier les paramètres relatifs au point courant:
         poi: Retourne les coordonnées absolues.
         normal poi: Retourne la normal en ce point.
         eye poi: Retourne les coordonnées dans le repère de l´oeile.
         pers poi: retourne les coordonnées (x,y,z,w) de la perspective.
         screen poi: retourne les coordonnées (x,y,z) dans le repère de l´ecran.
        
validate pers(x,y,z): permet de validate la perspective.

MODÈLES D´ÉCLAIREMENT

Un modèle d´éclairement peut être affecté:
         1) Globalement sur un volume.
         2) Localement sur une facette.
         3) Localement en un sommet.
Les paramètres sont: illum,ref,spe,bri,tran:
       illum = mode de lissage
       illum = mode de lisage:
              0: fil de fer
              1: plein
              2: GOURAUD
              3: PHONG
              si illum < 0: les normales ne sont pas orientées
       ref = coefficient de reflexion = (lumière réfléchie) / (lumière incidente)
         spe = coefficient speculaire coefficient (intensité du reflet)
         bri = brillance: étalement du reflet 0 (diffus) to 100 (pointu)
         tran = transparence: entre 0 (opaque) and 1 (transparent)
Syntaxe:
         illum vol(id)=illum,ref,spe,bri,tran
         illum fac(f)vol(id)=illum,ref,spe,bri
         illum vertex(s)vol(id)=illum,ref,spe,bri

Une loi de variation du spéculaire en fonction de l´angle d´incidence peut être donnée par law vol:
         law vol(id)=x1,y1,0,x2,y2,0,... représentant les variations du spéculaire y en fonction de l´angle x (entre 0 et PI/2).


Voir demo1_illum.func.

AFFICHAGE PARTICULAIRE

Volume particulaire

         particle vol(id)=dens,coe,fact,alea,max1,max2
Si yes particle est actif, le volume id sera affiché en particules (au lieu d´un lissage, les points de la surface sont rendus par un nuage de particules).
         dens = densité entre 0(aucune particule) et 0(densité maximum).
         coe = coefficient de dispersion entre 0(particules situées sur la surface) et 1(radius du nuage égal à la taille de la facette).
         fact = facteur de densité d´une particule éclatée en un nuage.
         alea = 1: Aléatoire reproductible.
         max1 = nombre maximum de particules générées.
         max2 = nombre maximum de particules d´un nuage.

Facette particulaire

         particle fac(f) vol(id) = d,c,...
Affecte un affichage particulaire à la facette f du volume id.
Remarque:
         2) Chaque particule peut être remplacée par un objet grâce à la commande motif vertex vol(id1)=id2.

LES OMBRES PORTÉES

         Un volume peut recevoir des numéros de volumes lui portant shadow: shadow vol n=n1,n2,...
Si ´yes shadow´ est actif, les volumes n1,n2,... porteront une shadow sur le volume n.
Remarque:
         La base de données, garer sur le disque par la commande: write ascii radius "name"
         doit être passée au module de lancer de rayons de name radius