Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1415:projekte_im_wintersemester_2014_15:3d-generationsalgorithmus

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1415:projekte_im_wintersemester_2014_15:3d-generationsalgorithmus [2015/03/12 05:41]
maxiw
ws1415:projekte_im_wintersemester_2014_15:3d-generationsalgorithmus [2016/05/10 14:46] (aktuell)
Zeile 1: Zeile 1:
 ====== 3D-Generationsalgorithmus ====== ====== 3D-Generationsalgorithmus ======
- +===== Code =====
-Der finale ​Code zur Generierung 3Dimensionalen Terrains: +
   * [[3dgen.py]]   * [[3dgen.py]]
   * [[perlin3D.py-3dgen|perlin3D.py]]   * [[perlin3D.py-3dgen|perlin3D.py]]
Zeile 8: Zeile 6:
  
 Beispielergebnis mit angepassten Variablen: Beispielergebnis mit angepassten Variablen:
 +
 {{:​ws1415:​projekte_im_wintersemester_2014_15:​p3noise.png?​300|Listenpunkt}} {{:​ws1415:​projekte_im_wintersemester_2014_15:​p3noise.png?​300|Listenpunkt}}
 +
 +===== Beschreibung =====
 +Um gutaussehendes 3-Dimensionales Terrain zu generieren werden 2D und 3D Perlin-Noise-Algorithmen verwendet.
 +Während man mithilfe einer üblichen Heightmap zwar relativ realistische Hügel erstellen kann, ist es nicht möglich nur
 +durch eine heightmap Terrain zu erstellen, dass mehr als einen Höhenwert übereinander benötigt. (Beispielsweise Überhänge)
 +3D-Noise alleine bildet allerdings keine einheiteliche Oberfläche,​ sondern bildet eher "​Blasen"​ im Raum, ist also auch keine Lösung.
 +Aus diesem Grund verwenden wir zuerst eine 2D Heightmap die grob die Form des Terrains vorgibt und erweitern diese dann mithilfe von 3D-Noise.
 +
 +Der Programm selbst arbeitet folgendermaßen:​
 +  * Zuerst wird mithilfe von 2D-noise eine Heightmap erstellt.
 +  * Führe für jeden Punkte der heightmap folgendes aus:
 +    * Berechne von der minimalen bis zur maximalen Höhe 3D-Perlin Noise
 +    * Addiere den Wert der Anpassungsfunktion (mit dem Wert der Heightmap als Parameter) zu dem 3D-Noise Wert und füge diesen der Ausgabeliste hinzu.
 +  * Trianguliere zuletzt mithilfe des [[Marching-Cube]] Algorithmus die sich daraus ergebende Oberfläche
 +Die oben genannte Anpassungsfunktion nimmt dabei eine besonders wichtige Rolle ein und kann je nach Terrain abgeändert werden.
 +Grundsätzlich soll sie dafür sorgen, dass Werte unter der von der Heightmap vorgegebenen Höhe vor allem als Boden markiert werden.
 +
 +In dem Code-Beispiel lautet die Anpassungsfunktion $f(x) = (x-h-30)^3\cdot-0.025$
 +
 +Dabei ist h der von der heightmap vorgegebene Höhenwert und x läuft in unserem Fall von 0 bis 60.
 +
 +
  
  
ws1415/projekte_im_wintersemester_2014_15/3d-generationsalgorithmus.1426135263.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)