Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl

Ähnliche Dokumente
Kapitel 21: OpenGl 1

OpenGL. Kapitel Grundlagen

Grafikprogrammierung (Echtzeitrendering)

Programmierpraktikum 3D Computer Grafik

Eine Einführung in OpenGL

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

Einführung in OpenGL. Einführung in OpenGL

Grundlegende Darstellungsfunktionen

Einführung in die API OpenGL

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

OpenGL 2.0 Vertex Arrays

Proseminar Computergrafik: OpenGL. Marcel Heckel

Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone

Einführung in OpenGL. Thomas Kalbe Technische Universität Darmstadt.

Erste Schritte in OpenGL

Übung: Computergrafik 1

Computergrafik 1 Übung

Augmented Reality Einführung in GLUT

Computergrafik 1 Übung

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

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

Klausur Computergrafik WS 2008 / 09

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

2 Lichtquellen. solider Körper. solider Körper. spiegelnder und transparenter Körper. Bildebene. Augenpunkt

Grafikprogrammierung mit OpenGL

OpenGL Transformationen: Modeling

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

Programmieren mit OpenGL und GLUT

(6) Polygon Clipping. Vorlesung Computergraphik I S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU

Klausur Computergrafik für Bachelor-Studierende SS 2015

Klausur Computergrafik für Bachelor-Studierende WS 2011 / 12. Lösungshilfe

Klausur Computergrafik für Bachelor-Studierende WS 2012 / 13

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

Grafikprogrammierung mit OpenGL I

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

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

Klausur Computergrafik für Bachelor-Studierende WS 2009 / 10

1.1 Verwendung von GLUT

Klausur Computergrafik für Bachelor-Studierende WS 2010 / 11

Klausur Computergrafik für Bachelor-Studierende SS 2018

Klausur Computergrafik für Bachelor-Studierende SS 2017

Klausur Computergrafik für Bachelor-Studierende SS Lösungshilfe

1: Diese Ausarbeitung enthält in Papierform:

Klausur Computergrafik für Bachelor-Studierende SS 2013

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

1: Diese Ausarbeitung enthält in Papierform:

Das OpenGL Utility Toolkit GLUT. Verwendung von GLUT

2.10 Lichtquellen und Beleuchtung

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

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

Lichtquellen und Beleuchtung

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

Klausur Computergrafik für Bachelor-Studierende SS 2011

Klausur Computergrafik für Bachelor-Studierende WS 2010 / 11. Lösungshilfe

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung

Klausur Computergrafik WS 2007 / 08

Grundlagen der 3D-Computergrafik Programmieren mit OpenGL

Übung: Computergrafik 1

Klausur Computergrafik für Bachelor-Studierende SS Lösungshilfe

Klausur Computergrafik SS 2007

Graphische Datenverarbeitung und Bildverarbeitung

3D-Sicht, Projektionen

Spiele, Simulation, dynamische Systeme

Computergraphik Grundlagen

Computergrafik 1 Übung, Wintersemester Eclipse Hands-On. C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows

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

Klausur Computergrafik für Bachelor-Studierende WS 2011 / 12

Gouraud-Schattierung Phong-Schattierung

Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle

Lehrheft OpenGL. Zur Veranstaltung Computergraphik I (Grundlagen) Prof. Dr. Stefan Schlechtweg-Dorendorf Hochschule Anhalt Fachbereich Informatik

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

0 Überblick, Einführung in OpenGL. 0.1 Überblick

Grundlagen der Informatik

Klausur Computergrafik WS 2007 / 08. Lösungshilfe

Zusammenfassung Graphische Daten Verarbeitung By Fabian Flohrmann

Programmierpraktikum 3D Computer Grafik

OpenGL auf Mac OS X und ios

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

GLUT. Aktuelle Version: 3.7 (3.7.6) Literatur:

Kurze Einführung in die Programmiersprache C++ und in Root

Teil VIII. Grundlagen der Computergrafik

2. Übung zu Computergraphik 2

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

Arrays (Felder/Vektoren)

Programmierpraktikum 3D Computer Grafik

Algorithmen und Datenstrukturen

Einführung in C. EDV1-04C-Einführung 1

Grafikprogrammierung mit OpenGL

OpenGL Modelierung und Beleuchtung

Klausur Computergrafik für Bachelor-Studierende SS Lösungshilfe

Computergraphik I Die Graphik-Pipeline &

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

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

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

Transkript:

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); 50 Befehle in OpenGl Utility Library (NURBS, Projektionsmatrizen) gluperspective(60.0,1.5,1.0,20.0); 30 Befehle in OpenGl Utility Toolkit (Fenstersystem, Objekte) glutinitwindowposition(100,100); glutwirecube(2.0); 3

Entwicklungszyklus hello.c C-Compiler C-Header OpenGl-Header hello.o C-Linker C-Libraries OpenGl-Libraries hello.exe 4

Programmaufbau #include <GL/glut.h> #include <stdlib.h> void init(void){ } void display(void){ } void reshape(int w, int h){ } int main(int argc, char ** argv){ glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB) glutinitwindowsize(800, 600); glutinitwindowposition(0,0); glutcreatewindow("hello World"); init(); glutdisplayfunc(display); glutreshapefunc(reshape); glutmainloop(); } 5

Datentypen Datentyp OpenGl b 8-bit integer GLbyte signed char s 16-bit integer GLShort short i 32-bit integer GLint int f 32-bit floating point GLfloat float d 64-bit floating point GLdouble double ub 8-bit unsigned int GLubyte unsigned char us 16-bit unsigned short GLushort unsigned short ui 32-bit unsigned int GLuint unsigned int glvertex2i(5,3); glvertex2f(5.0,3.0); glvertex3f(5.0,3.0,1.0); C-Äquivalent 6

Parameterübergabe Übergabe von 3 Zahlen: glcolor3f(1.0,0.8,0.8); glcolor3d(1.0,0.8,0.8); Übergabe von Vektor: GLfloat v[] = {1.0, 0.8, 0.8); glcolor3fv(v); 7

Zustandsmachine Attribute bleiben gültig bis auf Widerruf: glcolor3f(1.0,1.0,0.0); /* ab jetzt in gelb zeichnen */ 8

Geometrische Primitive glbegin(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 glend(); 9

Punkte glbegin(gl_points) glvertex3f(0.25, 0.25, 0.0); glvertex3f(0.75, 0.25, 0.0); glvertex3f(0.75, 0.75, 0.0); glvertex3f(0.25, 0.75, 0.0); glend(); 3 2 0 1 10

Linien 0 2 4 1 3 5 GL_LINES 0 2 4 1 3 5 GL_LINE_STRIP 0 2 4 1 3 5 GL_LINE_LOOP 11

Polygone 0 2 5 0 2 4 1 0 5 1 3 4 1 3 5 2 3 4 GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN 3 2 7 6 0 2 4 6 7 6 5 4 0 1 4 5 1 3 5 7 0 1 2 3 GL_QUADS GL_QUAD_STRIP GL_POLYGON 12

Viewing Pipeline Transformationsmatrix für Projektion der Szene Transformationsmatrix für Transformation der Objekte Graphische Objekte 13

Matrix-Operationen glmatrixmode(gl_projection); glmatrixmode(gl_model_view); GLFloat M[][]={{1.0,0.0,0.0,0.0}, 0.0,1.0,0.0,0.0}, 0.0,0.0,1.0,0.0}, 5.0,7.0,2.0,1.0}}; glmultmatrix(m); gltranslatef(5.0,7.0,2.0); 14

Transformation eines Quadrats glmatrixmode(gl_modelview); glloadidentity (); glrotatef(30.0,0.0,0.0,1.0); gltranslatef(2.0,-0.5,0.0); glscale(1.5,2.0,1.0); glbegin(gl_polygon) glvertex3f(0.25, 0.25, 0.0); glvertex3f(0.75, 0.25, 0.0); glvertex3f(0.75, 0.75, 0.0); glvertex3f(0.25, 0.75, 0.0); glend(); 15

Push und Pop gltranslatef(0.0,10.0,0.0); glpushmatrix(); gltranslatef(10.0,0.0,0.0); glutwirecube(1.0); glpopmatrix(); glpushmatrix(); gltranslatef(-10.0,0.0,0.0); glutwirecube(1.0); glpopmatrix(); 16

Projektion mit glortho glmatrixmode (GL_PROJECTION); glloadidentity (); glortho(-4,4,-3,3,-5.0,5.0); glmatrixmode(gl_modelview); glloadidentity(); glrotatef(20,1,0,0); glrotatef(-20,0,1,0); glutwirecube(1); 17

Projektion mit glfrustum glmatrixmode(gl_projection); glloadidentity(); glfrustum(-0.8,0.8,-0.6,0.6,1,20); glmatrixmode(gl_modelview); glloadidentity(); gltranslatef(0,0,-4); glrotatef(20,1,0,0); glrotatef(-20,0,1,0); glutwirecube(1); 18

Projektion mit gluperspektive glmatrixmode (GL_PROJECTION); glloadidentity (); gluperspective(60, 1.33, 1, 20); glmatrixmode(gl_modelview); glloadidentity(); gltranslatef(0,0,-4); glrotatef(20,1,0,0); glrotatef(-20,0,1,0); glutwirecube(1); 19

Manipulation durch gllookat glmatrixmode (GL_PROJECTION); glloadidentity (); gluperspective(60, 1.33, 1, 20); glmatrixmode(gl_modelview); glloadidentity(); glulookat (1,1,3,0,0,0,0,1,0); glutwirecube(1); 20

Reshape void reshape(int w, int h) { GLfloat p = (GLfloat) w / (GLfloat) h; glviewport(0, 0, w, h); glmatrixmode(gl_projection); glloadidentity(); if (p > 1.0) glfrustum( -p, p,-1.0,1.0,1,20); else glfrustum(-1.0,1.0,-1/p,1/p,1,20); } 21

Programmbeispiele hello.exe hello.c wire-cube.exe wire-cube.c wire-prop-cube.exe wire-prop-cube.c click.exe click.c key.exe key.c planet.exe planet.c smooth.exe smooth.c list.exe list.c bezier-curve.exe bezier-curve.c bezier-surface.exe bezier-surface.c teapot-rotate.exe teapot-rotate.c atlantis.exe atlantis.c dolphin.c 22

Aufgabe Roboter mit 3 Freiheitsgraden 23