PIZiadas graphiques

PIZiadas graphiques

Mon monde est po.

Perlin Noise: fonctions pseudo-aléatoires pour la génération terrain

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.

bateaux

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".

sinusoïde

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.

sol

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.

pseudoaleatoria

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.

racionalVsPseudoaleatoria

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.

perlinSuavizado

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
retour ( 1.0 – ( (x * (x * x * A B) +C) &7fffffff) / 1073741824.0)fonction du bruit de fin

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

fréquence

Alors que l'amplitude nous donne la taille (notre hauteur des vagues)

largeur

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"