Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bruit de Perlin

Générer des nuages

    26 août 2007 à 21:30:07

    Bonjour,

    Je me suis intéressé il y a un petit moment à la génération aléatoire de nuages.
    Un lien dans une news donnait de nombreuses explications à ce sujet (ici).

    Cependant, je reste bloqué sur une partie que je ne comprends pas. Je n'ai pas trouvé d'explication ailleurs.

    La partie que je ne comprends pas est celle-ci :

    Citation : Pas de titre

    Now, add these four maps together:

    CloudMap = Map1 + (Map2 / 2) + (Map3 / 4) + (Map4 / 8)



    Les maps correspondent à des tableaux de pixels de même taille ; mais je ne vois comment additionner et diviser ces tableaux :( .

    Merci pour votre aide.



    • Partager sur Facebook
    • Partager sur Twitter
      26 août 2007 à 21:32:43

      je pense qu'il faut faire :
      1. // tableaux d'exemple
      2. double CloudMap[10][10];
      3. double Map1[10][10];
      4. double Map2[10][10];
      5. double Map3[10][10];
      6. double Map4[10][10];
      7. // ...
      8. // initialisation des tableaux
      9. // ...
      10. CloudMap[i][j] = Map1[i][j] + (Map2[i][j] / 2) + (Map3[i][j] / 4) + (Map4[i][j] / 8)
      • Partager sur Facebook
      • Partager sur Twitter
        26 août 2007 à 21:37:08

        J'avais essayé ça pourtant ça ne me donne pas quelque chose de très ressemblant.

        Je vais mettre des images pour vous montrer ce que j'obtiens.

        edit :

        Image utilisateuro_O

        Ca doit venir de mon code...

        Comment faire pour redimensionner correctement un tableau ?
        Pour l'instant, je créé un nouveau tableau dont la taille est doublée et chaque case du premier tableau est insérée quatre fois dans le nouveau tableau.

        Schématiquement ça donne ça :
        Image utilisateur -> Image utilisateur

        Normalement je devrais faire une sorte d'arrondi mais je ne sais pas comment procédé (autrement dit un dégradé du jaune au vert, du jaune au bleu et du jaune gris).

        En fait ça m'aiderais sûrement de voir comment d'autre gens ont fait.

        1. class Map
        2. {
        3. protected:
        4.     Uint8**     _values ; //tableau de valeur à deux dimensions
        5.     int         _size ; //taille du tableau
        6. public:
        7.     //double la taille du tableau
        8.     void Resample()
        9.     {
        10.         /* tableau de destination donc la taille est doublée */
        11.         Uint8** array = createArray(_size * 2);
        12.         /* on parcourt le nouveau tableau */
        13.         for(int x = 0 ; x < _size * 2 ; x += 2)
        14.         {
        15.             for(int y = 0 ; y < _size * 2 ; y += 2)
        16.             {
        17.                 array[x][y] =
        18.                 array[x][y + 1] =
        19.                 array[x + 1][y] =
        20.                 array[x + 1][y + 1] =
        21.                     _values[x / 2][y / 2] ;
        22.             }
        23.         }
        24.         delete[] _values ;
        25.         _values = array ;
        26.         _size *= 2 ;
        27.     }
        28. };


        • Partager sur Facebook
        • Partager sur Twitter

        Bruit de Perlin

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown