CGVert. Projekt. 3D-Scannen. Multimarker Tracking. Triangulierung. Low-Cost Scanner P 4. Ball-Erkennung. 3D Positionsbestimmung. Kalmanfilter. CGVert.

Größe: px
Ab Seite anzeigen:

Download "CGVert. Projekt. 3D-Scannen. Multimarker Tracking. Triangulierung. Low-Cost Scanner P 4. Ball-Erkennung. 3D Positionsbestimmung. Kalmanfilter. CGVert."

Transkript

1 Seminar-Vortrag Projektgruppen der Vertiefung Computergrafik (Vorträge am ab 8.50Uhr) Themenauswahl Bis heute ( ) um 16.00Uhr Vortrag Am Dauer: 30min Medium Beamer und/oder echte Folien Struktur 1/3 Motivation, Problemstellung, Überblick, Grund-Gedanken/-Konzepte,... Projekt 3D-Scannen Multimarker Tracking Triangulierung Low-Cost Scanner Name Inhaltliche Gliederung (evtl. als roter Faden durch den Vortrag) 2/3 Spezifischer Teil Detailliert Behandlung des Kernthemas Zusammenfassung (der wesentlichen Teile) Ausarbeitung (Noten-relevant) Kurze Besprechung 1 Woche vor dem Vortrag ( ) Folien zum Zeitpunkt des Vortrags HTML-Dokumentation zum Zeitpunkt der Projektabgabe P 4 Ball-Erkennung 3D Positionsbestimmung Kalmanfilter FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 3 Projektaufteilung 3D-Scanner Projektaufteilung P 4 Thema Multimarker-Tracking Gesamtanwendung Literatur u/artoolkit Kato, H., Billinghurst, M.; Marker Tracking and HMD Calibration for a video-based Augmented Reality Conferencing System; Proceedings of the 2nd International Workshop on Aug-mented Reality (IWAR 99). Thema Triangulierung Gesamtanwendung Literatur Curless, B., Levoy, M.; Better Optical Triangulation through Spacetime Analysis; IEEE Int t Conference on Computer Vision '95, pp Thema Low-Cost Laser-Scans Gesamtanwendung Literatur Winkelbach, S., Molkenstruck, S.,Wahl, F.; Low-Cost Laser Range Scanner and Fast Surface Registration Approach; In: Franke, K.; Müller, K.-R.; Nickolay, B.; Schäfer, R. (Eds.): Pattern Recognition (DAGM 2006), Lecture Notes in Computer Science 4174, ISBN: , Springer 2006, pp Thema Ball-Erkennung Tracking (ARToolkit) Gesamtanwendung Literatur u/artoolkit Bruce, J.; Balch, T., Veloso, M.; Fast and Inexpensive Color Image Segmentation for Interactive Robots; In Proceedings of IROS Thema 3D (Ball)positionsbestimmung Tracking (ARToolkit) Gesamtanwendung Literatur u/artoolkit Forsyth, D., Ponce, J.; Computer Vision - A Modern Approach; Pearson, 2003 Hartley R., Zissermann, A..; Multiple View Geometry in Computer Vision; Cambridge University Press, 2004 Thema Kalmanfilter Tracking (ARToolkit) Gesamtanwendung Literatur u/artoolkit Welch, G., Bishop, G.; An Introduction to the Kalman Filter; Siggraph Course FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 5

2 OpenGL Übersicht: OpenGL & ergänzende Bibliotheken OpenGL = Open Graphics Library C-Bibliothek (~150 Befehle) als Schnittstelle zur (3D)-Grafikhardware Implementierung eines Zustandsautomaten Beschränkung sich auf Darstellung von Punkten, Linien und Polygonen Software-Implementierungen (Mesa) sorgen für Kompatibilität Plattform und Sprachunabhängig Windows, MacOS, Unix/Linux,... Bindings für Python, C/C++, Java, Fortran, Perl, Ada,... Vorteile von OpenGL Hohe Stabilität, Zuverlässigkeit, Portierbarkeit Erweiterbar Hohe Skalierbarkeit (Client-Server System) Einfache Handhabung Gute Dokumentation FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 6 GLX WGL PGL AGL Anwendung GLUT (wxwidget, Ot,...) System (Software/Hardware) GLU OpenGL FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 7 Die OpenGL Renderpipeline Geometrie Die OpenGL Datentypen OpenGL definiert (in Anlehnung an C) eigene Datentypen Modelview Transformation Beleuchtung Perspektivische Transformation Viewport Transformation Operationen pro (Eck-)Punkt (Transformation und Beleuchtung) 1.Transformation in Kamerakoordinaten 2. Berechnung der Eckpunktfarben 3. Abbildung in View-Frustum 4. Verschiebung/Skalierung in VP OpenGL Typ GLbyte GLshort Datentyp 8-bit integer 16-bit integer Suffix b s Skankonvertierung Texture Abfrage Rasterisierung Texture Anwendung Nebel 1.Pixelberechnung (Bresenham,...) 2. Abfrage der Texturfarbwerte 3.Mischen von Textur- und Beleuchtungs-Farbe 4. Atmosphärische (globale) Effekte GLint GLfloat, GLclampf GLdouble, GLclampd 32-bit integer 32-bit float 64-bit double i f d Scissor/Alpha/Stencil/Depth Test Blending Operationen pro Fragment Dithering/ logische Ops. Alle Operationen basieren auf Pixel-Position 1.Löschen/Setzen von Pixeln 2.Mischen von Pixelfarbe und anderen Framebuffer Farben 3. Anwendung von Filtern GLubyte, GLboolean GLushort GLuint, GLenum, GLbitfield 8-bit unsigned byte 16-bit unsigned short 32-bit unsigned integer ub us ui Frame Buffer FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 9

3 OpenGL Nomenklatur OpenGL unterstützt kein Überladen von Funktionen Die Namen aller Funktionen von OpenGL und der Hilfsbibliotheken GLU und GLUT werden nach folgendem Schema gebildet {gl,glu,glut}<funktionsname>[{d,f,u,...}][v] Das Präfix gibt an, ob es sich um eine OpenGL, GLU oder GLUT Funktion handelt Das Suffix gibt den Datentyp der Parameter der Funktion an Werden die Parameter als Vektor erwartet, so endet der Funktionsname mit einem v Konstanten werden groß geschrieben (Präfixe: GL_, GLU_, GLUT_) Beispiele für Namen von OpenGL Konstanten und Funktionen: GL_POINTS, GLU_FILL, GLUT_DOUBLE glfrustum, glvertex3f, glmaterialf, glmaterialfv glulookat, gluperspective glutsolidteapot, glutswapbuffers FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 10 Ein OpenGL Befehl OpenGL Funktion Anzahl der Komponenten 2- (x,y) 3- (x,y,z) 4- (y,x,z,w) glvertex3fv(...) Daten-Typ b - byte ub - unsigned byte s - short us - unsigned short i - int ui - unsigned int f - float d - double Vektor Bei der skalaren Form des Befehls wird das v weggelassen FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 11 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Punkte glbegin(gl_points) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 12 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Punkte glbegin(gl_lines) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 13

4 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode Wert von mode GL_POINTS Punkte GL_POINTS Punkte GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) glbegin(gl_line_strip) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) glbegin(gl_line_loop) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 15 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode Wert von mode GL_POINTS Punkte GL_POINTS Punkte GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) glbegin(gl_triangles) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) glbegin(gl_triangle_strip) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 17

5 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode Wert von mode GL_POINTS Punkte GL_POINTS Punkte GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINES Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_STRIP Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_LINE_LOOP Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUADS Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_QUAD_STRIP Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) GL_POLYGON Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) glbegin(gl_triangle_fan) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) glbegin(gl_quads) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 19 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Punkte Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) Polygone in OpenGL müssen konvex sein Ein Polygon P heißt konvex, wenn die beiden folgenden äquivalenten Bedingungen erfüllt sind Liegen zwei Punkte im Inneren von P, so liegt auch deren Verbindungslinie vollständig innerhalb von P Der Schnitt von P mit einer Geraden ist immer eine Strecke Dreiecke sind immer konvexe Polygone! Konvexe Polygone Nicht-Konvexe Polygone glbegin(gl_quad_strip) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 21

6 Die OpenGL Primitive glbegin(glenum mode) legt die OpenGL Primitive fest Wert von mode GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Punkte glbegin(gl_polygon) glvertex2f( 1.0, 0.0 ) glvertex2f( 0.5, 0.866) glvertex2f(-0.5, 0.866) glvertex2f(-1.0, 0.0 ) glvertex2f(-0.5,-0.866) glvertex2f( 0.5,-0.866) Linien: Punkte 2n-1 und 2n definieren eine Linie (N Punkte erzeugen N/2 Linien) Linienverbund: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N-1 Linien) Geschlossene Linie: Punkte n und n+1 definieren eine Linie (N Punkte erzeugen N Linien) Jeweils drei Punkte (3n-2, 3n-1, 3n) bilden ein Dreieck (N Punkte erzeugen N/3 Dreiecke) Dreiecksverbund: Jeder Punkt nach den ersten beiden erzeugt ein Dreieck (N Punkte erzeugen N-2 Dreiecke) Dreiecksverbund: Punkt 1, n+1, n+2 bilden Dreieck n (N Punkte erzeugen N-2 Dreiecke) Jeweils vier Punkte (4n-3, 4n-2, 4n-1, 4n) bilden ein Viereck (N Punkte erzeugen N/4 Vierecke) Vierecksverbund: Punkte 2n-1, 2n, 2n+2, 2n+1 bilden das Viereck n (N Punkte erzeugen N/2-1 Vierecke) Konvexes Polygon (Wird durch die Punkte 1 bis N definiert) (-0.5,0.866,0.0) (-1.0,0.0,0.0) (-0.5,-0.866,0.0) (0.5,0.866,0.0) (1.0,0.0,0.0) (0.5,-0.866,0.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 22 Zusätzliche (eck-)punktspezifische Daten Zwischen glbegin(glenum mode) und dürfen die folgenden Befehle stehen Funktion glvertex*() glcolor*() glindex*() glnormal*() gltexcoord*() glmultitexcoord*arb() gledgeflag*() glmaterial*() glarrayelement() glevalcoord*(), glevalpoint*() glcalllist(), glcalllists() Setzt Eckpunkt-Koordinaten Setzt aktuelle Farbe Setzt aktuellen Fabindex Setzt Koordinaten eines Normalen-Vektors Setzt Textur-Koordinaten Setzt Textur-Koordinaten für multitexturing Kontrolliert das Zeichnen von Kanten Setzt Material-Eigenschaften Extrahiert Eckpunkt Array Daten Erzeugt Koordinaten Führt eine Display-Liste aus FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 23 Die GLUT Primitive (Nomenklatur) Die GLUT Primitive (Übersicht) Das OpenGL Utility Toolkit stellt zusätzliche Funktionen zur Erzeugung einfacher 3D Objekte zur Verfügung Die Namen dieser Funktionen werden nach folgendem Schema gebildet glut{wire Solid}{Sphere,Cube,...}(<parameter>) glut{wire Solid} Sphere(GLdouble radius, GLint slices, GLint stacks) Cone(GLdouble base, GLdouble height, GLint slices, GLint stacks) Cube(GLdouble size) Beispiel glutwiresphere(1.0,20,20) glutsolidsphere(1.0,20,20) Octahedron(void) Tetrahedron(void) Icosahedron(void) Dodecahedron(void) Torus(GLdouble innerradius, GLdouble outerradius, GLint nsides, GLint rings) Teapot(GLdouble size) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 25

7 Ein einfaches OpenGL Programm Die reshape Funktion from OpenGL.GLUT import * from OpenGL.GLU import * from OpenGL.GL import * import sys, math def init(width, height): """Initialize an OpenGL window""" glclearcolor(0.0, 0.0, 1.0, 0.0) #blue bg glmatrixmode(gl_projection) glloadidentity() glortho(-1.5, 1.5, -1.5, 1.5, -1.0, 1.0) def main(): glutinit(sys.argv) glutinitdisplaymode(glut_single GLUT_RGB) glutinitwindowsize(500, 500) glutcreatewindow("einfaches OpenGL Programm") glutdisplayfunc(display) #register displayf. init(500,500) #initialize OpenGL state def reshape(width, height): """ adjust projection matrix to window size""" glviewport(0, 0, width, height) glmatrixmode(gl_projection) glloadidentity() if width <= height: glortho(-1.5, 1.5,\ -1.5*height/width, 1.5*height/width,\ -1.0, 1.0) else: glortho(-1.5*width/height, 1.5*width/height,\ Ohne reshape Funktion def display(): """Render all objects""" glclear(gl_color_buffer_bit) glcolor3f(.75,.75,.75) #gray color glbegin(gl_polygon) glvertex3f( 1.0, 0.000, 0.0) glvertex3f( 0.5, 0.866, 0.0) glvertex3f(-0.5, 0.866, 0.0) glvertex3f(-1.0, 0.000, 0.0) glvertex3f(-0.5, , 0.0) glvertex3f( 0.5, , 0.0) glflush() glutmainloop() #start even processing if name == " main ": main() -1.5, 1.5,\ -1.0, 1.0) glmatrixmode(gl_modelview) def main():... glutreshapefunc(reshape) #register reshapefunc.... Mit reshape Funktion FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 27 Modelview-/Projektions-Matrix OpenGL speichert alle geometrischen Transformationen in zwei Matrizen Modelview-Matrix Transformation der Objekte (Translation, Rotation,...) Position (Transformation) der Kamera (des Auges) Pojektions-Matrix Speichert die Art der Abbildung Orthographische, Perspektivische,... Projektion Es kann jeweils nur eine der beiden Matrizen (die aktive) verändert werden Die aktive Matrix wird ausgewählt mittels glmatrixmode(gl_modelview) glmatrixmode(gl_projection) Alle nachfolgenden Matrix-Operationen beziehen sich auf die aktive Transformations-Matrix FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 28 Transformationen Alle Transformationen in OpenGL sind Multiplikationen mit oder Setzen der aktiven Matrix (Modelview-/Projektions-Matrix) Die OpenGL Matrizen können direkt verändert werden glloadidentity() glloadmatrix[f d](m) glmultmatrix[f d](m) Die Matrix-Elemente sind in Spalten gruppiert (column-major) " m[0] m[4] m[8] m[12] % $ ' $ m[1] m[5] m[9] m[13] ' $ m[2] m[6] m[10] m[14] ' $ ' # m[3] m[7] m[11] m[15] & Einfacher mittels vordefinierte Matrizen für Translation: gltranslate[d f](x, y, z) Rotation: glrotate[d f](angle, x, y, z) Skalierung: glscale[d f](x, y, z) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 29

8 Zusammengesetzte Transformationen Matrix Stack Transformationen werden in umgekehrter Reihenfolge durchgeführt gltranslatef(-0.5, 0.0, 0.0) glrotatef(30.0, 0.0, 0.0, 1.0) gltranslatef(-0.5, -0.5, 0.0) glbegin(gl_quads) glvertex2f(0.0, 0.0) glvertex2f(1.0, 0.0) glvertex2f(1.0, 1.0) glvertex2f(0.0, 1.0) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 30 OpenGL verwaltet (mindestens) 32 Modelview- und 2 Projektions- Matrizen auf jeweils einem Stack Matrix-Stack erleichtert Verwaltung hierarchischer Szenen Oberste Matrix ist die aktuelle Modellview- bzw. Projektions-Matrix Aktiver Matrix-Stack wird mit Hilfe von glmatrixmode() bestimmt 2 Methoden zur Manipulation der oberste Matrix des aktiven Stacks kopieren und auf den Stack legen: glpushmatrix() (Die 2 obersten Matizen sind danach gleich) vom Stack holen: glpopmatrix() (Inhalt der Matrix geht verloren) glpushmatrix glpopmatrix def zeichneradundschrauben(): zeichnerad() for i in range(0,6): glpushmatrix() glrotatef(60.0*i, 0.0, 0.0, 1.0) gltranslatef(6.0, 0.0, 0.0) zeichneschraube() glpopmatrix() Matrix-Stack FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 31 Matrix Stack Beispiel Kamera-Position und -Orientierung def zeichnequadrate(x,y,z): gltranslate(x, y, z) #7 glscalef(0.75, 0.75, 1.0) #6 gltranslatef(-0.1, 0.0, 0.0) #5 glpushmatrix() #Modelview Transformation gltranslatef(-0.5, 0.0, 0.0) #3 glrotatef(30.0, 0.0, 0.0, 1.0) #2 gltranslatef(-0.5, -0.5, 0.0) #1 glcolor3f(1.0, 0.0, 0.0) glrectf(0.0, 0.0, 1.0, 1.0) # G=M7*M6*M5*M3*M2*M1 glpopmatrix() glpushmatrix() gltranslatef(1.0, 0.0, 0.0) #4 glrotatef(45.0, 0.0, 0.0,1.0) #3 glscalef(0.5, 0.5, 0.0) #2 gltranslatef(-0.5, -0.5, 0.0) #1 glcolor3f(0.0, 1.0, 0.0) glrectf(0.0, 0.0, 1.0, 1.0) #G=M7*M6*M5*M4*M3*M2*M1 glpopmatrix() zeichnequadrate(0,0,0) zeichnequadrate(0,.5,0) Positionierung der Kamera durch Manipulation der Modelview-Matrix glmatrixmode(gl_modelview) gltranslate(0,0,-5) Komfortabler mittels GLU-Funktion glulookat(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz) glulookat(0,0,0, 0,0,-100, 0,1,0) glulookat(4,2,1, 2,4,-3, 2,2,-1) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 33

9 Kamera-Parameter (Parallelprojektion) Kamera-Parameter (Zentralprojektion) Festlegen des View-Frustums (Parallelprojektion) glortho(left, right, bottom, top, near, far) Festlegen des View-Frustums (perspektivische Projektion) glfrustum(left, right, bottom, top, near, far) Multipliziert M ortho mit der aktuellen Matrix Beliebige (verschiedene) Werte für near und far Multipliziert M frustum mit der aktuellen Matrix Werte für near und far müssen positiv sein! # 2n r + l & % 0 0 r " l r " l ( % 2n t + b ( % 0 0 ( M frustum = % t " b t " b f + n 0 0 " 2 fn ( % ( f " n f " n % ( $ 0 0 "1 0 ' GLU-Funktion für 2D-Objekte gluortho2d(left, right, bottom, top) Identisch mit glortho(left,right,bottom,top,-1,1) Sollte zusammen mit glvertex2*(...) verwendet werden (z-koordinate identisch 0, homogene Koordinate w=1) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 34 Komfortabler mittels GLU-Funktion gluperspective(fovy, aspect, near, far) Multipliziert M frustum mit der aktuellen Matrix Werte für near und far müssen positiv sein! fovy muss im Intervall [0,180] liegen FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 35 Field of View Ermittlung Sichtkugelverfahren in OpenGL 1. Ermittlung der Objekt-Bounding-Box 2. Ermittlung einer Bounding-Kugel der Bounding-Box 3. Verwendung von Kugel-Mittelpunkt zur Bestimmung von distance 4. Verwendung von Kugel-Radius zur Bestimmung von Size 5. Bestimmung des Öffnungswinkels Beispiel Bounding-Box: [-1,3]x[5,7]x[-5,5] Mittelpunkt: M=(1,6,0) Radius der Bounding-Kugel (zu (3,7,5)) Abstand M zu Augpunkt (8,9,10): Tangens vom Halbwinkel: 5,48 / 12,57 = 0,436 Halbwinkel: atan(0,436) = 23,55 Grad Bestimmung des Öffnungswinkels theta def calculateangle(size, distance): radtheta = 2.0*atan2(size/2.0,distance) degtheta = (180.0*radtheta)/math.pi return degtheta FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 36 Gesamttransformation (Beispiel) glmatrixmode(gl_modelview) glloadidentity() glmatrixmode(gl_projection) glloadidentity() glmatrixmode(gl_projection) gluperspective(60.0, 1.0, 1.0, 10.0)... glmatrixmode(gl_modelview) glloadidentity() gltranslatef(0.0, 0.0, 1.0) glrotatef(45.0, 1.0, 0.0, 0.0) glbegin(gl_quads) glvertex3f(-0.5, -0.5, 0.0) glvertex3f(0.5, -0.5, 0.0) glvertex3f(0.5, 0.5, 0.0) glvertex3f(-0.5, 0.5, 0.0) Inhalt Modelview-Matrix Inhalt Projection-Matrix I I I PERSP... I T1 T1*R1... PERSP PERSP PERSP Transformation für jeden Eckpunkt: v = PERSP*T1*R1*v FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 37

10 Viewport z-buffer (verdeckte Flächen) Die Größe des Viewports wird standardmäßig auf die Größe des Fensters gesetzt, in das gerendert wird kann geändert werden mittels glviewport(x, y, width, height) Aktivieren des z-buffers glenable(gl_depth_test) Deaktivieren des z-buffers gldisable(gl_depth_test) Löschen (Werte auf Max. setzen): glclear(gl_depth_buffer_bit) // z-buffer Beispiel glutinit(sys.argv) glutinitdisplaymode(glut_rgb GLUT_DEPTH) glutinitwindowsize(400, 400) glutinitwindowposition(100, 100) glutcreatewindow( Depth-Buffer Test ) gluperspective(fovy, 1.0, near, far) glviewport(0,0,400,400) gluperspective(fovy, 1.0, near, far) glviewport(0,0,400,200) Keine Verzerrung, wenn (width/height) = aspect: gluperspective(fovy, 2.0, near, far) glviewport(0,0,400,200) Setzten von Min. und Max.: gldepthrange(near, far) Die Default-Werte near=0.0, far=1.0 passen in den meisten Fällen Damit GLUT den z-buffer verwendet: glutinitdisplaymode(mode) mit Parameter GLUT_DEPTH aufrufen glenable(gl_depth_buffer) glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT) glbegin(...) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 39 z-buffer (Beispiel) Polygon-Offset Polygon-Darstellung (ohne z-buffer) Polygon-Darstellung (mit z-buffer) Festlegung der Darstellungsart eines Polygons mittels glpolygonmode(glenum face, GLenum mode) Ohne Offset face kann sein GL_FRONT, GL_BACK, GL_FRONT_AND_BACK mode kann sein GL_POINT, GL_LINE, GL_FILL Wireframe-Darstellung Gemischte Darstellung (Polygon und Wireframe) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 40 Kombinierte Darstellung kann z.b. räumlichen Eindruck verbessern Stitching kann durch geeignete Offsetbildung vermieden werden Ein- und Ausschalten der Offsetbildung mittels glenable(glenum cap) und gldisable(glenum cap) cap kann sein GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT Einstellen der Offsetgröße mittels void glpolygonoffset(glfloat factor, GLfloat units) Fast immer passt: units = 1, factor = gewünschte Liniendicke Mit Offset FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 41

11 Polygon-Offset (Beispiel) /* Darstellung eines Objekts und seiner Kanten. Hidden-Line-Darstellung durch Objektfarbe = Hintergrundfarbe */ def tetrahedron(): glbegin(gl_triangles) glvertex3f(0.0, 0.0, 0.0)... glenable(gl_polygon_offset_fill) glpolygonoffset(2.0,1.0) glcolor3f(0.0, 0.0, 1.0) #blue solid tetrahedron() gldisable(gl_polygon_offset_fill) glpolygonmode(gl_front_and_back, GL_LINE) glcolor3f(1.0, 1.0, 1.0) #white lines gllinewidth(2.0) tetrahedron() glpolygonmode(gl_front_and_back, GL_FILL) Bewegte Bilder (Double-Buffering) Simulation einer Filmkamera durch Double-Buffering (zeige nur fertige Bilder) Vermeidet Flackern Realisierung durch zwei Bildschirm-Speicher (Color-Buffer): Front-Buffer und Back-Buffer 1. Zeige den Inhalt des Font-Buffers an 2. Rendere nächstes Bild in den Back-Buffer 3. Vertausche Front- und Back-Buffer 4. Gehe zu 1. Realisierung des Double-Buffering hängt von der Hardware und der GUI ab OpenGL hat keine Funktion zum Vertauschen von Front- und Back- Buffer GLUT kennt die Funktion glutswapbuffers() FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 43 Interaktions-Loop GLUT-Callback Funktionen Rendern Simulation glutdisplayfunc() glutidlefunc() gluttimerfunc() Simulation (Hintergrundprozesse) void glutidlefunc(void (*func)(void)); setzt den globalen idle-callback auf die Funktion idle Sollte erst nach glutmainloop() aufgerufen werden Die Funktion idle hat im Allgemeinen die Gestalt: def idle():... glutpostredisplay() Sorgt dafür, dass beim nächsten Durchlaufen von glutmainloop der display-callback aufgerufen wird Tastatur- Maus-Abfrage glutkeyboardfunc()... glutmousefunc() glutmotionfunc() glutpassivemotionfunc() glutmainloop() glutvisibilityfunc(void (*func)(int state)); setzt den Sichtbarkeits-Callback auf die Funktion visible Die Funktion visible hat im Allgemeinen die Gestalt: def visible(vis): if vis==glut_visible: glutidlefunc(idle) else: glutidlefunc(null) Sorgt dafür, dass der idle-callback Nur aufgerufen wird, wenn das Fenster auch sichtbar ist FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 45

12 Beispiel: Rotierendes Viereck (idle-callback) Beispiel: Tastatureingabe (keyboard-callback) def init(width, height): global angle angle = 0 glclearcolor(0.0, 0.0, 0.0, 0.0) glmatrixmode(gl_projection) glloadidentity() glortho(-1.5, 1.5, -1.5, 1.5, -1.0, 1.0) glmatrixmode(gl_modelview) def display(): global angle glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT) glloadidentity() def animate(): global angle angle = (angle+.1)%360 glutpostredisplay() def main(): glutinit(sys.argv) glutinitdisplaymode(glut_double GLUT_RGB GLUT_DEPTH) glutinitwindowsize(500, 500) glutcreatewindow("spinning Rectangle") glutdisplayfunc(display) glutidlefunc(animate) def init(width, height):... def reshape(width, height):... def keypressed(key, x, y): global anglerotz if key=='z': anglerotz = (anglerotz+5)%360; elif key=='z': anglerotz = (anglerotz-5)%360; elif key==char(27): sys.exit() glutpostredisplay(); def display(void): glclear(gl_color_buffer_bit) glpushmatrix() gltranslatef(-1.0, 0.0, 0.0) glrotatef(anglerotz, 0.0, 0.0, 1.0) gltranslatef(1.0, 0.0, 0.0) glutwirecube(1.0) glpopmatrix() glutswapbuffers() def main(): glutinit(sys.argv) glutinitdisplaymode(glut_double GLUT_RGB) glutinitwindowsize(500, 500) glutcreatewindow( Animation Test ) glrotate(angle,1.0,1.0,1.0) glbegin(gl_polygon) glvertex3f(-1.0, -1.0, 0.0) init(500,500) glutmainloop() glutdisplayfunc(display) glutreshapefunc(reshape) glutkeyboardfunc(keypressed) glvertex3f(-1.0, 1.0, 0.0) glvertex3f( 1.0, 1.0, 0.0) glvertex3f( 1.0, -1.0, 0.0) if name == " main ": main() init(500,500) glutmainloop() glutswapbuffers() if name == " main ": main() FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 47 Menüs in GLUT Display Listen GLUT bietet die Möglichkeit einfache Popup-Menüs zu erzeugen Beispiel (man glutcreatemenu) Zwei Unter-Menüs Mit rechter Maustaste verknüpft submenu1 = glutcreatemenu(selectmessage) glutaddmenuentry("abc", 1) glutaddmenuentry("abc", 2) submenu2 = glutcreatemenu(selectcolor) glutaddmenuentry("green", 1) glutaddmenuentry("red", 2) glutaddmenuentry("white", 3) glutcreatemenu(selectfont) glutaddmenuentry("9 by 15", 0) glutaddmenuentry("times Roman 10", 1) glutaddmenuentry("times Roman 24", 2) glutaddsubmenu("messages", submenu1) glutaddsubmenu("color", submenu2) glutattachmenu(glut_right_button) def selectmessage(value): pass def selectcolor(value): pass def selectfont(value): pass FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 48 Häufig benutzte OpenGL Kommandos können in Display Listen zusammengefasst werden Wird zur Darstellung vielfach vorhandener Objekte verwendet Die Kommandos werden nur einmal an den OpenGL Server (Grafikkarte) geschickt, aber häufig angewandt Es können Vorberechnungen gemacht werden Displaylisten werden erzeugt mittels i = glgenlists(n) Erzeugt die n Display Listen i, i+1,..., i+n Display Liste mit Inhalt füllen: glnewlist(name, mode) //OpenGL Befehle glendlist() GLuint name: Name (Nummer) der Liste GLenum mode GL_COMPILE: OpenGL Befehle in Display Liste speichern ohne auszuführen GL_COMPILE_AND_EXECUTE: Speichern und sofort ausführen FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 49

13 Ausführen und Löschen von Display Listen Display Liste (Beispiel Torus) Zuvor definierte Display Listen können ausgeführt werden mittels glcalllist(name) Existiert keine Display Liste mit Name (Index) name passiert nichts glcalllist kann innerhalb einer Display Liste aufgerufen werden Es können mehrere Display Listen auf einmal ausgeführt werden: glcalllists(n,type, lists) n: Anzahl der auszuführenden Display Listen type: Datentyp in lists: GL_BYTE, GL_INT,... lists: Liste von Namen von Display Listen In Python: glcalllists(list) Display Listen können mit Hilfe des folgenden Befehls wieder gelöscht werden gldeletelists(name, n) Löscht die Display Listen mit Namen name, name+1,..., name+n+1 Definition der Torus Geometrie def torus(numc, numt): twopi=2*pi for i in range(0,numc): glbegin(gl_quad_strip) for j in range(0,numt+1): for k in range(1,-1,-1): s = (i+k)%numc+0.5 t = j%numt x =(1+.3*cos(s*twopi/numc))*\ cos(t*twopi/numt) y =(1+.3*cos(s*twopi/numc))*\ sin(t*twopi/numt) z =.3 * sin(s*twopi/numc) glvertex3f(x, y, z) def init(width, height): global toruslist glclearcolor(0.0, 0.0, 1.0, 0.0) glmatrixmode(gl_projection) glloadidentity() glortho(-1.5, 1.5, -1.5, 1.5, -1.0, 1.0) toruslist = glgenlists(1) glnewlist(toruslist, GL_COMPILE) torus(8,25) glendlist() def display(): glclear(gl_color_buffer_bit) glcolor(0.0, 0.0, 1.0) glcalllist(toruslist) glutswapbuffers() Aufrufen der Display Liste Definition der Display Liste FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 51 Polygonale (Netz-) Darstellung von Objekten Objekte werden als Netze (Ansammlung von Polygonen) dargestellt Eckpunkte und Flächen werden üblicherweise in Arrays gespeichert Jeder Eckpunkt hat verschiedene Attribute, die in unterschiedlichen Arrays gespeichert werden Eckpunktkoordinaten in einem Array mit Eckpunktkoordinaten (Vertex-Array) Farbe in einem Array mit Farbkoordinaten (Color-Array) Normalen in einem Array mit Normalenkoordinaten (Normal-Array)... Flächen (Polygone) werden in Arrays meist als Indexed-Face-Set gespeichert Liste von Polygonen Jede Fläche enthält eine Liste von Indizes aus dem zugehörigen Vertex-Array FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke Vertex Arrays (einschalten, füllen) In OpenGL wird die Verwendung von Vertex Arrays gesteuert mittels glenableclientstate(arraytype) gldisableclientstate(arraytype) arraytype kann sein GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_INDEX_ARRAY, GL_NORMAL_ARRAY, GL_TEXTURE_COORD_ARRAY, GL_EDGE_FLAG_ARRAY Vertex Arrays werden gefüllt mittels glvertexpointer(size, type, stride, array) GLint size ist die Anzahl der Koordinaten (2,3 oder 4) GLenum type Datentyp: GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE GLsizei stride Byte-Offset zwischen den Punkten (normalerweise 0) const GLvoid *array Zeiger auf das eigentliche Daten-Array Analoges gilt für die Arrays der anderen Attribute glcolorpointer(size, type, stride, array) glnormalpointer(type, stride, array) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 53

14 Vertex Arrays (zeichnen) Vertex Arrays können auf drei Arten zur Darstellung verwendet werden (Reihenfolge spiegelt die Effizienz wieder) 1. Zugriff auf die Daten aller aktiven Vertex Arrays eines Punktes über glarrayelement(index) 2. Zugriff auf die Daten aller aktiven Vertex Arrays der Punkte mit Index first bis first+count-1 gldrawarrays(mode, first, count) GLenum mode: Irgendeine OpenGL Primitive: GL_POINTS, GL_LINES,... GLint first: Start-Index Glsizei count: Anzahl der Indizes im Array 3. Zugriff auf die Daten aller aktiven Vertex Arrays der ersten count Punkte (am effizientesten) über gldrawelement(mode, count, type, indices) GLsizei count: Anzahl der Indizes im Array GLenum type: Type: GL_UNSIGNED_BYTE, GL_UNSIGNED_INT,... GLvoid *indices: Zeiger auf das eigentliche Daten-Array FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 54 Vertex Arrays (Beispiel glarrayelement) vertices = Numeric.array([[25,25], [100,325], [175,25], [175,325], [250,25], [325,325]], f ) colors = Numeric.array([[1.00,0.20,0.20], [0.20,0.20,1.00], [0.80,1.00,0.20], glenableclientstate(gl_vertex_array) glenableclientstate(gl_color_array) [0.75,0.75,0.75], [0.35,0.35,0.35], [0.50,0.50,0.50]], f ) glvertexpointer(2, GL_INT, 0, vertices.tostring()) glcolorpointer(3, GL_FLOAT, 0, colors.tostring()) glbegin(gl_triangles) glarrayelement(2) glarrayelement(3) glarrayelement(5) gldisableclientstate(gl_vertex_array) gldisableclientstate(gl_color_array) glbegin(gl_triangles) glcolor3fv(colors[2]) glvertex2iv(vertices[2]) glcolor3fv(colors[3]) glvertex2iv(vertices[3]) glcolor3fv(colors[5]) glvertex2iv(vertices[5]) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 55 Vertex Arrays (Beispiel gldrawelements) Darstellung eines Würfels 1. Möglichkeit frontindices = Numeric.array([4,5,6,7], b ) rightindices = Numeric.array([1,2,6,5], b ) bottomindices = Numeric.array([0,1,5,4], b ) backindices = Numeric.array([0,3,2,1], b ) leftindices = Numeric.array([0,4,7,3], b ) topindices = Numeric.array([2,3,7,6], b ) 7 6 gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, frontindices.tostring()) gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, rightindices.tostring()) gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, bottomindices.tostring()) gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, backindices.tostring()) gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, leftindices.tostring()) gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, topindices.tostring()) Beleuchtung/Shading Definiere Normalenvektoren für alle Eckpunkte aller Objekte Definiere Licht Erzeuge Lichtquelle Positioniere Lichtquelle Aktiviere Lichtquelle Wähle ein Beleuchtungsmodell Definiere Material-Eigenschaften für alle Objekte def display(): glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glutsolidsphere(1.0, 100, 100) glflush() def init(): glenable(gl_depth_test) glenable(gl_lighting) glenable(gl_light0) 2. Möglichkeit allindices = Numeric.array([4,5,6,7,1,2,6,5,0,1,5,4,0,3,2,1,0,4,7,3, 2,3,7,6], b ).tostring() gldrawelements(gl_quads, 24, GL_UNSIGNED_BYTE, allindices) Einfarbige Kugel Schattierte Kugel FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 57

15 Normalenvektoren Shading-Verfahren benötigen pro Eckpunkt einen Normalenvektoren GLUT-Primitive haben bereits Normalenvektoren Bei allen anderen Objekten müssen Normalenvektoren berechnet und den Eckpunkten zugewiesen werden Zuweisung von Normalenvektor zu Eckpunkt mittels glnormal3{b,s,i,d,f}[v](type x, Type y, Type z) Beispiel: glbegin(...) glnormal3f(0.0, 0.0, 1.0) glvertex3f(0.0, 0.0, 1.0) Normalenvektoren müssen die Länge 1 haben! OpenGL kann Normalenvektoren automatisch normieren Einschalten: glenable(gl_normalize) Ausschalten: gldisable(gl_normalize) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 58 Beleuchtung/Shading in OpenGL OpenGL implementiert das Phong Beleuchtungsmodell Licht setzt sich zusammen aus einem ambienten Teil (Umgebungslicht) diffusen Teil (ungerichteter Anteil) spekularen Teil (gerichteter Anteil) Beleuchtung wir eingeschaltet mittels glenable(gl_lightning) OpenGL unterstützt (mindestens) 8 Lichtquellen Einschalten: glenable(gl_light$i), 0! $i < GL_MAX_LIGHTS Ausschalten: gldisable(gl_light$i), 0! $i < GL_MAX_LIGHTS Von OpenGL direkt unterstütze Schattierungsverfahren Flat-Shading (1 Normalenvektor pro Fläche) Einschalten: glshademodel(gl_flat) Gouraud-Shading (default) (1 Normalenvektor pro Punkt) Einschalten: glshademodel(gl_smooth) FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 59 Lichtquellen Basis Eigenschaften der OpenGL Lichtquellen setzen: gllight{i,f}v(glenum light, GLenum pname, Type *param) Parameter: light: Zu verändernde Lichtquelle (GL_LIGHT$i, 0!$i<GL_MAX_LIGHTS) pname: Zu verändernder Parameter GL_POSITION (Position/Richtung (x,y,z,w) der Lichtquelle, default (0,0,1,0)) w"0: Punktlichtquelle ((x,y,z) ist Position der Lichtquelle) w=0: Gerichtete Lichtquelle ((x,y,z) ist Richtung der Lichtquelle, Abschwächung wird nicht berücksichtigt) GL_AMBIENT (Farbe des ambienten Lichtanteils, default (0,0,0,1)) GL_DIFFUSE (Farbe des diffusen Lichtanteils) Default für GL_LIGHT0: (1,1,1,1) Default für alle anderen Lichter: (0,0,0,0) GL_SPECULAR (Farbe des spiegelnden Lichtanteils) Defaultwerte analog zum diffusen Lichtanteil *param: Werte des zu verändernden Parameters FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 60 Abschwächung Abschwächung des Lichts mit zunehmendem Abstand d von einer Punktlichtquelle durch Multiplikation mit Abschwächungsfaktor Abschwächungsverhalten einer OpenGL Lichtquelle setzen: gllight{i,f}(glenum light, GLenum pname, Type param) Parameter (wirkt nur bei Punktlichtquellen): pname: Zu verändernder Parameter GL_CONSTANT_ATTENUATION (Default: k c =1) GL_LINEAR_ATTENUATION (Default: k l =0) GL_QUADRATIC_ATTENUATION (Default: k q =0) param: Wert des zu verändernden Parameters FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 61

16 Spotlicht Die Parameter einer Punktlichtquelle können so eingestellt werden, dass ein Spotlicht entsteht Eine OpenGL Lichtquelle als Spotlight einstellen: gllight{i,f}(glenum light, GLenum pname, Type param) Parameter (wirkt nur bei Punktlichtquellen): pname: Zu verändernder Parameter GL_SPOT_CUTOFF (Wertebereich [0,90], Default: 180 (kein Spotlicht)) Hälte des Öffnungswinkels des Lichtkegels GL_SPOT_DIRECTION (Default: (0,0,-1)) Richtung des Lichtkegels GL_SPOT_EXPONENT (Wertebereich [0,128], Default: 0 (kein Spotlicht)) Abschwächung des Lichts vom Zentrum des Lichtkegels nach außen Je größer der Wert, desto stärker wird das Licht zum Zentrum hin gebündelt param: Wert des zu verändernden Parameters GL_POSITION GL_SPOT_ CUTOFF GL_SPOT_DIRECTION GL_SPOT_ EXPONENT FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 62 gllight{i,f},gllight{i,f}v (Parameter-Übersicht) Parameter GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION GL_SPOT_DIRECTION GL_SPOT_EXPONENT GL_SPOT_CUTOFF GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION Default-Wert (0.0, 0.0, 0.0, 1.0) (1.0, 1.0, 1.0, 1.0) (1.0, 1.0, 1.0, 1.0) (0.0, 0.0, 1.0, 0.0) (0.0, 0.0, -1.0) Ambiente RGBA Licht-Intensität Diffuse RGBA Licht-Intensität Spiegelnde RGBA Licht- Intensität (x,y,z,w) Licht-Position (x,y,z) Spotlicht-Richtung Spotlicht-Exponent Spotlicht Cutoff Winkel Konstanter Abschwächungsfaktor Linearer Abschwächungsfaktor Quadratischer Abschwächungsfaktor FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 63 Position und Richtung von Lichtquellen OpenGL behandelt Position und Richtung von Lichtquellen analog zur Position und Richtung von geometrischen Primitiven Die Modelview Transformationen werden angewandt Drei grundsätzlich verschiedene Verhalten 1. Lichtquelle bleibt fix (stationäre Lichtquelle) 2. Lichtquelle bewegt sich um ein (unbewegliches) Objekt 3. Lichtquelle bewegt sich zusammen mit der Kamera 1. Stationäre Lichtquelle def display(): glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT) glpushmatrix() glrotatef(roty, 0.0, 1.0, 0.0) light_position = [0.0, 0.0, 5.0, 1.0] gllightfv(gl_light0, GL_POSITION, light_position) # Keine weiteren Modelview-Transformationen glutsolidteapot(1.0) glpopmatrix() glswapbuffers() FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 64 Bewegliche Lichtquelle (Stationäres Objekt) 2. Lichtquelle bewegt sich um eine stationäres Objekt def display(): glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT) glpushmatrix() glulookat(0.0,0.0,5.0, 0.0,0.0,0.0, 0.0,1.0,0.0) glpushmatrix() glrotatef(roty, 0.0, 1.0, 0.0) light_position = [0.0, 0.0, 5.0, 1.0] gllightfv(gl_light0, GL_POSITION, light_position) glpopmatrix() glutsolidteapot(1.0) glpopmatrix() glutswapbuffers() FH-Wiesbaden --- Medieninformatik --- WS 06/ Prof. Dr. Ulrich Schwanecke 65

Kapitel 21: OpenGl 1

Kapitel 21: OpenGl 1 Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0); 50 Befehle in OpenGl Utility

Mehr

Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl

Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl Computergrafik SS 2008 Oliver Vornberger Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0);

Mehr

Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt

Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt Licht Elektromagnetische Strahlung Emitter > Reflektor -> Auge Sichtbares Spektrum: 400nm 700nm Farbwahrnehmung Farbbeschreibung I Farbton - rot, gelb, blau,... Helligkeit Nähe zu schwarz oder weiss Sättigung

Mehr

Grundlegende Darstellungsfunktionen

Grundlegende Darstellungsfunktionen Grundlegende Darstellungsfunktionen Zeichenoperationen und Transformationen Die folgenden Folien beschreiben eine Reihe von grundlegenden Darstellungsfunktionen, die zur Modellierung einer Szene und zur

Mehr

Computergrafik 1 Übung

Computergrafik 1 Übung Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung 4 1 Was ist OpenGL? OpenGL = Open Graphics Library API für Echtzeit-3D-Grafik Hardwarebeschleunigt

Mehr

Lichtquellen und Beleuchtung

Lichtquellen und Beleuchtung void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 1 Lokales Beleuchtungsmodell in OpenGL für n Lichtquellen k s 2 Normalenvektoren - Modelview-Transformation

Mehr

Aufgabe. - Beispiel "Fahrt durch Blutgefäße":

Aufgabe. - Beispiel Fahrt durch Blutgefäße: Aufgabe Modellierung der statischen Anteile Ihres Projekts - Definieren Sie die statischen Anteile der Szene Ihres Projekts - Erstellen Sie eine geeignete Klassen-Repräsentation - Beispiel "Fahrt durch

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2_4-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2_4-2 2.10

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen

Mehr

OpenGL 2.0 Vertex Arrays

OpenGL 2.0 Vertex Arrays OpenGL 2.0 Vertex Arrays Boguslaw Sylla Interaktive 3D-Computergrafik SS 2010 Hochschule RheinMain Inhalt des Vortrags 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren

Mehr

Übung: Computergrafik 1

Übung: Computergrafik 1 Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Geometrische Primitive OpenGL Zeichenarten Kurven Primitive Übung

Mehr

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung 3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 8. Mai 26 LMU München Medieninformatik Boring/Hilliges

Mehr

Einführung in die API OpenGL

Einführung in die API OpenGL Einführung in die API OpenGL LMU München - LFE Medieninformatik Folie 1 Überblick Was ist OpenGL? OpenGL und Windows 3D Grafik Grundlagen OpenGL benutzen Transformationen, Licht, Texture Mapping Ein kleines

Mehr

Einführung Grundlagen OpenGL Primitive Farbe Licht und Material Viewing Pipeline Demos

Einführung Grundlagen OpenGL Primitive Farbe Licht und Material Viewing Pipeline Demos Sebastian Hubl 1 Einführung Grundlagen OpenGL Primitive Farbe Licht und Material Viewing Pipeline Demos 2 steht für Open Graphics Library Standard zur Programmierung grafikfähiger Hardware Darstellung

Mehr

Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone

Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Punkte glvertex3f (50.0, 50.0, 0.0) glvertex2f (50.0, 50.0) glvertex4f (50.0, 50.0, 0.0,1.0) GLfloat vect[3] = {50.0, 50.0, 0.0} glvertex3fv

Mehr

Erste Schritte in OpenGL

Erste Schritte in OpenGL Erste Schritte in OpenGL Modelierung Aus Punkten werden geometrische Körper Komplexe Objeckte werden aus meheren einfachen Objeckten erstellt Dazu müssen Vertexes (Punkte) im virtuellen Raum angefordnet

Mehr

Grafikprogrammierung (Echtzeitrendering)

Grafikprogrammierung (Echtzeitrendering) (Echtzeitrendering) erfordert Unterstützung für beide Aufgaben der Computergrafik Geometrische Modellierung Datenstrukturen für geometrische Modelle Schnittstellen für deren Kombination Bildsynthese Rendering

Mehr

OpenGL Transformationen: Modeling

OpenGL Transformationen: Modeling OpenGL Transformationen: Modeling transponiert! Punkt-Trfn = Matrizen-Multiplikationen von links (s.o.): v neu = T n (... ) T 2 T 1 v alt = T gesamt v alt OpenGL: Laden mat[16]: glloadmatrix{fd}(mat) Matrizen-Multiplikation:

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Einführung die Computergrafik: GLUT und OpenGL. Teilnehmer und Abgaben Nachname Abeldt Brucker Dimitrova Gebhardt Goldhofer Lauber Promesberger

Mehr

OpenGL. Kapitel Grundlagen

OpenGL. Kapitel Grundlagen Kapitel 21 OpenGL 21.1 Grundlagen OpenGL bietet eine Schnittstelle zwischen dem Anwenderprogramm und der Grafikhardware eines Computers zum Modellieren und Projizieren von dreidimensionalen Objekten. Diese

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Grundlagen der Computergrafik: Affine Transformationen Beleuchtung in OpenGL. Organisatorisches & Zeitplan Bearbeitungszeitraum

Mehr

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit:

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: 7.1 Polygon Offset Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: - Polygone sollen einmal als Fläche und einmal in Wireframe-Darstellung

Mehr

Eine Einführung in OpenGL

Eine Einführung in OpenGL Eine Einführung in OpenGL Inhaltsverzeichnis 1 Übersicht 2 1.1 Was ist OpenGL?........................... 2 1.2 Was leistet OpenGL?......................... 2 2 Erste Schritte mit OpenGL 3 2.1 Grundstrukturen...........................

Mehr

Übungsstunde 7 zu Computergrafik 1

Übungsstunde 7 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 10. und 11. Dezember 2012 Inhaltsverzeichnis 1 Licht und Material Licht in OpenGL Material in OpenGL 2 in C++ Licht in OpenGL Lichtquellen In OpenGL

Mehr

Grafikprogrammierung mit OpenGL

Grafikprogrammierung mit OpenGL Grafikprogrammierung mit OpenGL Proseminar Computergrafik Sommersemester 2009 Dozent: Wilfried Mascolus Lehrstuhl für Computergraphik und Visualisierung Fakultät Informatik Sebastian Hubl Matrikelnummer:

Mehr

Einführung in OpenGL. Einführung in OpenGL

Einführung in OpenGL. Einführung in OpenGL OpenGL: Einführung/Standard - OpenGL (Open Graphics Library) ist ein Standard für 3D Rendering und 3D Hardware-Beschleunigung - OpenGL läuft unter Windows, MacOS, Linux, Unix, - Website: http://opengl.org

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Grundlagen der Computergrafik: Affine Transformationen Beleuchtung in OpenGL. Organisatorisches & Zeitplan Bearbeitungszeitraum für aktuelles

Mehr

Wer bin ich. 1. Übung zu Computergraphik 2. Allgemeines zur Übung. OpenGL allgemeines. Aufbau OpenGL Programm. Hauptprogramm

Wer bin ich. 1. Übung zu Computergraphik 2. Allgemeines zur Übung. OpenGL allgemeines. Aufbau OpenGL Programm. Hauptprogramm Wer bin ich. Übung u Computergraphik 2 Prof. Dr. Stefan Müller Thorsten Grosch Thorsten Grosch, AG Computergraphik Seit.7.2002 an der Uni Koblen Raum MB 9 Fragen ur Übung: Forum auf der Übungsseite http://www.uni-koblen.de/~cg/veranst/ws004/cg2_uebung.html

Mehr

Schattierung und Beleuchtung

Schattierung und Beleuchtung In OpenGL haben Materialien und Lichter ambiente, diffuse, spekulare und emissive Farb-Komponenten, die miteinander interagieren; die Summe Σ Q über die Lichtanteile aller Lichtquellen ergibt (für j=r,g,b)

Mehr

Beleuchtung. Matthias Nieuwenhuisen

Beleuchtung. Matthias Nieuwenhuisen Beleuchtung Matthias Nieuwenhuisen Überblick Warum Beleuchtung? Beleuchtungsmodelle Lichtquellen Material Reflexion Shading Warum Beleuchtung? Tiefeneindruck Realitätsnähe: Reflexionen Spiegelungen Schatten

Mehr

Übung: Computergrafik 1

Übung: Computergrafik 1 Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Projektionen und Transformationen Qt Kontextmenüs Koordinatensysteme

Mehr

Graphische Datenverarbeitung I WS 2017/2018. OpenGL Einführung. Prof. Dr. techn. Dieter Fellner. Roman Getto. Julian Zobel

Graphische Datenverarbeitung I WS 2017/2018. OpenGL Einführung. Prof. Dr. techn. Dieter Fellner. Roman Getto. Julian Zobel Graphische Datenverarbeitung I WS 2017/2018 OpenGL Einführung Prof. Dr. techn. Dieter Fellner Roman Getto Julian Zobel Was sind APIs API: Application Programming Interface Low-level graphic API Interface

Mehr

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene Bitmaps Grundlagen - Bitmaps sind rechteckige Arrays bestehend aus 0 und 1 Werten - Sie dienen als Zeichenmaske in einem rechteckigen Fensterbereich - Bei gegebner Zeichenfarbe f=(r, B, G) werden die Pixel,

Mehr

Tim Pommerening v0.0.1 (ohne Gewähr) Seite 1 von 6

Tim Pommerening v0.0.1 (ohne Gewähr) Seite 1 von 6 Tim Pommerening v0.0.1 (ohne Gewähr) Seite 1 von 6 Formelsammlung: GDV Bezeichnung Gefülltes regelmäßiges n-eck Formel /** * Zeichnet ein gefülltes n-eck. * x0, y0 : Koordinaten des Mittelpunkts. * r0

Mehr

Computergrafik 1 Übung

Computergrafik 1 Übung Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung Meshes http://codeidol.com/img/illustrator-cs/54084xfg1001_0.jpg 6 1 Primitive 2 2D-Objekte

Mehr

Augmented Reality Einführung in GLUT

Augmented Reality Einführung in GLUT LMU München, LFE Medieninformatik 3..26 Augmented Reality Einführung in GLUT Übung Augmented Reality Sebastian Boring, Arnd Vitzthum Montag, 3. Oktober 26 LMU München Medieninformatik Butz/Boring/Vitzthum

Mehr

Advanced Computer Graphics 1. Übung

Advanced Computer Graphics 1. Übung Advanced Computer Graphics 1. Übung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 1 1 Gliederung 1. Erzeugen, Binden und Löschen von OpenGL Objekten 2. Geometrie: Vertex Arrays, Buffers und Attributes

Mehr

Übung Augmented Reality Einführung in GLUT. Agenda (I)

Übung Augmented Reality Einführung in GLUT. Agenda (I) Übung Augmented Reality Einführung in GLUT Fabian Hennecke 5.5.9 LMU München Medieninformatik Butz/Hennecke Augmented Reality SS9 5.5.9 Folie Agenda (I) OpenGL Utility Toolkit (GLUT) Initialisierung Callback-Funktionen

Mehr

Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle

Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle Und nun? Transparenz Anti-Aliasing Dunst, Nebel Computer Graphik R 3 Projektion N 2 Pixel Ops C Objektraum Bildraum Farbraum Blending

Mehr

Einführung in OpenGL. Thomas Kalbe 30.10.2007. Technische Universität Darmstadt. thomas.kalbe@gris.informatik.tu-darmstadt.de

Einführung in OpenGL. Thomas Kalbe 30.10.2007. Technische Universität Darmstadt. thomas.kalbe@gris.informatik.tu-darmstadt.de Einführung in OpenGL Thomas Kalbe Technische Universität Darmstadt thomas.kalbe@gris.informatik.tu-darmstadt.de 30.10.2007 3D Graphic APIs 2 / 42 API: Application Programming Interface low-level graphic

Mehr

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung

Mehr

Proseminar Computergrafik: OpenGL. Marcel Heckel

Proseminar Computergrafik: OpenGL. Marcel Heckel Proseminar Computergrafik: OpenGL Marcel Heckel 23.5.26 . Inhalt 1. Allgemein Was ist OpenGL Geschichte 2. Etwas 3D-Mathematik Das Koordinatensystem Vektoren Matrizen 3. Grundlegendes zu OpenGL Arbeitsweise

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Transformationen in OpenGL Graphische DV und BV, Regina Pohle, 18. Ereignisverarbeitung und Transformationen 1 Einordnung in die

Mehr

Übungsstunde 5 zu Computergrafik 1

Übungsstunde 5 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 19. un 20. November 2012 Inhaltsverzeichnis 1 Transformationen Translation Skalierung Rotation 2 Reihenfolge von Transformationen Beispiele 3 Programmieraufgabe

Mehr

OpenGL for Java OpenGL for Java Prof. Dr. V. Stahl

OpenGL for Java OpenGL for Java Prof. Dr. V. Stahl OpenGL for Java Ziele Bewegte Simulationen grafisch darstellen können (effizient, realistisch, dreidimensional) Grundfunktionen von OpenGL beherrschen Mathematische Voraussetzungen für Computer Grafik

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Prof. Stefan Schlechtweg-Dorendorf Hochschule Anhalt (FH) Köthen Fachbereich Informatik Wintersemester 2010/2011 1 / 27 Teil II CG-Programmierung und OpenGL 2 / 27 Inhalt 1. Computergraphik-Programmierung

Mehr

OpenGL. Rendering: (Wiedergabe, Darstellung): Erzeugg. digitaler (Pixel-)Bilder aus log.-mathem. Modell-Beschreibungen.

OpenGL. Rendering: (Wiedergabe, Darstellung): Erzeugg. digitaler (Pixel-)Bilder aus log.-mathem. Modell-Beschreibungen. OpenGL Grafik-Bibliothek mit einigen hundert Befehlen gl...() (div. Ausführungen) angeschlossener Aufsatz : OpenGL Utility Library (GLU), ca. 50 Befehle glu...() Plattform-unabhängig (Hardware, Fenster-/

Mehr

OpenGL auf Mac OS X und ios

OpenGL auf Mac OS X und ios OpenGL auf Mac OS X und ios Torsten Kammer 28.4.2011 CocoaHeads Aachen Grundlagen API für hardwarebeschleunigte 3D-Grafik Kann auch für schnelles 2D verwendet werden Grundlage von Core Image, Core Animation,

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Organisatorisches Das Konzept der Szenegraphen Grundlagen Beispiel eines Szenegraphen Transformationen

Mehr

1: Diese Ausarbeitung enthält in Papierform:

1: Diese Ausarbeitung enthält in Papierform: Ausarbeitung für das GDV-Praktikum (OpenGL-Teil) WS 16/17 1. Teilnehmer/in Termin: Name: (z.b. Mo2x) Vorname: Matr. Nr.: Gruppe: (1... 8) 2. Teilnehmer/in Name: Vorname: Matr. Nr.: ***************************************************************************

Mehr

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 (Fortsetzung)

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 (Fortsetzung) Computergrafik SS 2010 Henning Wenke Kapitel 21: OpenGL 3.1 (Fortsetzung) 1 OpenGL Aufgaben der GL-Befehle Konfigurieren der Graphics Pipeline Datenübergabe an Server Steuern des Datenflusses Java OpenGL

Mehr

1: Diese Ausarbeitung enthält in Papierform:

1: Diese Ausarbeitung enthält in Papierform: Ausarbeitung für das GDV-Praktikum (OpenGL-Teil) SoSe 2018 1. Teilnehmer/in Termin: Name: (z.b. Mo2x) Vorname: Matr. Nr.: 2. Teilnehmer/in Name: Vorname: Matr. Nr.: ***************************************************************************

Mehr

Der Unterschied zwischen beiden Modellen liegt lediglich in der Berechnung des spekularen Anteils, der sich bei Phong aus

Der Unterschied zwischen beiden Modellen liegt lediglich in der Berechnung des spekularen Anteils, der sich bei Phong aus Aufgabe 9: Lokale Beleuchtungsmodelle von Phong und Blinn Der Unterschied zwischen beiden Modellen liegt lediglich in der Berechnung des spekularen Anteils, der sich bei Phong aus I s k s ( R V ) n errechnet,

Mehr

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Computergrafik SS 2012 Probeklausur 1 06.07.2012 Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Aufgabe 1 (19 Punkte) Beantworten Sie die folgenden Fragen prägnant.

Mehr

OpenGL Modelierung und Beleuchtung

OpenGL Modelierung und Beleuchtung OpenGL Modelierung und Beleuchtung Proseminar Computergrafik René Lützner Übersicht Einleitung Modellierung Beleuchtung Quellen 2 Einleitung Begriffserklärung Historische Entwicklung Erweiterbarkeit OpenGl

Mehr

Technische Universität Dresden Fakultät Informatik Prof. Dr.-Ing.habil. Orlamünder. OpenGL. OpenGL. OpenGL000

Technische Universität Dresden Fakultät Informatik Prof. Dr.-Ing.habil. Orlamünder. OpenGL. OpenGL. OpenGL000 000 Konzepte der ist ein Software-Interface zur Hardware. Zweck ist die Darstellung von zwei- und dreidimensionalen Objekten mittels eines Bildspeichers. Diese Objekte sind entweder Images, die aus Pixeln

Mehr

Das OpenGL Utility Toolkit GLUT. Verwendung von GLUT

Das OpenGL Utility Toolkit GLUT. Verwendung von GLUT Verwendung von GLUT Grundlegende Funktionsweise - Öffnen eines Fensters - Registrieren von Callback-Routinen - Start einer Hauptroutine, die erst beim Schließen des Fensters verlassen wird - Beim Auftreten

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Organisatorisches Das Konzept der Szenegraphen Grundlagen Beispiel eines

Mehr

I - Phone 3D 3D Spieleentwicklung für's I-Phone

I - Phone 3D 3D Spieleentwicklung für's I-Phone I - Phone 3D 3D Spielentwicklung für das I-Phone Gliederung Allgemein Open GL ES Arbeitsschritte / 3D Grafik Ein Spiel entsteht Ein Beispiel Vorgehensweise Allgemein Erzeugen von Modellen Komplexe Modelle

Mehr

Das ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas

Das ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas Fakultät Informatik, Professur Computergraphik und Visualisierung 1 1 EINFÜHRUNG Zu diesem Praktikum wird ein vorbereitetes Delphi-Projekt zur Verfügung gestellt. Es ist so aufgebaut, dass man wichtige

Mehr

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel. Geometry Shader 1

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering Von Sebastian Jackel Franz Peschel. Geometry Shader 1 Geometry Shader Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel Geometry Shader 1 Inhalt I Einführung II Facts Renderpipeline III Funktionsweise Geometry Shader

Mehr

Shader. Computer Graphics: Shader

Shader. Computer Graphics: Shader Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger

Mehr

1.1 Verwendung von GLUT

1.1 Verwendung von GLUT 1.1 Verwendung von GLUT Grundlegende Funktionsweise - Öffnen eines Fensters - Registrieren von Callback-Routinen - Start einer Hauptroutine, die erst beim Schließen des Fensters verlassen wird - Beim Auftreten

Mehr

7.4 Tesselierung von Polygonen

7.4 Tesselierung von Polygonen Anwendungsgebiet - OpenGL kann direkt nur einfache konvexe Polygone anzeigen - Polygone sind einfach, wenn - sie selbstdurchdringungsfrei sind - sie keine doppelten Ecken enthalten - an einer Ecke genau

Mehr

3D Programmierpraktikum: Szenegraphen und Texturierung

3D Programmierpraktikum: Szenegraphen und Texturierung 3D Programmierpraktikum: Szenegraphen und Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 1. Juni 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum SS2006

Mehr

Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme

Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme bei Prof. Dr. Wolfgang Konen erstellt von: Sebastian Skalec, 11038991 Christian Fehmer, 11042419 Fachhochschule Köln Campus Gummersbach

Mehr

2. Übung zu Computergraphik 2

2. Übung zu Computergraphik 2 2. Übung zu Computergraphik 2 Stefan Müller KOBLENZ LANDAU Aufgabe 1: Accumulation Buffer Tiefenunschärfe mit Accumulation Buffer simulieren Idee: Szene von versch. Kamerapositionen (from) aus betrachten

Mehr

Grundlagen der 3D-Computergrafik Programmieren mit OpenGL

Grundlagen der 3D-Computergrafik Programmieren mit OpenGL Grundlagen der 3DComputergrafik Programmieren mit OpenGL Marc Wagner mcwagner@cip.informatik.unierlangen.de 13. November 1998 Was ist OpenGL? OpenGL (Open Graphics Library) ist ein Softwareinterface zum

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-04 Kapitel VIII: Per Primitive Operations Primitive I 3 Primitive II Elementare grafische Grundform Besteht in OpenGL aus Folge von 1-3 Vertices

Mehr

Computergrafik II. OpenGL Einführung

Computergrafik II. OpenGL Einführung Computergrafik II OpenGL Einführung OpenGL Rein prozedurales Interface Keine direkten Klassen/Objekte Verwaltung von OpenGL-Strukturen mittels Identifier Explizites funktionales Erzeugen/Löschen von Objekten

Mehr

(12) OpenGL-Pipeline. Vorlesung Computergraphik I S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU

(12) OpenGL-Pipeline. Vorlesung Computergraphik I S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU (12) OenGL-Pieline Vorlesung Comutergrahik I S. Müller KOBLENZ LANDAU Wiederholung I Was assiert, wenn Kein glulookat verwendet wird? Kamera ist im Ursrung, Blick entlang der neg. -Achse, Rechtssstem,

Mehr

Übungsstunde 8 zu Computergrafik 1

Übungsstunde 8 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 14. und 15. Januar 2013 Inhaltsverzeichnis 1 Wiederholung - Beleuchtung Gouraud-Shading Phong-Shading Flat-Shading Vergleich 2 - Idee in OpenGL Texturfilterung

Mehr

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

(12) Wiederholung. Vorlesung Computergrafik T. Grosch (12) Wiederholung Vorlesung Computergrafik T. Grosch Klausur 18.7. 14 16 Uhr, Hörsaal 5 (Physik) 2 Zeitstunden 8 Aufgaben Drei Aufgabentypen Übungsaufgaben Wissensfragen zur Vorlesung Transferfragen Unterschiedlicher

Mehr

Zusammenfassung Graphische Daten Verarbeitung By Fabian Flohrmann

Zusammenfassung Graphische Daten Verarbeitung By Fabian Flohrmann Zusammenfassung Graphische Daten Verarbeitung By Fabian Flohrmann VL02 Mechanische Maus: Ermittlung der Bewegung über 2 orth. angebrachte Bewegungssensoren (Lichtschranke) Optische Maus (mit Unterlage):

Mehr

Grafikprogrammierung mit OpenGL

Grafikprogrammierung mit OpenGL Technische Universität Dresden Dresden, August 2003 Fakultät Informatik Institut für Software- und Multimediatechnik Lehrheft Computergrafik Herausgabe: K. Hoedt W. Mascolus Fakultät Informatik Lehrheft

Mehr

Praktikum: Spieleengine im Eigenbau

Praktikum: Spieleengine im Eigenbau Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander

Mehr

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20 OpenGL II Gliederung Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen 26.07.10 Wilfried Mascolus - OpenGL Teil II 2/20 Blending Entscheidung, was passiert, wenn sich zwei Objekte überlappen

Mehr

Computer Graphics Shader

Computer Graphics Shader Computer Graphics Shader Sven Janusch Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2 Fixed Function Pipeline T&L Pipeline (Transformation and Lighting)

Mehr

Proseminar Computergrafik: OpenGL

Proseminar Computergrafik: OpenGL Proseminar Computergrafik: OpenGL Verfasser: Technische Universität Dresden Fakultät Informatik Studiengang Informatik (Diplom) 0. Inhalt 0. Inhalt... 2 1. Allgemein... 3 1.1. Was ist OpenGL... 3 1.2.

Mehr

CGR I Beleuchtung und Schattierung

CGR I Beleuchtung und Schattierung CGR I Beleuchtung und Schattierung SS 2004 Michael Haller Medientechnik und -design Ankündigung 25.Mai (HEUTE!!), 18:00 HS1 Hr. Riegler, Firma Sproing 03. Juni, 17:30 HS1 Prof. Dieter Schmalstieg, TU Wien

Mehr

Programmieren mit OpenGL und GLUT

Programmieren mit OpenGL und GLUT Programmieren mit OpenGL und GLUT Prof. Dr. Manfred Brill Oktober 2003 Inhaltsverzeichnis 1 OpenGL 1 1.1 Bibliotheken und Header-Dateien.... 1 1.2 OpenGL Datentypen... 2 2 GLUT 3 2.1 Ein typisches GLUT-Hauptprogramm........

Mehr

Geometrische Primitive und Hidden Surface Removal

Geometrische Primitive und Hidden Surface Removal C A R L V O N O S S I E T Z K Y Geometrische Primitive und Hidden Surface Removal Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Wiederholung Geometrische Primitive in OpenGL Mit

Mehr

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch Wiederholung Vorlesung Thorsten Grosch Klausur 2 Zeitstunden (26.7., 8:30 10:30 Uhr, G29/307) Keine Hilfsmittel Kein Bleistift / Rotstift verwenden 3 Aufgabentypen Wissensfragen zur Vorlesung (ca. 1/3)

Mehr

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher

Mehr

Beleuchtung Schattierung Rasterung

Beleuchtung Schattierung Rasterung Beleuchtung Schattierung Rasterung Thomas Jung t.jung@htw-berlin.de Beleuchtung, Schattierung und Rasterung in allen Echtzeit-3D-Umgebungen gleich OpenGL Direct3D 3dsmax,... Letzter Bestandteil der Grafikpipeline

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Buffer Der 1-bit Stencil-Buffer Der 8-bit Stencil-Buffer Volumetrische Echtzeitschatten

Mehr

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr. The Rendering Pipeline Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr. Volker Schulz Referent: Carsten Kurz Datum 25.10.07

Mehr

3D Programmierpraktikum: Schattenberechnung in Echtzeit

3D Programmierpraktikum: Schattenberechnung in Echtzeit 3D Programmierpraktikum: Schattenberechnung in Echtzeit Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 20. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Beleuchtung. in Computerspielen

Beleuchtung. in Computerspielen Beleuchtung in Computerspielen Motivation Überblick Licht und Schattierung Lichtquellen Lokale Beleuchtungsmodelle Schattierungsverfahren Oberflächensimulation Beispiele der CryEngine Ausblick Zusammenfassung

Mehr

Spiele, Simulation, dynamische Systeme

Spiele, Simulation, dynamische Systeme Spiele, Simulation, dynamische Systeme Einführung in OpenGL und GLUT Sebastian Skalec (11038991) Christian Fehmer (11042419) Was können wir nach dem Vortrag? Erstellen eines OpenGL-Fensters Motivation

Mehr

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis Computergrafik Michael Bender, Manfred Brill Ein anwendungsorientiertes Lehrbuch ISBN 3-446-40434-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40434-1 sowie

Mehr

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom Computergrafik 2010 Oliver Vornberger Kapitel 18: Beleuchtung Vorlesung vom 08.06.2010 1 Korrektur α Für den Winkel zwischen den normierten Vektoren und gilt: ~v ~w A B C D sin(α) = ~v ~w 0,0 % sin(α)

Mehr

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment

Mehr