.lod

zurück

LOD steht in 3D Programmen für Level of Detail.
Der vorliegende Demosourcecode LOD ist mein erster Versuch ein polygonales Netz aus einer Heightmap zu generieren, die ihrerseits wiederum aus einer Bitmap geladen wird. Der Raum wird per Octree unterteilt, den Octreenodes werden Heightmapabschnitte zugeteilt. Während des Initialisierungsvorgangs wird in allen Octreenodes die Polygondaten tragen ein 5 stufiges Netz erzeugt (5 levels of detail).
Während des Rendervorgangs wird dynamisch die Entfernung eines Octreesegments zum Betrachter auf 5 Stufen diskretisiert und dementsprechend das zugehörige LOD-Polygonset angesteuert.
Das vorläufige und bis hierher erklärte Ergebnis findet sich mit Sourcecode :: hier.
(Steuerung der Kamera über die Tasten 'w' 'a' 's' 'd', Polygonmodeswitch '1' '2' '3', Quit: 'Esc')


Die Erweiterungen:
Ich habe den LOD Ansatz in der aktuellen Version erst einmal verbannt - stattdessen bin ich auf Displaylisten ausgewichen, da ich mir keine Übergangsalgorithmik wie GeoMorphing antun wollte... Das Popping beim LOD übergang wäre noch zu verkraften, aber die Vertexstruktur erzeugt bei einem naiven Ansatz wie ich ihn habe zunächst Cracks im GroundMesh.
Stattdessen habe ich einen Nebeleffekt nachgerüstet und dann einen eher mässigen aber funktionierenden Normaleninterpolator gebastelt um das Polygonnetz Gouraud Shaden zu können. Der Octree ist einem Quadtree gewichen, der den Boden unterteilt, auf dem das HeightMap Netz gerendert wird.
Als Zusatz habe ich die UV Koordinaten gleich mit den Normalen mitberechnet und ein Texturemapping integriert. Noch kann ich die Textur nicht prozedural erzeugen und hab mir eine inklusive passender Heightmap aus dem Netz geladen - Fazit: Sieht schon ganz gut aus! Das Gouraud in Verbindung mit Nebel glättet die Aussicht und die Textur gibt schon eine ordentliches Terrain-feeling. Nebelfilter:

Nebel + Gouraudshading:

Texturing:

Nebel + Gouraudshading + Texturing:

Obwohl ich es erst mal nicht vorhabe, hier ein Preview wie es aussähe, wenn die Shadowmap auch direkt reingerechnet würde:
(PS: Gleiche Szene bzw. Heightmap und selber Skalierungsfaktor wie bei den Screenshots vorher, lediglich von etwas weiter weg aufgenommen - die Trianglulation ist also recht hoch. Gouraud ist an, Nebel ist aus...)

zurück