Title: HS Computer Graphics
1HS Computer Graphics
2Inhalt
- 1 Problemstellung
- 1.1 Grundlagen
- 1.2 Wolkenphysik
- 1.2.1 Dynamik
- 1.2.2 Optik
- 2 Rendering-Verfahren
- 2.1 Skyworks (Harris)
- 2.2 MS Flight Simulator 2004 (Wang)
31 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. http//en.wikipedia.org/wiki/cloud
41.1 Grundlagen
- Wo werden Wolken-Simulationen gebraucht?
- 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
- - sehr hohe Anforderung an Effizienz
- - hohe/mittlere Anforderung an Grafik
- - mittlere/niedrige Anforderung an physikalische
Korrektheit
5(No Transcript)
61.1 Grundlagen
- Klassifizierung nach WMO (World Meteorological
Organisation)
Höhe
71.2 Wolkenphysik
- 1.2 Wolkenphysik
- 1.2.1 Dynamik
- Luftbewegung
- Summe der Kräfte, die auf einen Punkt in der
Wolke einwirken und Massenerhaltung (
Divergenzfreiheit bei inkompressiblen Fluiden)
Änderung von u über die Zeit t
Auftrieb, Externe Kräfte
Druck-Gradient
Advektion
) Inkompressible Euler-Gleichungen u
Geschwindigkeit, p Druck, B Auftrieb, ?
(molekulare) Dichte f Beschleunigung durch
externe Kräfte
81.2 Wolkenphysik
- Luftfeuchtigkeit
- Massenerhaltung von Wasserdampf kondensiertem
Wasser
Änderung von qv über die Zeit t
Advektion
) water continuity equation qv
Wasserdampf-Anteil, qc Kondenswasser-Anteil,
C Kondensationsrate
- Temperatur
- Änderung der potentiellen Temperatur (d.h. von p
unabhängig) ergibt sich nur aus Verdampfung und
Kondensation
Änderung von ? über die Zeit t
Advektion
) thermodynamic equation ? potentielle
Temperatur, -L / (cp ?) ist Konstante
91.2 Wolkenphysik
Absorptions-Gleichung ?(t) optische
Dichte, ? Strahlrichtung
Absorption eines Lichtstrahls
101.2 Wolkenphysik
- 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
Rayleigh-Streuung des Sonnenlichts an der
Atmosphäre
111.2 Wolkenphysik
- Mie-Streuung, d.h. Größe des Streukörpers gt/
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
Rayleigh- und Mie-Streuung im Vergleich
- Mehr Infos unter
- http//hyperphysics.phy-astr.gsu.edu/hbase/atmos/
blusky.html
121.2 Wolkenphysik
mit
a(x) Streuungskoeffizient, p Phasenfunktion
Absorption und Streuung des Lichts
13Inhalt
- 1 Problemstellung
- 1.1 Grundlagen
- 1.2 Wolkenphysik
- 2 Echtzeit-Verfahren
- 2.1 Skyworks (Harris)
- 2.1.1 Numerische Simulation der Wolkendynamik
- 2.1.2 Rendering über 3D Texturen
- 2.2 MS Flight Simulator 2004 (Wang)
- 2.2.1 Modellierung
- 2.2.2 Rendering über Billboards
142 Echtzeit-Verfahren
- 2.1 Skyworks (Harris)
- 2.1.1 Numerische Simulation der Wolkendynamik
- Vorgehen
- Diskretisierung des Raumes
- ) Geschwindigkeit, Druck, usw. werden in einem
(hier) regulären Gitter gespeichert
- Diskretisierung der Zeit
- ) Aktualisierung der Zustände in diskreten
Zeitschritten
2D-Array mit Geschwindigkeitsvektoren
152.1 Skyworks
- Lösung der Euler-Gleichungen
1. Selbst-Advektion
Advektion von u
2. Auftrieb und externe Kräfte
3. Druck
( woher bekommen wir p?
162.1 Skyworks
Helmholtz-Theorem jedes Vektorfeld ist Summe
eines divergenzfreien und eines rotationsfreien
Feldes
Helmholtz-Theorem in Anwendung auf ein 2D-Gitter
) Führt zu einer einfachen Differentialgleichung
Über Diskretisierung ergibt sich hieraus ein
lösbares LGS
172.1 Skyworks
- Lösung der water continuity equation
1. Advektion (analog zu u)
2. Phasenübergang qvs Sättigungspunkt
der Wasserdampf-Anteil bei dem gilt
Kondensationsrate Verdampfungsrate
(Gleichgewicht)
182.1 Skyworks
- 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.
192.1 Skyworks
- Implementation am Beispiel Managed DirectX
- Erstelle Floating-Point-Texturen (z.B. mit
Format.R32F oder Format.A32B32G32R32F) für u, p,
usw. mit Parameter Usage.Rendertarget
- 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
- Passe dafür Texturkoordinaten und
WorldViewProjection-Matrix so an, dass die Textur
den Viewport genau bedeckt. - (! DX9-Doku Directly mapping texels to pixels)
Texel auf Pixel abbilden
202.1 Skyworks
- Beispiel
- 2D-Wolke auf 128x128 Gitter,
- gerendert mit 30fps.
- Die optische Dichte (Opazität)
- definiert der Wasseranteil qc.
Problem Echtzeit-Berechnung einer 3D-Wolke per
frame mit angegebener Technik nicht möglich.
Daher Berechnung nur alle paar Sekunden,
dazwischen lineare Interpolation
212.1 Skyworks
- 2.1.2 Rendering über 3D Texturen
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) statt
also
Multiple Forward Scattering
222.1 Skyworks
In rekursiver Schreibweise
mit Tk exp(-?k), I0 Ia, IN Ib, gk
g(xk, l) 8 k
) Einfaches Verfahren, das auf der Hardware z.B.
mittels 3D-Texturen durchführbar ist
232.1 Skyworks
- Algorithmus für eine 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)
Ausgerichtete Beleuchtungs-Textur
- Generiere Slices des Volumes, indem das k-1-te
Slice mittels Alpha-Blending auf das k-te Slice
gerendert wird.
Alpha-Blend-Funktion
Setze also fsrc 1, csrc gk-1, fdest
Tk-1, cdest Ik-1
- Multipliziere Dichte-Textur mit
Beleuchtungs-Textur
Dichte-Textur Beleuchtungs-Textur beleuchtete
Wolke
242.1 Skyworks
- Bisher Lichtberechnung unabhängig vom Betrachter,
daher - zusätzlich noch Einfach-Streuung in
Kamerarichtung
mit Sk gestreutes Licht am Punkt xk in
Kamerarichtung
Vorgehen größtenteils analog zum MFS-Algorithmus.
Die Slices sind hierbei in Richtung der Kamera
orientiert, und werden über Quads direkt auf den
Viewport gerendert.
Multiple Forward Scattering und Eye Scattering
252.2 MS Flight Simulator 2004
- 2.2 MS Flight Simulator 2004 (Wang)
Hauptprobleme bei Skyworks
- Kontrollierbarkeit nur eingeschränkt gegeben, da
Aussehen nur indirekt beeinflussbar - Nur bestimmte Wolkentypen darstellbar
(Stratuswolken z.B. problematisch wegen großer
Fläche) - Performance-Einbußen durch Fluid-Dynamik und
komplexe Lichtberechnung - ) für kommerzielles Produkt also eher ungeeignet
262.2 MS Flight Simulator 2004
- 2.2.1 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.
- Um eine größere Fläche zu bedecken wird dann eine
Wolkenformation aus mehreren Einzelwolken
gebildet.
3DSMax Plugin für Wokenerstellung
272.2 MS Flight Simulator 2004
- 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
282.2 MS Flight Simulator 2004
- 2.2.1 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)
- Falls die Kamera herumschwenken sollte und auf
die Kante des Sprites blickt, wird einfach die
Transparenz reduziert.
Wolken als Billboards
292.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)
- 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.
Impostor-Ring um die Kamera
302.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
31Ende
- Vielen Dank für die Aufmerksamkeit!
-
- Fragen?