Übung: Computergrafik 1

Ähnliche Dokumente
Computergrafik 1 Übung

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

Übungsstunde 5 zu Computergrafik 1

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert.

OpenGL Transformationen: Modeling

Computergrafik 1 Transformationen

Kapitel 3: Geometrische Transformationen

Transformationen im 3D-Raum

Affine Koordinatentransformationen

Computergrafik Sommersemester 2004 Übungen

3D-Sicht, Projektionen

Mathematische Grundlagen

Transformation - Homogene Koordinaten. y + b )

Lineare Algebra und Computer Grafik

Transformation - 3. Für "übliche" Anwendungen in der Geometrie ist es sinnvoll, bei Transformationen eine gleiche

Kapitel 3. Transformationen

Advanced Computer Graphics Erweiterung zur 6. Übung

Graphische Datenverarbeitung und Bildverarbeitung

Koordinatensysteme und Clipping

3D-Transformationen. Kapitel Translation Skalierung

Computergrafik 1 Übung

Erste Schritte in OpenGL

3D-Transformationen. Kapitel Translation Skalierung

4 Grundlagen zu SVG-Karten und -Diagrammen...33

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

Projektion. Ebene geometrische Projektionen

Computer Graphik (CS231) Projektübungsblatt 3

Transformation Allgemeines Die Lage eines Punktes kann durch einen Ortsvektor (ausgehend vom Ursprung des Koordinatensystems

Lösbarkeit linearer Gleichungssysteme

Computergrafik Universität Osnabrück, Henning Wenke,

3 Koordinatentransformationen

Shader. Computer Graphics: Shader

Theoretische Physik 1, Mechanik

Graphische Datenverarbeitung und Bildverarbeitung

Grundlagen der 3D-Grafik

Lineare Abbildungen (Teschl/Teschl 10.3, 11.2)

-dimensionale Darstellungen

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

Übung: Computergrafik 1

Übung: Computergrafik 1

2.3.4 Drehungen in drei Dimensionen

Planare Projektionen und Betrachtungstransformation. Quelle: Angel (2000)

VHDL - Grundlagen des Pointrenderings

Computer graphics. Vektoren und Matrizen. Dr. Ernst Kruijff. Institute of Visual Computing 3DMi group Bonn-Rhein-Sieg University of Applied Sciences

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung

Kapitel 21: OpenGl 1

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

Computergrafik Universität Osnabrück, Henning Wenke,

Was ist Robotik? Robotik heute:

Koordinaten, Transformationen und Roboter

gegeben: G sei endliche Gruppe, jede Untergruppe von G sei ein Normalteiler zu zeigen: je zwei Elemente teilerfremder Ordnung kommutieren

Transformationen. 09-Transformationen

Schattenwurf mit Perspective Shadow Maps

Computer Graphik. Mitschrift von

Bernhard Strigel Gymnasium Kollegstufe 2009/11 Leistungskurs Mathematik M2 Klemens Schölhorn. Facharbeit

YOUNG SCIENTISTS. 4 dimensionale komplexe Zahlen in der Computergrafik. Bastian Weiß 19. Mai 2017 INSTITUT FÜR ANGEWANDTE GEOMETRIE

Projektionen von geometrischen Objekten

Kapitel 2: Mathematische Grundlagen

Übung: Computergrafik 1

14 MATHEMATISCHE GRUNDLAGEN DER COMPUTERGEOMETRIE. x y

Matrizen. Jörn Loviscach. Versionsstand: 14. April 2009, 00:25

Die 3D-Parameter des Adjust-Fensters im Programm Apophysis 2.08 Beta 3D Hack

JavaFX Koordinaten und Transformationen

Blatt 06.3: Matrizen

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

Repräsentation und Transformation von geometrischen Objekten

Rendering für Augmented Reality. Ein Generisches AR-System

MaTHEMATISCHE GRUNDLAGEN BUGA-AR TELESCOPE. Marko HeRBERTZ

Matrizen. Jörn Loviscach. Versionsstand: 12. April 2010, 19:00 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

1: Diese Ausarbeitung enthält in Papierform:

Rendering für Augmented Reality

Rendering für Augmented Reality

Kapitel 3. Vektorräume. Josef Leydold Mathematik für VW WS 2017/18 3 Vektorräume 1 / 41. : x i R, 1 i n x n

Transkript:

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 Übung Computergrafik 1 SoSe 29 5/8/29 2

Koordinatensysteme Koordinatensysteme Im allgemeinen frei wählbar Meistens rechtsdrehend und rechtwinklig Beispiele aus der Computergraphik: x y (Quelle: http://www.falloutsoftware.com/tutorials/gl/gl.htm) 5/8/29 Übung Computergrafik 1 SoSe 29 3

Koordinatensysteme II Koordinatensysteme werden aufgespannt durch Ursprung und Basis Beispiel: * Gegeben: Gesucht: Darstellung von P in K Koordinaten? Wechsel des Koordinatensystems durch affine Transformation: B B x Übung Computergrafik 1 SoSe 29 5/8/29

Bisher: Translation: Addition eines Vektors Skalierung, Rotation : Multiplikation des Faktors Problem: Keine einheitliche Behandlung Zusammengesetzte Transformationen nur schwer zu realisieren Umkehrung von verketteten Transformationen nur schwer möglich. Übung Computergrafik 1 SoSe 29 5/8/29

Homogene Koordinatensysteme Jeder Punkt P ist eindeutig darstellbar durch: Das Tripel (ß 1,ß 2,1) ist eine Darstellung von P in homogenen Koordinaten. Die Affine Transformation lässt sich dann so darstellen: Übung Computergrafik 1 SoSe 29 5/8/29

Zusammengesetzte Transformationen Hintereinanderausführen von affinen Transformationen ergibt wieder affine Transformation: In homogenen Koordinaten: Achtung: Reihenfolge ist wichtig! Übung Computergrafik 1 SoSe 29 5/8/29

Komplizierte Transformationen lassen sich zusammensetzen Drehung um beliebigen Punkt P Skalierung mit Bezug auf beliebigen Punkt P Transformation wird akkumuliert Transformationsmatrix wird im vornherein berechnet Anwendung auf alle Punkte auf einmal Affinität => nur Punkte müssen transformiert werden! Geraden bleiben gerade Parallele Kanten bleiben parallel Linien und Flächen sind durch Punkte eindeutig bestimmt Transformierte Objekte sind isometrisch (ähnlich) zum Original Übung Computergrafik 1 SoSe 29 5/8/29

Transformationsmatrizen Die allgemeine Transformationsmatrix: Skalierung Rotation Translation Im Speicher im column major Format (d.h. spaltenweise): a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4 d1 d2 d3 d4 1 2 3 4 5 6 7 8 9 1 11 12 13 14 15 Übung Computergrafik 1 SoSe 29 5/8/29

5/8/29 Übung Computergrafik 1 SoSe 29 Wichtigste Transformationen = 1 1 1 1 dz dy dx T = 1 sz sy sx S = = = 1 1 cos sin sin cos 1 cos sin 1 sin cos 1 cos sin sin cos 1 α α α α α α α α α α α α z y x R R R Translation Skalierung Rotation um x-, y-, z-achse

Umkehrung von Transformationen Transformationen lassen sich rückgängig machen indem man mit der Inversen der jeweiligen Transformationsmatrix multipliziert (wegen A * A -1 = 1) Deutlich einfacher: Die Transformation selbst umkehren, also zurückverschieben, -drehen, -skalieren (s.vorlesung) Dabei zählt wiederum die Reihenfolge: Eine Reihe von Transformationen T1, T2,..., Tn muss in der Reihenfolge Tn,..., T2, T1 rückgängig gemacht werden um das ursprüngliche Ergebnis zu erhalten Übung Computergrafik 1 SoSe 29 5/8/29

Projektionen in OpenGL Übung Computergrafik 1 SoSe 29 5/8/29 12

OpenGL Transformationen Feste Kette von Matrixmultiplikationen zur Transformation/Projektion Objekte in Object/World coordinates -> Farbige Pixel in Window coordinates Model-View Matrix Projection Matrix Perspective Division Viewport Transformation Object coordinates Eye coordinates Clip coordinates Normalized Device coordinates Window coordinates GL_MODELVIEW GL_PROJECTION glviewport (Quelle: http://www.opengl.org/resources/faq/technical/transformations.htm) 5/8/29 Übung Computergrafik 1 SoSe 29 13

OpenGL Object coordinates y p4 p3 x glvertex erzeugt Punkte in Object coordinates OpenGL gibt keine Einheiten für Object coordinates vor p1 z p2 (Quelle i.f.:http://www.opengl.org/documentation/specs/version2./glspec2.pdf ) 5/8/29 Übung Computergrafik 1 SoSe 29 14

OpenGL Eye coordinates 5/8/29 Übung Computergrafik 1 SoSe 29 15

OpenGL Clip coordinates glfrustum (left, right, bottom, top, near, far) multipliziert die aktuelle Matrix mit einer perspektivischen Matrix gluperspective ist die benutzerfreundlichere Variante y z 5/8/29 Übung Computergrafik 1 SoSe 29 16 left x top bottom right near plane far plane

GL_PROJECTION Perspektivisch glfrustum (s. rechts) und gluperspective produzieren Matrizen die nicht mehr dem Schema a4 = b4 = c4 =, d4 = 1 folgen! Nach der Multiplikation mit GL_PROJECTION entspricht die homogene Komponente wc der Punkte nicht mehr unbedingt 1 (Quelle:http://www.opengl.org/sdk/docs/man/xhtml/glFrustum.xml ) 5/8/29 Übung Computergrafik 1 SoSe 29 17

GL_PROJECTION Orthographisch glortho (s. rechts) erzeugt Matrizen, die dem Schema a4 = b4 = c4 =, d4 = 1 folgen! Nach der Multiplikation mit GL_PROJECTION ist die homogene Komponente wc der Punkte weiterhin 1 (Quelle:http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml ) 5/8/29 Übung Computergrafik 1 SoSe 29 18

Normalized Device Coordinates Clip coordinates liegen im Wertebereich (-wc ; +wc) Um die Darstellung einheitlich zu machen wird durch wc geteilt, um die Koordinaten in den Wertebereich (-1; 1) zu bringen eye coordinates clip coordinates normalized device coordinates (Quelle:http://homepages.uni-paderborn.de/prefect/glmath/spaces.html ) 5/8/29 Übung Computergrafik 1 SoSe 29 19

OpenGL Window coordinates pd und pd sind Breite und Höhe, ox und oy der Mittelpunkt des Ausgabefensters glviewport(x, y, width, height) berechnet aus den Ecken des Fensters automatisch pd, pd, ox und oy n und f sind initial auf und 1 gesetzt, können mit gldepthrange verändert werden und haben Auswirkungen auf den Depth Buffer (s.u.) 5/8/29 Übung Computergrafik 1 SoSe 29 2

OpenGL Transformationen - Beispiel 5/8/29 Übung Computergrafik 1 SoSe 29 21

OpenGL Matrixoperationen glmatrixmode Wechselt die aktuelle Matrix (GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE) glloadidentity Lädt die Identitätsmatrix glmultmatrixf (GLdouble* m) Multipliziert die aktuelle Matrix mit m 5/8/29 Übung Computergrafik 1 SoSe 29 22

OpenGL Matrixoperationen OpenGL hat für jede Matrix einen Stack Matrizen können gesichert werden, um sie nach weiteren Transformationen wieder laden zu können Ohne Stack müssten alle Transformationen rückgängig gemacht werden (-> hoher Aufwand) Der Modelview-Stack kann mindestens 32, die beiden anderen mindestens zwei aufnehmen 5/8/29 Übung Computergrafik 1 SoSe 29 23

OpenGL Matrixoperationen Speichern einer Matrix auf dem Stack: void glpushmatrix(); Laden einer Matrix vom Stack: void glpopmatrix(); Dadurch lassen sich Transformationen ohne großen Aufwand rückgängig machen 5/8/29 Übung Computergrafik 1 SoSe 29 24

Transformationen (GL_MODELVIEW) Verschiedene Möglichkeiten Objekte zu transformieren: gltranslatef(float x, float y, float z) Verschiebt alle nachfolgenden Objekte entlang der drei Koordinatenachsen (Translation) glrotatef(float angle, float x, float y, float z) Rotiert alle nachfolgenden Objekte um Winkel angle (in Grad) um eine beliebige Achse (Rotation) glscalef(float x, float y, float z) Skaliert alle nachfolgenden Objekte entlang der drei Koordinatenachsen (Skalierung) (Quelle: http://www.opengl.org) 5/8/29 Übung Computergrafik 1 SoSe 29 25

OpenGL Matrixausgabe 5/8/29 Übung Computergrafik 1 SoSe 29 26

Depth Buffering Übung Computergrafik 1 SoSe 29 5/8/29 27

Depth Buffering Durch die Projektion von 3D nach 2D werden Objekte verdeckt Depth Buffering (Z-Buffering) führt dazu, dass es die richtigen trifft (z-culling) Implementierung: Matrix in Bildgröße die z-werte enthält (Quelle: http://en.wikipedia.org/wiki/file:z-buffer.jpg) 5/8/29 Übung Computergrafik 1 SoSe 29 28

OpenGL Depth Buffer Wird der Depth Buffer in OpenGL nicht aktiviert können Objekte im Hintergrund solche im Vordergrund verdecken (Zeichenreihenfolge!) glenable(gl_depth_test) aktiviert den Depth Buffer glclear(gl_depth_buffer_bit) löscht den Depth Buffer (am Besten bei jedem Neuzeichnen: glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); ) 5/8/29 Übung Computergrafik 1 SoSe 29 29

OpenGL Depth Buffer Weitere OpenGL Depth Buffer Funktionen: gldepthrange (nearclip, farclip) setzt n und f (s. Folie 2) auf Werte zwischen und 1 damit nicht der gesamte Depth Buffer ausgenutzt wird gldepthfunc legt fest wann ein Pixel gezeichnet wird (Gültige Werte: GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, GL_ALWAYS) (Default: GL_LESS) glcleardepth bestimmt bis zu welcher Tiefe der Depth Buffer beim Aufruf von glclear gelöscht wird (Default: 1) 5/8/29 Übung Computergrafik 1 SoSe 29 3

Kontextmenüs in Qt Übung Computergrafik 1 SoSe 29 5/8/29 31

Qt Kontextmenüs Werden über QMenu und QAction realisiert. Zum Aufruf muss QtWidget::contextMenuEvent(QContextMenuEvent* e) überschrieben werden Um QActions auszuführen muss auf connect zurückgegriffen werden 5/8/29 Übung Computergrafik 1 SoSe 29 32

Qt Kontextmenüs gltest.h gltest.cpp 5/8/29 Übung Computergrafik 1 SoSe 29 33

Qt Kontextmenüs gltest.cpp 5/8/29 Übung Computergrafik 1 SoSe 29 34

Literatur Weiterführende Literatur http://www.opengl.or g/sdk/docs /man/ James Van Verth, Lars Bishop: Essential Mathematics for Games and Interactive Applications: A Programmer's Guide OpenGL Redbook : http://fly.srk.fer.hr/~unreal/theredbook/ NeHe OpenGL Tutorials: http://nehe.gamedev.net/ Greg Sidelnikov Tutorials: http://www.falloutsoftware.com/ programming.php4 Übung Computergrafik 1 SoSe 29 5/8/29 35