Effekte 1 Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: 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) = 1 e^(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 Reflexion Daher 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änge Reicht in einigen Fällen nicht aus Lösung Light –Mapping Lichtfleck wird in Form ein Textur aufgelegt Multi-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
Quellen: David Scherfgen: 3D-Spiele-Programmierung, S Screenshot_340.jpg Screenshot_340.jpg blending-mit-verschiedenen-transparenzstufen.png blending-mit-verschiedenen-transparenzstufen.png