Grundlagen der Spieleprogrammierung ... - Universität Trier

syssoft.uni.trier.de

Grundlagen der Spieleprogrammierung ... - Universität Trier

Grundlagen der Spieleprogrammierung Sommer 2003Grundlagen derSpieleprogrammierungTeil I: 3D-GraphikKapitel 6: TexturemPeter SturmUniversität TrierOutline1. Übersicht und Motivation2. Mathematische Grundlagen3. Das Ideal: Photorealistisch (Raytracing, Radiosity)4. Die Realität: DirectX und OpenGL (Übersicht)5. Schritt 1: Modellierung und Drahtgitter6. Schritt 2: Texturen7. Schritt 4: Licht, Filter, etc.8. Schritt 5: Fortgeschrittene Techniken (Vertex-, Pixel-Shader, …)9. 3D-Hardware10.3D-Engines im Überblick, Cg von nvidia11.Spielekonsolen12.Zusammenfassung und Ausblick(c) Peter Sturm, Universität Trier 1


Grundlagen der Spieleprogrammierung Sommer 2003Motivation• Realistisch modellierbare Eigenschaften derOberflächenbeschaffenheit– Reflektionsgrad– Refraktionsgrad und Brechungsindex (IOR)– Rauhheit (Variation des Normalenvektors)– Filtereigenschaften bzgl. Farbe (Reflektion und Refraktion)• Was macht Holz zu Holz, Metall zu Metall?• Physikalische Modellierung praktisch unmöglich• Alternativansatz– „Bekleben“ der Objektoberfläche mit einer Tapete (Textur)• Texture– Visuell sichtbare Oberflächenstruktur– Color Map• Light Map– Vereinfachte Darstellung von Licht und SchattenEinsatzgebiete• Bump Map– Vereinfachte Darstellung der Oberflächenbeschaffenheit• Environment Map– Umgebung wird von Objekt reflektiert(c) Peter Sturm, Universität Trier 2


Grundlagen der Spieleprogrammierung Sommer 2003Komplizierter als man denkt …• Formatunterschiede– Abbildung meist rechteckiger Texturen auf das Drahtgitter(Dreiecke, etc.)• Dimensionsunterschiede– Abbildung der 2D-Textur auf 3D-Objekte• Alias-Effekte– Größenunterschiede– Wiederholungen– Räumliche Tiefe und TexturenAbbildung zweidimensionaler TexturenDarstellung von Alan Watt(c) Peter Sturm, Universität Trier 3


Grundlagen der Spieleprogrammierung Sommer 2003• Direkte 2D-Abbildung: Rechteck auf Rechteck( x , y ) → ( u,v)s• Projektive Transformation:sau + bv + c du + ev + fx = , y =gu + hv + i gu + hv + iInverse Mapping– i auf 1 setzen– 8 Gleichungen, 8 Unbekannte• Alternative Sichtweise⎛ x ⎞ ⎛ a⎜ ⎟ ⎜⎜ y ⎟ = ⎜d⎜ ⎟ ⎜⎝ w⎠⎝ gbehc ⎞⎛u⎞⎟⎜⎟f ⎟⎜v ⎟i ⎟⎜⎟⎠⎝q⎠• Gegeben:( x0,y0,u0,v0)...(x3,y3,u3,v3)Inverse binlineare Interpolation• Ecken des Rechtecks• Zugeordnete Koordinaten in der Textur( xs,ys,us)• Bildschirmkoordinate inkl. Tiefe– Projektionsmatrix T (Rechteck auf View)• Berechne( x , y , u )ttt1= T−⋅(x , yss, us)(c) Peter Sturm, Universität Trier 4


Grundlagen der Spieleprogrammierung Sommer 2003• Verwendung einer “Texture Map”• Liefert Farbwert an gegebenemPunkt• Zugriff im Verlauf der Projektionauf View (Z-Buffer)• Probleme– Untypischer Zugriff (Caching)– Speicherplatz• Zugang über inverse Projektion• Beispiel: TutorialColor MappingQualitätsaspekte• Alias-Probleme beim Abbilden– Pixel entspricht großemFlächenausschnitt (weit weg)– Pixel entspricht kleinemFlächenausschnitt (nah dran)– Rundunsfehler führen zu “Shimmering”-Effekten• Alternativen– Supersampling• Höhere “interne” Pixelauflösung• Z.B. 4x4 Supersampling• Sehr aufwendig– Mip Mapping(c) Peter Sturm, Universität Trier 5


Grundlagen der Spieleprogrammierung Sommer 2003• Vorheriges Downsampling der Texturen• Speicherung aller Versionen auf der Graphikkarte– Zwischen 5 und 10 Versionen• Geeignete LOD (Level of Detail) bestimmenMip Mapping• Vermeiden des Pixelflakerns (Shimering)– Farbwechsel je nach Standort des BetrachtersWeitere Verbesserungen• Filtertechniken– Point Sampling – Runden von (u,v) und Zugriff (kein Filter)– Bilinear• Gewichtetes Mittel benachbarter Texel– Mip Mapping• LOD pro Pixel• LOD pro Dreieck (schlecht bei räumlicher Tiefe)(c) Peter Sturm, Universität Trier 6


Grundlagen der Spieleprogrammierung Sommer 2003Beispiel: Point Sampling vs. BilinearWeitere Filtertechniken• Trilineares Filtern– Verbessern des MIP Bandings (Welche LOD Textur ist optimal?)– Abbrüche beim Übergang der Texturen– Bilineares Mitteln der Texel in beiden MIP Texturen– Lineares Mitteln über die Tiefe– Insgesamt 8 Texel wirken auf Pixel• Anisotrophes Filtern– Uneinheitlicher, die räumliche Tiefe, berücksichtigender Filter– Noch kein standardisiertes Verfahren(c) Peter Sturm, Universität Trier 7


Grundlagen der Spieleprogrammierung Sommer 2003Beispiel: TrilinearBeispiel:AnisotrophFilter Livetomshardware(c) Peter Sturm, Universität Trier 8


Grundlagen der Spieleprogrammierung Sommer 2003• Vorberechneter Licht- und Schattenwurf• Überlagern eines Punktes mit zwei TexturenLight MappingBilder: tomshardwareBump Mapping• Flachheit der Texturen wirkt unnatürlich• Viele “echte Texturen” entstehen durch kleine Variationenin der Oberflächengeometrie• Modellierung durch höhere Polygonanzahl unbezahlbar(c) Peter Sturm, Universität Trier 9


Grundlagen der Spieleprogrammierung Sommer 2003Dot3 Bump Mapping• Bestimmen der Normalen an einem Punkt O(u,v)• Neue Oberflächenposition ergibt sich ausO′ ( u,v)= B(u,v)⋅ NN=OOuu× O× O• Differenzieren liefert für kleine BO′uO′v= O= Ouvvv+ B+ BuvNNBeispieleExpandable(c) Peter Sturm, Universität Trier 10


Grundlagen der Spieleprogrammierung Sommer 2003• Bump MapVariationen• Prozedurales Bump Mapping– Displacement Mapping– Vertex ShaderDisplacement Mapping• In Kombination mit Textur– Texture Map bildet Grundlagefür Bump Mapwww.cosmiclight.comEnvironmental Mapping• Spiegelung der Umgebung in reflektiven Oberflächen• Ansatz– Kubus nähert den umgebenden Himmel an– 6 Kubusflächen berechnen– Bei Schnittberechnung• Reflektionsvektor ist Index inerreichte Kubusfläche• Vorzugsweise Standortunabhängigvorberechnet– Nur Annäherung(c) Peter Sturm, Universität Trier 11

Weitere Magazine dieses Users
Ähnliche Magazine