§0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL...

39
§0-1 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 2005 0.1 Überblick Bereiche der Visualisierung - Flow-Vis - Software-Vis - Tensorfield-Vis - Bio-Medical-Vis - Mobile Vis - Geospatial-Vis - Architectural Vis - Vol-Vis - InfoVis - Comparative Vis

Transcript of §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL...

Page 1: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-1

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Bereiche der Visualisierung

- Flow-Vis

- Software-Vis

- Tensorfield-Vis

- Bio-Medical-Vis

- Mobile Vis

- Geospatial-Vis

- Architectural Vis

- Vol-Vis

- InfoVis

- Comparative Vis

Page 2: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-2

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

Simulationsdaten

Startwerte, Randbedingungen

(mathematisches) Modell

numerische Simulation

Messdaten

Simulation

Visualization

Rendering

Visualisierungsdaten

Datenfilterung / -reduktion

Mapping:

mathematisches Modell

→ Visualisierungsmodell

Simulationsdaten

Bilddaten

Diskretisierung

Sichtdefinition

Transformation

Projektion

Rasterisierung

Visualisierungsdaten

0.1 Überblick

Visualisierungs-Pipeline

Page 3: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-3

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungs-Beispiel: „Kontext-sensitive Visualisierung“(Jun. Prof. Dr. Achim Ebert)State-of-the-Art bei Visualisierungssystemen:- Systemdesign

- Große monolithische Systeme- Für spezielle Verwendungszwecke entwickelt

- Softwareentwicklung- Anwendung und Visualisierungssystem eng gekoppelt- Programmierung sehr aufwendig

- Flexibilität- Plattformabhängigkeit- Manuelle Einstellung der Systemparameter- Keine dynamische Anpassung

Page 4: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-4

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungs-Beispiel: „Kontext-sensitive Visualisierung“

- Definition: kontextsensitiv

- kontextbezogen, kontextadaptiv

- „auf den aktuellen Zusammenhang – den Kontext – bezogen”

- Definition: kontextsensitive Visualisierung

- Eine Visualisierung bzw. eine Visualisierungsapplikation istgenau dann kontextsensitiv, wenn

- sie vorgegebene Kontexte berücksichtigt und

- flexibel auf sich dynamisch ändernde Situationenproaktiv reagiert.

Page 5: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-5

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung - Szenarien

- Benutzerkontext

- Individualität und Personalisierung

- Benutzermodell: individuelle Benutzereigenschaften

Page 6: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-6

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung - Szenarien

- Benutzerkontext

- Situationskontext

- Aktuelle Situation des Benutzers

- Orts- und Umgebungsmerkmale

- Visualisierungsanwendungen:

- Location-based services

- Mobile Visualisierung

Page 7: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-7

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung - Szenarien

- Benutzerkontext

- Situationskontext

- System- und Interaktionskontext

- Systemkontext: Möglichkeiten der Rechnerumgebung

- Plattformunabhängigkeit

- Interaktionkontext: sich dynamisch ändernde Werte

- Flexibilität des Visualisierungsprozesses

- Parameterwahl: Framerate vs. Qualität

Page 8: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-8

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung - Szenarien

- Benutzerkontext

- Situationskontext

- System- und Interaktionskontext

- Darstellungskontext

- Ausgabemedium (Art, Größe, Auflösung)

- Thematik: Wie stelle ich etwas dar?

Page 9: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-9

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung - Szenarien

- Benutzerkontext

- Situationskontext

- System- und Interaktionskontext

- Darstellungskontext

- Datenkontext

- Wünsche und Vorgaben des Benutzers

- Parameter i.d.R. nicht im Voraus bekannt

- Thematik: Was stelle ich dar?

Page 10: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-10

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Kontext-sensitive Visualisierung – Agentengesteuerte Visualisierungspipeline

UserDemands

Interaction

SystemPlatform

SystemValues

Data structures /Geometry /Colors /Textures

Measurements /Empirical Data

Model /Simulation

Resolution

MaterialsRenderingGeometry

LightsAnti-

Aliasing

Visualization

Reader FilterVisualizationAlgorithms

Page 11: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-11

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel MacVis: Multi Agent- and Component-based Visualization

PERFORMANCE AGENT

READERMARCHING

CUBELEVEL OF

DETAILTEXTURECOORDS

RENDERER

USER DEMANDS ENVIRONMENT

LEGEND

REACTIVE AGENT

PROACTIVE AGENT

DATA GENERATION DATA CONVERSION DATA VISUALIZATION

CONTROL LOOP

REACTIVE AGENTKNOWLEDGE BASE

ENVIRONMENTKNOWLEDGE BASE

Page 12: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-12

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel MacVis: CT-Datensatz eines menschlichen Kopfes

- 94 Schichtaufnahmen- Abstand: 1.5 mm- Auflösung: 2562 Pixel- Pixelabstand: 0.8 mm- Farbtiefe: 12 Bit

- Marching-Cubes-Algorithmus- Berechnung von Konturflächen- Approximation durch Dreiecksnetze- Im Beispiel: ca. 150.000 Dreiecke (beste Qualitätsstufe)

- Level of Detail

Page 13: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-13

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel MacVis: Visual Prototyping

Page 14: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-14

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel MacVis: Volumen-Rekonstruktion aus CT-Datensätzen

Page 15: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-15

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Einschub: Marching-Cubes Algorithmus- Berechnung von Konturflächen- Erweitert Marching-Squares auf 3D- Marching Squares:

- Wähle Zelle- Bestimme Zustand der Zelle -> Bitvektor- Lookup-Table -> Verlauf der Konturlinie- Berechne Schnittpunkte mit Kanten der Zelle:

- Weiter mit benachbarter Zelle

Grundlagen Kontextsensitive Visualisierung MacVisMacVis Virtual Try-On Zusammenfassung

( ) i jS 1 V V= − λ + λ mit i

j i

C f (V )

f (V ) f (V )

−λ =−

15

0 1 2

3 4 5

6 7 8

9 10 11

12 13 14

Page 16: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-16

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog- Vision

- Interaktiver Bekleidungskatalog mit Kunden als 3D-Modell- Konfektionsware und Maßkonfektion- Visuelle Passformkontrolle

Page 17: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-17

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog- VITUS 3D Body-Scanner

- 360°-Scanner; Scanvolumen: 1.2m x 0.8m x 2.1m- Laserklasse: 1 (augensicher)- Scandauer: 10 - 20 Sekunden- Auflösung: 1 - 2 mm- Optional: hochauflösende Farbtexturen

- Automatische Bestimmungindividueller Körpermaße

- Virtueller Kunde- Scan-Objekt + Maße + Featurepunkte

Page 18: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-18

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog- Kleidungssimulation

- extrem zeitaufwendig- Eingabe: 3D-Scan des Kleidungsstücks- Morphing-Agent

- Regelsystem- Basis: bekleidungstechnische Größentabellen

- Exakte Maßvorgaben

- Lokalität: Änderung von Einzelmaßen (z.B. Ärmellänge)

- Kopplung von Maßänderungen (-> Konfektionsgrößen)

- Shape-Deformation, Morphing zwischen Größen

Page 19: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-19

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog- Morphing-Technik

- Segmentierung des Kleidungsstückes- Bestimmung einer geeigneten

Parametrisierung für jedes Segment

- Deformation- Änderung der lokalen

Eckpunkt-Koordinaten bzgl. zugehöriger Parametrisierung

- Gesamt-Morph- Additive lokale Deformationen

zylindrisch

sphärisch

zylindrisch

zylindrisch

zylindrisch

Page 20: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-20

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog- Virtuelle Anprobe

- Positionierung- Vorpositionierung: Featurepunkte aus Scanprozess- „Haltungskorrektur” zur genauen Positionierung

Page 21: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-21

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: VirtualTryOn – Virtueller BekleidungskatalogErgebnisse

Page 22: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-22

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: Mobile Visualisierung- Inhalte

- Framework für ein flexibles, mobilesInformationsvisualisierungssystem

- Optimale visuelle Aufbereitung der Information- Objekt- und/oder aufgabenorientierte Visualisierung- Integration von 3D-Visualisierung auf allen Plattformen- Einsatz modernster mobiler Geräte und

Übertragungstechnologien- Demonstrator

- Effiziente Informationsvermittlung und betriebliche Leistungssteigerung im Bereich von Abwasseranlagen

- Resultat: Transparentere sowie ökonomisch und ökologisch optimierte Prozesse in der Siedlungswasserwirtschaft

Page 23: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-23

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: Mobile Visualisierung - Technik

Server

Datenbank

PLS-Datenbank

Mess- undProzessdaten

Dokumente

Pläne

Fotos

Videos

3D-Objekte

Benutzer-Anfrage

DynamischeDarstellung

DB-Anfr

age

DB-AnfrageResultat

Result

at

Clients

Visualisierungsagenten

Legende:

Page 24: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-24

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.1 Überblick

Anwendungsbeispiel: Mobile Visualisierung - Anwendungen- Prozessüberwachung und

-visualisierung- Controlling und Benchmarking- Reparatur und Wartung- Aus- und Weiterbildung- Notfall/Unfall

Page 25: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-25

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 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

- Das OpenGL Architectural Review Board – ARB – bestimmt den Standard

Page 26: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-26

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Eigenschaften

- Hohe Qualität und leistungsfähig

- Anwendungen in

– CAD/CAM/CAE

– Spiele

– Medizin

– VR

– Film / Fernsehen

Page 27: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-27

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Vorteile für Entwickler

- Industriestandard, gratis

- Neutral und plattformübergreifend

- Stabil, kompatibel zu früheren Versionen

- Zuverlässig und portierbar, unabhängig von

Betriebs- und Window-System

- Entwickelt sich weiter, (aktuell: Vers. 1.3)

- Skalierbar: Home PC bis Supercomputer

- Ausgereiftes API, das low-level Details kapselt

- Ausführliche Dokumentation erhältlich

Page 28: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-28

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Software Entwicklung

- OpenGL ist reich an Primitiven für

– Geometrie und Bild, Display-Listen, Transformationen, Beleuchtung, Texturen, Anti-aliasing, Blending, …

- Anbindung an C, C++, Fortran, Ada, Java, (Lisp) ausgehend von einheitlicher Spezifikation.

- Läuft unter den Betriebssystemen UNIX, Linux, MacOs, Windows 95/98/2000, Windows NT, Linux, Python, BeOS

- Läuft unter X-Windows (X11), Win32

- Unterstützt 2D und 3D

Page 29: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-29

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Hardwarebeschleunigung

- Je nach Grafik-Karte werden gewisse Befehle

– von reiner Software

– von der Hardware

– oder von Soft- und Hardware gemischt ausgeführt

- Flexible Implementierung für low-cost PC bis hin

zu Grosscomputern

- Kartenspezifische Erweiterungen sind ebenfalls

möglich

Page 30: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-30

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Grundlage für viele Anwendungen

- Viele high-level API’s bauen auf OpenGL auf:

– Open Inventor, IRIS Performer, OpenGL Optimizer, OpenSceneGraph

- Applikationen die auf OpenGL basieren:

– Maya

– 3D Studio Max

– WorldToolKit, WorldUp

– CosmoWorld

– Games like Unreal, Quake2, …

– …

Page 31: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-31

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: ARB

- Das OpenGL Architecture Review Board (ARB),

wacht über den Standard

- Dem Konsortium das 1992 gegründet wurde,

gehören Firmen wie IBM, Intel, HP, Microsoft,

Silicon Graphics, Evans & Sutherlands, …, an

- OpenGL wird laufend weiterentwickelt

- Endverbraucher, Softwareverkäufer, und OpenGL

API Programmierer zahlen keine Lizenzgebühren,

(nur Hardware Hersteller)

Page 32: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-32

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Grundlagen

- API für Rendering in den Bildschirmspeicher,

unterstüzt keine Peripherie wie Window, Maus, Tastatur, …

– Wir verwenden hierzu GLUT

- Primitive (Punkt, Linie, Polygone, Pixel Rechteck)

unterliegen den jeweils aktiven Modi, die über

Prozeduraufrufe gesetzt werden können.

- OpenGL ist ein low-level API für 3D und 2D

Grafik, das das Rendering und weniger das

Modellieren von komplexen Objekten unterstüzt.

Page 33: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-33

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Grundlagen

- GL verwendet ein Client-Server Modell:

Client: Programm, das das API verwendet.

Server: Übernimmt das Rendering.

- OpenGL als Status-Maschine:

Client state

Server state

Page 34: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-34

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Syntax

- void glVertex3f(GLfloat x, GLfloat y, GLfloat z)

- void glNormal3dv(GLdouble arg[3])

- Rtype glName{e 1234}{e bsifd ub us ui}

– ([args,] T arg1, …, T argN [, args])

Page 35: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-35

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Hello World

#include <GL/glut.h>

int main(int argc, char** argv) {

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize (250, 250);

glutInitWindowPosition (100, 100);

glutCreateWindow ("hello");

init ();

glutDisplayFunc(display);

glutMainLoop();

return 0; /* ANSI C requires main to return int. */

}

Page 36: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-36

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Hello World

void init (void) {

/* select clearing color */

glClearColor (0.0, 0.0, 0.0, 0.0);

/* initialize viewing values */

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

}

Page 37: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-37

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

OpenGL: Hello Worldvoid display(void) {

glClear (GL_COLOR_BUFFER_BIT); /* clear all pixels *//* draw polygon with corners at (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */glColor3f (1.0, 1.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();/* don't wait! start processing buffered OpenGL routines */glFlush ();

}

Page 38: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-38

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

Aufgabe:

- Legen Sie in VisualStudio ein erstes Projekt an, übersetzen Sie das oben gegebene Beispielprogramm und führen Sie es aus.

- Fügen Sie der Szene ein gelbes Dreieck mit den Ecken (0.25, 0.75, 0.0) (0.75, 0.75, 0.0) und (0.75, 0.75, 0.3) hinzu.

- Statt einer orthogonalen Parallelprojektion können Sie auch eine perspektivische Projektion benutzen. Ersetzen Sie dazu im Code die „glOrtho“-Anweisung durch folgende Anweisungen:gluPerspective(fieldOfView, aspect, near, far);gluLookAt(eyeX, exeY, eyeZ, centerX, centerY, centerZ, upX, upX, upZ);

Experimentieren Sie mit verschiedenen Sichten auf die Szene.

Page 39: §0 Überblick, Einführung in OpenGL 0.1 Überblickdannen/HTW_Vis_2005/Kapitel00.pdf · - OpenGL ist ein low-level API für 3D und 2D Grafik, das das Rendering und weniger das Modellieren

§0-39

§0 Überblick, Einführung in OpenGL

Visualisierung mit C++ / OpenGL - SS 2005

0.2 Einführung in OpenGL

Literatur:

Computer Graphics with OpenGL (3. Auflage), D. Hearn, M.P. Baker. Prentice Hall, 2004. ISBN: 0130153907

OpenGL: A Primer (2. Auflage), Edward Angel, Addison-Wesley, 2004, ISBN 0321237625.

OpenGL 1.4 Programming Guide (3. Auflage), OpenGL ARB, Addison-Wesley, 2003, ISBN 032117348.

The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3, Mark J. Kilgard, Silicon Graphics, Inc. November 13, 1996