240 likes | 410 Views
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?.
E N D
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) • Rückgabewert: 1=Kein Nebel; 0=vollständiger Nebel
Vertexnebelvs 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 (ambientcolor) • Glanzfarbe (specularcolor) • Eigenfarbe / Strahlungsfarbe (emissivecolor) • 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. 182-225 • http://cdn2.sbnation.com/assets/3227507/RSG_GTAV_Screenshot_340.jpg • http://static.hothdwallpaper.net/51957c353196518884.jpg • http://www.itwissen.info/bilder/beispiel-fuer-alpha-blending-mit-verschiedenen-transparenzstufen.png • http://www.flipcode.com/archives/alpha.gif • http://img.tfd.com/cde/_ALPHACH.GIF