270 likes | 510 Views
Thomas Schultze-Drescher FH-Fulda. Im Rahmen der Lehrveranstaltung „JAVA 3D“ WS 2002 - Prof. Dr. Heinzel. Intro. Hintergrund / Präambel Möglichkeiten der Landschaftsgenerierung Funktionsweise ausgesuchter Algorithmen Umsetzung des „diamond square“ Algorithmus in Java3D
E N D
Thomas Schultze-Drescher FH-Fulda Im Rahmen der Lehrveranstaltung „JAVA 3D“WS 2002 - Prof. Dr. Heinzel
Intro • Hintergrund / Präambel • Möglichkeiten der Landschaftsgenerierung • Funktionsweise ausgesuchter Algorithmen • Umsetzung des „diamond square“ Algorithmus in Java3D • C-LOD, Continuous Level of Detail, eine Einführung in Konzept und Funktion (Java3d)
Hintergrund / Präambel Einsatzfelder: • Simulation • Spiele • Topographische Visualisierung • „Hintergrund“ für alle Animationen etc. • Wissenschaftliche Forschung
Ansätze für Landschaftsgenerierung • Heightmapping • Fraktale Verfahren • Mathematische Prozeduren • Gesteuerter Zufall • Simulation (Physikalischer Ansatz) • Entwicklung / Evolution
Heightmaps Heightmaps bedeutet, das aus einer Höhenkarte (z.B. in Form einer Bitmap oder auch nur einer reinen Datensammlung) eine Landschaft geniert wird. Oftmals werden die Daten über Scanner/Abtastung erfasst und dann im 3D System weiter verarbeitet. • Topographische Wiedergabe realer Daten • „Photoshop Gelände“, man zeichnet in 2D seine Höhenkarte für die spätere Verwendung • Oftmals in Mischtechnik mit der Fraktalen Generierung eingesetzt.
Fraktale Verfahren Fraktale (lat. fractus,-a,-um = gebrochen) sind Gebilde deren innere Struktur ihrer äußeren ähnelt, auch als „Selbstähnlichkeit“ bezeichnet. Geprägt wurde der Ausdruck von dem Computerwissenschaftler Benoit Mandelbrot. • Immer dort zu finden, wo „endlose“ Landschaften benötigt werden • Sehr schnell zu realisieren, für Computer optimiert. • Nicht durch Quelldaten beschränkt • Sehr gute Nährung an die Realität, da eben aus der Realität entwickelt.
Mathematische Prozeduren Komposition einer Landschaft durch rein mathematische Kombinationen von verschieden Funktionen, im allgemeinen Schwingungen. Durch Ändern der Frequenz, Amplitude oder Phase kann dann auf die entstehende Landschaft Einfluss genommen werden. Oftmals finden sich solche Verfahren in Zusammenspiel mit den Fraktalen Verfahren. • Die Oberflächen von Nanostrukturen werden oft durch solche Verfahren simuliert, da hier die fraktalen Algorithmen nicht greifen können. • Sicher im Einsatz, schneller als Fraktale, dafür unrealistischere Landschaften.
Gesteuerter Zufall Algorithmen, die auf einem Grundprinzip beruhen welches immer wieder – mit zufälligen Variablen – wiederholt wird. Das bekannteste Beispiel für den gesteuerten Zufall ist das Falten eines Stücks Papiers, immer und immer wieder, bis eine Berglandschaft entstanden ist. Durch Art der Faltung und Druck/Papierwahl etc. kann man in gewisser Weise das Ergebnis beeinflussen, letztendlich ist es aber Zufällig. Da oftmals bei diesen Algorithmen mit Kombination von mehren verschieden Zufallssystem gearbeitet wird, bezeichnet man diesen Ansatz auch als als „Collaging“ oder „Falten“.
Simulation (Physikalischer Ansatz) Erzeugen einer Landschaft, durch die Simulation von den Physikalischen Vorgängen, durch die eine Landschaft entsteht: Tektonik, Erosion, Korrosion und die Hydrologie Dabei gibt es zwei Grundlegende Ansätze:„Makro“ bzw. Globale Systeme benutzen meistens nur die Tektonik und die Korrosion, um z.B. Landschaften zu erzeugen die wie die Erde vor oder in 1 Million Jahre aussehen. Teil der Klimaforschung. Die „feinere“ Variante versucht, bei gegebenen Landschaften zu simulieren, was die äußeren Einflüsse an der Veränderung der Landschaft bewirken, hier kommt meistens nur die Erosion und die Umwelt im allgemeinen in Bezug. Beides sind extrem komplexe Verfahren, die immer nur sehr spezifisch eingesetzt werden, und die Rechenzeit macht diese Verfahren für normale Rechner absolut ungeeignet.
Entwicklung / Evolution Aufgrund eines Lebenssystem / festen Regeln wird aus einer Grundzelle (Seed) Schritt für Schritt eine Landschaft entwickelt. Ähnlich den allg. Evolutionssystemen für Lebewesen. Im Kern wird dabei die Landschaft als Lebewesen begriffen, das bestimmte Regeln hat. • Extrem aufwendig und sehr Komplex • Nicht Steuerbar • Es gibt kein Ende, der Prozess ist unendlich
Funktionsweise ausgesuchter Algorithmen • Heightmapping • diamond-square • C-LOD
Heightmapping - Grundprinzip 4 Schritte: Erzeugen, Auslesen, Umwandeln, Darstellen
Das Prinzip der Height-Surface Maps Höhenbitmap
Das Prinzip der Height-Surface Maps Punkte einer Höhenmatrix verbinden
Der C-LOD-Algorithmus Entwickelt von Steffan Roedger Dozent für Graphische Datenverarbeitung - Universität Erlangen-Nürnberg • Optimierung von Höhen oder Fraktalen Quadtrees im Bezug auf die Geschwindkeit. • Dafür wird ein Algorithmus eingesetzt, der neben der Ausnutzung des „Blur“ Effektes für entfernte Objekte eine dynamische Anpassung an die Qualität und die mögliche Renderzeit benötigt. • Optimal geignet, für Einsatzbereiche wo eine konstante, schnelle Darstellung wichtiger ist, als Details (Spiele)Eingesetzt bei u.a. bei Aquanox
Der C-LOD-Algorithmus Grundidee: • Erst das Grobe, dann das Feine • Entfernte Objekte können vereinfacht werden • Nicht zu sehende Bereiche sollten gar nicht erst berechnet werden
Der C-LOD-Algorithmus QaudTree als Grundlegende Datenstruktur -> Im Prinzip, das Konzept wie beim Diamond Square Algorithmus
Der C-LOD-Algorithmus Subdivisionskriterien: Sicht (I/D<C) Hierbei ist l die Entfernung zum Augpunkt und d die Kantenlänge eines Blocks. Die Konstante C ist ein Qualitätskriterium, dass für die minimale globale Auflösung steht.Wird C erhöht so wächst die Anzahl zu zeichnender Vertices quadratisch.
Der C-LOD-Algorithmus Oberflächenrauhigkeitswert Der Oberflächen-rauhigkeitswert legt fest, ob ein unter-Quad sich überhaupt so von den anderen Punkten abhebt, das sich eine Darstellung loht. Auch hier kann eine ein QK festgelegt werden.
Der C-LOD-Algorithmus „Cracks“ Regeln: Benachtbarte Blöcke dürfen sich maximal um einen Level unterscheiden. Der Detaillierte Block gibt dabei die Werte für den „niedrigen Detaillevel“ vor, damit es nicht zu „Sprüngen“ kommt.
Quellen: • Generating Random Fractal Terrainwww.gameprogrammer.com • Landschaftsvisualisierung mit Java 3Dhttp://ncstrl.informatik.uni-stuttgart.de/Dienst/UI/2.0/Describe/medoc.ustuttgart_fi/STUD-1835 • Terrain Visualization with Java 3Dhttp://wwwvis.informatik.uni-stuttgart.de/javatevi/ • 3D Graphic Java: Render fractal landscapeswww.javaworld.com • Erstellen einer Landschaft durch Heightmapswww.neobrothers.de • Real-Time Generation of Continuous Levels of Detail for Height Fieldhttp://wwwvis.informatik.uni-stuttgart.de/~roettger/