Génération de piscines ou de lacs aléatoires


9

J'ai mis en œuvre des fonctions qui peuvent dessiner n'importe quelle forme polygonale, mais je n'ai pas pu générer une forme lisse qui imite les bords arrondis d'un lac. J'ai essayé de générer deux cercles et de joindre les bords, mais il n'y a pas assez de variation ou de douceur. Quelqu'un a-t-il des pointeurs ou des idées qui pourraient générer une forme comme celle-ci?


J'ai étudié les courbes de Bézier, il semble que je pourrais être capable de générer un lac à partir de cela. Quelqu'un a-t-il une expérience avec eux sur un tableau 2D?
Manderin87

Réponses:


8

toujours mentionné le bruit de Perlin. Voici comment j'ai généré les formes d'îles pour le générateur de carte de polygones:

  1. Génère du bruit perlin.
  2. Pour chaque emplacement (x, y)dans le bitmap de bruit, calculer la distance du centre, normalisée de sorte que le bitmap est 2x2: (dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy).
  3. L'emplacement (x, y)fait partie de l'île si noise[x, y] > 0.3 + 0.4*d*d. Cette étape tente de arrondir la forme en coupant les zones éloignées du centre.

Les îles sont un peu plus en lambeaux que les lacs, donc je ne sais pas si ces formes vous plairont. J'ai mis en place une démo de l'algorithme ci-dessus , avec des boutons en bas pour contrôler les deux nombres magiques. Il peut y avoir différentes valeurs des nombres magiques 0,3 et 0,4 qui produisent les formes que vous aimez.


2
Votre travail est une inspiration majeure, Amit. + 10k si je le pouvais, pendant environ 5 ans d'émerveillement et de plaisir que j'ai retirés de la lecture de votre blog.
Ingénieur

4

Vous pouvez utiliser un algorithme Perlin Noise pour générer les lacs pour vous, si vous utilisez une vue de haut en bas (forme de polygone, sonne comme vous l'êtes), ce gars de Stanford l'a fait.

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


1
"Ce gars de Stanford" est également un utilisateur de ce site, pour info.
Ingénieur

qui n'est pas? =) Je pourrais commencer par un peu de bruit (perlin, fractal), mais brouiller les résultats pour des résultats moins "irréguliers". Super article, btw - j'adore comment il fait les rivières.
Jari Komppa

0

Une façon serait de commencer avec un polygone de base, peut-être votre approche à 2 cercles.

Commencez par décaler tous les points au hasard, donc ne ressemble pas trop à un cercle, puis pour chaque bord, divisez-le en 2 et décalez le point central d'une petite quantité aléatoire. Continuez ainsi jusqu'à ce que vous ayez les détails requis.
Ceci est similaire à ce qui est fait lors de la génération de fourches de foudre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.