Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization HS Computer Graphics Cloud Rendering
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization Inhalt 1 Problemstellung 1.1 Grundlagen 1.2 Wolkenphysik Dynamik Optik 2 Rendering-Verfahren 2.1 Skyworks (Harris) 2.2 MS Flight Simulator 2004 (Wang)
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1 Problemstellung 1.1 Grundlagen Was sind Wolken? „A cloud is a visible mass of condensed droplets or ice crystals suspended in the atmosphere above the surface of the Earth or another planetary body. “ dropletsice crystalsatmosphereEarthplanetary bodydropletsice crystalsatmosphereEarthplanetary bodyhttp://en.wikipedia.org/wiki/cloud
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.1 Grundlagen Wo werden Wolken-Simulationen gebraucht? Wetter-, Strömungssimulatoren für Flugzeuge: Wetter-, Strömungssimulatoren für Flugzeuge: - mittlere/niedrige Anforderung an Effizienz - niedrige/gar keine Anforderung an Grafik - sehr hohe Anforderung an physikalische Korrektheit Echtzeit-Flugsimulatoren, sonstige Spiele: Echtzeit-Flugsimulatoren, sonstige Spiele: - sehr hohe Anforderung an Effizienz - hohe/mittlere Anforderung an Grafik - mittlere/niedrige Anforderung an physikalische Korrektheit
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.1 Grundlagen Klassifizierung nach WMO (World Meteorological Organisation): Stratocumulus AltocumulusCirrocumulusCumulusCirrusStratus AltostratusNimbostratusCirrostratusCumulonimbusHöhe
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Dynamik Luftbewegung: Luftbewegung: Summe der Kräfte, die auf einen Punkt in der Wolke einwirken und Massenerhaltung (= Divergenzfreiheit bei inkompressiblen Fluiden) ) Inkompressible Euler-Gleichungen: ) Inkompressible Euler-Gleichungen: u: Geschwindigkeit, p: Druck, B: Auftrieb, : (molekulare) Dichte f: Beschleunigung durch externe Kräfte Änderung von u über die Zeit t Advektion Druck-Gradient Auftrieb, Externe Kräfte
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Luftfeuchtigkeit: Luftfeuchtigkeit: Massenerhaltung von Wasserdampf + kondensiertem Wasser ) water continuity equation: q v : Wasserdampf-Anteil, q c : Kondenswasser-Anteil, C: Kondensationsrate Temperatur: Temperatur: Änderung der potentiellen Temperatur (d.h. von p unabhängig) ergibt sich nur aus Verdampfung und Kondensation ) thermodynamic equation: ) thermodynamic equation: : potentielle Temperatur, -L / (c p ) ist Konstante Änderung von q v über die Zeit t Advektion Änderung von über die Zeit t Advektion
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Optik Absorption Absorption Absorption eines Lichtstrahls Absorptions-Gleichung: (t) = optische Dichte, = Strahlrichtung
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Streuung StreuungStreuungsarten: Rayleigh-Streuung des Sonnenlichts an der Atmosphäre - Rayleigh-Streuung, d.h. Größe des Streukörpers « Wellenlänge der Strahlung - tritt bei Wolkenpartikeln ( ¸ 2 m) NICHT auf Streuung bei kurzen Wellenlängen wesentlich stärker
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Mehr Infos unter: Rayleigh- und Mie-Streuung im Vergleich - Mie-Streuung, d.h. Größe des Streukörpers >/≈ Wellenlänge der Strahlung. Streuung nur schwach von Wellenlänge abhängig Verantwortlich für weiße Färbung der Wolken durch Streuung an Wassertröpfchen
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 1.2 Wolkenphysik Streuungs-Gleichung: Absorption und Streuung des Lichts mit a(x)= Streuungskoeffizient, p = Phasenfunktion
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization Inhalt 1 Problemstellung 1.1 Grundlagen 1.2 Wolkenphysik 2 Echtzeit-Verfahren 2.1 Skyworks (Harris) Numerische Simulation der Wolkendynamik Rendering über 3D Texturen 2.2 MS Flight Simulator 2004 (Wang) Modellierung Rendering über Billboards
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2 Echtzeit-Verfahren 2.1 Skyworks (Harris) Numerische Simulation der Wolkendynamik 2D-Array mit Geschwindigkeitsvektoren Vorgehen: Diskretisierung des Raumes Diskretisierung des Raumes ) Geschwindigkeit, Druck, usw. werden in einem (hier) regulären Gitter gespeichert Diskretisierung der Zeit Diskretisierung der Zeit ) Aktualisierung der Zustände in diskreten Zeitschritten
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Lösung der Euler-Gleichungen: Lösung der Euler-Gleichungen: Advektion von u ( woher bekommen wir p? 1. Selbst-Advektion 2. Auftrieb und externe Kräfte 3. Druck
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Details zu Schritt 3: Helmholtz-Theorem in Anwendung auf ein 2D-Gitter ) Führt zu einer einfachen Differentialgleichung: Über Diskretisierung ergibt sich hieraus ein lösbares LGS Helmholtz-Theorem: jedes Vektorfeld ist Summe eines divergenzfreien und eines rotationsfreien Feldes
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Lösung der water continuity equation: Lösung der water continuity equation: 1. Advektion (analog zu u) 2. Phasenübergang q vs = Sättigungspunkt = der Wasserdampf-Anteil bei dem gilt: Kondensationsrate = Verdampfungsrate (Gleichgewicht)
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Lösung der thermodynamic equation: Lösung der thermodynamic equation: 1. Advektion 2. Temperaturausgleich ) Implementation der angegebenen Schritte ist relativ trivial. Ersetzt man die Arrays durch 2D- bzw. 3D-Texturen, so lässt sich die gesamte Rechnung sogar auf der GPU durchführen.
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Implementation am Beispiel Managed DirectX: Implementation am Beispiel Managed DirectX: - Passe dafür Texturkoordinaten und WorldViewProjection-Matrix so an, dass die Textur den Viewport genau bedeckt. ( ! DX9-Doku: „Directly mapping texels to pixels“) - Implementiere (soweit nötig) für jeden Rechenschritt einen Pixelshader der die Werte für u, p, usw. aus den Texturen liest, daraus die neuen Werte berechnet und in die entsprechende Textur wieder ausgibt Texel auf Pixel abbilden - Erstelle Floating-Point-Texturen (z.B. mit Format.R32F oder Format.A32B32G32R32F) für u, p, usw. mit Parameter Usage.Rendertarget
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Beispiel: 2D-Wolke auf 128x128 Gitter, gerendert mit ¸ 30fps. Die optische Dichte (Opazität) definiert der Wasseranteil q c. Problem: Echtzeit-Berechnung einer 3D-Wolke per frame mit angegebener Technik nicht möglich. Daher: Berechnung nur alle paar Sekunden, dazwischen lineare Interpolation
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Rendering über 3D Texturen Multiple Forward Scattering Dazu vereinfachtes Beleuchtungsmodell nötig: „Multiple Forward Scattering“ = Licht wird nur entlang des Lichtstrahls gestreut (Approximation der Mie-Streuung) Zur Erinnerung: Multiple Forward Scattering (MFS): stattalso
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Diskretisierung ergibt: In rekursiver Schreibweise: mit T k := exp(- k ), I 0 := I a, I N := I b, g k := g(x k, l) 8 k ) Einfaches Verfahren, das auf der Hardware z.B. mittels 3D- Texturen durchführbar ist
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Algorithmus für eine Beleuchtungs-Textur: - Generiere Slices des Volumes, indem das k-1-te Slice mittels Alpha-Blending auf das k-te Slice gerendert wird. Ausgerichtete Beleuchtungs-Textur Dichte-Textur ¢ Beleuchtungs-Textur = beleuchtete Wolke - Multipliziere Dichte-Textur mit Beleuchtungs-Textur - Erstelle ein 3D-Volume, das die komplette Wolke einschließt, richte es nach der Lichtquelle aus und setze die Kamera auf die Position der Lichtquelle (gerichtetes Licht: isometrische Perspektive) Alpha-Blend-Funktion: Setze also f src := 1, c src := g k-1, f dest := T k-1, c dest := I k-1
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.1 Skyworks Bisher Lichtberechnung unabhängig vom Betrachter, daher zusätzlich noch Einfach-Streuung in Kamerarichtung: Multiple Forward Scattering und Eye Scattering Vorgehen größtenteils analog zum MFS-Algorithmus. mit S k = gestreutes Licht am Punkt x k in Kamerarichtung Die Slices sind hierbei in Richtung der Kamera orientiert, und werden über Quads direkt auf den Viewport gerendert.
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator MS Flight Simulator 2004 (Wang) Hauptprobleme bei Skyworks: Kontrollierbarkeit nur eingeschränkt gegeben, da Aussehen nur indirekt beeinflussbar Kontrollierbarkeit nur eingeschränkt gegeben, da Aussehen nur indirekt beeinflussbar Nur bestimmte Wolkentypen darstellbar (Stratuswolken z.B. problematisch wegen großer Fläche) Nur bestimmte Wolkentypen darstellbar (Stratuswolken z.B. problematisch wegen großer Fläche) Performance-Einbußen durch Fluid-Dynamik und komplexe Lichtberechnung Performance-Einbußen durch Fluid-Dynamik und komplexe Lichtberechnung ) für kommerzielles Produkt also eher ungeeignet
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator Modellierung In FS2004 werden die Wolken nicht dynamisch generiert, sondern Models verwendet, die in 3Dsmax erstellt wurden. - Die grobe Form einer Wolke wird dabei über eine Menge von Quadern festgelegt. 3DSMax Plugin für Wokenerstellung - Um eine größere Fläche zu bedecken wird dann eine Wolkenformation aus mehreren Einzelwolken gebildet.
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator Für die Texturierung wird eine Auswahl vorgenerierter Texturen für die verschiedenen Wolkentypen benutzt, die beliebig kombiniert werden können. - Im letzten Schritt wird jeder Quader in ein 2D- Sprite umgewandelt, (= halb transparentes, texturiertes 2D-Objekt) das frei um den Mittelpunkt des Quaders rotierbar ist. Vorgenerierte Texturen Von Quadern....zu Sprites
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator Rendering über Billboards Im Spiel werden die Wolken als Billboards gerendert, d.h. die 2D-Sprites werden rotiert, damit sie immer zur Kamera zeigen. - Um einen „Parting of the Red Sea“- Effekt zu vermeiden, wird dabei der Sichtwinkel bei kleiner Entfernung zur Kamera gesperrt. (hier · Spriteradius / 2) Wolken als Billboards - Falls die Kamera herumschwenken sollte und auf die Kante des Sprites blickt, wird einfach die Transparenz reduziert.
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator 2004 Optimierung mittels Impostor-Ringen: Werden viele Wolken auf einmal dargestellt, resultiert das in einem großen Anteil von Wolken, der zwar gerendert wird, aber eigentlich nicht sichtbar ist. (Overdraw) Werden viele Wolken auf einmal dargestellt, resultiert das in einem großen Anteil von Wolken, der zwar gerendert wird, aber eigentlich nicht sichtbar ist. (Overdraw) Daher werden alle Wolken mit einem Mindestabstand zum Betrachter in einen Ring aus sog. Impostors gerendert. Daher werden alle Wolken mit einem Mindestabstand zum Betrachter in einen Ring aus sog. Impostors gerendert. Der Ring wird dann wie eine Kulisse um die Kamera platziert, um die enthaltene Szene vorzutäuschen. Der Ring wird dann wie eine Kulisse um die Kamera platziert, um die enthaltene Szene vorzutäuschen. Impostor-Ring um die Kamera
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization 2.2 MS Flight Simulator 2004 Der Trick dabei: Man generiert die Impostors nicht in jedem Frame neu, sondern nur wenn es nötig wird, d.h. sobald ein festgesetzter Fehlerwert durch Rotation oder Translation der Kamera überschritten wird. Performance-Gewinn durch Impostors
Hauptseminar – Computer Graphics Oliver Meister computer graphics & visualization Ende Vielen Dank für die Aufmerksamkeit! …Fragen?