Effekte 1 Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung...

Preview:

Citation preview

Effekte 1

Universität zu KölnHistorisch Kulturwissenschaftliche Informationsverarbeitung

Softwaretechnologie II (Teil 1): Simulation und 3D ProgrammierungDozent: Prof. Dr. Manfred Thaller

Referent: Artur Wilke

Inhalt

• Nebel• Beleuchtung• Alpha-Blending• Multi-Texturing

Warum Nebel?

Problem in bei größeren Landschaften (Out-Door): • Anzahl der zu zeichnenden Objekte nimmt zu• Bei großer Sichtweite „springen“ Objekte ins Bild• Unrealistisch

Nebel

Lösung:• Nachahmung der „Wirklichkeit“• Landschaft schein nahtlos in den Horizont

überzugehen• Zuschauer kann nicht sehen was „dahinter“ ist

Nebel

Vorteile:• Realismus wird suggeriert • Verhindern von Grafikfehlern• Atmosphäre wird erzeugt

Linearer Nebel

• Festgelegter Start- und Endwert (Distanz)• Einfluss des Nebel steigt zwischen diesen

Werten mit gleicher Höhe (linear)

f(d) = Ende – d d steht für die Tiefe des Pixels

Ende-Start

Exponentieller Nebel

• Nebelstärke nicht exponentiell zu.• Kein Anfangs- und Endwert• Beginnt direkt vor der Kamera und geht

theoretisch bis in Unendliche

Direct3D Berechnung

Einfacher exponentiellen Nebel:

f(d) = 1e^(d*dichte)

o Rückgabewert: 1=Kein Nebel; 0=vollständiger Nebel

Vertexnebel vs Pixelnebel

• Pixelnebel ist genauer, da Nebeleinfluss für jedes einzelne Pixel berechnet wird

Dadurch jedoch aufwändiger zu berechnen und leistungsintensiver (Performance!)

Daher wird für die meisten Fälle der Vertexnebel bevorzugt

Tiefennebel vs Entfernungsnebel

• Tiefennebel arbeitet mit Angabe der Z-Koordinate (Tiefe)

• Entfernungsnebel wird die tatsächliche Entfernung zur Kamera angegeben

• Tiefennebel ist schneller zu berechenen• Entfernungsnebel funktioniert nur im

Zusammenspiel mit Vertexnebel

Beleuchtung

• Die Eigenschaften von Licht komplett nachzuahmen ist rechnerisch zu aufwändig

• Besonders rechnungsintensiv ist die ReflexionDaher vereinfachte, lokale

Beleuchtungsmodelle

Grundprinzipien der Beleuchtung

• Verschiedene Lichttypen:- Punktlichter: Geben Licht in alle Richtungen ab

(Glühbirne)- Spotlichter: Geben Licht gebündelt in einem

Lichtkegel ab (Scheinwerfer)- Richtungslichter: Geben Licht in eine Richtung ab

(Sonne)

Grundprinzipien der Beleuchtung

• Oberflächen die senkrecht zum Licht stehen werden am stärksten beleuchtet, bei 90 Grad Winkel -> keine Beleuchtung

• Licht außerhalb seiner effektiven Reichweite wird nicht mehr berechnet

• Objekte werden einem Material zugeordnet welches gewisse Eigenschaften zum Licht hat

Farbe

• Licht ist eine Mischung aus Farben (RGB zum Beispiel)

• Wir sehen ein Objekt in jener Farbe, die am stärksten reflektiert wird.

Gleiches Prinzip in der Lichtberechnung:• Material hat eine Materialstreufarbe, Licht

eine Lichtstreufarbe• Streufarbe: engl. Diffuse Color

Farbe

Farbe= f * Lichtstreufarbe * Materialstreufarbe

f = Lichtbeeinflussfaktor (Werte zwischen [0;1]), 1 wäre volles Licht, 0 gar kein Licht

Weitere Beleuchtungen

• Hintergrundbeleuchtung (ambient color)• Glanzfarbe (specular color)• Eigenfarbe / Strahlungsfarbe (emissive color)

Wird bei Berechnung einfach hinzuaddiert

Beleuchtung auf Vertexbasis

• Erlaubt glattere ÜbergängeReicht in einigen Fällen nicht ausLösung Light –Mapping• Lichtfleck wird in Form ein Textur aufgelegtMulti-Texturing

Alpha-Blending

• Durch transparente Pixel bleiben opake Pixel sichtbar

• Z-Buffer kann dabei nicht genutzt werden• Transparente Pixel werden immer nach den

opaken gezeichnet

Alphawert

• Jede Farbe bekommt einen Alphawert• Je höher dieser, desto undurchsichtiger (opak)

Multi-Texturing

• Multi-Texturing erlaubt mehrere Texturen mit unterschiedlicher Auflösung übereinander zu legen

Speicher wird eingespart• Beispiel: Light-Maps zu Abbildung von

statischen Licht und Schatten

Multi-Texturing

• Erlaubt Effekte wie Partikel in einem Schutzschild

• Erlaubt Rotieren einer der Texturen in Echtzeit• Maximale Anzahl der Texturen wird von der

Grafikkarte bestimmt (2005 max. 16 Texturen)• Ersetzt Alpha-Blending• Einsatz als Beleuchtung (Light-Map)

Umsetzung

• Jede Texturschicht hat einen Operator und zwei oder drei Argumente

• Das Ergebnis wird ein Zielregister geschrieben, welches wiederum ein Argument der nächsten Textur sein kann

• Argument kann ein Register, Texturfarbe oder Streufarbe sein

• Zielregister kann das Standardregister oder ein temporäres sein

• Beispiel:Pixelfarbe = (Streufarbe * Textur1) + Textur2

Recommended