Einfuehrung - OvGU::Computervisualistik
Einfuehrung - OvGU::Computervisualistik
Einfuehrung - OvGU::Computervisualistik
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
(1) Einführung<br />
Grundlagen der Computergrafik<br />
Thorsten Grosch
Willkommen…<br />
• … zur Vorlesung „Grundlagen der Computergrafik“ !<br />
• Heute<br />
• Organisatorisches<br />
• Vorstellung von Team und Vorlesung<br />
• Historische Entwicklung der Computergrafik<br />
• Vorstellung der Computergrafik in Magdeburg<br />
• Einführung in Programmierung mit OpenGL<br />
T. Grosch - 2 -
Das Team<br />
Vorlesung<br />
Jun.-Prof. Thorsten Grosch<br />
AG <strong>Computervisualistik</strong><br />
Übungen<br />
Dipl.-Ing. Maik Schulze<br />
maik@isg.cs.uni-magdeburg.de<br />
Tutoren für Übungen<br />
Steffen Salbert<br />
Kai Rohmer<br />
T. Grosch - 3 -
Webseite<br />
• www.rendering.ovgu.de<br />
• http://www.rendering.ovgu.de/lehre/lehreordner/sommersemester_2011/<br />
grundlagen_der_computergraphik.htmlder html<br />
• Folien<br />
• Übungsblätter<br />
• Beispielprogramme<br />
• News<br />
• ….<br />
• Die Folien von heute sind bereits verlinkt<br />
T. Grosch - 4 -
Allgemeines zur Vorlesung<br />
• Vorlesung<br />
• Ort: G29-307 Zeit: Dienstag, 15:00 - 17:00 Uhr<br />
• 2SWS SWS, ECTSS ECTS-Studium, ECTS-Credits: C 5<br />
• PF CV;B 2<br />
WPF DigiEng;M 1-3<br />
WPF IF;B 4-6<br />
WPF IngINF;B 4-6<br />
PF IT;D-TIF 6-8<br />
PF IT;D-IE 6-8<br />
PF MVK;M ab 1 (Modul 2 oder 3)<br />
WPF MVK;B ab 3 (Modul 14)<br />
WPF WIF;B 6<br />
T. Grosch - 5 -
Allgemeines zur Vorlesung<br />
• Grundlagen der Computergrafik<br />
• Algorithmen zum Zeichnen von Punkten, Linien, Polygonen, …<br />
• 2D und 3D<br />
• Clipping<br />
• Transformationen<br />
• Verschieben, drehen, skalieren, …<br />
• Projektionen<br />
• 3D 2D<br />
• Beleuchtungsverfahren zur realistischen Darstellung einer 3D<br />
Szene<br />
• „weiche“ Kurven (ohne Ecken) Splines<br />
• …<br />
T. Grosch - 6 -
Allgemeines zur Vorlesung<br />
• Vorlesung enthält immer Theorie und Programmierung<br />
• Programmierung mit<br />
• C++<br />
• OpenGL<br />
• plattformunabhängig<br />
T. Grosch - 7 -
Zeitliste<br />
Datum<br />
Thema<br />
Vorlesungen<br />
5.4.2011 Einführung<br />
12.4.2011 Grundlagen Mathematik<br />
19.4.2011 Linien, Clipping<br />
26.4.2011 Polygone, Clipping<br />
3.5.2011 Transformationen<br />
10.5.2011 View Transformationen<br />
17.5.2011 Projektionen<br />
24.5.2011 Beleuchtung<br />
31.5.2011 Texturen<br />
7.6.2011 Splines<br />
14.6.2011 Ray Tracing<br />
21.6.2011 Wiederholung, Fragen<br />
28.6.2011 Prof. Preim: Vorstellung<br />
Anwendungsfächer<br />
5.7.2011 Hot Topics, Vorstellung Projekte<br />
T. Grosch - 8 -
Allgemeines zu den Übungen<br />
• Wöchentliche Übungen<br />
• Theorie – und Programmieraufgaben<br />
• Theorieteil<br />
• Mathematik<br />
• Algorithmen von Hand durchrechnen<br />
• Programmieraufgaben<br />
• Kleine OpenGL Programme<br />
• Ab ca. der Hälfte der Vorlesung<br />
schrittweise Programmierung eines<br />
Flugsimulators (Terrain, Beleuchtung,<br />
Kamerasteuerung, …)<br />
T. Grosch - 9 -
Allgemeines zu den Übungen<br />
• Übungsgruppen:<br />
Übung 1 (Steffen Salbert) Dienstag 17-19h, G29-335<br />
Übung 2 (Kai Rohmer) Donnerstag 15-17h, G29-335<br />
Übung 3 (Maik Schulze) Montag 15-17h, G29-335<br />
T. Grosch - 10 -
Übungsblätter<br />
• Ausgabe: Übungsblatt jede Woche Dienstags auf der<br />
Homepage<br />
• Abgabe der Lösungen:<br />
- In Gruppen von 2-3 Personen, eine Woche später<br />
- Schriftliche Aufgaben: Vor der Vorlesung (Di 15 Uhr) bei mir<br />
abgeben (Übungsgruppe, Name, Matnr. auf jedem Blatt angeben)<br />
- Programmieraufgaben: Vor der Vorlesung (bis spätestens Di<br />
15 Uhr) per Email an maik@isg.cs.uni uni-magdeburg.de<br />
- Nur compilierfähigen Quellcode abgeben (keine Binaries)<br />
- Keine zusätzlichen Libraries verwenden<br />
- Details mit Tutor der Übung absprechen<br />
• Rückgabe und Durchsprechen der Aufgaben in der<br />
Übung eine Woche nach der Abgabe<br />
T. Grosch - 11 -
Anmeldung für die Übung<br />
• Zur Anmeldung für die Übung:<br />
• Bitte Email schicken an Maik Schulze<br />
• maik@isg.cs.uni-magdeburg.de<br />
g g<br />
• bis morgen (Mittwoch, 6.4.) 24 Uhr<br />
• Inhalt<br />
• Name, Vorname, Matrikelnr., Studiengang<br />
• Gewünschte Übungsgruppe und Ausweichtermin<br />
• Ende der Woche bekommt ihr eine Email zurück mit eurer<br />
Übungsgruppe und einem Zugang zur Webseite (Punktestand<br />
einsehen)<br />
T. Grosch - 12 -
1. Übungsblatt<br />
• 1. Übungsblatt nächste Woche<br />
• Ausgabe am 12.4.<br />
• Abgabe am 19.4.<br />
• Rückgabe & Besprechung in den Übungen ab dem 26.4.<br />
T. Grosch - 13 -
Übungen in den ersten drei Wochen<br />
• Diese Woche (Di, 5.4. – Mo, 114) 11.4.)<br />
• Installation OpenGL, einfache OpenGL / C Programmierung<br />
• Visual Studio Express + Windows SDK (bei eigenem Laptop<br />
p<br />
vorher installieren)<br />
• Di 5.4. 17 – 19 Uhr Raum K056<br />
• Do 7.4. 15 – 17 Uhr Raum K056<br />
• Mo 11.4. 17 – 19 Uhr Raum K056<br />
• Einfach eine dieser Übungen aussuchen (noch keine<br />
Zuordnung)<br />
• In den beiden Übungen nächste Woche (12.4.-18.4.)<br />
und übernächste Woche (19.4.-25.4.)<br />
• Einführung in C / C++ Programmierung<br />
• Zu regulären Übungszeiten / Räumen<br />
T. Grosch - 14 -
Voraussetzungen für Klausur<br />
• Die Bearbeitung der Übung ist<br />
Zulassungsvoraussetzung für die Klausur<br />
• Mind. 50% der Punkte aus den Übungsaufgaben g müssen<br />
erreicht werden, sowohl in Theorie- als auch in<br />
Programmieraufgaben<br />
• Punkte aus der Übung werden nicht in die Prüfung<br />
übernommen<br />
• Zusätzlich kann der Flugsimulator erweitert werden<br />
• Kreativ-Punkte, keine Vorgaben<br />
• Bonuspunkte für die drei besten Programme<br />
• Vorstellung in letzter Vorlesung (5.7.)<br />
• Klausurtermin voraussichtlich in den ersten zwei<br />
Wochen nach Ende der Vorlesungszeit (11.7. – 22.7.)<br />
T. Grosch - 15 -
Zeitliste<br />
Datum<br />
Übung<br />
Übungen<br />
Insgesamt 10 Übungsblätter<br />
5.4. – 11.4. Installation von OpenGL, einfache<br />
OpenGL Programmierung<br />
12.4. – 18.4. Einführung in C und C++ , Ausgabe<br />
Blatt 1<br />
19.4. - 25.4. Einführung in C und C++, Abgabe<br />
Blatt 1, Ausgabe Blatt 2<br />
26.4. – 2.5. Rückgabe und Besprechung Blatt 1,<br />
Abgabe Blatt 2, Ausgabe Blatt 3<br />
3.5. – 9.5. Rückgabe und Besprechung Blatt 2,<br />
Abgabe Blatt 3, Ausgabe Blatt 4<br />
…<br />
…<br />
14.6. – 20.6. Rückgabe und Besprechung Blatt 8,<br />
Abgabe b Blatt 9, Ausgabe Blatt 10<br />
21.6. – 27.6. Rückgabe und Besprechung Blatt 9,<br />
Abgabe Blatt 10<br />
28.6. – 47 4.7. Rückgabe und Besprechung Blatt 10<br />
T. Grosch - 16 -
Literatur zur Vorlesung<br />
Peter Shirley<br />
Fundamentals of Computer Graphics<br />
AK Peters, 3. Auflage<br />
Beide Bücher sind mehrfach in der<br />
Bibliothek als Präsenz – und<br />
Ausleihexemplar vorhanden<br />
Dave Shreiner<br />
OpenGL Programming Guide<br />
Morgan Kaufmann, 7. Auflage<br />
T. Grosch - 17 -
Weitere Literatur<br />
• J. Foley, A. van Dam, S. Feiner, J. Hughes: Computer Graphics:<br />
Principles and Practice, 2nd Edition<br />
• Alan Watt: 3D Computer Graphics, Addison-Wesley, 3rd edition<br />
• J.L. Encarnação, W. Strasser, R. Klein: Graphische<br />
Datenverarbeitung 1 und 2<br />
• Michael Bender, Manfred Brill:<br />
Computergrafik<br />
Hanser Verlag, 2003<br />
• Klaus Zeppenfeld:<br />
Lehrbuch der Grafikprogrammierung<br />
Spektrum Akademischer Verlag, 2004<br />
T. Grosch - 18 -
Einordnung und Begriffsbestimmung<br />
Die graphische Datenverarbeitung ist in der ISO-Norm<br />
wie folgt definiert (ISO DIS 2382/13, 1982):<br />
“Methods and techniques for converting data<br />
to and from<br />
graphics displays via computer”<br />
Mit “to” und “from” sind zwei Wege aufgezeichnet, einmal<br />
von der Beschreibung (Modell) zum Bild und einmal vom<br />
Bild zur Beschreibung.<br />
19
Einordnung und Begriffsbestimmung<br />
Damit ist folgende Klassifikation möglich (vgl. Encarnacáo, Strasser,<br />
Klein, 1996)<br />
Ausgabe<br />
Eingabe<br />
Bild<br />
Beschreibung<br />
Bild<br />
Bildverarbeitung<br />
Bildanalyse<br />
Die Aufgabe der Computergraphik ist die rechnergestützte<br />
Erzeugung künstlicher Bilder, die in Form von Szenen-<br />
/Bildbeschreibungen vorliegen.<br />
andere<br />
Beschreibung Computergraphik<br />
Disziplinen<br />
20
Geschichte der Computergrafik
Geschichte der Computergraphik<br />
Geschichte der Computergraphik<br />
1949 Erste Computergraphik auf dem Whirlwind<br />
Computer des MIT (bouncing Ball Program von Charly Adams);<br />
Display<br />
T. Grosch - 22 -
Geschichte der Computergraphik<br />
1952 Einsatz der Computergraphik zur<br />
Kennzeichnung von Flugobjekten auf<br />
Radarbildschirmen<br />
SAGE (Semi-Automatic Ground Environment) Computer mit 82<br />
Graphikkonsolen zur Luftüberwachung, erster Einsatz eines Lichtgriffels);<br />
Sage Consolen<br />
T. Grosch - 23 -
Geschichte der Computergraphik<br />
• 1962 Erste 3D Computergraphiken von L.G. Roberts auf<br />
dem TX2 des MIT;<br />
TX2 Computer<br />
T. Grosch - 24 -
Geschichte der Computergraphik<br />
• 1963 Sketchpad - erstes interaktives<br />
Computergraphiksystem t von Sutherland mit<br />
• Bildkomposition aus graphischen Standardelementen,<br />
• Interaktion mit Tastatur und Lichtgriffel zur Arbeit mit Menüs,<br />
• entsprechenden Datenstrukturen zur Verwaltung graphischer Daten;<br />
Ivan Sutherland an der<br />
Konsole des TX-2 Computers<br />
T. Grosch - 25 -
Geschichte der Computergraphik<br />
Mitte der 60er-Jahre: Beginn einer Vielzahl von CG-<br />
Forschungs-projekten (am MIT, General Motors, Bell<br />
Telephone Lab., Lockheed Aircraft usw.)<br />
1965: Erstes kommerzielles Vektor-Display von IBM<br />
(Preis ca. 100.000 US$);<br />
1967: Erster Bildspeicher-Display<br />
von Tektronix (bietet einem<br />
breiten Interessentenkreis Zugang<br />
zur Computergraphik, Preis ~10.000 000 USD);<br />
T. Grosch - 26 -
Geschichte der Computergraphik<br />
Anfang der 70er Jahre: erste kommerzielle CAD/CAM-<br />
Systeme kommen auf den Markt.<br />
1971: Raster-Scan-Prinzip von M. Noll (Bell Lab.)<br />
vorgeschlagen;<br />
1972: Erster Flugsimulator (General Electronics);<br />
Erster Heimcomputer als Bausatz unter<br />
dem Namen „Altair 8800“ auf dem Markt<br />
T. Grosch - 27 -
Geschichte der Computergraphik<br />
•1973: Erste Konferenz der SIGGRAPH (Special<br />
Interest Group on Computer Graphics) der ACM<br />
(Association of Computing Machinery), die sich<br />
ausschließlich mit Computer Graphik<br />
beschäftigt (damals ca. 1200 Teilnehmer, heute > 30000);<br />
T. Grosch - 28 -
Geschichte der Computergraphik<br />
• Ab Mitte der 70er Jahre:<br />
• Graphische Unterprogrammpakete (PLOT10, CAL-<br />
Comp),<br />
• Graphische Programmiersprachen (DIGRA 73),<br />
• Erste kommerzielle Raster-Displays (max. Auflösung<br />
512 x 512 Pixel, 8 Bit pro Pixel, Preis ~100.000DM);<br />
• Erste Verfahren zur schattierten t Objektdarstellung:<br />
t • Beleuchtungsverfahren (Phong 1975, Blinn 1977),<br />
• Schattierungsverfahren (Gouraud 1971, Phong 1975),<br />
• Texturierung (Catmull 1974),<br />
• Schattenwurf (Crow 1977, Williams 1978);<br />
M. Newell (Univ. of Utah) modelliert<br />
1975 den Utah teapot –<br />
eine Ikone der Computer Graphik.<br />
T. Grosch - 29 -
Geschichte der Computergraphik<br />
•1977 Erste Vorschläge zur Standardisierung von<br />
Graphiksoftware - CORE;<br />
•1979 Erstmalige Darstellung von spiegelnder<br />
Reflexion und Transparenz mit Hilfe des<br />
Raytracing (Kay, Whitted);<br />
Lichtquelle<br />
Szene<br />
Projektionsebene<br />
Strahlenwege<br />
Projektionszentrum<br />
T. Grosch - 30 -
Geschichte der Computergraphik<br />
• 1979: Gründung der Computer Graphik Abteilung von<br />
LucasFilm durch George Lucas (die Abteilung wird der „Special<br />
Effects“-Abteilung ILM -Industrial Light and Magic- zugeordnet);<br />
• 1980: Vorführung des Films Vol Libre (von Loren Carpenter,<br />
Boeing) auf der SIGGRAPH’80 (in dem Film wird der Flug durch<br />
eine fraktale Landschaft gezeigt);<br />
Carpenter‘s Kunst-Gebirge<br />
wurde bei der Prämierung von<br />
der SIGGRAPH-Jury mit der<br />
Begründung ausgeschlossen,<br />
weil<br />
„... es nicht wie eine Computer<br />
Graphik aussieht !“<br />
T. Grosch - 31 -
Geschichte der Computergraphik<br />
1980:~30 Min. Computeranimationen im Film Tron, (Film<br />
floppt, große Hollywood Filmstudios reagieren mit Zurückhaltung<br />
gegenüber Computer Graphik);<br />
1981: Erstes „Rendering“-System REYES („Rendering<br />
everything you ever saw“, von L. Carpenter für LucasFilm – wird<br />
später zu Renderman weiterentwickelt);<br />
Beginn der Entwicklung des Volume-<br />
Rendering;<br />
T. Grosch - 32 -
Geschichte der Computergraphik<br />
1982: Erste Filmsequenz, in der sich Frau in Luchs<br />
verwan-delt (T.Brigham, SIGGRAPH´82);<br />
Diese Technik wird später<br />
Morphing genannt -<br />
(wurde bis 1987 nicht weiter<br />
beachtet, t bis LucasFilm sie in<br />
dem Film „Willow“ einsetzt);<br />
T. Grosch - 33 -
Geschichte der Computergraphik<br />
•1982: Gründung Silicon Graphics Inc. (SGI), J. Clark,<br />
(Entwicklung von Hochleistungsrechnern für graphische<br />
Anwendungen);<br />
•1983: Jaron Lanier (Atari Research Center)<br />
entwickelt Datenhandschuh;<br />
T. Grosch - 34 -
Geschichte der Computergraphik<br />
•1984: Globale Beleuchtungs-Simulation<br />
euc u ua mit Radiosity (Goral u.a., Nishita);<br />
Gründung Wavefront Technologies<br />
für Animations-Software;<br />
Strahlungsquelle<br />
Reflektierte Strahlung<br />
Radiosity-Bild<br />
T. Grosch - 35 -
Geschichte der Computergraphik<br />
1986: Gründung der Fa. Pixar durch Ed Catmull und A.R. Smith<br />
nach Abspaltung von Lucas Film;<br />
• Pixars RenderMan wird Industrie-Standard;<br />
•1988: Film The Abyss, James Cameron<br />
(ILM stellt dabei die Szene mit der<br />
Wasser-Kreatur her, die die Gesichter<br />
der Mannschaft imitiert);<br />
aus J.D. Foley, et al<br />
Computer Graphics – Principles<br />
and Practice<br />
T. Grosch - 36 -
Geschichte der Computergraphik<br />
1989:Einführung von Motion Capture, Nutzung<br />
mechanischer Eingabegeräte für Computeranimation;<br />
1992: Neue Maßstäbe bei computergenerierten<br />
Spezialeffekten,<br />
(Animationen des „T1000“-<br />
Roboters in J. Cameron‘s<br />
Film Terminator 2);<br />
OpenGL wird als Grafikstandard<br />
festgelegt<br />
g<br />
T. Grosch - 37 -
Geschichte der Computergraphik<br />
1993: Steven Spielberg‘s Film<br />
Jurassic Park<br />
(anstelle der ursprünglich geplanten<br />
Puppenanimationen werden Computeranimationen<br />
für die Dinosaurierszenen<br />
eingesetzt);<br />
T. Grosch - 38 -
Geschichte der Computergraphik<br />
Anfang- Mitte der 90er Jahre:<br />
- Verbindung moderner Kommunikationstechnologien mit Graphik:<br />
Multimedia in verteilten Umgebungen,<br />
CSCW Computer supported cooperative work,<br />
Graphik im Internet,<br />
Standards zur Bild- und Bewegtbildübertragung...,<br />
- Daten- und Informations-Visualisierung,<br />
- Methoden des Non-Photorealistic oto Rendering (Uni Magdeburg);<br />
g);<br />
T. Grosch - 39 -
Geschichte der Computergraphik<br />
1995: Toy Story kommt in die Kinos; erster vollständig<br />
computer-animierte Film von Pixar;<br />
Rendering: 800 000 Std. Berechnungszeit<br />
für 70 min. Film auf 177 Sun Sparc 20<br />
Der D Film ist ein großer Kassenerfolg,<br />
wird für drei Oskars nominiert, erhält<br />
jedoch keinen davon ...<br />
T. Grosch - 40 -
Geschichte der Computergraphik<br />
1998: High Dynamic Range (HDR), Paul Debevec<br />
8 Bit 32 Bit float pro Pixel<br />
Digitale Kamera nimmt echte Helligkeiten auf<br />
HDR Light Probe<br />
HDR LDR<br />
Fiat Lux 1999<br />
Image-based Lighting<br />
T. Grosch - 41 -
Geschichte der Computergraphik<br />
Grafikkarten<br />
1999 - heute: Graphics Processing Unit (GPU)<br />
SGI Grafik-Workstation wird immer mehr von PC mit<br />
Grafikkarte abgelöst<br />
Starke Weiterentwicklung durch<br />
Spieleindustrie<br />
GPU wird zum schnellen Coprozessor, bisherige<br />
Offline-Techniken werden Echtzeitfähig<br />
T. Grosch - 42 -
Geschichte der Computergraphik<br />
2001: sehr gute Gesichtsanimationen<br />
von virtuellen Charakteren im<br />
Film Shrek ;<br />
Simulation von Haaren: Monster AG<br />
T. Grosch - 43 -
Geschichte der Computergraphik<br />
2001: Final Fantasy, erster<br />
komplett computer- animierter<br />
i Spielfilm mit<br />
realistischen virtuellen<br />
Charakteren;<br />
die Produktion des Films<br />
dauerte ~4 Jahre, wobei etwa<br />
170 Computeranimatoren tätig<br />
waren<br />
aus: digital production,<br />
Heft 3/01<br />
T. Grosch - 44 -
Geschichte der Computergraphik<br />
Sehr große, virtuelle Welten…<br />
2003: Herr der Ringe<br />
2009: Avatar<br />
2011… ?<br />
T. Grosch - 45 -
Computergrafik in Magdeburg<br />
AG Visual Computing:<br />
AG Visualisierung:<br />
AG User Interfaces & SE:<br />
AG <strong>Computervisualistik</strong>:<br />
Prof. Holger Theisel<br />
Prof. Bernhard Preim<br />
Prof. Raimund Dachselt<br />
Jun.-Prof. Thorsten Grosch
Computergraphik in Magdeburg<br />
AG Visual Computing<br />
Prof. Holger Theisel<br />
•Visualisierung<br />
•speziell Strömungsdaten<br />
•Information Visualization<br />
•Visual Analytics<br />
•Geometric Modelling, geometric<br />
Design<br />
T. Grosch - 47 -
Computergraphik in Magdeburg<br />
AG Visual Computing: Flow Visualization<br />
T. Grosch - 48 -
Computergraphik in Magdeburg<br />
AG Visual Computing:<br />
Geometric Modelling, Deformations<br />
T. Grosch - 49 -
Computergraphik in Magdeburg<br />
AG Visualisierung (Prof. Bernhard Preim)<br />
Gefäßvisualisierung und illustrative Visualisierung<br />
Ausgusspräparat der Bronchialgefäße<br />
einer menschlichen Lunge. Der linke<br />
Lungenlappen ist transparent<br />
dargestellt zusammen mit einem<br />
Volume Rendering weiterer Gefäße und<br />
umgebender Knochen.<br />
Fokus- und Kontextdarstellung durch<br />
farblich hervorgehobene Fokusobjekte<br />
und Repräsentation von<br />
Kontextstrukturen mittels Stippling und<br />
Silhouetten.<br />
T. Grosch - 50 -
Computergraphik in Magdeburg<br />
AG Visualisierung (Prof. Bernhard Preim)<br />
Planung und Training von chirurgischen Eingriffen<br />
Der Nutzer kann in einer 3D-<br />
Darstellung eine virtuelle<br />
Resektion vornehmen.<br />
Kombination von Farbe,<br />
Transparenz-Mapping und<br />
lokaler Transparenz um<br />
einen einzelnen Hals-<br />
Lymphknoten<br />
hervorzuheben. h T. Grosch - 51 -
Dr. Niklas Röber, Dr. Mai Mohamad Yatim (Alumni), Prof. Raimund Dachselt<br />
Mathias Frisch, Jens Heydekorn, Sophie Stellmach, Martin Spindler<br />
(Doktoranden)<br />
User Interface &<br />
Software Engineering<br />
Am Institut für Simulation & Graphik der OVGU Magdeburg<br />
Ca. 60 studentische Hilfskräfte, Diplomanden, Bachelor-Studierende (seit 2007)<br />
T. Grosch - 52 -
UISE Forschungsfokus<br />
• User Interface Engineering für Natürliche Schnittstellen:<br />
designen, implementieren und evaluieren von visuellen<br />
Benutzungsschnittstellen der nächsten Generation<br />
• Seamless User Interaction in Umgebungen g mit<br />
multiplen Displays (Fokus: Tabletops) und Eingabegeräten<br />
• Untersuchung möglichst natürlicher Interaktionsformen<br />
Digital Pens Multitouch Gestures Eye Tracking<br />
Multiple Displays,<br />
Tabletops<br />
Mobile Displays,<br />
Combining Handheld<br />
Ultra-large large displays<br />
e.g. eBooks, iPad & large projections (ElbeDom)<br />
T. Grosch - 53 -
User<br />
Interface<br />
Lab<br />
T. Grosch - 54 -
Computergraphik in Magdeburg<br />
• AG <strong>Computervisualistik</strong> (Jun.-Prof. Thorsten Grosch)<br />
• Globale l Beleuchtung<br />
• Simulation aller Lichtwege von der Lichtquelle bis zum Auge<br />
• Indirektes Licht, Spiegelungen, g weiche Schatten, …<br />
• Ziel: Echtzeitdarstellung, also mind. 25 Bilder / sek.<br />
Virtuelle 3D Szene,<br />
keine Beleuchtung<br />
Nur direktes Licht<br />
Schnell, aber künstlich<br />
Globale Beleuchtung:<br />
Photorealistisch, aber<br />
zeitaufwändig<br />
T. Grosch - 55 -
Stroebel et al .1986<br />
Beispielbilder<br />
Geomerics<br />
CryTek<br />
Bilder: Jensen, Lightscape<br />
T. Grosch - 56 -
Computergraphik in Magdeburg<br />
• AG <strong>Computervisualistik</strong><br />
• Forschungsschwerpunkt<br />
• Globale Beleuchtung in<br />
Echtzeit mit der Grafik<br />
Hardware<br />
T. Grosch - 57 -
Computergraphik in Magdeburg<br />
Imperfect Shadow Maps: Ritschel, Grosch, Kim, Seidel, Dachsbacher, Kautz<br />
T. Grosch - 58 -
Computergraphik in Magdeburg<br />
• AG <strong>Computervisualistik</strong><br />
• Erweiterung reales<br />
Kamerabild mit virtuellen<br />
Objekten Augmented<br />
Reality<br />
• Rekonstruktion der<br />
Beleuchtung auf dem Foto<br />
• Globale Beleuchtung mit<br />
virtuellen it Objekten<br />
• Einblendung ins Foto, Licht<br />
und Schatten sind korrekt<br />
T. Grosch - 59 -
Computergraphik in Magdeburg<br />
• AG <strong>Computervisualistik</strong><br />
• Vorlesungen<br />
• GPU Programmierung<br />
• Wahlpflicht, Bachelor, Sommersemester<br />
• Photorealistische Computergrafik<br />
• Wahlpflicht, Master, Wintersemester<br />
T. Grosch - 60 -
OpenGL
Was ist OpenGL ?<br />
• Open Graphics Library<br />
• Grafik Bibliothek zur Darstellung von 3D Objekten<br />
• Polygone, Materialien, Lichtquellen, Kamera, ….<br />
T. Grosch - 62 -
Hintergrund / Geschichte<br />
• … auf der Suche nach einer einheitlichen Software-<br />
Schnittstelle (API: Application Programming Interface)<br />
zur Programmierung g von Graphiksystemen<br />
• Standardisierungsbemühungen<br />
• GKS, PHIGS…<br />
• „Proprietäre Systeme“<br />
• HP: Starbase, SGI: GL (Graphics Library)<br />
• Gewinner: SGI mit GL in Verbindung mit sehr guter<br />
Hardware<br />
• OpenGL (1992, Mark Segal & Kurt Akeley)<br />
• Konkurrenz nur noch durch Microsoft (Direct3D)<br />
T. Grosch - 63 -
OpenGL<br />
• OpenGL ist ein Software Interface für Graphik<br />
Hardware mit ca. 250 verschiedenen Kommandos<br />
• Hardware unabhängig gg<br />
• warum „Open“?<br />
• offen für Lizenznehmer<br />
• verwaltet vom Architecture Review Board (ARB)<br />
• NVIDIA, ATI, IBM, Intel, SGI, ….<br />
• von jedem Lizenznehmer erweiterbar (Extension)<br />
• Nicht dabei:<br />
• Handhabung von Fenstern/Windows<br />
• Benutzereingabe<br />
T. Grosch - 64 -
OpenGL Historie<br />
Version Jahr Beschreibung<br />
1.0 1992 Erste Veröffentlichung<br />
1.1 1997 Vertex Arrays, Texture<br />
Objects, Polygon Offset<br />
12 1.2 1998 3D Texturen, Pixelformate,<br />
MipMaps<br />
1.2.1 1998 ARB Extensions, ARB<br />
Multitexture<br />
1.3 2001 Komprimierte Texturen, Cube<br />
Maps, Multi-Texturing<br />
1.4 2002 Tiefentexturen, automatische<br />
MipMaps, Nebelkoordinaten<br />
1.5 2003 Buffer Objects, Occlusion<br />
Queries<br />
2.0 2004 OpenGL Shading Language,<br />
Multiple Render Targets, non–<br />
power-of-2 Textures, Point<br />
Sprites, Vertex Texture Fetch<br />
2.1 2006 Pixel Buffer Objects, sRGB<br />
Texturen, OpenGL Shading<br />
Language 1.2<br />
Version Jahr Beschreibung<br />
3.0 2008 OpenGL Shading Language<br />
1.3, Entfernung von Fixed-<br />
Function-Pipeline (begin/end,<br />
T&L,…), Annäherung an<br />
DirectX<br />
3.1 2009 Compatibility extension für<br />
Altlasten, Uniform Buffer<br />
Objects, Primitive Restart,<br />
Instancing, CopyBuffer,<br />
Texture Buffer Objects<br />
3.2 2009 Geometry Shader, Sync and<br />
Fence, OpenGL Shading<br />
Language 1.5<br />
3.3 2010 Diverse ARB Extensions,<br />
OpenGL Shading Language<br />
3.3<br />
4.0 2010 OpenCL, Tessellation,<br />
OpenGL Shading Language<br />
4.0<br />
4.1 2010 Binäre Shader Programme,<br />
double precision bei Vertex<br />
Shader, OpenGL Shading<br />
T. Grosch - 65 -<br />
Language 4.1
Einführung<br />
• OpenGL Core: Basisprimitive (Punkte, Linien,<br />
Polygone…)<br />
• Darauf aufbauend gibt es diverse Tools:<br />
• OpenGL Utility Library (GLU): standardmaessig dabei für<br />
Oberflächen (Quadrics, NURBS…)<br />
• OpenGL ist eine „State-Machine“<br />
• Man versetzt die „Maschine“ in einen Zustand, der so lange<br />
besteht, bis er wieder verändert wird<br />
• Beispiel: ab jetzt alles rot, ab jetzt dieses Material, ab jetzt<br />
diese Transformation<br />
• Effizienter, als Daten jedes Mal neu zu übergeben<br />
T. Grosch - 66 -
OpenGL Grundstruktur<br />
• Low-Level-API<br />
• Hardware-nah aber Hardware-unabhängig<br />
• 2 Arten von Funktionen<br />
• Zustand ändern<br />
• Primitive darstellen<br />
• immediate mode System<br />
• sehr einfache Befehle<br />
• Direktes Durchreichen an die HW möglich<br />
• Dreiecks-basiert, keine interne Repräsentation der Szene<br />
• klarer Namensraum<br />
• Befehle fangen mit gl... an<br />
• Konstanten mit GL_...<br />
T. Grosch - 67 -
Beispiel<br />
glClearColor(0.0, 0 0.0, 0 0.0, 0 0.0); 0);<br />
glClear(GL_COLOR_BUFFER_BIT);<br />
glColor3f(1.0, 1.0, 1.0);<br />
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);<br />
glBegin(GL_POLYGON);<br />
glVertex3f(0.25, 3f(025 025 0.25, 00) 0.0);<br />
glVertex3f(0.75, 0.25, 0.0);<br />
glVertex3f(0.75, 0.75, 0.0);<br />
glVertex3f(0.25, 0.75, 0.0);<br />
glEnd();<br />
glFlush();<br />
Bestimmt die Farbe, mit der das<br />
Bild gelöscht wird<br />
Löscht das Bild, genauer den<br />
Color Buffer (alternativ z-Buffer<br />
etc.)<br />
Setzt die Farbe auf weiß<br />
Definiert das<br />
Koordinatensystem für das<br />
Rendering<br />
Definiert ein zu zeichnendes<br />
Objekt, hier ein Polygon mit 4<br />
Ecken<br />
Sorgt dafür, daß die<br />
Zeichenkommandos auch<br />
ausgeführt werden, anstatt in<br />
einem Puffer auf weitere<br />
Kommandos zu warten<br />
T. Grosch - 68 -
GLUT, the OpenGL Utility Toolkit<br />
• OpenGL ist unabhängig vom Betriebssystem oder<br />
Window-Manager<br />
• Leider läuft keine Graphikapplikation ohne dass man<br />
zumindest ein Fenster öffnet oder einfache<br />
Eingabewerte (Tastatur/Maus) abfragt<br />
• GLUT: Ganz gut für den Start…<br />
T. Grosch - 69 -
Beispiel<br />
Initialisiert GLUT<br />
RGBA oder Color-Index Mode,<br />
Single oder Double Buffer etc.<br />
int main(int argc, char** argv)<br />
{<br />
Position und Größe des<br />
Fensters<br />
glutInit(&argc, argv);<br />
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);<br />
glutInitWindowSize (250, 250);<br />
Das Fenster mit GL-Kontext<br />
glutInitWindowPosition iti (100, 100); wird erzeugt, allerdings erst<br />
glutCreateWindow ("hello"); durch glutMainLoop dargestellt<br />
init ();<br />
Display Callback Funktion:<br />
glutDisplayFunc(display);<br />
sobald GLUT ein Neuzeichnen<br />
glutMainLoop();<br />
des Fensterinhalts für nötig hält,<br />
return 0; /* ANSI C */<br />
wird diese CB-Funktion<br />
}<br />
aufgerufen<br />
Event-getriggerte ti t Hauptschleife<br />
T. Grosch - 70 -
Beispiel: hello.c<br />
Hello.sln<br />
T. Grosch - 71 -
GLUT<br />
• Initialisierung<br />
• glutInit(int *argc, char **argv);<br />
• glutInitDisplayMode( ... );<br />
• glutCreateWindow(„name“);<br />
• Zeichenfunktion registrieren<br />
• glutDisplayFunc( void (*func)(void) );<br />
• Neuzeichnen anmelden<br />
• glutPostRedisplay();<br />
T. Grosch - 72 -
GLUT<br />
• Interaktionsfunktionen<br />
• glutMouseFunc(void (*func)(int button, int state, int x, int y) );<br />
• glutKeyboardFunc(void (*func)(unsigned char key, int x, int y) );<br />
• glutMotionFunc(void (*func)(int x, int y) );<br />
• Hilfsfunktionen<br />
• glutReshapeFunc(void (*func)(int width, int height) );<br />
• glutIdleFunc( void (*idle)(void) );<br />
• Hauptschleife<br />
• glutMainLoop();<br />
T. Grosch - 73 -
GLUT<br />
• Hilfsfunktionen für Primitive<br />
• void glutWireSphere(float radius, int slices, int stacks);<br />
• void glutWireTorus(float inner_ radius, float outer_ radius, int sides,<br />
int rings) ;<br />
• void glutWireTeapot(double size);<br />
T. Grosch - 74 -
Genug für heute…<br />
• Als nächstes<br />
• Anmelden für die Übung<br />
• Visual Studio Express + Windows SDK installieren<br />
• OpenGL ausprobieren Übungen<br />
• Beispielprogramme auf der Webseite<br />
• Nächste Woche<br />
• Mathematische ti h Grundlagen<br />
• Erstes Übungsblatt<br />
T. Grosch - 75 -
Acknowledgements<br />
Diese Vorlesungsskripte basieren in weiten Teilen auf<br />
Skripten von<br />
- Prof. Stefan Müller (Universität Koblenz)<br />
- Prof. Holger Theisel (Universität Magdeburg)<br />
und weiteren Kollegen.<br />
Dankeschön!<br />
T. Grosch - 76 -