OpenGL Transformationen: Modeling

Ähnliche Dokumente
Planare Projektionen und Betrachtungstransformation. Quelle: Angel (2000)

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

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

Grundlagen der 3D-Computergrafik Programmieren mit OpenGL

Grafikprogrammierung (Echtzeitrendering)

Computer Graphik. Mitschrift von

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

4. Kapitel 3D Engine Geometry

Einführung in OpenGL. Einführung in OpenGL

Eine Einführung in OpenGL

VHDL - Grundlagen des Pointrenderings

y x x y ( 2x 3y + z x + z

2D-Transformationen. Kapitel Translation. 6.2 Skalierung

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

Computer-Graphik I. Projektion und Perspektive 2. G. Zachmann Clausthal University, Germany

2.2 Projektionen und Kameramodelle

Computergraphik Grundlagen

geschlossene Schachtel mit einem kleinen Loch

OpenGL als API für Augmented und Virtual Reality

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

Inhaltsverzeichnis. 1 Hardwaregrundlagen

Computer-Graphik I Transformationen & Viewing

Rendering für Augmented Reality

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

Inhaltsverzeichnis. 1 Hardwaregrundlagen

Softwareprojekt Spieleentwicklung

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern

Real-Time High-Dynamic Range Texture Mapping

Objektorientierte Programmierung

Vortrag Postscript, Einführung, Koordinatgeometrie und Prozeduren

Texture Based Direct Volume Rendering

Thema: Ein Ausblick auf die Möglichkeiten durch den Software-Einsatz im Mathematikunterricht.

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

Kurzeinführung in OpenGL(ES)

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

Farbtiefe. Gängige Farbtiefen

Entwicklung eines JOGL-basierten Frameworks zur Darstellung von Game Physics

Vektoren und Matrizen

1 Definition. 2 Besondere Typen. 2.1 Vektoren und transponieren A = 2.2 Quadratische Matrix. 2.3 Diagonalmatrix. 2.

Texture Mapping. Texturen

Programmieren mit DirectX

Marion Braunschweig, Mathias Weiß

Programmierpraktikum 3D Computer Grafik

Computergrafik 1. 2D Rendering

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

Proseminar Computergrafik: OpenGL

Grafikprogrammierung mit OpenGL I

376 6 Bilder und Grafiken für das Web

entspricht der Länge des Vektorpfeils. Im R 2 : x =

9.2 Invertierbare Matrizen

Computergrafik 1 3D Rendering

Fachartikel. Telezentrische Objektive für Kameras größer 1 Zoll

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, Kore Nordmann

Einführung in die Kodierungstheorie

Inhalt. Grundlagen - Licht und visuelle Wahrnehmung 1. Grundlagen - 2D-Grafik (Teil 1) 43. Grundlagen - 2D-Grafik (Teil 2) 67

Graphische Datenverarbeitung und Bildverarbeitung

Matrizen, Determinanten, lineare Gleichungssysteme

Computer Graphik II Tesselierung impliziter Kurven und Flächen

Prof. J. Zhang Universität Hamburg. AB Technische Aspekte Multimodaler Systeme. 16. Dezember 2003

Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian. Dauer: 30 min jeweils. Note: 1.

Vektoren. Kapitel Skalare, Vektoren, Tensoren. 3.2 Vektoren

Lineare Abbildungen. Es seien V und W Vektorräume über einem Körper K. Eine Abbildung f : V W heißt linear oder Homomorphismus, falls. d.h.

Digitale Bilder. Ein Referat von Jacqueline Schäfer und Lea Pohl Am

Teil V. Grundlagen der Computergrafik

Graphikformate Ein kurzer Überblick

Homogenität Assoziativgesetz A (B 1 + B 2 ) = A B 1 + A B 2 Distributivgesetz 1 (A 1 + A 2 ) B = A 1 B + A 2 B Distributivgesetz 2

Grafikeinbindung in L A T E X mittels graphic[sx], wrapfig, picinpar

3.6 Drehungen in der Ebene

Tutorial Spieleentwicklung mit OpenGL und Java. oder. JOGLn in Java. Prof. Dr. W. P. Kowalk Universität Oldenburg

Mathematik für Wirtschaftswissenschaftler, WS 10/11 Musterlösungen zu Aufgabenblatt 11

Verbesserte Immersion in Stereoprojektionen anhand weicher Schatten, Tiefenunschärfe und Spiegelungen.

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

Bildschirmauflösungen im Vergleich (verkleinert!)

Praktikum 1. Bildverarbeitungs - Software ImageJ LUT Manipulationen Bild - Quantisierung

Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle

Matrizen. Aufgabe 1. Sei f R 2 R 3 definiert durch. x y x Berechnen Sie die Matrix Darstellung von f. Lösung von Aufgabe 1.

Kurzeinführungin Blender & Gimp

Einführung in Excel. Zur Verwendung im Experimentalphysik-Praktikum. für Studierende im Sem. P3

Serie 10: Inverse Matrix und Determinante

Freie Rotation im Raum

Animation ist das Erzeugen von Filmen mit Hilfe der Computergrafik. Objekte bewegen sich hierbei oder Beleuchtung, Augpunkt, Form,... ändern sich.

FreeCAD. Erste Schritte Autor: Bernhard Seibert. Der erste Körper... 2 Turmbau... 3 Teilnut... 4 Führungsblock... 5 Video-Tutorials...

Computergraphik Grundlagen

Jörn Loviscach Hochschule Bremen

David Obermann Fragen zu Grundlagen Digitaler Medien SoSe 2012 (Teil II)

Referat von Yvonne Kaiser und Carolin Siebert

Grafikformate. Auflösung Farbtiefe Farbmodelle

Lehrbuch der Grafikprogrammierung

DEUTSCHE SCHULE MONTEVIDEO BIKULTURELLES DEUTSCH-URUGUAYISCHES ABITUR ( AUF SPANISCH )

3D-Computergrafik und animation. Shading und globale Beleuchtungsverfahren, Animationstechniken

computer graphics & visualization

Korrelationsmatrix. Statistische Bindungen zwischen den N Zufallsgrößen werden durch die Korrelationsmatrix vollständig beschrieben:

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

TUTORIAL. Wie erstelle ich Karten mit umap? Was ist umap?

1 Analytische Geometrie

Transkript:

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: glmultmatrix{fd}(mat) eigene Matrizen (z.b.: OpenGL bietet keine Scherung) Aber: OpenGL multipliziert von rechts (engl.: postmultiply) Aufbau von T T gesamt in umgekehrter Reihenfolge: C 0 = I C 1 = C 0 T T n (...) C i = C i-1 T T n-i+1 (...) /*Betr.: Matrix Modell-Trf.:*/ glmatrixmode(gl_modelview); glloadidentity(); glmultmatrixf(tn); /*...*/ glmultmatrixf(t1); C n = C n-1 T T 1 = T T n (... ) T T 2 T T 1 = T T gesamt C: aktuelle (engl. current) Positionierungsmatrix; I : Einheitsmatrix

OpenGL Transformationen: Modeling Bequemer (oft: schneller) als glloadmatrix*(),glmultmatrix*(): Translation eines Objektes (bzw. lokalen Koord.Systems): void gltranslate{fd}(type x,type y,type z); (Keine Änderung für (0.,0.,0.)) Rotation eines Objektes (bzw. lokalen Koord.Systems) um d. Winkel angle (in Grad) um eine Achse vom Koord.- Ursprung zum Punkt (x, y, z) gegen den Uhrzeigersinn: void glrotate{fd}(type angle,type x,type y,type z); (Abstand von Achse = Radius Umlaufbahn ; Keine Änderg für (0.,*,*,*); (0.,0.,0.,0.) zulässig/wirkungslos) Skalierungsfaktoren entlang d. Achsen d. Koord.Systems: void glscale{fd}(type x,type y,type z); (Keine Änderung für (1.,1.,1.); Skalierung mit 0. meist problematisch stattdessen: Projektion!) Alle OpenGL-Trfn sind Multiplikationen von rechts!

Bilder: OpenGL Programming Guide (Addison-Wesley Publishing Company) First Printing, 1997 OpenGL Transformationen: Modeling Code-Beispiele: Vor Viewing & Modeling: Modell-Bezug (wieder-)herstellen: Betr.: Modell Neuer Start glmatrixmode(gl_modelview); glloadidentity(); Multiplikationen von rechts mit der Transponierten gltranslatef (x, 0.,0.); glrotatef(angle[z],0.,0.,1.); glrotatef(angle[z],0.,0.,1.); gltranslatef (x, 0.,0.); glbegin(gl_polygon); /*(...) */ /*transformed vertices*/ glvertex3fv(v1); /*(...) */ glend();

OpenGL Transformationen: Viewing Sicht-Transformation bestimmt Lage und Orientierung des Sichtvolumens ( Augenpunkt, Blickrichtung ); sie wirkt in entgegengesetzter Weise wie die Modellierung: Virtual Walkthrough als Objekt-Trf. in umgekehrter Richtung. GLU-Funktion definiert Matrix und multipliziert von rechts: void glulookat( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centx, GLdouble centy, GLdouble centz, GLdouble upx, GLdouble upy, GLdouble upz); mit: eyex/y/z: Augenpunkt centx/y/z: bel. Punkt auf Sichtvolumen-Mittelachse upx/y/z: Vektor v. unterer zu oberer Sichtvol.-Kante OpenGL-Voreinst.: Augenpunkt am Ursprung, Blick entlang neg. z-achse äquivalent zu (centz beliebig): glulookat (0.,0.,0., 0.,0.,-100., 0.,1.,0.); *engl. virtual: eigentlich (vgl.: das Eigentliche) *

OpenGL Transformationen: Projection Projektions-Transformation legt Sichtvolumen-Form fest: Art der Projektion (perspektivisch / orthographisch) Objekte (bzw. O.-Teile), die ins Ergebnis-Bild kommen Vor Projektions-Transformation sicherstellen: glmatrixmode(gl_projection); glloadidentity(); Betr.: Sichtvolumen Festlegung d. Pyramidenstumpfs für die persp. Projektion und Multiplikation mit der aktuellen Positionierungsmatrix: void glfrustum(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far ); Eckpunkte der Deckfläche: (left, bottom, -near) und (right, top, -near); far: Abstand d.augenpunkts zur Grundfläche des Pyramidenstumpfs. Alle Größen >0. Tip: Irreal großes Sichtvolumen (z.b. 10-3...10 6 ) kann vorläufig helfen, verlorene Objekte ( black screen ) wieder zu finden.

OpenGL Transformationen: Viewport OpenGL-Parallelprojektion (Matrix-Def., -Multiplikation): void glortho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); Sicht-Quader mit Eckpunkten: (left, bottom, -near), (right, top, -near), (left, bottom, -far), (right, top, -far); alle Größen >0, near far. Viewport-Festlegung: void glviewport (GLint x,glint y,glsizei width, GLsizei height); mit: x,y: linke, untere Fenster-Ecke (def.: 0,0) width, height: Breite, Höhe des generierten Bildes (def.: Breite, Höhe des Fensters) Verzerrungen, falls width : height Breite : Höhe!

OpenGL Transformationen: Projection GLU-Alternative (definiert Matrix u. multipliziert v. rechts) für perspektivische Projektion: void gluperspective (GLdouble fovy, GLdouble aspect, GLdouble near, GLdouble far); mit: fovy: Sichtfeld (field of view) Sichtwinkel in y-richtg: 0. fovy 180. aspect: Seitenverhältnis d. Sichtfensters (Breite:Höhe) near, far: Augenpunkt-Abstände (>0) zu Deck- / Grund- Flächen des Sichtvolumens (clipping planes). glu-sichtfeld symmetrisch um Sichtvolumen-Mittelachse!

OpenGL: Matrix-Stack Modular-hierarchische Modellierung / Animation erfordern mehrfache Zwischenablage v.matrizen (In eigenen Koord. Systemen modellierte/animierte Roboter-Hand /-Unterarm /-Oberarm jeweils an linker / rechter R.-Schulter). Matrizen-Stapelspeicher für 32 (GL_MODELVIEW) bzw. 2 (GL_PROJECTION, GL_TEXTURE, GL_COLOR) 4x4-Matrizen. Ablage einer Kopie der aktuellen glmatrixmode()-matrix als 2.im Stapel (Verschiebung gespeicherter Mat. um eine Position; kein Einfluß auf darauffolgende Berechnungen): void glpushmatrix(void); /* Merke Dir! */ Aufgeben der aktuellen Matrix (der 1. im Stapel), weitere Verwendung der bisher 2. Stapel-Matrix (Rück- Verschiebung der anderen Matrizen im Stapel): void glpopmatrix(void); /* Erinnere Dich! */ (Fehlermeldungen, falls keine Speicherung mehr möglich bzw. noch keine Ablage erhältlich)

OpenGL: Farbe u. Schattierung Grundsätzlich: gleiche Farbdarstellg. für alle Geräte-Pixel; Farbdaten auf mehreren (Hw-) Bitebenen (bitplanes) = Teilspeicher in Bildspeicher-Dimension mit je 1 Bit / Pixel; Bildspeicher (framebuffer) mit 8 Bitebenen können 2 8, mit 24 (meist: 8R, 8G, 8B) 2 24 =16.777.216 Farben darstellen. (Color) Index Mode: Einmalig (je Fenster) einstellbare Farb-Palette (-Tabelle: engl. look up table bzw. color map) Bildspeicher (color buffer), meist für 256 Farben/Grautöne ( 8-bit buffer ), jeweils wählbar über Farb-/Grauton-Index RGBA Mode: Individuelle Pixel-Farbgebung durch R/G/B- Farbwerte, Alpha (1.=opak, def.) für Transparenz u./o. Farbmischung (blending) / lineare Berechnung, ggf. Gamma-Korrektur/ RGBA aufwendiger, aber verbreiteter Farbmodus nur beim Start (Initialisierung) einmal wählbar Farben werden Eckpunkten (vertices) zugewiesen

OpenGL: Farbe u. Schattierung Farbwerte meist als float [0. bis 1.] Interne Umrechnung auf System-Ressourcen z.b. bei 8 Bitplanes für jede Farbe: 0.=0/255;... ; 1.0=255/255 Systemabhängig möglich: Bitplane-Aufteilung bei Double Buffering (2x4 Bitplanes je Farbe); OpenGL vorsorglich: Halbton-Darstellung (engl. dithering); abstellbar mit: gldisable(gl_dither);//def.:glenable(gl_dither) (Denkbare Anwendung: Bilder/Grafiken mit 24 Bitplanes, flimmerfreie Fenster-Verlegung mit Double-Buffering evtl. in 2 Synchron-Fenstern) Wahl des Schattierungsmodells: void glshademodel (GLenum mode); Zulässige Werte für mode: GL_FLAT (Flat Farbwert einheitlich für ganze Fläche), GL_SMOOTH (Gouraud def.: Interpolation zwischen individuell berechneten Eckpkt-Farbwerten)