La création d'environnements virtuels requiert la modélisation de grandes quantités de données de formation pour les différents scénarios recréer surfaces. La nature fractale de notre monde permet l'utilisation de diverses fonctions mathématiques pour l'automatisation de ces tâches. Arbres, terres, nuages, incendie, etc. sont construites en utilisant de nombreuses techniques différentes en fonction de l'auto-similarité, familles basées complexe fractal. Les fonctions qui génèrent le soi-disant «bruit de Perlin" s'appliquent dans ces cas.
Nous allons analyser le concept appliqué dans une dimension, sa généralisation à deux dimensions (terres) est immédiat, et fournit aucun intérêt didactique initial.
fonctions de bruit: «Fonctions de bruit (NF)"
Un NF est essentiellement un générateur de nombre pseudo-aléatoire a la propriété de produire le même nombre d'une valeur d'entrée ou de "graine" déterminé.
Toute fonction, comme y = cos(x) retourne toujours la même valeur de "y" pour une valeur particulière de "x".
Si nous utilisons cette fonction pour générer un modèle géométrique, nous réobtenir le même modèle plus tard en utilisant des variables identiques. Cependant, la fonction ne peut pas être utilisé dans la représentation d'un profil de dunes ou les montagnes car il a une répétition périodique, un motif, naturel qui soustrait. dunes du désert se ressemblent mais ne sont pas identiques.
Un motif répétitif reste un scénario crédible. Un motif pseudo-aléatoire peut créer un profil où vous n'avez pas d'identifier les répétitions. |
Une fonction aléatoire n'est pas contrôlable ne pas vous pouvez restaurer ou retrouver les valeurs précédentes, car à chaque fois renvoyer des valeurs différentes.
Une fonction "Perlin" pour mélanger l'avantage de l'aléatoire (bruit) avec la commande d'une fonction classique. Des valeurs intermédiaires peuvent être obtenues entre deux valeurs données, assurer la continuité donc ces fonctions. Si nous augmentons l'échelle de représentation besoin d'obtenir ces points entre les deux pour garder la résolution des images générées. Si nous faisons une représentation à différents niveaux de LOD techniques de détail, Ces aspects sont parmi les plus importants.
Enfin, il est nécessaire de lisser la courbe obtenue pour éviter les "pics" et "creux" généralement très prononcés et généralement non désirées irréaliste.
Pour obtenir des images à différentes échelles est nécessaire pour maintenir la résolution des mêmes ajoutant de nouveaux points. La fonction doit permettre cette opération afin d'assurer une représentation de qualité raisonnable.
Chaque fonction "bruit de Perlin" générée par des données différentes qui s'adaptent mieux ou pire que la création du modèle désiré. C'est un domaine de recherche actuellement exploration en profondeur.
En [1] propose l'utilisation d'un psudoaleatorio générateur de nombres, sur la base de l'utilisation de nombres premiers, qui renvoie un nombre dans la gamme [-1,1] pour chaque valeur entière qui est fourni.
fonction Noise (32-bit entier: x) x = (x<<13) ^ X A=15731 B=789221 C=1376312589 |
Fonction "Noise" |
Les trois premiers nombres sont premiers. Vous pouvez expérimenter avec des valeurs différentes pour générer de nouvelles courbes. L'utilisation des trois variables (A, B to C) a été faite par la clarté d'expression.
Le code comprend deux lignes principales.
Première "agiter" la valeur d'entrée d'une manière contrôlée par le déplacement de ses bits avec
x = (x<<13) ^ X
Pour générer le nombre dans la plage ci-dessus [-1,1] utiliser la valeur de son extrémité supérieure, (1) et soustraire une valeur d' [0,2].
L'obtention d'une valeur de soustraction est effectuée par la détermination d'une nouvelle valeur intermédiaire, par l'utilisation de nombres premiers cités.
x * ( x * x * A + B) + C
Le nombre généré doit être positif, par quelle logique vous masquez vous mettez votre premier bit à zéro (positif)
&7fffffff
Si nous divisons ce dernier résultat serait d'obtenir une valeur entière maximale entre zéro et un, car il est divisé par MaxEntero / 2 = 230
Octaves
Pour composer la fonction finale ajoute le "bruit" avec d'autres "similaire" flexion dont les fréquences sont proportionnellement.
La fréquence est l'inverse de la longueur d'onde F = 1 / L, notion donnée de la périodicité de la vague
Alors que l'amplitude nous donne la taille (notre hauteur des vagues)
Chacune de ces fonctions précédente doublement de fréquence, même à l'espacement égal entre deux notes consécutives sur un piano, appelé "octave".
Une fonction et sa première octave peuvent composer une nouvelle fonction |
Une fonction pseudo-aléatoire et son octave ajoutés |
Une fonction pseudo-aléatoire et octaves sommées
Vous pouvez ajouter les harmoniques de la fonction elle-même ou faire un mélange des fonctions similaires, ajouter plus de diversité dans la création de nombreux octaves virages.Le intégrer add détail progressive de l'échelle. Un plus grand nombre d'octaves plus grande complexité dans la courbe obtenue, permettant de simuler des falaises abruptes.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Le facteur de persistance indique l'incidence ou le poids des harmoniques, l'ajout d'un point de contrôle de la régularité de la courbe.
Persistance ajouté valeurs élevées des changements plus importants le long de la courbe.
En diminuant la valeur de persistance, l'influence des octaves génère pas de formes pointues.
Pour une fréquence donnée est une amplitude pour chaque valeur de persistance, nous appelons “L'amplitude de chaque fréquence”
Mandelbrot define el ruido, “Noise”, comme “Haute fréquence faible persistance”
Le processus de calcul est réalisé en plusieurs étapes,.
D'abord, nous déterminons la fonction génératrice de bruit, Comme expliqué:
Les valeurs intermédiaires entre deux points peuvent être obtenues par interpolation linéaire, quadratique, etc cube.
Puis, est “adoucit” après que la fonction d'interpolation:
Et l'intégration de l'ensemble, le couplage des fonctions de sommation des composantes harmoniques:
[1] Page Perlin bruit pseudo-explicatif. Cette page est l'implémentation de référence présenté dans cet ouvrage principal. "http://freespace.virgin.net / hugo.elias / Noise.htm Perlin"
Doit être lié poster un commentaire.