3D Graphics APIs: OpenGL & Fixed Function Pipeline

Slides:



Advertisements
Ähnliche Präsentationen
Computer Graphics Shader
Advertisements

Hauptseminar - Computer Graphics
• • • • • 3.2 Die projektive Erweiterung des E³
Kollisionen erkennen Kollisions- und Schnittpunkttests auf Dreieckbasis Kollisions- und Schnittpunkttests auf Viereckbasis Einsatz von achsenausgerichteten.
Grundlagen der Geometrie
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Graphische Datenverarbeitung IV Dr. Markus Heitz.
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java2D Richard Göbel.
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
5. Beleuchtung und Schattierung
Phong Shading (Normaleninterpolation)
Ein Beispiel in Java.
Simulation und 3D-Programmierung Praxis: Dreiecke, Texturen, Vertex-Buffer Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung.
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Viewing: Sichtbarkeitsbestimmung
Java3d „Licht und Material“
Diskrete Mathematik I Vorlesung Arrays-
So animieren Sie Kreisdiagramme mit der Eingangs-Animation „Rad“
OpenGL mit Delphi Allgemeines OpenGL-Funktionsbezeichnungen
Computergrafik Vom Dreieck zum Ego-Shooter Olaf Müller
Quaternionen Eugenia Schwamberger.
Special Effects Realistischeres Rendern einer Scene.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Ortsbasierte Sichtbarkeitsanalyse mit digitalen Geländemodellen auf mobilen Endgeräten Roland J. Graf Fachhochschule Salzburg.
Bildbearbeitung: Theorie
FHP - Fachbereich Bauingenieurwesen
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
Depth of Field Ein Fachvortrag von: Max Goltzsche und Igor Marijanovic Real-Time RenderingBeuth Hochschule für TechnikSoSe 2012.
§24 Affine Koordinatensysteme
Einsteigerkurs Andy Reimann - Mai Intro Trailer.
Projekteilnehmer: Ertas Mutlu Önal Kenan
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.
Computergrafik - Inhalt
3D- Spieleprogrammierung
Computergraphische Visualisierungs- verfahren für 3D-Stadtmodelle
Graphics in PDF Universität zu Köln Intelligente Dateisysteme Prof. Dr. Manfred Thaller WS 2013/14 Leonard Bornefeld-Ettmann.
Bildbearbeitung GIMP Theorieteil
Skalare, Vektoren.
Shader.
Geometrie : Rekonstruktion
Lineare Algebra, Teil 2 Abbildungen
Medizinische Visualisierung
Camera, Lights, Action… Dirk Primbs Developer Evangelist
Beleuchtungsmodelle, Schattierungsmodelle
Präsentation der Diplomarbeit:
Seminar: Grundlagen Wissenschaftlichen Arbeitens
Michael Schmidt computer graphics & visualization Texture Mapping Lapped Textures.
U N I V E R S I T Ä T KOBLENZ · LANDAU Arbeitsgruppe Computergrafik 4. Mai / 35 Projektpraktikum AR mit korrekter Beleuchtung Entwicklung einer.
Augmented Reality mit korrekter Beleuchtung Thorsten Grosch
Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002.
Universität zu Köln WS 2014/15 HKI – Softwaretechnologie 2 (Teil 1) Von Tilo Kochs.
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
Geometric Representation
Der Begriff Grafik Computergrafik ist die Erstellung und Verarbeitung von Grafiken mit Hilfe eines Computers. Hierzu benötigt man: Eingabegeräte wie zum.
Die Renderpipeline.
Multimedia und Virtual Reality Vorlesung am Martin Kurze Multimedia in 3D.
Diskrete Mathematik I Vorlesung 2 Arrays.
Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language.
JAVA 3D 1 Einführung in die Java3D API JAVA 3D2 Was ist Java3D? Standard-Extension-Klassenbibliothek für Java X (X >= 1.2) Ermöglicht.
Grundlagen der Geometrie
Funktionen Buffer Kathrina Schmidt Die Funktion Buffer (die „Pufferzone“ um räumliche Objekte) von Kathrina Schmidt.
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
...ist eine Maßeinheit für die Datenmenge und den Informationsgehalt. Dabei ist 1 Bit die kleinste darstellbare Datenmenge, die beispielsweise durch eine.
Clonpinsel/Kopierstempel
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Einführung in OpenGL Seminarvortrag im Rahmen des Bachelorstudiengangs „Scientific Programming“ Tural Bilalov.
Vergleich verschiedener 3D-Bibliotheken am Beispiel einer Massendarstellung von Zylindern Gehalten von : Thomas Nowicki Gehalten am : Geodätisches.
Aufbau und Funktion von 3D- Grafikkarten von Christian Reis.
 Präsentation transkript:

3D Graphics APIs: OpenGL & Fixed Function Pipeline

Übersicht OpenGL Fixed Function Pipeline Was ist das? Wer ist das? Programmbeispiel Fixed Function Pipeline Vom Modell zum Bild Grundbegriffe Die OpenGL-Pipeline Per-Vertex Operations Rasterization Per-Fragment Operations

OpenGL = Open Graphics Library OpenGL – Was ist das? OpenGL = Open Graphics Library Spezifikation einer API zur Entwicklung von 3D-Grafik-Anwendungen API = Application Programming Interface Bibliothek von Funktionen zum Zugriff auf ein darunterliegendes Softwaresystem. Beispiel: Dateisystem-API eines Betriebssystems.

OpenGL – Ziele Erleichterung für den Programmierer Einheitliche API für die Grafikprogrammierung Plattformunabhängigkeit Verbindlicher Leistungsumfang Hardwarenahe Grafikprogrammierung Zugriff auf Hardwarefeatures Ständige Weiterentwicklung Nutzung und Anpassung an neue Technologien

OpenGL – Wer ist das? Entwickelt von Silicon Graphics (sgi) Version 1.0 veröffentlich am 1. Juli 1992 Weiterentwicklung durch das Architecture Review Board (ARB) Konsortium von Unternehmen aus der Branche Gründungsmitglied Microsoft steigt 2003 aus Seit September 2006 eingegliedert in die Khronos Group

Aus Sicht des Programmierers OpenGL Library in gängigen Entwicklungsumgebungen bereits enthalten Nutzung über Einbindung der Library und zugehörigen Headerdatei Viele zusätzliche hilfreiche Libraries verfügbar Breite Unterstützung bei Grafikkarten und Betriebssystemen

Programmausschnitt int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth // Buffer glLoadIdentity(); // Reset The Current Modelview Matrix glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The // Screen 6.0 glBegin(GL_TRIANGLES); // Drawing Using Triangles glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red glVertex3f( 0.0f, 1.0f, 0.0f); // Top glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right glEnd(); // Finished Drawing The Triangle glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units glColor3f(0.5f,0.5f,1.0f); // Set The Color To Blue One Time Only glBegin(GL_QUADS); // Draw A Quad glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right glEnd(); // Done Drawing The Quad return TRUE; // Keep Going }

Programmausgabe

Übersicht OpenGL ✓ Fixed Function Pipeline Vom Modell zum Bild Grundbegriffe Die OpenGL-Pipeline Per-Vertex Operations Rasterization Per-Fragment Operations

Vom Modell zum Bild Aus der dreidimensionalen mathematischen Beschreibung einer Szene soll ein zweidimensionales Bild erzeugt werden. Dieser Vorgang heißt Rendering. Rendering

Raytracing Grundlegendes Verfahren: Aussendung eines Strahls vom Augpunkt durch die Bildebene. Trifft der Strahl auf ein Objekt, so nimmt der Bildpunkt seine Farbe an. Berechnung von Schatten durch Schattenstrahlen.

Rendering in OpenGL OpenGL nutzt stattdessen eine Rendering-Pipeline. Die Pipeline erhält verschiedene Parameter als Eingabe und berechnet aus ihnen ein Rasterbild. Der Ablauf der Berechnungen und die verwendeten Verfahren sind in OpenGL fest vorgegeben (Fixed Function Pipeline). Dadurch gut in Hardware umsetzbar.

Primitive und Vertices Alle Grafikobjekte bestehen aus Primitiven. Primitive sind Punkte, Linien, Dreiecke und andere Polygone. Primitive sind definiert durch ihre Eckpunkte (Vertices).

Primitive und Vertices Vertices speichern Attribute: Koordinaten Farbinformationen ggf. Texturkoordinaten andere Informationen …

OpenGL Rendering Pipeline (vereinfachte Darstellung)

Per-Vertex Operations Die übergebenen Vertices werden bearbeitet : Im dreidimensionalen Raum platzieren In Kamerakoordinaten umrechnen Auf 2-dimensionale Koordinaten projizieren Dies geschieht jeweils durch Multiplikation der Vertices mit geeigneten Matrizen.

Model Transformation Eingabe: Vertices in lokalen Koordinaten Die lokalen Koordinaten des Primitivs werden durch Drehung, Skalierung und Verschiebung in Weltkoordinaten überführt. Ausgabe: Vertices in Weltkoordinaten (0,1) Model Transformation (-1,-1) (1,-1) Weltkoordinatensystem lokale Koordinaten

Viewing Transformation Eingabe: Vertices in Weltkoordinaten Analog zur Model Transformation werden alle Vertices entsprechend zur Kameraposition transformiert. Die Kamera befindet sich nun im Ursprung, und blickt die Tiefenachse hinunter. Ausgabe: Vertices in Kamerakoordinaten. In OpenGL: Model und Viewing Transformation zu ModelView-Matrix zusammengefasst.

Lighting Für jeden Vertex wird ein Beleuchtungswert berechnet. Abhängig von Lichtquellen und den Normalenvektoren der Vertices. OpenGL nutzt das Phong-Beleuchtungsmodell.

OpenGL Rendering Pipeline (vereinfachte Darstellung)

Projection Transformation Eingabe: Vertices in Kamerakoordinaten Sichtbarer Bereich wird als Pyramidenstumpf aufgefasst (Frustum).

Projection Transformation Der Stumpf wird nun zu einem Einheitswürfel transformiert. Dabei tritt die typische perspektivische Verzerrung auf. Der Würfel enthält den gesamten sichtbaren Bereich.

Primitive Assembly OpenGL gruppiert zusammengehörige Vertices zu Primitiven. Unsichtbare Primitive (die uns ihre Rückseite zuwenden) werden entfernt (Backface Culling). Primitive, die über den Würfel hinausragen, werden entlang der Würfelkanten beschnitten. neuer Vertex Clipping

Viewport Transformation Die verbliebenen Vertices werden auf eine zweidimensionale Ebene (Viewing Plane) projiziert. Der Tiefenwert bleibt allerdings noch erhalten. Die entstandenen normierten 2D-Koordinaten werden schließlich auf echte Pixelkoordinaten des Bildschirms transformiert.

OpenGL Rendering Pipeline (vereinfachte Darstellung)

Rasterization Allgemein: Umwandeln einer vektoriell beschriebenen Bildinformation zu einem Rasterbild. Hier: Umwandeln der noch durch Vertices beschriebenen Primitiven in darstellbare Bildinformationen.

Scanline Rendering Prüfung jedes Bildpunkts auf Überdeckung mit dem Grafikprimitiv. Ablauf zeilenweise (in „Scanlines“). Bei Überdeckung Erstellung eines Fragments.

Rasterization Durch Interpolation aus den Vertexattributen werden die Beleuchtungs-, Farb- und ggf. Texturkoordinaten für das Fragment gewonnen. rot grün blau

OpenGL Rendering Pipeline (vereinfachte Darstellung)

Per-Fragment Operations Wenn für ein Fragment Texturkoordinaten vorliegen, wird dem Fragment der passende Farbwert aus der Textur zugewiesen. Durch eine Reihe von (optionalen) Tests, wird geprüft, ob das Fragment dargestellt werden soll.

Per-Fragment Operations Tiefentest Tiefeninformation des Fragments wird mit Depth Buffer verglichen Wenn ein Objekt mit geringerer Tiefe (vor dem aktuellen Objekt) existiert, wird Fragment verworfen Ansonsten wird Framebuffer an dieser Stelle überschrieben bzw. mit neuem Farbwert vermischt.

Ausblick Fixed Function Pipeline inzwischen überholt. Hardware-Entwicklung macht weiterhin Fortschritte. OpenGL jetzt in Version 2.1 (mit in Teilen programmierbarer Rendering-Pipeline) Bald: Version 3.0 Größerer Umbau der API Nicht mehr abwärtskompatibel zu Vorversionen Keine Fixed Function Pipeline mehr

Fragen