Proseminar Computergrafik Open GL Marcel Heckel 23 05
- Slides: 38
Proseminar Computergrafik: Open. GL Marcel Heckel 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel
0. Inhalt 1. Allgemein Was ist Open. GL Geschichte 2. Etwas 3 D-Mathematik Das Koordinatensystem Vektoren Matrizen 3. Grundlegendes zu Open. GL Arbeitsweise Vertices und Primitiven Bibliotheken Funktionsbezeichnungen und Datentypen GLUT-Beispiel 5. Licht Sinn von Lichtarten Licht und Normalen Licht aktivieren 6. Texturen Sinn von Texturen Allgemein Texturkoordinaten und Wiederholung Filter Mip-Maps Texturen definieren 4. Zeichen Primitiven zeichnen Das ganze mit etwas Farbe Vertex-Behandlung Tests vor dem Schreiben in den Puffer Wichtige Funktionen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 2
1. Allgemein Was ist Open. GL? • Open. GL steht für Open Graphics Library • geräte- und betriebssystemunabhängige Bibliothek für qualitative 2 D und 3 D Grafiken und grafisches Rendering • von Silicon Graphics Inc. (SGI) entwickelt • Ursprünglich Open. GL für den Einsatz auf hochwertigen grafischen Workstations • Heute weit verbreiteten Standard vieler Betriebssysteme • von allen modernen Grafikkarten unterstützt • zweithäufigste genutzte Software-Schnittstelle (nach Direct 3 D) 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 3
1. Allgemein Geschichte • Entstand aus IRIS GL (SGI) • 1992 Open. GL-Standard von ARB (Architecture Review Board) definiert • ARB Mitglieder (u. a. ): Apple, ATI, Dell, IBM, Intel, NVidia, SGI, Sun • Microsoft (Gründungsmitglied) verlies ARB 2003 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 4
1. Allgemein Geschichte Versionsfolge: • 1. Juli 1992: • 1997 • 16. März 1998: • 14. Oktober 1998: • 14. August 2001: • 24. Juli 2002: • 29. Juli 2003: • 7. September 2004: Open. GL 1. 0 Open. GL 1. 1 Open. GL 1. 2. 1 Open. GL 1. 3 Open. GL 1. 4 Open. GL 1. 5 Open. GL 2. 0 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 5
2. Etwas 3 D-Mathematik Das Koordinatensystem • Kartesisches Koordinatensystem • x-Achse: unterer Bildschirm-Rand • y-Achse: linker Bildschirm-Rand • in den Monitor blickt man entlang der negativen z-Achse 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 6
2. Etwas 3 D-Mathematik Vektoren • Länge ein Vektors: |v|= • Einheitsvektor: v‘ = v / |v| • (Punkt-/)Skalarprodukt: v • u = v. x · u. x + v. y · u. y + v. z · u. z = cos a · |v|·|u| • Kreutzprodukt: v = u × w = ( u. y · w. z - u. z · w. y ; u. z · w. x - u. x · w. z ; u. x · w. y - u. y · w. x) 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 7
2. Etwas 3 D-Mathematik Matrizen • Viele Berechnungen über 4 x 4 -Mariezen (z. B. Position/Ausrichtung, Projektion, …) • Grundzustand ist die Einheitsmatrix • Nutzung als Position/Ausrichtung: (a 01, a 02, a 03) – Links (a 05, a 06, a 07) – Oben (a 09, a 10, a 11) – Vorn (a 13, a 14, a 15) – Position 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 8
2. Etwas 3 D-Mathematik Matrizen Translation: Skalierung: Rotation: 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 9
2. Etwas 3 D-Mathematik Matrizen Multiplikation: • 2 Matrix-Operation werden durch Matrix. Multiplikation verbunden • Matrix-Multiplikation ist nicht kommutativ • Wichtig welche Reihenfolge: erst Rotation und dann Translation, oder umgekehrt. 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 10
3. Grundlegendes zu Open. GL Arbeitsweise • schlankes hardwareunabhängiges Interface • keine Unterstützung für Fenster bzw. Benutzereingaben • keine Unterstützung für komplizierte 3 DFormen (Autos, Menschen, Bäume, …) • Modell werde aus einfachen Primitiven wie Dreiecke, Linien und Punkte zusammengesetzt 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 11
3. Grundlegendes zu Open. GL Arbeitsweise • Open. GL ist ein Zustandsautomat • Einmal gesetzte Einstellungen beleiben erhalten und gelten für die folgenden Operationen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 12
3. Grundlegendes zu Open. GL Vertices und Primitiven 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 13
3. Grundlegendes zu Open. GL Vertices und Primitiven 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 14
3. Grundlegendes zu Open. GL Vertices und Primitiven • Vierecken und Polygonen müssen konvex (nach außen gewölbt) sein, sonst nicht definierte Ausgabe richtig 23. 05. 2006 - Proseminar Computergrafik: Open. GL falsch Marcel Heckel 15
3. Grundlegendes zu Open. GL Bibliotheken • Standardbibliothek: opengl 32. dll • Alternativ: glew 32. dll (mit Extrension. Unterstützung) • glu. dll - Open. GL Utility Library (viele nützliche Standardfunktionen zum Zeichnen) • glut. dll - Open. GL Utility Toolkit (Funktionalität zu Fenstererzeugung und Nutzereingaben) 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 16
3. Grundlegendes zu Open. GL Funktionsbezeichnungen und Datentypen • Beginnen mit gl…/glut… • Funktionen nicht überladen verschiedene Funktionssuffixe für verschieden Datentypen • Eigene Datentypbezeichnungen z. B. : GLint 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 17
3. Grundlegendes zu Open. GL Funktionsbezeichnungen und Datentypen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 18
3. Grundlegendes zu Open. GL GLUT - Beispiel void init() { /* Initialisierung des Programms */ } void render. Scene(void) { /* Szene zecihen */ void glut. Swap. Buffers(); } void change. Size(int w, int h) {} void key. Function(unsigned char key, int x, int y) {} int main(int argc, char* argv[]) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glut. Init. Window. Position(100, 100); glut. Init. Window. Size(400, 400); glut. Create. Window("kleines Open. GL Programm" ); glut. Display. Func(render. Scene); glut. Idle. Func(render. Scene); glut. Reshape. Func(change. Size); glut. Keyboard. Func(key. Function); init(); glut. Main. Loop(); return 0; } 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 19
4. Zeichen Primitiven zeichnen • Vertex-Angaben mit gl. Vertex*() • nur zwischen gl. Begin(…) und gl. End() • Bei gl. Begin(GLenum mode) die gewünschte Primitive angeben 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 20
4. Zeichen Primitiven zeichnen gl. Begin(GL_TRIANGLES); gl. Vertex 3 d(0. 0, 0. 5, 0. 0); gl. Vertex 3 d(0. 0, 0. 0); gl. Vertex 3 d(0. 5, 0. 0); gl. Vertex 3 d(0. 0, -0. 5, 0. 0); gl. Vertex 3 d(0. 5, -0. 5, 0. 0); gl. End(); gl. Begin(GL_QUADS); gl. Vertex 3 d(-0. 9, 0. 0); gl. Vertex 3 d(-0. 1, 0. 9, 0. 0); gl. End(); 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 21
4. Zeichen Das ganze mit etwas Farbe • Verschieden Farben für jedes Vertex möglich Interpolation zw. den Farben jedes Vertices • 4 Farbanteile - RGBA: A - Alphawert gl. Begin(GL_TRIANGLES); gl. Color 3 f(1. 0 f, 0. 0 f); gl. Vertex 3 f( 0. 0 f, 1. 0 f, 0. 0 f); gl. Color 3 f(0. 0 f, 1. 0 f, 0. 0 f); gl. Vertex 3 f(-1. 0 f, 1. 0 f); gl. Color 3 f(0. 0 f, 1. 0 f); gl. Vertex 3 f( 1. 0 f, -1. 0 f, 1. 0 f); gl. End(); 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 22
4. Zeichen Vertex-Behandlung 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 23
4. Zeichen Vertex-Behandlung Projektion 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 24
4. Zeichen Tests vor dem Schreiben • Depth-Test: wichtigster Test: Prüfung ob neues Pixel eine kleineren Tiefenwert hat als das alte • Alpha-Test: Prüfung ob der Alfawert einer Bedingung entspricht (>, <, = Referenzwert) • Stencil-Test: Bitmap welches die Bereiche kennzeichnet, in die nicht gezeichnet werden soll markiert. 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 25
4. Zeichen Wichtige Funktionen • gl. Matrix. Mode(); • gl. Load. Matrix(); gl. Mult. Matrix(); • gl. Push. Matrix(); gl. Pop. Matrix(); • gl. Translate(); gl. Rotate(); gl. Scalar(); glu. Look. At(); • gl. Frustum(); gl. Ortho(); glu. Perspective(); • gl. Viewport(); 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 26
5. Licht Sinn von Licht • 3 D-Szenen wirken wesentlich realistischer • Szenen in verschiedenen Farben darstellen ohne die ganzen Eigenschaften neu zu setzten z. B. : Tageslicht / Sonnenuntergang Weiteres: • Open. GL unterstützt bis zu 8 Lichtquellen • Abstrahlwinkel und Richtung können auch definiert werden 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 27
5. Lichtarten • ambient (umgebendes) Licht: allg. Lichtverhältnissen • diffuse (zerstreutes/ausbreitendes) Licht: matte Oberflächen • specular (reflektiertes) Licht: glänzenden Oberflächen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 28
5. Licht Normalen • Oberflächen-Richtung muss für jede Primitive/Normale angegeben werden • Sollten Länge 1 haben • Beleuchtung der Fläche in Anteilen, wie die Normal zur Lichtquelle steht • Gewölbte Flächen: Normalen mehr der Wölbung entsprechen lassen, nicht genau senkrecht zur Teilfläche 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 29
5. Licht aktivieren • Licht ist standardmäßig ausgeschaltet: gl. Enable(GL_LIGHTING); gl. Enable(GL_LIGHT 0); • Einstellungen können mit gl. Lightf{v} vorgenommen werden: Farbe, Position, Abstrahlwinkel, Abschwächung. 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 30
6. Texturen Sinn von Texturen • Objekte mit vielen kleine Details währen sehr aufwendig zu zeichnen • Lösung: Über eine einfache Fläche ein Bild, das die Details zeigt, legen • Ist wesentlich schneller und sieht (meist) auch besser aus. 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 31
6. Texturen Allgemein • Arrays aus RGB(A)-Werten • Bis Open. GL 1. 5: Texture-Maße mussten 2 er-Potenz sein (2^n) seit 2. 0 nicht mehr • mögliche Dimensionen: 1 D, 2 D und 3 D!! 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 32
6. Texturen Texturkoordinaten und Wiederholung • Angabe mit gl. Tex. Coord() 2 D: (0. 0, 0. 0) linke untere Ecke (1. 0, 1. 0) rechte obere Ecke • Bezeichnung: s, t, r (Breite, Höhe, Tiefe) • Bei Werten außerhalb [0. 0; 1. 0]: Wiederholung der Textur (std. ) oder Streckung der letzten Reihe der Textur 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 33
6. Texturen Texturkoordinaten und Wiederholung • gl. Tex. Parameteri(GL_TEXTURE_2 D, GL_TEXTURE_S_WRAP, *** ); • gl. Tex. Parameteri(GL_TEXTURE_2 D, GL_TEXTURE_T_WRAP, *** ); *** = GL_REPEAT 23. 05. 2006 - Proseminar Computergrafik: Open. GL *** = GL_CLAMP Marcel Heckel 34
6. Texturen Filter • Magnifikation: starke Vergrößerung • Minifikation: starke Verkleinerung Allgemein 2 Filtertypen: GL_NEAREST: das Pixel was am ehesten passt (große Pixel bei Vergrößerung) GL_LINEAR: Mittelwert aus dem umgebenden Pixel (langsamer, unscharf bei Vergrößerung) Verkleinerung: ähnliche Ergebnisse beider Verfahren; Problem: „blinkende“ Texturen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 35
6. Texturen Mip-Maps • • Mip = „multum in parvo“ - „viel auf kleinem Platz“ mehrere verkleinerte Versionen vom Originalbild Verhindert „blinkende“ Texturen. schneller 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 36
6. Texturen definieren • gl. Enable(GL_TEXTURE_2 D); • gl. Tex. Image 2 D – normal • glu. Build 2 DMipmaps – autom. Mipmap Erzeugung Aktuelle Einstellungen von gl. Tex. Parameter werden für die Textur übernommen 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 37
Quellen • Jackie Neider, Tom Davis, Mason Woo: „Open. GL Programming Guide“, Release 1, 1994 • http: //nehe. gamedev. net • http: //www. lighthouse 3 d. com/opengl/glut/ • http: //graphics. uni-sb. de/Courses/ws 9900/cgseminar/Ausarbeitung/Philipp. Walter/ • http: //www. opengl. org • http: //de. wikipedia. org 23. 05. 2006 - Proseminar Computergrafik: Open. GL Marcel Heckel 38
- Dirk heckel
- Bambina in piedi heckel
- Daniel heckel
- 영국 beis
- On delay timer coil symbol
- Open hearts open hands
- Saint marcel foot
- Marcel bajka
- Marcel claassen
- Marcel goldberg schindler's list
- Marcel pawlak
- Complexe sportif marcel bec - terrain foot/rugby
- Birth of conceptual art
- Yvonne pouperon
- Icarus from jazz
- Marcel meeuwissen
- Uni hamburg studienbüro bwl
- Marcel den dikken
- Marcel neuts
- Marcel duchamp kolo bicyklu
- Zone marcel dubé thèmes
- Marcel bajka
- Vesna parun ide zima
- Ritam na plohi
- Collège marcel bouvier
- Marcel warmerdam
- Portrait de marcel proust
- Marcel duchamp şişe askılığı
- Saint marcel foot
- Marcel reynaert
- Marcel swob
- Onno peer
- Duc de mirnouf
- Marcel wildgen
- Slidetodoc.com
- Marcel duchamp bride
- Etti profesori
- Saint marcel foot
- Marcel dittrich