View
2
Download
0
Category
Preview:
Citation preview
Wiederholung - Beleuchtung Texturen
Ubungsstunde 8 zu Computergrafik 1
Diana und Dominik
Institut fur ComputervisualistikUniversitat Koblenz
14. und 15. Januar 2013
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Inhaltsverzeichnis
1 Wiederholung - BeleuchtungGouraud-ShadingPhong-ShadingFlat-ShadingVergleich
2 TexturenTexturen - IdeeTexturen in OpenGLTexturfilterungMipMaps
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Gouraud-Shading
Gouraud-Shading
Interpolieren der Farben
Farben der Eckpunkte werden durch entsprechenden Normalenan den Eckpunkten berechnet.
Fehlende Farbwerte werden durch bi-lineare Interpolation beider Scankonvertierung bestimmt.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Gouraud-Shading
Gouraud-Shading
Interpolieren der Farben
Eckpunktnormale und Lichtvektor bestimmen Beleuchtung
Nur die Eckpunkte werden wirklich korrekt beleuchtet, derRest nur interpoliert
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Phong-Shading
Phong-Shading
Interpolieren der Normalen
Die Normalen der Eckpunkte werden komponentenweiseinterpoliert.
Jedes Pixel wird mit seiner Normale beleuchtet.
Nicht Standard OpenGL.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Phong-Shading
Phong-Shading
Interpolieren der Normalen
Durch Interpolation der Normalen wird jedes Fragment einzelnbeleuchtet.
Korrekterer Eindruck (weniger flachigerer Eindruck)
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Flat-Shading
Flat-Shading
Interpolieren der Normalen
Nur Flachennormale wird benutzt
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Vergleich
Abbildung: Von links nach rechts: Flat-Shading, Gouraud-Shading,Phong-Shading
Quelle: http://www.ntsc-uk.com/feature.php?featuretype=tec&fea=BeautyPixelDeep
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Vergleich
Abbildung: Von links nach rechts: Flat-Shading, Gouraud-Shading,Phong-Shading
Quelle:http://www.hlc-games.de/forum/viewtopic.php?f=10&t=56
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Texturen in OpenGL
Idee
Eine Textur ist ein Bild, welches die Beschaffenheit vonOberflachen beschreiben kann.
Eine Textur soll wahrend der Rasterisierung auf ein Polygongemappt werden.
Vorteile: Hoherer Detaillierungsgrad moglich, Vereinfachungder Objekte.
Moglich in 1D, 2D oder 3D.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Abbildung: Ohne und mit Textur
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Beispiel Ziegelsteinwand
Ohne Texturen
Besteht aus: Vielen unterschiedlich farbigen Steinen undFugen.
Ohne Texturen musste jeder Stein und die Fugen ausPolygonen erstellt werden.
Jedem Stein musste eine Farbe zugewisen werden.
Ergebnis: Unnaturlich regelmaßige Wand und hoherRechenaufwand.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Beispiel Ziegelsteinwand
Mit Texturen
Ein einziges Polygon mit den Ausmaßen der Ziegelsteinwandwird erzeugt.
Das Bild einer Ziegelsteinwand wird als Textur auf dasPolygon gemappt.
Resultat: Naturlicher Eindruck und weniger Rechenaufwand,da nur ein einziges Objekt und eine Textur berechnet werdenmuss.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Abbildung: Ohne und mit Textur
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Texturkoordinaten
Texturmapping
Ein Textur-Element, welches auf ein Pixel gemappt wird nenntman Texel (Texture Element), analog zu Pixel.
Wahrend der Rasterisierung wird das entsprechende Texel zumPixel bestimmt.
Das Textur-Bild wird in einem (s,t)-Koordinatensystemangegeben.
Fur jedes Pixel auf dem Bildschirm wird ein Texture Look-Updurchgefuhrt, um die Farbe des Pixels zu bestimmen.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Abbildung: Texturkoordinaten
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen - Idee
Wo in der Pipeline wird texturiert?
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Textur anlegen
Schritte
1 Texturdefinition
2 Texturkoordinaten Eckpunkten zuordnen
3 Texturparameter
4 Textur einschalten
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Texturdefinition
Texturen laden
Eine Textur kann entweder ein Bild sein, oder wahrend derLaufzeit erzeugt werden.
Mittels glTexImage2D wird die Textur in den Video Memorygeladen.
Fur externe Texturen muss der Image-Loder selbst geschriebenwerden.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
glTexImage2D(target , level , components , width ,
height , border , format , type , data);
target → Art der Textur, bsp. GL TEXTURE 2D
level → Sofern kein MipMap angewandt wird, 0
components → Anzahl der Komponenten der Textur, bsp.GL RGB oder 3
width, height → Breite und Hohe der Textur
border → Breite des Randes
format → Format der Pixeldaten, bsp. GL RGB
type → Typ der Pixeldaten, bsp. GL UNSIGNED BYTE
data → Adresse der Daten im Hauptspeicher
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
glTexImage2D(target , level , components , width ,
height , border , format , type , data);
//Beispielaufruf
glTexImage2D (GL_TEXTURE_2D , 0, GL_RGB ,
imageWidth , imageHeight , 0, GL_RGB ,
GL_UNSIGNED_BYTE , imageData);
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Textur
Schritte
1 Texturdefinition
2 Texturkoordinaten Eckpunkten zuordnen
3 Texturparameter
4 Textur einschalten
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Texturkoordinaten Eckpunkten zuordnen
Mittels glTexCoord muss jedem Eckpunkt eineTexturkoordinate zugeordnet werden
glTexCoord2f (0.2, 0.8); glVertex3f(A);
glTexCoord2f (0.4, 0.2); glVertex3f(B);
glTexCoord2f (0.8, 0.4); glVertex3f(C);
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Textur
Schritte
1 Texturdefinition
2 Texturkoordinaten Eckpunkten zuordnen
3 Texturparameter
4 Textur einschalten
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Texturparameter
Texturen spezifizieren
glTexParameteri(GL TEXTURE 2D, name, value)
Den mit name assoziierten Parametern konnen Wertezugewiesen werden.
Beispiel, siehe Programmierbeispiel
Umgang mit Texturkoordinaten außerhalb des Intervalls [0,1]in s- und/oder t-Richtung.
name = bsp. GL TEXTURE WRAP T
value = GL CLAMP, GL REPEAT
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Textur
Schritte
1 Texturdefinition
2 Texturkoordinaten Eckpunkten zuordnen
3 Texturparameter
4 Textur einschalten
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Textur einschalten
Textur einschalten
glEnable(GL TEXTURE 2D);
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturen in OpenGL
Beispiel zu Texturparameter
Programmiereispiel
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Texturfilterung
Regelung wie eine Textur auf ein Objekt gemappt wird
Jede Textur hat eine feste Große.
Texturgroße und Objektgroße im Bild stimmen nichtunbedingt uberein.
Wenn eine Textur auf ein Objekt gerendert wird, muss sieentweder verkleinert oder vergroßert werden.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Farbwertbestimmung
Die Pixelgroße ist aber fast nie gleich der Texelgroße
Pixel konnen großer oder kleiner als Texel sein (je nachEntfernung des Pixels zur Kamera)
Also mussen wir uns uberlegen, wie dies behandeln
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Texturfilterung
Texturverkleinerung
Wenn viele Texel auf ein Pixel abgebildet werden.
Ein Pixel formt mehrere Texel.
Perspektivisch im Hintergrund notig.
Texturvergroßerung
Wenn ein Texel auf mehrere Pixel abgebildet wird.
Mehrere Pixel formen ein Texel.
Perspektivisch im Vordergrund notig.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Abbildung: Texelgroße != Pixelgroße
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Texturverkleinerung und -vergroßerung
Zuweisung uber die Funktion glTexParameter.
name = GL TEXTURE MIN FILTER, bzw.GL TEXTURE MAG FILTER
value = GL NEAREST, Punktfilter
value = GL LINEAR, Linearfilter
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
Texturfilterung
Farbwertbestimmung
Texturkoordinaten des aktuellen Pixels ergeben dieKoordinaten des roten Punktes.
Resultat fur GL NEAREST: der Texel-Farbwert der geringstenDistanz → gelb.
Resultat fur GL LINEAR: der interpolierte Farbwert derbenachbarten Texel-Farbwerte.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
MipMaps
MipMaps
Texturverkleinerung
Mipmaps sind sortierte Mengen, die dasselbe Bild inunterschiedlichen Auflosungen bereit halten.
Wenn bei Verkleinerungen mehrere Texel auf ein Pixelabgebildet werden mussen, stehen Mittelwerte schon bereit.
Losung fur Echtzeitanwendungen.
Niedrige Auflosungen ermoglichen schnellen Zugriff.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
MipMaps
Quelle: http://en.wikipedia.org/wiki/Mipmap
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Wiederholung - Beleuchtung Texturen
MipMaps
MipMaps
glTexParameter
Mittels level Parameter in glTexImage kann bestimmt werdenwelche MipMap gesetzt wird.
Nur relevant fur Texturverkleinerung, da Vergroßerungeneinfach zu losen sind.
Deswegen uber glTexParameter mit name =GL TEXTURE MIN FILTER MipMaps setzen.
value = GL NEAREST MIPMAP NEAREST,GL NEAREST MIPMAP LINEAR usw.
Gibt an wie zwischen und innerhalb der MipMap-Levelinterpoliert werden soll.
Diana und Dominik Arbeitsgruppe Computergrafik
Ubungsstunde 8 zu Computergrafik 1
Recommended