SHADERBASIERTE SIMULATION VON FEINEN TEXTILEN MATERIALIEN Christine Weber - Fachbereich Informatik - Hochschule Darmstadt Ronny Giera - Fachbereich Informatik - Hochschule Darmstadt ZUSAMMENFASSUNG Gerade in Computerspielen wird das realistische Aussehen von Avataren immer wichtiger. Aus diesem Grund sollte auch deren Kleidung ein möglichst realistisches Aussehen besitzen. Wir stellen in diesem Paper vier Shader vor, mit denen es möglich ist, das Aussehen von feinen textilen Materialien zu simulieren. Die Implementierung der Shader erfolgte mit der OpenGL Shading Language. SCHLÜSSELWÖRTER Shader, Seide, Satin, Samt, Minneart Modell, Ward Modell, Cook-Torrance, Oren-Nayar, Henyey und Greenstein 1 Motivation Um der Kleidung von Avataren in Anwendungen aus der Computergrafik ein realistisches Aussehen zu verleihen, stellen wir in diesem Paper vier Möglichkeiten zur shaderbasierten Simulation von Samt, Seide und Satin vor. Durch die realisierten Shader kann auf einfache Weise und in Echtzeit Kleidung ein textiles, schimmerndes und zugleich realistisch wirkendes Aussehen verliehen werden. Zur Implementierung der Shader für Samt verwenden wir die Formeln von Minneart und eine Kombination aus Cook-Torrance und Oren-Nayar. Zur Simulation von Satin greifen wir auf das Modell von Ward zurück. Die realistische Darstellung von Seide lässt sich durch die Verwendung der Phasenfunktion von Henyey und Greenstein in Kombination mit einem Phong Shading erreichen. Lichts in eine bestimmte Richtung (gerichtete Verteilung), im extremsten Fall eine nahezu vollständige Reflexion, wie sie bei einem Spiegel bekannt ist. Dieser Effekt wird als spiegelnde oder auch spekulare Reflexion bezeichnet. Zum anderen existiert auch eine gleichmäßige Streuung des Lichts in alle oder in bevorzugte Richtungen. Diese wird diffuse Reflexion genannt. Wie das einfallende Licht zerstreut bzw. reflektiert wird, ist abhängig vom Material der Oberfläche. Die Oberfläche einer Zitrone beispielsweise absorbiert zu einem großen Teil blaues Licht, sprich Licht mit einer Wellenlänge um ca. 400 nm. Grünes (ca. 500 nm) und rotes Licht (ca. 700 nm) wird dagegen reflektiert. Diesen Reflexionseffekt bezeichnet man als spektrale Verteilung des Lichts [18]. Nach [3] setzt sich eine generelle Formel zur Berechnung des reflektierten Lichts für Oberflächen, die selbst kein Licht aussenden, wie folgt zusammen. I o = f R () I i cos(θ i ) (1) I i beschreibt dabei das in einem Punkt einfallende Licht in Abhängigkeit vom Einfallswinkel θ i. Wieviel Licht die Oberfläche nun in Richtung des Betrachters verlässt (I o ), hängt - wie oben bereits erwähnt - von der Materialbeschaffenheit der Oberfläche ab. Dies kann mit Hilfe der Reflexionsfunktion f R () dargestellt werden. Abbildung 1 stellt diesen Sachverhalt noch einmal grafisch dar. 2 Grundlagen Zu Beginn werden wir auf einige grundlegende Aspekte der Computergrafik eingehen, die für das Verständnis der in diesem Paper vorgestellten Simulationsmöglichkeiten wichtig sind. 2.1 Beleuchtungsmodelle und Lichtberechnung Trifft Licht auf eine Oberfläche, zerstreut diese das Licht bzw. reflektiert einen bestimmten Teil zurück in die Umgebung. Hierbei existieren verschiedene Lichtverteilungseffekte. Zum einen die Reflexion des eintreffenden Abbildung 1. Auf einen Punkt einfallendes Licht und dessen Reflexion [nach 14] Mit L wird hier der Vektor in Richtung der Lichtquelle
(Light) bezeichnet, der abhängig ist von den Winkeln θ i und φ i. Der Vektor in Richtung des Betrachters (View), wird meist mit V bezeichnet. Dieser steht in Abhängigkeit zu den Winkeln θ o und φ o. Zusätzlich wird zur Lichtberechnung die Normale der Oberfläche bzw. der Facette des betrachteten Punktes P benötigt, die mit N bezeichnet wird. 2.2 BRDF Eine Möglichkeit die Streuung bzw. die Reflexion des einfallenden Lichts, die abhängig ist von der Oberfäche des Objekts bzw. von dessen Material, zu bestimmen, bietet der Ansatz von BRDF (Bidirectional Reflectance Distribution Function). Allgemein ist die BRDF-Funktion abhängig von den Vektoren L und V bzw. von deren Winkeln. Aus diesm Zusammenhang kann eine BRDF-Funktion folgendermaßen dargestellt werden. BRDF ( L, V ) = BRDF (θ o, φ o, θ i, φ i ) (2) Diese kann nun für die Reflexionsfunktion f R () der im vorherigen Abschnitt betrachteten allgemeinen Formel verwendet werden. Die Formel zur Berechnung des reflektierten Lichts erweitert sich dadurch wie folgt. I o = BRDF (θ o, φ o, θ i, φ i ) I i cos(θ i ) (3) Mit Hilfe einer BRDF-Funktion lässt sich die Lichtstreuung bzw. -reflexion nahezu jeden Materials beschreiben. In den nachfolgenden Kapiteln werden verschiedene Modelle vorgestellt, die teilweise durch eine BRDF-Funktion das Aussehen textiler Materialen simulieren. Umgesetzt werden diese Modelle mit Hilfe von Shadern. 2.3 Shading Mit dem Begriff Shading wird nach [13] der Prozess der Lichtberechnung und der Bestimmung der Farbe des jeweiligen Pixels bezeichnet. In der Computergrafik gibt es drei grundsätzliche Shading-Verfahren: Flat, Gouraud und Phong Shading. Diese berechnen das von einer Oberfläche in Richtung des Betrachters reflektierte Licht mit unterschiedlicher Qualität. Abbildung 2 verdeutlicht dies. Abbildung 2. (a) Wireframe, (b) Flat Shading, (c) Gouraud Shading, (d) Phong Shading [9] Beim Flat Shading wird das Licht pro Facette bzw. Polygon anhand dessen Normale berechnet, so dass die Farbe des Polygons demnach für alle Pixel einheitlich dargestellt wird. Das Gouraud Shading arbeitet pro Vertex. Das heißt, hier wird die Licht- und Farbenberechnung für jeden Vertex anhand der Eckennormalen berechnet und dann für jedes Pixel interpoliert. Das beste Ergebnis dieser drei Verfahren erziehlt jedoch das Phong Shading. Zuerst werden die Eckennormalen für jedes Pixel interpoliert. Die Licht- und Farbberechnung erfolgt dann für jedes Pixel separat, was wesentlich zeitintensiver ist als bei den anderen beiden Verfahren. Das Phong Shading wird im Abschnitt 6 zur Optimierung der Helligkeit verwendet. 3 Simulation von Samt mit dem Modell von Minneart Das Minneart Modell ist eines der ältesten retroreflektiven Beleuchtungsmodelle [16]. Retroreflektive Reflexion [18] bedeutet, dass die Reflexion des Lichtes wieder in die Richtung der Lichtquelle zurück fällt. Ein Beispiel ist die Mondoberfläche, sie strahlt einen großen Anteil des Sonnenlichtes wieder zurück. In [3] wird das von Marcel Minneart entwickelte Modell beschrieben, welches sich sehr gut zur Darstellung von Samt eignet. Dieses Modell ermöglicht es, matte bzw. dunkle Bereiche einer Oberfläche darzustellen und simuliert auf diese Weise sehr gut das realistische Aussehen von Samt. Die Minneart Reflexion gehört zur Gruppe der BRDFs. Zudem handelt es sich auch um ein diffuses Beleuchtungsmodell. Die Minnaert Reflexion berechnet sich nach folgender Formel: I o = D (( N L)( N V ) m 1 I i (4) D steht für den diffusen Farbwert, N ist die Normale einer Oberfläche, L ist der Lichtvektor und V der Betrachtervektor. Der Potenzwert m 1 ist abhängig von der Art des Materials und vom Benutzer geeignet zu wählen. Bereits eine kleine Änderung dieses Wertes bewirkt ein vollkommen anderes Erscheinungsbild. I i ist das einfallende Licht und wird durch max(( N L), 0.0) berechnet. Abbildung 3 zeigt das Ergebnis des Shaders mit der Umsetzung des Minneart Modells. Das abgebildete Objekt hat durch den Minneart Shader ein weiches Aussehen und wirkt, als ob es mit Samt beschichtet wurde. Wie in der Abbildung zu erkennen ist, summiert das Minneart- Beleuchtungmodell dunkle Bereiche zu einem Material dazu und eignet sich somit sehr gut, um das Aussehen von Samt zu realisieren.
Abbildung 3. Kleid mit Minneart Shader von Cook und Torrance wird in [3] wie folgt beschrieben: [ I o = I i F DG ( N L)( N V ) Die drei Hauptbedingungen der Cook-Torrance Gleichung sind F, D und G. Jede ist für die Steuerung unterschiedlicher Effekte verantwortlich. Um zu berechnen, welcher Teil des auf die Flächen eintreffenen Lichtes wieder zurückgestrahlt wird, verwendet dieses Beleuchtungsmodell F und G. F steht für den Fresnel Effekt. Mit ihm wird die Menge des reflektierten Lichtes in die unterschiedlichsten Einfallswinkel gesteuert. D ist hier nicht der Wert für die diffuse Farbe, sondern beschreibt die Brechung des Lichtes. Der Geometrische Abschächungsfaktor G ist für die Selbstbeschattung und die Abblendung zwischen den Facetten einer Oberfläche verantwortlich. Abbildung 4 verdeutlicht dies grafisch. ] (5) 4 Simulation von Samt durch Kombination des Modells von Cook und Torrance sowie Oren und Nayar Eine weitere Idee ist es, einen Shader für Samt durch Kombination zweier verschiedener Beleuchtungsmodelle zu realisieren. Für diesen Shader wurde das Modell von Cook und Torrance sowie das Modell von Oren und Nayar gewählt. Das Cook-Torrance Modell ist speziell für spiegelnde Oberflächen, wie z.b. Metall, und das Oren-Nayar Modell dagegen für diffuse, raue Oberflächen wie z.b. Sand oder Stein geeignet. Die Überlegung zur Umsetzung des Shaders bestand nun darin, durch eine Kombination der beiden unterschiedlichen Modelle einen zwischen diesen beiden Modellen liegenden Effekt (Samt) zu erzielen. Abbildung 4. Selbstbeschattung und Abblendung [6] 4.1 Cook-Torrance Bei dem von Cook und Torrance [2] beschriebenen Beleuchtungsmodell handelt es sich um eine BRDF, die eine physikalische Korrektheit anstrebt. Dieses Modell ist speziell für metallische Oberflächen geeignet. Eine Oberfläche wird hier als Menge kleiner Flächen (Microfacetten), die alle perfekte Spiegel sind, angenommen. Diese Facetten reflektieren das Licht in die unterschiedlichsten Richtungen. Zudem wird bei diesem Modell die Rauheit einer Oberfläche, die Selbstbeschattung und die Abblendung berücksichtigt. Dieses Beleuchtungsmodell ist auch in der Lage, Oberflächen zu beschreiben, die eine vom Betrachter abhängige Farbe haben [6]. Das für diesen Shader verwendete Beleuchtungsmodell Der Fresnel-Effekt F simuliert einen in der Natur spiegelnden Effekt. Er beschreibt eine Kombination des Lichtes, das auf einer Oberfläche reflektiert und gebrochen wird. Nach [20] lässt sich der Fresnel-Effekt folgendermaßen erklären: Schaut ein Betrachter auf einen See, der von Bergen umgeben ist, sieht er, wie sich diese auf der Wasseroberfläche spiegeln. Sobald der Betrachter seine Blickrichtung ändert und von oben auf die Wasseroberfläche schaut, sieht er nicht mehr die Berge sondern Fische (sofern welche da sind), die unter der Wasseroberfläche herumschwimmen. Die vollständige Fresnel Formel [13] ist vom Brechungsindex, vom Löschungsfaktor und vom Einfallswinkel abhängig und kann die polarisierten oder unpolarisierten Werte für das Licht berechnen. In der Computergrafik wird Polarisation jedoch meistens ignoriert. Daher wird der Durchschnittswert zweier Polarisationen verwendet. Ein
guter Brechungsindex für nichtleitende Materialien ist 1.5. Der Löschungsfaktor kann auf Null gesetzt werden, wenn dieser nicht bekannt ist. Aus diesen Zusammenhängen ergibt sich folgende Gleichung: ( ) F = 1 (g c) 2 2 (g+c) 1 + [c(g+c) 1]2 2 [c(g c)+1] 2 c = ( V H ) g = n 2 + c 2 1 F beschreibt die Reflexion und Refraktion (Brechung) der Lichtstrahlen auf einer Oberfläche. Diese Lichtstrahlen werden abhängig von der Position des Betrachters auf der Oberfläche wahrgenommen. Der Halbvektor H ist der Winkel zwischen dem Betrachtervektor und dem Lichtvektor. Er ist gegeben durch: H = L+ V L+ V Der Wert c stellt das Verhältnis zwischen dem Betrachtervektor und dem Halbvektor dar. Bei dem Wert für g kommt noch der Parameter n hinzu, er steht für den Brechungsindex. (6) (7) H orientiert sind, verantwortlich. Die Verteilung der Neigungswinkel der Flächen sind in dem Cook-Torrance Modell rotierend symmetrisch um die Normale einer Oberfläche festgelegt. Diese kann durch die eindimensionale Funktion D mit der Konstanten c berechnet werden durch [6]: D = ce α2 2m 2 (10) α steht für den Winkel zwischen der Normale und dem Halbvektor. Der Wert m steht für die Rauheit einer Oberfläche. Je rauer eine Oberfläche ist, desto größer ist der Wert für m zu wählen. Der Wert c ist nach [2] eine frei wählbare Konstante. Der Wert für den geometrische Abschwächungsfaktor G berechnet sich folgendermaßen [3]: G = min {1, G Abb, G Selbst } Ein Wert von n = 1 entspricht etwa der Luft. Sollte kein geeigneter Wert für den Brechungsindex vorhanden sein, kann dieser auch folgendermaßen angenähert werden [6]: G Abb = 2( N H)( N V ) ( V H) G Selbst = 2( N H)( N L) ( V H) (11) n = 1+ F 0 1 F 0 (8) Hierbei kann für F ein fester Einfallswinkel von z.b. 0 bestimmt werden. Eine Approximation der Fresnel-Gleichung von Christophe Schlick wird in [20] beschrieben. Diese ist zwar nicht physikalisch korrekt, liefert aber dennoch annehmbare Werte und ist auch besser zu programmieren. Bei dieser Gleichung wird angenommen, dass das Licht in der Szene nicht polarisiert ist. D.h., bei nicht polarisiertem Licht [21] sind alle Schwingungsebenen gleichverteilt. Weiterhin wird angenommen, dass alle Lichtstrahlen die gleiche Wellenlänge besitzen. Der Näherungswert für das Verhältnis zwischen reflektiertem und gebrochenem Licht wird wie folgt beschrieben: ( ( )) 5 F = f + (1 f) 1 V N (9) In dieser Beschreibung der approximierten Fresnel- Gleichung steht der Wert f für das Reflexionsvermögen eines Materials. Dieser Wert (meist Meßwert) ist vom Benutzer geeignet, dem Material entsprechend, zu wählen. Für die Umsetzung des Shaders wird diese vereinfachte Fresnel-Gleichung verwendet. Die Gleichung von D ist für die Darstellung der Lichtbrechung der einzelnen Facetten, die in Richtung von Mit der Hilfe von G wird darauf geachtet, dass die Flächen nicht von anderen überschattet werden können. Licht, das auf die Oberfläche fällt oder reflektiert wird, könnte von anderen Flächen abgehalten werden. G Abb beschreibt die Abblendung, G Selbst die Selbstbeschattung. Die Gleichung für G hat keine Faktoren, die von den physikalischen Eigenschaften der Oberfläche abhängig sind. 4.2 Oren-Nayar Das Beleuchtungsmodell von Oren und Nayar [15] ist geeignet, um raue bzw. grobe Materialien wie z.b. Stoff, Sand oder Stein zu beschreiben. Es wurde von Oren und Nayar als vereinfachtes, realistisches BRDF-Modell für diffuse Oberflächen beschrieben, das die Interaktion von Licht mit der Objektoberfläche benutzt. Es wirkt ähnlich wie Phong Shading, nur etwas matter. Folgender Näherungswert wurde von Oren und Nayar für dieses Beleuchtungsmodell gebildet:
Oren Nayar = ρ π E 0cosθ i (A + B max(0, cos(φ o φ i )) sin(α) tan(β) A = 1.0 σ 2 2 (σ 2 +0.33) B = 0.45 σ 2 σ 2 +0.09 (12) α = max(θ o, θ i ) β = min(θ o, θ i ) Diese Formel lässt sich folgendermaßen beschreiben: Zwischen der Normalen und dem Lichtvektor liegt der Winkel θ i. Der Winkel um die Normale zwischen dem Betrachtervektor und dem Lichtvektor wird mit φ o φ i beschrieben. Der Parameter ρ steht für die Reflexionseigenschaft der Oberfläche. Durch den Parameter E 0 wird die Energie des Lichtes ausgedrückt. Der konstante Wert σ beschreibt die Rauheit der Oberfläche und ist vom Benutzer geeignet zu wählen. Zur besseren Programmierbarkeit wurde diese Formel von Oren und Nayar von [5] etwas vereinfacht. Die Vereinfachung umfasst, dass der Parameter für die Reflexionseigenschaft der Oberfläche ρ durch die diffuse Farbe der Oberfläche I diff ersetzt werden kann. Weiterhin kann der Parameter für die Energie des Lichtes E 0 durch N L ersetzt werden. Die Gleichung ergibt sich daraus wie folgt: Oren Nayar = I diff ( N L) (A + B max(0, cos(φ o φ i )) sin(α) tan(β) (13) Diese vereinfachte Gleichung des Oren-Nayar Beleuchtungsmodells wird hier für den Shader zur Simulation von Samt verwendet. Abbildung 5 zeigt das Ergebnis des Shaders, mit der Implementierung des Modells von Cook und Torrance kombiniert mit dem Modell von Oren und Nayar. Durch eine Kombination der beiden Beleuchtungsverfahren, entsteht ein weicher Übergang zwischen glänzendem Metall und rauem Stoff, so dass die Simulation von Samt auch mit dieser Art der Implementierung realisiert werden kann. Im Vergleich zu dem Modell von Minneart ist diese Implementierung jedoch wesentlich aufwändiger, erzielt aber dennoch ein ansehnliches Ergebnis. Abbildung 5. Kleid mit der Kombination aus Cook- Torrance und Oren-Nayar Beleuchtungsmodell 5 Simulation von Satin durch das Ward Reflexion Modell Das Modell von Ward [3] eignet sich ebenfalls zur Darstellung von Metall. Im Gegensatz zum Phong-Modell ist das Ward Modell physikalisch korrekt. Dieses Beleuchtungsmodell gehört ebenfalls, wie die bisherigen verwendeten Modelle, zur Gruppe der BRDFs. Das Ward-Modell kann als isotroper oder anisotroper Fall ausgedrückt werden. Isotrop bedeutet, dass die Menge des reflektierten Lichts in alle Richtungen gleich stark verteilt wird. Der gegenteilige Fall ist anisotrop. Dies bedeutet, dass das reflektierte Licht in unterschiedlicher Stärke streut, d.h. nicht in jeder Richtung gleich stark. Wir haben uns für den isotropen Fall entschieden, da dieser effizienter zu realisieren ist. Der Einfluss der spekularen Beleuchtung ist bei diesem Beleuchtungsmodell höher als beim Phong-Modell. Der spekulare Glanzpunkt wird durch einen konstanten Wert für die Rauheit der Oberfläche gesteuert. Dieser Wert ist vom Anwender geeignet zu wählen. Aufgrund dieses Wertes bestand für uns die Überlegung, einen geeigneten Wert für die Rauheit der Oberfläche zu finden und damit die Darstellung von Satin zu simulieren. Unsere Idee ist begründet auf der Tatsache, dass beide Materialien (Metall und Satin) ein glänzendes Aussehen besitzen und sich auf den ersten Blick sehr ähnlich sind. Der isotrope Fall ist folgendermaßen definiert: e I o = [D + S tan2 γ/σ 2 ( ]I i( N L) N L)( N V ) γ = αcos( N H) 2 π σ 2 (14) Die diffuse Farbe wird durch D beschrieben, S steht für die spekulare Farbe. Durch den frei wählbaren Wert
sigma (σ) wird die Rauheit der Oberfläche definiert. Die Exponential-Funktion beschreibt die Abschwächung des Lichtes. Je mehr der Halvektor H von der Normalen N abweicht, desto schwächer wird das Licht. In [12] wird die Henyey-Greenstein Funktion verwendet, um menschliche Haut zu simulieren. Das Subsurface Scattering für die Simulation der Haut wird mit Monte- Carlo Simulationen, in denen die Eigenschaften des unter einer Oberfläche zerstreuten Lichtes sowie Absorptionseigenschaften mit der Henyey-Greenstein Funktion beschrieben werden, berechnet. In [22] wird beschrieben, dass die exakte Phasenfunktion um biologische Gewebe zu beschreiben unbekannt ist, jedoch die Henyey-Greenstein Funktion dafür am häufigsten verwendet wird. Obwohl die Henyey-Greenstein Funktion ursprünglich für atmosphärische Darstellungen gedacht war, lässt sie sich ebenso für biologische Gewebe verwenden, da das Licht gerade in der menschlichen Haut unterschiedlich streut, so wie es bei Partikeln in der Atmosphäre der Fall ist. Da sowohl Haut als auch Seide einen schimmernden Effekt aufweisen, entstand die Idee Seide mit Hilfe der Henyey-Greenstein Phasenfunktion zu simulieren. Abbildung 6. Kleid mit Ward Shader Das Ergebnis der Umsetzung des isotropen Ward Modells ist in Abbildung 6 zu sehen. Das Aussehen ist ähnlich dem Phong Shading, jedoch kann durch den Wert für die Rauheit einer Oberfläche gezielt der spekulare Glanzpunkt bestimmt werden. Auf diese Weise lässt sich leicht die Simulation von Satin erreichen. Um einen anderen Glanzeffekt zu erzielen, ist lediglich der Wert für die Rauheit entsprechend zu verändern. 6 Simulation von Seide durch die Henyey und Greenstein Phasenfunktion Die Streuung des Lichtes wird durch Partikel beschrieben. Größere Partikel eines Materials streuen stark in Vorwärtsrichtung. Dieses Phänomen wird als Mie- Streuung [19] bezeichnet. Eine besonders in der Computer Grafik verwendete Phasenfunktion zur Beschreibung der richtungsabhängigen Verteilung des gestreuten Lichtes im Falle der Mie Streuung wurde von Henyey und Greenstein [18] [10] entwickelt. Ein einzelner Parameter g steuert hier die Verteilung des gestreuten Lichtes. Diese Phasenfunktion [10] dient zur Beschreibung des Lichtdurchgangs durch die interstellare Atmosphäre. In [1] wird beschrieben, dass die Mie-Phasenfunktion auch für die Streuung des Lichtes bei Partikeln, die unter einer Oberfläche liegen, eine grundlegende Rolle spielt (Subsurface Scattering). Dazu gehören Materialien wie z.b. Haut, Milch und auch Glas. Da die reine Phasenfunktion ein etwas zu grelles Ergebnis liefert, bietet es sich an die Phasenfunktion mit einem Phong Shading zu kombinieren. Das Phong Shading bewirkt, dass der zu grelle Beleuchtungseffekt etwas abgeschwächt wird. Auf diese Weise entsteht ein seidiger Effekt. Die Phasenfunktion, für die Angabe der richtungsabhängigen Verteilung des gestreuten Lichtes, wurde durch Henyey-Greenstein in [11] folgendermaßen approximiert: f HG (θ) = (1 g 2 ) 4π(1+g 2 2gcos(θ)) 3 2 (15) Diese Gleichung stellt eine Ellipse durch die Abweichung g dar. Dieser Zusammenhang ist in Abbildung 7 dargestellt. Der Asymmetriefaktor g beschreibt die bevorzugte Streurichtung [7]. Wenn g = +1 werden die Partikel nur in Vorwärtsrichtung gestreut. Ist g = 1 streuen sie in Rückrichtung. Der Fall g = 0 ist beschrieben als isotrope Verteilung [10]. Der Winkel θ liegt zwischen dem Lichtvektor und dem Betrachtervektor. Mit Hilfe des Punktprodukt zwischen den beiden Vektoren kann cos(θ) leicht berechnet werden. Abbildung 7. Auswirkungen von g [4] Für die Implementierung des Shaders haben wir die von Cornette [17] veränderte Henyey und Greenstein Phasen-
funktion gewählt, da diese einen angemessenen physikalischen Ausdruck gewährt: f HG (θ) = 3 (1 g)2 2 (2 g) 2 (1+cos 2 θ) (1+g 2 2 g cosθ) 3 2 Nach [17] ist der Asymmetriefaktor g gegeben durch: g = 5 9 u ( 4 3 25 81 u2 )x 1 3 + x 1 3 x = 5 9 u + 125 729 u3 + ( 64 27 325 243 u2 + 1250 2187 u4 ) 1 2 (16) (17) Der Parameter u definiert den atmosphärischen Zustand sowie die Wellenlänge und variiert im Intervall [0.7, 0.85]. Die Abbildung 8 zeigt das Ergebnis des Shaders durch die Henyey und Greenstein Phasenfunktion. Diese Phasenfunktion, welche normalerweise z.b. für die Streuung in menschlichem Gewebe verwendet wird, eignet sich, wie angenommen und in der Abbildung zu sehen ist, ebenfalls sehr gut zur Darstellung von Seide. Der Seiden-Effekt wirkt bei unserer Umsetzung der Henyey und Greenstein Phasenfunktion kombiniert mit Phong Shading sehr realistisch und kann somit zur Simulation von Seide verwendet werden. von textilen Materialien, wie Samt, Satin und Seide realisieren. Alle in diesem Paper vorgestellten Shader wurden mit der OpenGL Shading Language implementiert, wodurch sie plattformunabhängig und auf jeder modernen GPU einsetzbar sind. Beide, in Abschnitten 3 und 4 vorgestellten Modelle, eignen sich zur Simulation von Samt. Während das Modell von Minneart schnell und relativ einfach zu implementieren ist, bedarf die Kombination des Modells von Cook-Torrance mit dem von Oren-Nayar wesentlich mehr Aufwand. Beide Verfahren erzielen jedoch ein Ergebnis mit annehmbaren Samteffekt. Die Wirkung des einfacheren Minneart Modells erscheinnt jedoch etwas samtiger und heller als die Kombination von Cook-Torrance mit Oren-Nayar. Um das Aussehen von Satin zu simulieren, bietet das in Abschnitt 5 vorgestellte Modell von Ward eine geeignete Grundlage. Obwohl es im Grunde für metallische Oberflächen vorgesehen ist, haben wir gezeigt, dass es ebenfalls zur realistischen Simulation von Satin verwendet werden kann. Im Gegensatz zum Minneart Shader bzw. zur Cook- Toorance - Oren-Nayar Kombination wirkt der im Abschnitt 6 dargestellte Shader seidig und glänzend. Durch den Einsatz der Henyey-Greenstein Phasenfunktion in Kombination mit einem Phong Shading, kann eine sehr gute Simulation von Seide erreicht werden. Alle Shader wirken realistisch und sind als ästhetische Shader zur Simulation von feinen textilen Materialen einsetzbar. Das verwendete Modell eines Kleides in diesem Paper stammt von [8]. Literatur Abbildung 8. Kleid mit Henyey und Greenstein Shader 7 Zusammenfassung und Fazit Wir haben gezeigt, dass es möglich ist, mit Hilfe von Shadern der Kleidung von Avataren ein echtzeitfähiges und realistisches Aussehen zu ermöglichen. Die vorgestellten Shading Möglichkeiten verwenden zur Beleuchtung das Minneart Modell, eine Kombination aus dem Cook- Torrance und Oren-Nayar Beleuchtungsmodell, das Ward Modell und die Henyey und Greenstein Phasenfunktion. Auf diesen Modellen aufbauend lässt sich die Darstellung [1] BRAYFORD, D. ; HEWITT, W. T.: A Proposed Physical Based Multilayered Illumination Model. (2004), 60 65. http://dx.doi.org/10. 1109/TPCG.2004.3. ISBN 0 7695 2137 1 [2] COOK, R. L. ; TORRANCE, K. E.: A Reflectance Model for Computer Graphics. In: ACM Trans. Graph. 1 (1982), Nr. 1, 7 24. http://doi.acm.org/10. 1145/357290.357293. ISSN 0730 0301 [3] DEMPSKI, K. ; VIALE, E. : Advanced Lighting and Materials with Shaders. Plano, Texas : Wordware Publishing, Inc., 2005. 361 S. ISBN 1 55622 292 0 [4] FERGUSON, C. : Applications of Photon Mapping. http://web.cs.wpi.edu/ emmanuel. CS
563 Advanced Topics in Computer Graphics. zuletzt besucht am 19.05.07 [5] FOSNER, R. : Implementing Modular HLSL with RenderMonkey. http://www.gamasutra.com/ features/20030514. Gamasutra. zuletzt besucht am 09.05.07 [6] GEBHARDT, N. : Einige BRDF Modelle. www.irrlicht3d.org/papers/ BrdfModelle.pdf [7] GLASSNER, A. S.: Principles of digital image synthesis. Bd. 2 of 2 [8] GURUKUL: Super Model Pack v1.1. http://www. 3dgurukul.com. zuletzt besucht am 06.05.07 [9] HAGLER, J. : Schattierung : Schattierungsverfahren: Gouraud-Shading, Phong-Shading. http://www. dma.ufg.ac.at/app/link/grundlagen: 3D-Grafik/module/9728;jsessionid= C23E99AB59C2B1CD85F66A82D7AC713C. Grundlagen 3D-Grafik; Kunstuniversität Linz. zuletzt besucht am 01.05.07 [10] HENYEY, L. ; GREENSTEIN, J. : Diffuse Radiation in the Galaxy. In: Astrophys. J, vol. 93, p. 70-83 (1941) (1941), Januar, S. 70 83 [11] HOFFMAN, A. J. Naty und Preetham P. Naty und Preetham: Rendering Outdoor Light Scattering in Real Time. (2002). ati.de/developer/dx9/ ATI-LightScattering.pdf [17] NISHITA, T. ; SIRAI, T. ; TADAMURA, K. ; NAKAMAE, E. : Display of the earth taking into account atmospheric scattering. (1993), 175 182. http://doi.acm.org/10.1145/ 166117.166140. ISBN 0 89791 601 8 [18] PHARR, M. ; HUMPHREYS, G. : Physical Based Rendering : From Theory to Implementation. 1. Edition. San Francisco : Morgan Kaufmann Publishers (imprint of Elsevier), 2004. 1021 S. ISBN 0 12 553180 X [19] PREETHAM, A. J.: Modeling Skylight and Aerial Perspective in Light and Color in the Outdoors. In: SIGGRAPH 2003 Course (2003), 15. http://ati.de/developer/siggraph03/ PreethamSig2003CourseNotes.pdf [20] ROST, R. J.: OpenGL Shading Language. Boston[u.a.] : Addison-Wesley, 2006. 800 S. ISBN 978 0321334893 [21] UNIVERSITÄT REGENSBURG, P. Naturwissenschaftliche Fakultät I. Naturwissenschaftliche Fakultät II: Polarisation von Licht. http://www.physik. uni-regensburg.de/akf2002/hautnah/ Poster/polarisation.pdf [22] WILLMANN, S. : Streulichtspektroskopie mit Hilfe von Photonendichtewellen. www.ilm. uni-duesseldorf.de. Version: 1999. zuletzt besucht am: 19.05.2007 [12] IGARASH, T. ; NISHINO, K. ; NAYAR, S. K.: The Appearance of Human Skin. (2005). http://www.cs.columbia.edu/ techreports/cucs-024-05.pdf [13] MÖLLER, T. ; HAINES, E. : Real-Time Rendering. Natick, Massachusetts : A K Peters, Ltd., 1999. 482 S. ISBN 1 56881 101 2 [14] MOIDEL, C. : Bi-Directional Reflectance Distribution Functions. http://web.cs.wpi.edu/ emmanuel/courses/cs563/write_ups/ chuckm/chuckm_brdfs_overview.html. Worcester Polytechnic Institute - Department of Computer Science. zuletzt besucht am 21.05.07 [15] NAYAR, S. ; OREN, M. : Visual Appearance of Matte Surfaces. In: Science 267 (1995), February, Nr. 5201, 1153-1156. citeseer.ist.psu.edu/ nayar95visual.html [16] NEUMANN, A. : Constructions of Bidirectional Reflection Distribution Functions. Technischen UniversitÄat Wien - Fakult at f ur Technische Naturwissenschaften und Informatik. http://www.eg.org/ EG/DL/dissonline/doc/neumann.pdf. Version: Mai 2001. zuletzt besucht am: 01.05.2007