Ist 1 Pixel einer Höhenkarte repräsentativ für 1 Scheitelpunkt auf dem Netz?

7

Ich versuche, mich mit der Erstellung von Höhenkarten zu befassen. Wenn ich eine Ebene mit 64 x 64 Verts habe, muss ich dann eine 64 x 64 Pixel große Graustufen-Höhenkarte erstellen, um die Geometrie der Ebene korrekt zu verschieben?

Caius Eugene
quelle

Antworten:

13

Sie können einige Details verwirren. Eine Höhenkarte ist einfach ein 2D-Array von Daten. Jeder Punkt repräsentiert 3 Informationen: eine xund yPosition und eine Zahl, um die Höhe an diesem Punkt darzustellen. Schauen wir uns für ein einfacheres Beispiel ein 1D-Datenarray an, das 2D-Gelände erzeugt. Jeder Datenpunkt hier enthält eine xPosition und eine Zahl, um die Höhe an diesem Punkt darzustellen:

Geben Sie hier die Bildbeschreibung ein

Ziemlich einfach, oder? Es ist nur ein normaler alter Graph. Wie Sie sehen können, steigen die Zahlen auf der x-Achse um zehn. Wir könnten das leicht ändern, um um 100 oder 0,01 zu steigen. Gleiches gilt für die auf der y-Achse angezeigten Daten. Wir können diese Werte skalieren, wie wir möchten.

Grundsätzlich sind es nur Zahlen, bis Sie entscheiden, wie Sie sie visuell darstellen möchten. Zu sagen, dass eine Höhenkarte von 64 x 64 Pixel bereits einen Schritt weiter geht, als wir brauchen. Da ein Graustufenbild nur eine andere Möglichkeit ist, dieselben Daten wie eine 3D-Höhenkarte anzuzeigen. Die Daten, die jeweils dargestellt werden sollen, stammen von derselben Stelle.

Geben Sie hier die Bildbeschreibung ein

Außerdem benötigen Sie nicht einmal eine 1: 1-Beziehung zwischen Daten und Anzeige. Sie könnten weit mehr Scheitelpunkte als Datenpunkte oder weit weniger haben. Sie müssen nicht einmal gleich weit voneinander entfernt sein.

Für das einfachste Beispiel: Ja, generieren Sie ein Array von [64][64]Datenpunkten, um ein Graustufenbild oder eine 3D-Höhenkarte zu erstellen. Jede [x][y]Ihrer Array entspricht die x, yIhre Eckpunkten und der Wert in jedem gespeichert [x][y]wird den repräsentieren zWert des Vertex.

MichaelHouse
quelle
Sehr klare informative Antwort, danke. Tatsächlich ist es nur eine 2D-Anordnung von Punkten, die visualisiert werden.
Caius Eugene
@CaiusEugene Richtig. Es gibt mehrere Möglichkeiten, es zu visualisieren. Eine einfache Möglichkeit sind Graustufenbilder. Wobei der Wert "Höhe" nur als Farbe zwischen unten (schwarz) und oben (weiß) angezeigt wird.
MichaelHouse
Ich arbeite daran, ein "gut aussehendes" erodiertes Terrain zu schaffen. Meine bisherigen Versuche sehen schrecklich aus. Ich glaube, ich habe den falschen Ansatz, aber ich irritiere durch meine Eckpunkte und verschiebe dort den z-Wert basierend auf einem Pixel aus einer Graustufe Bild. Meine Ergebnisse sind alle "gezackt" und ähneln nicht den Höhenmaßen, die ich anderswo gesehen habe. Was könnte ich in diesem Fall übersehen?
Caius Eugene
2
Das ist wahrscheinlich ein Skalenproblem. Sie können versuchen, die Scheitelpunkte zu glätten, nachdem Sie sie festgelegt haben. So etwas wie der Diamantquadrat-Algorithmus könnte funktionieren.
MichaelHouse
Perfekte Lösung im Aussehen eines schnellen Google! Danke @ Byte56
Caius Eugene