Frage

Diese Frage ist sehr ähnlich wie bei hier.

Mein Problem ist, dass ich eine Karte habe, so etwas:

Main Map

Diese Karte wird unter Verwendung von 2D Perlin -Rauschen hergestellt und dann durch die erstellte Highmap -Zuweisungstypen und Farbwerte für jedes Element im Gelände basiert, basierend auf der Höhe oder der Steigung des entsprechenden Elements, so hübsch Standard. Das MAP-Array ist zweidimensional und die genauen Abmessungen der Bildschirmgröße (Pixel-per-Pixel). Daher dauert bei meinem Rig etwa 2 Sekunden bei 1200 bis 800 Generationen.

Jetzt im hervorgehobenen Rechteck zoomen:

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

Offensichtlich ist mit erhöhter Größe das Detail verloren. Und hier liegt das Problem. Ich möchte im laufenden Fliegen zusätzliche Details erstellen und es dann auf die Festplatte schreiben, während sich der Spieler bewegt (der Spieler wäre einfach ein Punkt, der auf Bewegung entlang des Netzes beschränkt ist). Ich sehe zwei Ansätze dafür, und die erste, die mir schnell im Einklang geriet:

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

Dies ist eine vergrößerte Ansicht eines neuen vorgespannten lokalen Terrain, das aus einem abgetasteten Element des alten Geländes entsteht, das im vorherigen Bild durch den gelben Gitterraum (links von der Mitte) hervorgehoben wird. Dieses System würde jedoch viel Modifikation erfordern, da beispielsweise eine Einheit links und auf den gelben Gitterraum auf die Strandfliese verlagert wird, ändert sich das Gelände vollständig:

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

Damit dies richtig funktioniert, müssten Sie eine übermäßige Menge an ausführen, denke ich, dass das Wort Interpolation sein würde, um einen reibungslosen Übergang zu erzeugen, wenn der Spieler die etwa 40 Rasterräume in der örtlichen Welt bewegte, die erforderlich sind, um das nächste zu erreichen Fliese in der Welt. Das scheint kompliziert und sehr unelegant zu sein.

Der zweite Ansatz wäre, das Netz der ursprünglichen Karte in kleinere Teile zu zerlegen und jedes Quadrat um 4 zu teilen? Ich habe das nicht implementiert und ich bin mir nicht sicher, wie ich es auf eine Weise, die tatsächlich die Details erhöhen würde, aber ich denke, das wäre wahrscheinlich die beste Lösung.

Irgendwelche Ideen, wie ich das angehen könnte? Denken Sie daran, dass es lokal und im Fliege sein muss. Nur die Auflösung der Karte zu erhöhen, möchte ich um jeden Preis vermeiden.

War es hilfreich?

Lösung

Schreiben Sie Ihr Perlin -Rauschen um, um eine Funktion der Position zu sein. Dann können Sie die Oktaven (und damit die Detailstufe) erhöhen und die Fläche bei einer höheren Auflösung erneut einteilen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top