30.04.2015 Aufrufe

Einfuehrung - OvGU::Computervisualistik

Einfuehrung - OvGU::Computervisualistik

Einfuehrung - OvGU::Computervisualistik

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 -

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!