PAYSAGES FRACTALS

Retour à la lettre   
 
Introduction
      Une des possibilités offerte par les fractales est de générer des paysages. Nous avons choisi de nous pencher sur ce problème. L'idée de départ est de considérer une grille de points plane d'abord et de lui appliquer l'algorithme de Fournier Fussel Carpenter sur la conmposante Z. La grille ainsi extrudée, est envoyée en sortie. Elle est récupérable par le programmede raytracing Persistance Of Vision
 
    Algorithme
      Le programme permet d'utiliser les formes itératives et récursives de l'algorithme de Fournier Fussel Carpenter. Cet algorithme ajoute au coté fractal de la création une composante aléatoire afin de mieux rendre l'aspect naturel du paysage. 
    Le Principe:
       On considère au départ un tableau de points en 2D. Afin de faciliter le déroulement de l'algorithme, les dimensions de la grilles seront des puissances de deux, plus un. (par exemple 33x33, 65x65 etc....). On fixe les quatres coins à la meme hauteur. Cela constitue le point de départ à l'invariant suiant: 
    L'étape du carré(square step): 
              On prend un carré de quatre points, et on fixe la hauteur du milieu en moyennant les quatres hauteurs des coins du carré. On ajoute à cette hauteur une valeur prise au hasard. Les points ainsi calculés donnent, lorsque plusieurs carrés sont présents, un arrangement en losange de la grille. 

    L'étape en losange(diamond step): 
              On prend cette fois chaque losange de quatre points, et on utilise la meme méthode pour calculer la hauteur du point central. Un fois cette étape terminée. La grille est divisée en carrés de taille deux fois moindre.

La taille de la grille augmente donc très fortement en fonction en fonction du nombre d'iteration (ou de récursions). Il est égal à 2^(I+2) ou I represente le nombre de passges par l'invariant. Le programme propose à l'utilisateur le choix entre la forme récursive et la forme itérative de l'algorithme. La plus facile à implémenter est la première, son schéma est le suivant: 
    Effectuer l'étape du carré 
    Effectuer l'étape du losange 
    Appel de la procedure 4 fois sur les sous carrés 
      C'est en effet très simple, mais cela pose un gros problème. On ne peut accéder aux losanges entiers. Comme on travaille sur des subdivisions carrées, les losanges ne peuvent remplir leur rôle et recouvrir ces carrés afin de lisser les discontinuités. C'est pourquoi l'algorithme itératif est proposé à l'utilisateur. Il s'organise selon le schéma suivant: 
    Tant que la longueur du coté des carrés est plus grande que zéro  {
    • Parcourir le tableau et appliquer l'étape du losange pour chaque carré présent 
    • Parcourir le tableau et appliquer l'étape du carré pour chaque losange présent. 
    }
      Cette méthode permet d'éviter le coin manquant du losange qui apparaissait dans la méthode récursive. Mais pas dans tous les cas. Lorsque l'on traite les bords de la grille, on se retrouve avec le meme probleme. Cependant plus de discontinuité possible puisque nous sommes au bord du paysage. il suffit donc d'ignorer le quatrième point qui pose problème. 
 
    Méthode d'édition
       Le programme génere une source POV sous forme d'include, dont l'utilisateur peut spécifier le nom. Il pourra alors l'utiliser a son gré  dans n'importe quel script. Il suffit d'ajouter la ligne  #include <nom fichier de sortie> pour pouvoir untiliser le paysage comme n'importe quel objet. Il est identifié par le nom "relief". Le programme est livré avec un exemple de script POV  qui permet de visualiser le paysage géneré dans le fichier  "defaut,inc". 
    Programme: montagne
       
      Documentation :
    Options  Defauts Valeurs
    -l <niveau d'elevation> 0 {-100..100}
    -e <erreur losange> 0 {0..100}
    -v <erosion> >=0
    -p <fichier .prob>
    -o <fichier sortie> <defaut.inc>
    -s <smooth triangle> -
    -h <hazard init> 0 >=0
    -t <texture en sortie> -
    -r <methode recursive> -

Quelques exemples de paysages construits avec Montagne:
Quatre étapes de génération d'un paysage


Première itération


Deuxième itération


Troisième itération


Quatrième itération
 
On remarque que le relief se prononce de plus en plus, sans laisser réellement apparaitre les subdivisions carrés selon lesquelles le relief  est construit. Cela est possible grace au Diamond Step qui recouvre plusieurs carrés et permet un aspect final plus naturel.
Erosion

Paysage brut

Paysage érodé
Le paysage brut est trop accidenté. L'érosion est un bon moyen de résoudre ce problème, qui survient dès que les coefficients  donnés en entrée ne sont pas méticuleusement choisis. Ici l'érosion a été appliquée deux fois pour un meilleur rendu.


Une animation d'érosion (Volumineuse)


Exemple de paysage, avec quelques effets
 
En plus de gradient, nous avons ajouté du bump, un filtre qui permet de donner un aspect irrégulier à la texture.

 

Retour à la lettre
 

 

inotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.cominotti.com

   

 

Design, développement et rédaction d'inotti.com. Révision : 02 June 2007 .
Copyright © 2003-2006 Emilio Cominotti. Tous droits réservés.

confidentialité et éthique | conditions générales | modalités d'accès | mentions légales | nous recommander