Question

Cette question est très similaire à celle posée .

Mon problème est que j'ai une carte, quelque chose comme ceci:

Cette carte est faite en utilisant 2D Perlin bruit, puis en exécutant à travers le heightmap créé Affectation des types et des valeurs de couleur pour chaque élément dans le terrain en fonction de la hauteur ou la pente de l'élément correspondant, de façon tout à fait standard. Le réseau de la carte est de deux dimensions et les dimensions exactes de la taille de l'écran (pixel par pixel), de sorte à 1200 par 800 génération prend environ 2 secondes sur ma plate-forme.

zoom sur le rectangle en surbrillance:

http://i.stack.imgur.com/hrZnM.png

De toute évidence avec la taille accrue vient détails perdus. Et là réside le problème. Je veux créer des détails supplémentaires à la volée, puis l'écrire sur le disque que le joueur se déplace autour (le joueur serait tout simplement un point restreint au mouvement le long de la grille). Je vois deux approches pour ce faire, et le premier qui est venu à l'esprit que je rapidement mis en place:

http://i.stack.imgur.com/bbLia.png

Ceci est un zoomée en vue d'un nouveau terrain local biaisé créé à partir d'un élément échantillonné de l'ancien terrain, qui est mis en évidence par l'espace de grille jaune (à la gauche du centre) dans l'image précédente. Toutefois, ce système nécessiterait beaucoup de modification, comme, par exemple, si vous déplacez une unité à gauche et en haut de l'espace de la grille jaune, sur la tuile de plage, le terrain change complètement:

http://i.stack.imgur.com/6shKz.png

Donc, pour que fonctionne correctement, vous aurez besoin de faire une quantité excessive, je suppose que le mot serait interpolation, pour créer une transition en douceur que le joueur a déplacé les 40 ou si la grille-espaces dans le monde local nécessaires pour atteindre la tuile suivante sur dans le monde entier. Cela semble compliqué et très inélégante.

La deuxième approche serait de briser la grille de la carte originale en morceaux plus petits, divisant peut-être chaque carré de 4? Je ne l'ai pas mis en œuvre et je ne sais pas comment je le ferais d'une manière qui fait augmenter les détails, mais je pense que ce serait probablement finir par être la meilleure solution.

Toutes les idées sur la façon dont je pourrais aborder ce sujet? Gardez à l'esprit qu'il doit être local et à la volée. Juste augmenter la résolution de la carte est quelque chose que je veux éviter à tout prix.

Était-ce utile?

La solution

Ressaisissez votre bruit de Perlin être fonction de la position. Ensuite, vous pouvez augmenter les octaves (et donc le niveau de détail) et rééchantillonner la région à une résolution plus élevée.

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