Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

§0-1 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 2007 0.1 Überblick Bereiche der Visualisierung -Flow-Vis -Software-Vis -Tensorfield-Vis.

Ähnliche Präsentationen


Präsentation zum Thema: "§0-1 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 2007 0.1 Überblick Bereiche der Visualisierung -Flow-Vis -Software-Vis -Tensorfield-Vis."—  Präsentation transkript:

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

2 §0-2 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 2007 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

3 §0-3 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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

4 §0-4 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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 ist genau dann kontextsensitiv, wenn - sie vorgegebene Kontexte berücksichtigt und - flexibel auf sich dynamisch ändernde Situationen proaktiv reagiert.

5 §0-5 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Kontext-sensitive Visualisierung - Szenarien -Benutzerkontext - Individualität und Personalisierung - Benutzermodell: individuelle Benutzereigenschaften

6 §0-6 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Kontext-sensitive Visualisierung - Szenarien -Benutzerkontext -Situationskontext - Aktuelle Situation des Benutzers - Orts- und Umgebungsmerkmale - Visualisierungsanwendungen: - Location-based services - Mobile Visualisierung

7 §0-7 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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

8 §0-8 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Kontext-sensitive Visualisierung - Szenarien -Benutzerkontext -Situationskontext -System- und Interaktionskontext -Darstellungskontext - Ausgabemedium (Art, Größe, Auflösung) - Thematik: Wie stelle ich etwas dar?

9 §0-9 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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?

10 §0-10 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Kontext-sensitive Visualisierung – Agentengesteuerte Visualisierungspipeline

11 §0-11 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel MacVis: Multi Agent- and Component-based Visualization PERFORMANCE AGENT READER MARCHING CUBE LEVEL OF DETAIL TEXTURE COORDS RENDERER USER DEMANDSENVIRONMENT LEGEND REACTIVE AGENT PROACTIVE AGENT DATA GENERATIONDATA CONVERSION DATA VISUALIZATION CONTROL LOOP REACTIVE AGENT KNOWLEDGE BASE ENVIRONMENT KNOWLEDGE BASE

12 §0-12 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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 Dreiecke (beste Qualitätsstufe) -Level of Detail

13 §0-13 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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 mit

14 §0-14 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel MacVis: Visual Prototyping

15 §0-15 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel MacVis: Volumen-Rekonstruktion aus CT- Datensätzen

16 §0-16 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog -Vision - Interaktiver Bekleidungskatalog mit Kunden als 3D-Modell - Konfektionsware und Maßkonfektion - Visuelle Passformkontrolle

17 §0-17 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog -VITUS 3D Body-Scanner - 360°-Scanner; Scanvolumen: 1.2m x 0.8m x 2.1m - Laserklasse:1 (augensicher) - Scandauer: Sekunden - Auflösung:1 - 2 mm - Optional:hochauflösende Farbtexturen -Automatische Bestimmung individueller Körpermaße -Virtueller Kunde - Scan-Objekt + Maße + Featurepunkte

18 §0-18 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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

19 §0-19 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Ü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

20 §0-20 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog -Virtuelle Anprobe - Positionierung - Vorpositionierung: Featurepunkte aus Scanprozess - Haltungskorrektur zur genauen Positionierung

21 §0-21 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: VirtualTryOn – Virtueller Bekleidungskatalog Ergebnisse

22 §0-22 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: Mobile Visualisierung - Inhalte - Framework für ein flexibles, mobiles Informationsvisualisierungssystem - 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

23 §0-23 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: Mobile Visualisierung - Technik

24 §0-24 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Überblick Anwendungsbeispiel: Mobile Visualisierung - Anwendungen -Prozessüberwachung und -visualisierung -Controlling und Benchmarking -Reparatur und Wartung -Aus- und Weiterbildung -Notfall/Unfall

25 §0-25 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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: -Das OpenGL Architectural Review Board – ARB – bestimmt den Standard

26 §0-26 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL OpenGL: Eigenschaften -Hohe Qualität und leistungsfähig -Anwendungen in – CAD/CAM/CAE – Spiele – Medizin – VR – Film / Fernsehen

27 §0-27 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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. 2.1) -Skalierbar: Home PC bis Supercomputer -Ausgereiftes API, das low-level Details kapselt -Ausführliche Dokumentation erhältlich

28 §0-28 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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/NT/XP, Linux, Python, BeOS -Läuft unter X-Windows (X11), Win32 -Unterstützt 2D und 3D

29 §0-29 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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

30 §0-30 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL OpenGL: Grundlage für viele Anwendungen -Viele high-level APIs 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, … – …

31 §0-31 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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)

32 §0-32 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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.

33 §0-33 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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

34 §0-34 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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])

35 §0-35 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL OpenGL: Hello World #include 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. */ }

36 §0-36 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 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); }

37 §0-37 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL OpenGL: Hello World void 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 (); }

38 §0-38 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL Aufgabe: -Ü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, upY, upZ); Experimentieren Sie mit verschiedenen Sichten auf die Szene.

39 §0-39 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS Einführung in OpenGL Literatur: Computer Graphics with OpenGL (3. Auflage), D. Hearn, M.P. Baker. Prentice Hall, ISBN: OpenGL: A Primer (3. Auflage), Edward Angel, Addison-Wesley, 2007 OpenGL Programming Guide (5. Auflage), OpenGL ARB, Addison- Wesley, 2005, The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3, Mark J. Kilgard, Silicon Graphics, Inc. November 13, 1996


Herunterladen ppt "§0-1 §0 Überblick, Einführung in OpenGL Visualisierung mit C++ / OpenGL - SS 2007 0.1 Überblick Bereiche der Visualisierung -Flow-Vis -Software-Vis -Tensorfield-Vis."

Ähnliche Präsentationen


Google-Anzeigen