17
CG (Fach) / Übung 3 (Lektion)
-
Diese Lektion wurde von Missunderstand erstellt.
Diese Lektion ist leider nicht zum lernen freigegeben.
Anzeige
- Was ist eine Skybox? - 6 Texturen auf einem Würfel, um die Kamera - Dreht sich nicht selbst, Achsen immer in Weltachsen - Namen der Texturen geben Aufschluss über Anordnung
- Skybox immer um die Kamera → aber wie? 2 Wege: - Im Programm: Skybox immer die Position der Kamera zuweisen, - Im Shader: Transformation der Skybox mithilfe der View Matrix, aber ohne Translation
- Was macht CVK_CubeMapTexture? Anlegen der CubeMap als Textur glGenTextures( 1, &m_textureID); glBindTexture( GL_TEXTURE_CUBE_MAP, m_textureID); glTexParameterf( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameterf( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );glTexParameterf( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); glTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
- Was macht CVK_CubeMapTexture? Laden der Texturen bool CVK::CubeMapTexture::load( const char **fileNames) { GLint types[6] = { GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}; for(unsigned int i=0; i<6; i++) { const char* fileName = fileNames[i]; unsigned char *data = stbi_load(fileName, ...); ... glTexImage2D(types[i], ..., data); }
- Was macht CVK_CubeMapTexture? Setzen der Texturen void CVK::CubeMapTexture::bind(){ if (m_textureID != INVALID_OGL_VALUE) glBindTexture( GL_TEXTURE_CUBE_MAP, m_textureID); }
- Was ist ein samplerCube im Shader? - Textur mit 3D Zugriff - Berechnung des Schnittpunkts mit Skybox in vec3 passTexCoord; uniform samplerCube cubeMap; out vec4 fragmentColor; void main(){ fragmentColor = texture(cubeMap, passTexCoord); }
- Simple Skybox Darstellung Geometrie, die gerendert wird: Würfel Matrix, die verwendet wird: P * V (ohne Translation) * pos Welche Texturkoordinate?: Position im 3D
- Reflektion der Skybox auf einem Objekt Geometrie, die gerendert wird: Objekt an sich (Bsp. Teapot) Matrix, die verwendet wird?: Inverse ViewMatrix Welche Texturkoordinate?: Sichtstrahl reflektiert an Normale des Objekts Sonstige Variablen?: Farbe des Objekts, Textur des Objekts, Beleuchtung
- Normal Mapping - Wofür stehen die Farben? - Jeder Pixel repräsentiert eine Normale - RGB des Pixels entspricht XYZ der Normalen - Ausgehend von einer direkten Betrachtung der Oberfläche - Nutzung für Beleuchtung
- Normal Mapping - Wie kann man die Farben deuten? - Keine interpolierten Normalen - Sondern punktgenaue Normalen - Normale der Oberfläche weist genau auf die Kamera - Wie bekommt man die Textur in das Koordinatensystem des Objekts?
- Anzeige
- Wie bekommt man die Textur in das Koordinatensystem des Objekts? - Tangent Space - Oberfläche des Objekts - Lichtvektor in Objektkoordinatensystem
- Welche Vektoren sind für den Tangent Space wichtig? Ergeben Koordinatensystem des Objekts - Tangente - Binormale - Normale
- Wie werden sie berechnet? - Normale ist durch Objekt gegeben - Tangente, Bitangente und Normale bilden eine Orthonormalbasis, daher Berechnung derBitangente aus Tangente und Normale - Gesucht ist die Tangente
- Welche Informationen benötigt man? Berechnung der Tangente mit folgenden Informationen des Dreiecks: - Weltkoordinaten - Texturkoordinaten
- Unterschied zwischen Phong und Bump Mapping? - Keine Nutzung von interpolierten Flächennormalen - Nutzung der punktgenauen Normalen aus der Normal Map - Sonst kein Unterschied
- Was wird bei Bump Mapping auf der CPU berechnet? - Berechnung der Tangente je Vertex - Formel von oben - Neben Vertexposition und Normale auch Übergabe von Tangente an den Shader
- Unterschied des Shaders zu Phong? - Nutzung der TBN-Matrix im Vertex Shader - Berechnung der Position der Kamera und der Lichtquelle in TBN - Im Fragment Shader Normale aus Textur - Beleuchtung mit Normale aus Textur und Position der Lichtquelle und Kamera in TBN - → Im Grunde nur eine andere Normale