PROFESSUR FR COMPUTERGRAPHIK UND VISUALISIERUNG Bachelorarbeit Zwischenprsentation LevelofDetailVisualisierung
PROFESSUR FÜR COMPUTERGRAPHIK UND VISUALISIERUNG , Bachelorarbeit, Zwischenpräsentation Level-of-Detail-Visualisierung von Planetenringen Vortragender: Benjamin Worpitz Betreuer: Dr. Sebastian Grottel Dresden, 13. 06. 2013
13. 06. 2013 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 2 von 28 [0]
Motivation/Aufgabenstellung • Simulierte Planetenringe auf mehreren Skalen visualisieren • Planetenringe durch Partikel aufgebaut • 1 D Masse-/Dichte Profil -> zufällige Startverteilung • Simulation durch Auswertung von Keplerbahnen oder durch Nutzung von SPH • Größenordnung von 100 k bis 10 M Partikel • Implementierung der Detailstufen der Visualisierung: - Im Nahbereich prozedural generierte 3 D Gesteinsbrocken - Billboards im mittleren Detailbereich - Einfache 2 D Visualisierung im Fernbereich 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 3 von 28
Gliederung 1. Aufgabenstellung 2. Implementierung • Entwicklungswerkzeuge • Implementierungsüberblick • Datenfluss 3. Simulation • Keplerbahnen • Parallele Simulationsberechnung 4. Visualisierung • Ringvisualisierung - 2 D-Approximation - Billboard Rendering - Asteroiden Meshes • Umgebungsvisualisierung • Schatten • Stereoskopie 5. Ausblick/Probleme 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 4 von 28
Gliederung 1. Aufgabenstellung 2. Implementierung • Entwicklungswerkzeuge • Implementierungsüberblick • Datenfluss 3. Simulation • Keplerbahnen • Parallele Simulationsberechnung 4. Visualisierung • Ringvisualisierung - 2 D-Approximation - Billboard Rendering - Asteroiden Meshes • Umgebungsvisualisierung • Schatten • Stereoskopie 5. Ausblick/Probleme 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 5 von 28
Entwicklungswerkzeuge • C++ & Open. GL 3. 3 (4. 0 optimized codepaths) • Free. GLUT & Ant. Tweak. Bar & Open. GL Image (GLI) • gl. Load. Gen (gl: : Bind. Texture) • Boost & Open. GL Mathematics (GLM) • Open. CL 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 6 von 28
Implementierungsüberblick Simulation 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 7 von 28
Implementierungsüberblick Simulation Visualisierung 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 8 von 28
Implementierungsüberblick Simulation Schnittstelle Visualisierung 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 9 von 28
Implementierungsüberblick Simulation Visualisierung Schnittstelle 31. 12. 2021 Mesh Billboard 2 DApproximation Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 10 von 28
Implementierungsüberblick Simulation Visualisierung Schnittstelle 31. 12. 2021 Mesh Partitionierung Billboard 2 DApproximation Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 11 von 28
Datenfluss Visualisierung 31. 12. 2021 float Mean. Longitude. Rad float Mean. Longitude. Move. Radps Indices Lo. D-Level 1 Position. WS Indices Lo. D-Level 2 Size Indices Lo. D-Level 3 Mesh Billboard Partitionie rung float Longitude. Perihelion. Rad uint float Longitude. Ascending. Node. Rad uint float Inclination. To. Ecliptic. Rad uint float Eccentricity. Rad vec 3 Semi. Major. Axis. Km float Schnitt stelle Simulation Partikel 2 DApproximation Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 12 von 28
Datenakquise [1] 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 13 von 28
Gliederung 1. Aufgabenstellung 2. Implementierung • Entwicklungswerkzeuge • Implementierungsüberblick • Datenfluss 3. Simulation • Keplerbahnen • Parallele Simulationsberechnung 4. Visualisierung • Ringvisualisierung - 2 D-Approximation - Billboard Rendering - Asteroiden Meshes • Umgebungsvisualisierung • Schatten • Stereoskopie 5. Ausblick/Probleme 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 14 von 28
Keplerbahnen • inclination (i) • longitude of the ascending node (Ω) • longitude of the perihel (ω) • semimajor axis (a) • eccentricity (e) • mean anomaly (M) [2] 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 15 von 28
Parallele Simulationsberechnung 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 16 von 28
__kernel void kepler ( __global float* pv 3 f. Positions, // float 3* gets error because data is aligned at 16 bytes __global float const * p. Eccentricity. Rad , __global float const * p. Semi. Major. Axis. Km , __global float const * p. Inclination. To. Ecliptic. Rad , __global float const * p. Longitude. Ascending. Node. Rad , __global float const * p. Longitude. Perihelion. Rad , __global float const * p. Mean. Longitude. Mov. Rad , /*__constant*/ float const f. Time) { float PI = 3. 1415926535897932384626433 f ; unsigned int ui. Particle = get_global_id(0); // 1. Compute the value of each of that planet's six elements float const f. Inclination. To. Ecliptic. Rad =(p. Inclination. To. Ecliptic. Rad [ui. Particle]); float const f. Longitude. Ascending. Node. Rad =(p. Longitude. Ascending. Node. Rad [ui. Particle]); float const f. Longitude. Perihelion. Rad =(p. Longitude. Perihelion. Rad [ui. Particle]); float const f. Semi. Major. Axis. Km =(p. Semi. Major. Axis. Km [ui. Particle]); float const f. Eccentricity. Rad =(p. Eccentricity. Rad [ui. Particle]); float const f. Mean. Longitude. Rad =(p. Mean. Longitude. Rad [ui. Particle] + p. Mean. Longitude. Mov. Rad [ui. Particle] * f. Time); // 2. Compute the argument of perihelion, and the mean anomaly, M float const f. Argument. Perihelion. Rad =(f. Longitude. Perihelion. Rad - f. Longitude. Ascending. Node. Rad ); float const f. Mean. Anomaly =(fmod(f. Mean. Longitude. Rad - f. Longitude. Perihelion. Rad + PI, 2. 0 f*PI) - PI); // 3. calculate eccentric anomaly float f. Eccentric. Anomaly =(f. Mean. Anomaly); float old. E =(f. Eccentric. Anomaly ); do { old. E = f. Eccentric. Anomaly ; f. Eccentric. Anomaly = f. Mean. Anomaly + f. Eccentricity. Rad * sin(f. Eccentric. Anomaly ); } while(fabs(old. E-f. Eccentric. Anomaly )>1 e-6 f); // 4. Compute heliocentric coordinates in its orbital plane r´ with the x´ axis aligned from the focus of the perihelion float const xv =(f. Semi. Major. Axis. Km * ( cos(f. Eccentric. Anomaly ) - f. Eccentricity. Rad )); float const yv =(f. Semi. Major. Axis. Km * ( sqrt(fabs(1. 0 f - f. Eccentricity. Rad * f. Eccentricity. Rad )) * sin(f. Eccentric. Anomaly ))); // 5. Compute the coordinates, recl, in the J 2000 ecliptic plane, with the x-axis aligned toward the equinox: float const f. Sin. Argument. Perihelion. Rad =(sin(f. Argument. Perihelion. Rad )); float const f. Cos. Argument. Perihelion. Rad =(cos(f. Argument. Perihelion. Rad )); float const f. Sin. Longitude. Ascending. Node. Rad =(sin(f. Longitude. Ascending. Node. Rad )); float const f. Cos. Longitude. Ascending. Node. Rad =(cos(f. Longitude. Ascending. Node. Rad )); float const f. Sin. Inclination. To. Ecliptic. Rad =(sin(f. Inclination. To. Ecliptic. Rad )); float const f. Cos. Inclination. To. Ecliptic. Rad =(cos(f. Inclination. To. Ecliptic. Rad )); float const xecl =( (f. Cos. Argument. Perihelion. Rad * f. Cos. Longitude. Ascending. Node. Rad f. Sin. Argument. Perihelion. Rad *f. Sin. Longitude. Ascending. Node. Rad *f. Cos. Inclination. To. Ecliptic. Rad ) * xv + (-f. Sin. Argument. Perihelion. Rad * f. Cos. Longitude. Ascending. Node. Rad - f. Cos. Argument. Perihelion. Rad *f. Sin. Longitude. Ascending. Node. Rad *f. Cos. Inclination. To. Ecliptic. Rad ) * yv); float const yecl =( (f. Cos. Argument. Perihelion. Rad * f. Sin. Longitude. Ascending. Node. Rad + f. Sin. Argument. Perihelion. Rad *f. Cos. Longitude. Ascending. Node. Rad *f. Cos. Inclination. To. Ecliptic. Rad ) * xv + (-f. Sin. Argument. Perihelion. Rad * f. Sin. Longitude. Ascending. Node. Rad + f. Cos. Argument. Perihelion. Rad *f. Cos. Longitude. Ascending. Node. Rad *f. Cos. Inclination. To. Ecliptic. Rad ) * yv); float const zecl =( (f. Sin. Argument. Perihelion. Rad * f. Sin. Inclination. To. Ecliptic. Rad ) * xv + (f. Cos. Argument. Perihelion. Rad * f. Sin. Inclination. To. Ecliptic. Rad ) * yv); unsigned int const ui. Particle. Base. Index = (3*ui. Particle); pv 3 f. Positions[ui. Particle. Base. Index ] = xecl; pv 3 f. Positions[ui. Particle. Base. Index +1] = zecl; Folie Nr. 17 von 28 von Planetenringen 13. 06. 2013 pv 3 f. Positions[ui. Particle. Base. Index +2] Level-of-Detail-Visualisierung = yecl; }
Gliederung 1. Aufgabenstellung 2. Implementierung • Entwicklungswerkzeuge • Implementierungsüberblick • Datenfluss 3. Simulation • Keplerbahnen • Parallele Simulationsberechnung 4. Visualisierung • Ringvisualisierung - 2 D-Approximation - Billboard Rendering - Asteroiden Meshes • Umgebungsvisualisierung • Schatten • Stereoskopie 5. Ausblick/Probleme 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 18 von 28
Ringvisualisierung • Partitionierung in Detailklassen mittels Transform Feedback • Änderbare Parameter: - Anzahl Farbe/Farbprofil Repartitionierungsrate Lo. D Distanzen Beleuchtung Partikelgröße Max. Rotationsgeschwindigkeit 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 19 von 28
2 D-Approximation • Quadratische Textur • Orthogonale Projektion opaker Kreise an Partikelpositionen auf die Ringebene 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 20 von 28
Billboard Rendering • Geometrie Shader anstatt GL_POINTS • Rotation aus gl_Vertex. ID • BILD Beleuchtung • Problem: Rauschen und Verschwinden bei großer Entfernung • Lösung: einstellbare Mindestgröße der Quads in Screenspace durch inverse Transformation zurück in Viewspace 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 21 von 28
Asteroiden Meshes -Cubed-Sphere-Grid für Vertex Displacement -Deformation der Kugel in Asteroiden erst im Vertex-Shader -> Zeichnen aller Asteroiden Meshes mittels eines einzigen indizierten instanzierten Rendercalls [3] -Simplex noise parametrisiert mit eindeutiger Partikel-ID -> spezifische Form jedes einzelnen Partikels 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 22 von 28
Umgebungsvisualisierung Planet: • 27° geneigt • Gestaucht • Texturiert • Beleuchtet Sternenhimmel: • Skydome (gleiches Rendering wie Planet) • Keine Beleuchtung • Immer Kamerazentriert -> Eindruck unendlicher Weite 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 23 von 28
Schatten • Shadow Mapping + PCF • Problem: ringinterne Schatten • Lösung: Rendern in 2 Schritten 1. Alles außer Ring in Shadow Map rendern -> schattierten Ring rendern 2. Ring in Shadow Map rendern -> schattierte Planeten und Monde rendern 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 24 von 28
Schatten Phase 1 Back-Buffer Phase 2 Ring Shadow-Buffer Planet 13. 06. 2013 Level-of-Detail-Visualisierung von Planetenringen Ring Folie Nr. 25 von 28
Stereoskopie - Unterstützt: Farbanaglyphdarstellung + Quadbuffering 13. 06. 2013 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 26 von 28
Stereoskopie Back-Buffer Shadow-Buffer Ring Planet Save + Clear Ring Phase 2 Phase 1 Depth-Buffer Load 13. 06. 2013 Planet Ring Planet Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 27 von 28
Gliederung 1. Aufgabenstellung 2. Implementierung • Entwicklungswerkzeuge • Implementierungsüberblick • Datenfluss 3. Simulation • Keplerbahnen • Parallele Simulationsberechnung 4. Visualisierung • Ringvisualisierung - 2 D-Approximation - Billboard Rendering - Asteroiden Meshes • Umgebungsvisualisierung • Schatten • Stereoskopie 5. Ausblick/Probleme 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 28 von 28
Ausblick/Probleme • Probleme: - Dünner E-Ring (keine bekannten Daten / nur unter bestimmten - Auswahl des besten Open. CL Devices Unnötige Kopie von Mesh Positionen (mit GL<4. 3 unvermeidbar) Bildschirmpixel zu groß Lichtverhältnissen überhaupt sichtbar) • Eigene Ergänzungen: • Weitere mögliche Ergänzungen: - Monde auf Keplerbahnen Größenverteilungsfunktion für Nachbildung echter Saturndaten Farbprofil Schatten Stereoskopie - Normal-maps für Asteroidenbeleuchtung Simplex noise zur Texturgenerierung Adaptiv, distanzbasierte Verfeinerung der Meshes via Tesselation-Shader Partitionierung nicht nur anhand Entfernung sondern auch Blickwinkel auf Ringebene & Partikelgröße einbeziehen Bessere Simulation, welche Kollision, Scherung, Viskosität, Eigengravitation, Gravitationswellen, Spiralwellen, Lücken durch Monde, Propeller, Eigenrotation, etc. einbezieht - 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 29 von 28
31. 12. 2021 ? Level-of-Detail-Visualisierung von Planetenringen Diskussion Folie Nr. 30 von 28
Literatur Images: [0] „PIA 08329 In Saturn's Shadow - the Pale Blue Dot “ 12 9 2005. [Online]. Available: http: //www. ciclops. org/view_media/25521/In_Saturns_Shadow_-_the_Pale_Blue_. [Zugriff am 10 6 2013] [1] „PIA 10446: Scattered Sunshine“ Institute, NASA/JPL/Space Science, 13 8 2008. [Online]. Available: http: //photojournal. jpl. nasa. gov/catalog/PIA 10446. [Zugriff am 3 4 2013]. [2] Art. Mechanic, „Wikimedia. Commons“ 12 9 2005. [Online]. Available: http: //commons. wikimedia. org/wiki/File: Bahnelemente. svg. [Zugriff am 7 4 2013] [3] S. Wittens, „Acko. net, “ 23. August 2009. [Online]. Available: http: //acko. net/files/makingworlds/planets-1 -cubemap. png. [Zugriff am 28. Juni 2013]. Content: • J. Colwell, P. Nicholson, M. Tiscareno, C. Murray, R. French und E. Marouf, „The Structure of Saturn’s Rings“ in Saturn from Cassini-Huygens, Dordrecht Heidelberg London New York, Springer Science+Business Media B. V. , 2009, pp. 375 -458. • F. S. Thomson, „Radio occultation of Saturn's rings with the Cassini spacecraft: ring microstructure inferred from near-forward radio wave scattering“ Stanford University, July 2010. • J. Cuzzi, R. Clark, G. Filacchione, R. French, R. Johnson, E. Marouf und L. Spilker, „Ring Particle Composition and Size Distribution“ in Saturn from Cassini-Huygens, Dordrecht Heidelberg London New York, Springer Science+Business Media B. V. , 2009, pp. 459 -469. • J. E. Colwell, L. W. Esposito, R. G. Jerousek, M. Sremčević, D. Pettis und E. T. Bradley, „Cassini UVIS Stellar Occultation Observations of Saturn's Rings“ The Astronomical Journal, Bd. 140, Nr. 6, p. 1569– 1578, 12 2010. 31. 12. 2021 Level-of-Detail-Visualisierung von Planetenringen Folie Nr. 31 von 28
- Slides: 31