37
© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

Embed Size (px)

Citation preview

Page 1: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

Kapitel D

Grafik:Echtzeitgrafik

OpenGL

Page 2: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

ComputergrafikEchtzeitgrafik

Page 3: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Techniken im VergleichEchtzeitgrafik

Page 4: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Techniken im VergleichEchtzeitgrafik

Page 5: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Techniken im VergleichEchtzeitgrafik

Page 6: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

Techniken im Vergleich● Video - Demos

Page 7: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Computergrafik● Raytracing vs. Echtzeitgrafik

Echtzeitgrafik

Page 8: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● 3D-Grafik– Bis zu 3 millionen Dreiecken– 85.000 Shaderprogramme– Grafikkarte berechnet Bild autonom

● Grafikkarten– Leistung über 2 Tflops– bis zu 1600 Shader ALUs– Bis zu 300 Watt Leistungsaufnahme– Geschwindigkeitsverdopplung alle 6 Monate

Page 9: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik - ObjekteEchtzeitgrafik

● Definiert durch Eckpunkte (Vertizes)● Vertex

– Position– Farbe– Textur– Normale

Normal

EdgeMesh

Face

Page 10: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● Anwendung– Vorbereitung der Grafikdaten

● Auswahl der Daten – Kollisionserkennung– Physik– KI– Sound

Page 11: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik - MatrizenEchtzeitgrafik

Identität Translation

Rotation Rotation X-Achse

● Transformieren Objekte zur Anzeige● 4x4 Matrix

Page 12: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik

Modell- & KameratransformationEchtzeitgrafik

Page 13: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● Beleuchtung– Lichtquellen– Texturen– Farben

Page 14: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● Projektion– Zunächst Sichtbarkeitsfrustum– Transformation in Würfel– Koordinaten (-1, 1)

Page 15: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik

ClippingEchtzeitgrafik

Page 16: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik

Window- & ViewporttransformationEchtzeitgrafik

Page 17: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Echtzeitgrafik - TransformationenEchtzeitgrafik

Model-TransformModel-Transform

x

y

z

x

y

z

x

y

z

Bildschirm NormalisierteBildschirmkoordinaten

x

yx

y

x

y

z

Projection-

Transform Projection-

Transform

Viewport- Transform Viewport- Transform

1

-1

-1

1

Modellkoordinaten Sichtkoordinaten

Clippingkoordinaten

Page 18: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● Rasterung– Einfärbung der Pixel

● Interpolation– Sichtbarkeitsprüfung

Page 19: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

EchtzeitgrafikEchtzeitgrafik

● Baukasten mit Spezialeffekten

Page 20: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Objekte - RaytracingEchtzeitgrafik

● Quads oder Nurbs

Page 21: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

Objekte - EchtzeitgrafikEchtzeitgrafik

● Vielzahl von Dreiecken

Page 22: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

ShaderEchtzeitgrafik

● Früher: Bestimmung der Farbe● Heute: Vertex, Pixel, Geometry, Compute● Ausführung pro Pixel/Vertex● Softwaremodul

– Renderman Shader● Hardwaremodul

– Bestandteil aller modernen Grafikkarten– Unified Shader

Page 23: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

ShaderEchtzeitgrafik

● Vergleich Renderpipeline vs. Shader

Page 24: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.1

ShaderEchtzeitgrafik

Page 25: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

Tiefenpuffer● Ermöglicht Verdeckungseffekte● Pixel Entfernung zuordnen● Beim Zeichnen testen ob Entfernung geringer

Page 26: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● Schnittstelle für 3D-Computergrafik● Neben DirectX wichtigste Schnittstelle● Unabhängig von Plattform und Sprache● Zustandsautomat● Standardisierung durch Konsortium● Emulation von Funktionen● Farbe = Summe aller Lichtquellen

Page 27: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● reine Grafikausgabe● Glu

– Utility Bibliothek– Transformation Kamera– komplexe Objekte

● Glut– Abstraktion Fenstermanager– Eingabefunktionen

Page 28: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● Festlegen der Position

● Zeichnen von Dreiecken

● Zeichnen von Quadraten

glBegin(GL_TRIANGLES); // Drawing Using TrianglesglVertex3f( 0.0f, 1.0f, 0.0f); // TopglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom LeftglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right

glEnd(); // Finished

// Move Left 1.5 Units And Into The Screen 6.0glTranslatef(-1.5f,0.0f,-6.0f);

glBegin(GL_QUADS); // Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f); // Top LeftglVertex3f( 1.0f, 1.0f, 0.0f); // Top RightglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom RightglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left

glEnd(); // Done

Page 29: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

Page 30: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● Farbige DreieckeglBegin(GL_TRIANGLES); // Begin Drawing Triangles

glColor3f(1.0f,0.0f,0.0f); // Set The Color To RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top PointglColor3f(0.0f,1.0f,0.0f); // Set The Color To GreenglVertex3f(-1.0f,-1.0f, 0.0f); // Bottom LeftglColor3f(0.0f,0.0f,1.0f); // Set The Color To BlueglVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right

glEnd(); // Done Drawing A Triangle

Page 31: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

Page 32: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● Es wird wird 3D

glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front)

glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right)

glColor3f(1.0f,0.0f,0.0f); // RedglVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back)glColor3f(0.0f,1.0f,0.0f); // GreenglVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back)glColor3f(0.0f,0.0f,1.0f); // BlueglVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back)

Page 33: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

Page 34: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

TexturierungOpenGL

● Realistischere Darstellung● Rastergrafik auf Gitternetz

● 1D-/2D-/3D-Textur● Texturkoordinaten● Wrapping● Filterung

Page 35: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

TexturierungOpenGL

● Anwendungen:– Simulation von Materialien– Light Maps– Shadow Maps– Bumb Mapping– Environmental Mapping

Page 36: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL

● Erstellen einer Textur

● Festlegen der Texturkoodinaten

glGenTextures(1, &texture[0]); // Create The Texture glBindTexture(GL_TEXTURE_2D, texture[0]);glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,

TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

glBegin(GL_QUADS);// Front FaceglTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom LeftglTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Bottom RightglTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Top RightglTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left

Page 37: Grafik: Echtzeitgrafik OpenGL file© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm Kapitel D Grafik: Echtzeitgrafik OpenGL

© Alexander Weggerle, Virtuelle Präsenz WS10/11, Uni Ulm

4.2

OpenGLOpenGL