17

CG (Subject) / Übung 3 (Lesson)

-

This lesson was created by Missunderstand.

Learn lesson

This lesson is not released for learning.

Advertisement
  • 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? 
  • Advertisement
  • 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