Question

Tout d'abord désolé pour ma coulée anglaise.

J'essaie de faire du monde virtuel avec un terrain comme dans SimCity2000 ou le magnat du transport où le terrain est fabriqué à partir de carreaux et de carreaux ne peut pas sauter plus d'un niveau entre les carreaux, il n'y a donc pas de falaises.

Pour la génération de terrains, j'utilise le bruit Perlin simplex mais j'arrive aux pentes raides avec ça.

J'ai jeté un coup d'œil sur le code source du magnat du transport ouvert, et après la génération de terrains, toutes les tuiles sur la carte sont en boucle et lissées pour avoir une élévation pour une seule unité.

Mais cela ne fonctionnera pas de cette façon pour moi, car ma carte sera beaucoup plus grande et je ne peux pas me permettre de lisser tout par boucle. Il n'est pas non plus possible de lisser uniquement la partie visible du terrain, car ce sera différent selon le lissage des tuiles a commencé.

J'ai essayé d'écrire ma propre fonction de bruit qui renvoie une valeur interpolée linéairement entre deux points avec une distance égale à la hauteur maximale de ces points, de cette façon, la pente ne peut pas être supérieure à 45 degrés, cela a fonctionné mais jusqu'à ce que vous essayiez de résumer ces tels fonctions ensemble.

Comment puis-je générer un terrain pseudo-aléatoire avec des pentes de montagne de 45 degrés maximum, et approcher de cette autre manière que de simplement lisser une carte précédemment générée?

En ce moment, je suis hors d'idées, et j'espère que le bruit de Perlin peut avoir une option possible comme "Angle de pente maximum", mais Google ne m'a pas aidé avec cela.

Était-ce utile?

La solution

Le bruit de perlin est intrinsèquement limité par pente, car les valeurs de chaque cellule de grille sont interpolées entre quatre gradients qui ont tous une pente 1 / gridze (ou une autre valeur fixe en fonction de votre implémentation).

Si vous générez un nombre limité d'octaves avec une grille assez large par rapport à votre taille de tuile, vous devriez être en mesure de trouver un facteur de mise à l'échelle expérimentalement qui assure une pente maximale de 1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top