Im Studiengang Computervisualistik Willkommen Wintersemester 2012/13.
01 Introduction [Kompatibilitätsmodus] - rendering.ovgu.de · Das TeamDas Team Vorlesung...
Transcript of 01 Introduction [Kompatibilitätsmodus] - rendering.ovgu.de · Das TeamDas Team Vorlesung...
WillkommenWillkommen…
zur Vorlesung Grundlagen der Computergrafik“ !… zur Vorlesung „Grundlagen der Computergrafik !
HeuteHeuteOrganisatorischesVorstellung von Team und VorlesungHistorische Entwicklung der ComputergrafikVorstellung der Computergrafik in MagdeburgEinführung in Programmierung mit OpenGLEinführung in Programmierung mit OpenGL
T. Grosch - 2 -
Das TeamDas Team
VorlesungVorlesungJun.-Prof. Thorsten Grosch
AG Computervisualistik
ÜbungenDipl.-Inform. Janick Martinez [email protected]
Tutoren für ÜbungenTutoren für ÜbungenSteffen Salbert
Sebastian BümannKevin Thiel (Korrektur)
T. Grosch - 3 -
WebseiteWebseitewww.rendering.ovgu.dewww.rendering.ovgu.de
Lehre Sommersemester2012 Computergrafik
http://www rendering ovgu de/lehre/lehreordner/sommersemester 2012/http://www.rendering.ovgu.de/lehre/lehreordner/sommersemester_2012/grundlagen_der_computergraphik.html
F liFolienÜbungsblätterBeispielprogrammeNews….
Die Folien von heute sind bereits verlinkt
T. Grosch - 4 -
Allgemeines zur VorlesungAllgemeines zur VorlesungVorlesungVorlesungOrt: G29-307 Zeit: Dienstag, 15:00 - 17:00 Uhr
2 SWS ECTS S di ECTS C di2 SWS, ECTS-Studium, ECTS-Credits: 5
PF CV;B 2WPF DigiEng;M 1-3WPF IF;B 4-6WPF IngINF;B 4-6PF IT;D-TIF 6-8PF IT;D-IE 6-8PF MVK;M ab 1 (Modul 2 oder 3)WPF MVK;B ab 3 (Modul 14)WPF WIF;B 6
T. Grosch - 5 -
Allgemeines zur VorlesungAllgemeines zur Vorlesung
Grundlagen der ComputergrafikGrundlagen der ComputergrafikAlgorithmen zum Zeichnen von Punkten, Linien, Polygonen, …2D und 3DClippingTransformationen
• Verschieben, drehen, skalieren, …Projektionen
• 3D 2D• 3D 2DBeleuchtungsverfahren zur realistischen Darstellung einer 3D Szene„weiche“ Kurven (ohne Ecken) Splines…
T. Grosch - 6 -
Allgemeines zur VorlesungAllgemeines zur Vorlesung
Vorlesung enthält immer Theorie und ProgrammierungVorlesung enthält immer Theorie und Programmierung
Programmierung mitProgrammierung mit C++OpenGL p
plattformunabhängig
T. Grosch - 7 -
Zeitliste Datum ThemaZeitlisteVorlesungen
Datum Thema10.4.2012 Einführung
17.4.2012 Grundlagen Mathematik
24.4.2012 Linien, Clipping
1.5.2012 -- Feiertag --
8 2012 P l Cli i8.5.2012 Polygone, Clipping
15.5.2012 Transformationen
22.5.2012 View Transformationen22.5.2012 View Transformationen
29.5.2012 Projektionen
5.6.2012 Beleuchtung
12.6.2012 Texturen
19.6.2012 Splines
26.6.2012 Ray Tracing
3.7.2012 Wiederholung, Fragen, Prof. Preim: Vorstellung Anwendungsfächer
T. Grosch - 8 -
10.7.2012 Hot Topics, Vorstellung Projekte
Allgemeines zu den ÜbungenAllgemeines zu den Übungen
Wöchentliche ÜbungenWöchentliche ÜbungenTheorie – und ProgrammieraufgabenTheorieteilTheorieteil
MathematikAlgorithmen von Hand durchrechneng
ProgrammieraufgabenKleine OpenGL ProgrammeAb ca. der Hälfte der Vorlesung schrittweise Programmierung eines Flugsimulators (Terrain BeleuchtungFlugsimulators (Terrain, Beleuchtung, Kamerasteuerung, …)
T. Grosch - 9 -
Allgemeines zu den ÜbungenAllgemeines zu den Übungen
Übungsgruppen:
Übung 1 (Janick Martinez) Donnerstag 9-11h, G29-335
Übung 2 (Janick Martinez) Donnerstag 15-17h, G29-335
Üb 3 (S b ti Bü ) D t 17 19h G29 335Übung 3 (Sebastian Bümann) Donnerstag 17-19h, G29-335
Übung 4 (Steffen Salbert) Montag 15-17h G29-335Übung 4 (Steffen Salbert) Montag 15 17h, G29 335
T. Grosch - 10 -
Anmeldung für die ÜbungAnmeldung für die Übung
Zur Anmeldung für die Übung:Zur Anmeldung für die Übung:Bitte Email schicken an Janick Martinez Esturo
• [email protected]@ g g g
bis morgen (Mittwoch, 11.4.) 24 Uhr
Inhalt• Name Vorname Matrikelnr Studiengang• Name, Vorname, Matrikelnr., Studiengang• Gewünschte Übungsgruppe und Ausweichtermin
Ende der Woche bekommt ihr eine Email zurück mit eurer Übungsgruppe und einem Zugang zur Webseite (Punktestand einsehen)einsehen)
T. Grosch - 11 -
ÜbungsblätterÜbungsblätter
Ausgabe: Übungsblatt jede Woche Dienstags auf derAusgabe: Übungsblatt jede Woche Dienstags auf der HomepageAbgabe der Lösungen:Abgabe der Lösungen:
- In Gruppen von 2-4 Personen, eine Woche später- Schriftliche Aufgaben: Vor der Vorlesung (Di 15 Uhr) bei mir
abgeben (Übungsgruppe, Name, Matnr. auf jedem Blatt angeben)
- Programmieraufgaben: Vor der Vorlesung (bis spätestens Di 15 Uhr) per Email an kevin thiel@st ovgu de15 Uhr) per Email an [email protected]
- Nur compilierfähigen Quellcode abgeben (keine Binaries)- Keine zusätzlichen Libraries verwenden
D il i T d Üb b h- Details mit Tutor der Übung absprechen
Rückgabe und Durchsprechen der Aufgaben in der Übung in der Woche nach der AbgabeÜbung in der Woche nach der Abgabe
T. Grosch - 12 -
1 Übungsblatt1. Übungsblatt
1 Übungsblatt nächste Woche1. Übungsblatt nächste WocheAusgabe am 17.4.Abgabe am 24.4.gRückgabe & Besprechung in den Übungen ab dem 26.4.
T. Grosch - 13 -
Übungen in den ersten beiden WochenÜbungen in den ersten beiden Wochen
Diese Woche (Di 10 4 – Mo 16 4 )Diese Woche (Di, 10.4. – Mo, 16.4.)Installation OpenGL, einfache OpenGL / C ProgrammierungVisual Studio Express 2010 C++ (& Windows SDK) und p ( )CMake auf eigenem Laptop vorher installierenEinfach eine beliebige Übungsgruppe aussuchen (noch keine Zuordnung)Zuordnung)
In der Übung nächste Woche (17.4. - 23.4.) Einführung in C / C++ ProgrammierungEinführung in C / C ProgrammierungZu regulären Übungszeiten / Räumen
T. Grosch - 14 -
Voraussetzungen für KlausurVoraussetzungen für KlausurDie Bearbeitung der Übung ist Z l t fü di KlZulassungsvoraussetzung für die Klausur
Mind. 50% der Punkte aus den Übungsaufgaben müssen erreicht werden, sowohl in Theorie- als auch in ,ProgrammieraufgabenPunkte aus der Übung werden nicht in die Prüfung übernommenübernommen3 x vorrechnen in der Übung
Zusätzlich kann der Flugsimulator erweitert werdenZusätzlich kann der Flugsimulator erweitert werdenKreativ-Punkte, keine VorgabenBonuspunkte für die besten Programme Vorstellung in letzter Vorlesung (10.7.)
Klausurtermin voraussichtlich in den ersten zwei Wochen nach Ende der Vorlesungszeit (16.7. – 29.7.)
T. Grosch - 15 -
Zeitliste Datum ÜbungZeitlisteÜbungen
Datum Übung10.4. – 16.4. Installation von OpenGL, einfache
OpenGL Programmierung
17 4 – 23 4 Einführung in C und C++ Ausgabe17.4. 23.4. Einführung in C und C , Ausgabe Blatt 1
24.4. – 2.5. Rückgabe und Besprechung Blatt 1, Ausgabe Blatt 2
Insgesamt 10 Übungsblätter
1.5. -- Keine Übung wegen Feiertag --
8.5. – 14.5. Rückgabe und Besprechung Blatt 2, Ausgabe Blatt 3
… …
19.6. – 25.6. Rückgabe und Besprechung Blatt 8, Ausgabe Blatt 9
26.6. – 2.7. Rückgabe und Besprechung Blatt 9, Ausgabe Blatt 10
3.7. – 10.7. Rückgabe und Besprechung Blatt 10
T. Grosch - 16 -
Literatur zur VorlesungLiteratur zur Vorlesung
Peter ShirleyFundamentals of Computer Graphics
AK Peters, 3. Auflage
Dave ShreinerOpenGL Programming GuideOpenGL Programming GuideMorgan Kaufmann, 7. Auflage
Beide Bücher sind mehrfach in der Bibliothek als Präsenz – und
T. Grosch - 17 -
Ausleihexemplar vorhanden
Weitere LiteraturWeitere LiteraturJ. Foley, A. van Dam, S. Feiner, J. Hughes: Computer Graphics:J. Foley, A. van Dam, S. Feiner, J. Hughes: Computer Graphics: Principles and Practice, 2nd Edition
Alan Watt: 3D Computer Graphics Addison Wesley 3rd editionAlan Watt: 3D Computer Graphics, Addison-Wesley, 3rd edition
J.L. Encarnação, W. Strasser, R. Klein: Graphische D t b it 1 d 2Datenverarbeitung 1 und 2
Michael Bender, Manfred Brill:ComputergrafikHanser Verlag, 2003
Klaus Zeppenfeld:Lehrbuch der GrafikprogrammierungSpektrum Akademischer Verlag, 2004
T. Grosch - 18 -
p g,
Einordnung und Begriffsbestimmung
Die graphische Datenverarbeitung ist in der ISO-Norm
Einordnung und Begriffsbestimmung
Die graphische Datenverarbeitung ist in der ISO Norm wie folgt definiert (ISO DIS 2382/13, 1982):
“Methods and techniques for converting data to and fromto and from
graphics displays via computer”
Mit “to” und “from” sind zwei Wege aufgezeichnet, einmalvon der Beschreibung (Modell) zum Bild und einmal vomvon der Beschreibung (Modell) zum Bild und einmal vom Bild zur Beschreibung.
19
Einordnung und BegriffsbestimmungEinordnung und BegriffsbestimmungDamit ist folgende Klassifikation möglich (vgl. Encarnacáo, Strasser, Klein 1996)Klein, 1996)
AusgabeBild B h ib
gEingabe Bild
BildverarbeitungBild
Beschreibung
BildanalysegBild
Beschreibung Computergraphik
y
andere Disziplinen
Die Aufgabe der Computergraphik ist die rechnergestützte Erzeugung künstlicher Bilder, die in Form von Szenen-
p
/Bildbeschreibungen vorliegen.
20
Geschichte der ComputergraphikGeschichte der ComputergraphikGeschichte der Computergraphik1949 Erste Computergraphik auf dem Whirlwind
Computer des MIT (bouncing Ball Program von Charly Adams);
Display
T. Grosch - 22 -
Geschichte der Computergraphik1952 Einsatz der Computergraphik zur
Geschichte der Computergraphik
Kennzeichnung von Flugobjekten auf Radarbildschirmen
SAGE (Semi-Automatic Ground Environment) Computer mit 82 Graphikkonsolen zur Luftüberwachung, erster Einsatz eines Lichtgriffels);
S C lSage Consolen
T. Grosch - 23 -
Geschichte der Computergraphik1962 Erste 3D Computergraphiken von L.G. Roberts auf d TX2 d MIT
Geschichte der Computergraphik
dem TX2 des MIT;
TX2 Computer
T. Grosch - 24 -
Geschichte der Computergraphik1963 Sketchpad - erstes interaktives C t hik t S th l d it
Geschichte der Computergraphik
Computergraphiksystem von Sutherland mit• Bildkomposition aus graphischen Standardelementen,• Interaktion mit Tastatur und Lichtgriffel zur Arbeit mit Menüs,g ,• entsprechenden Datenstrukturen zur Verwaltung graphischer Daten;
Ivan Sutherland an der Konsole des TX-2 Computers
T. Grosch - 25 -
Geschichte der Computergraphik
Mitte der 60er Jahre: Beginn einer Vielzahl von CG
Geschichte der Computergraphik
Mitte der 60er-Jahre: Beginn einer Vielzahl von CG-Forschungs-projekten (am MIT, General Motors, Bell Telephone Lab Lockheed Aircraft usw )Telephone Lab., Lockheed Aircraft usw.)
1965: Erstes kommerzielles Vektor-Display von IBM1965: Erstes kommerzielles Vektor-Display von IBM(Preis ca. 100.000 US$);
1967: Erster Bildspeicher-Display von Tektronix (bietet einemvon Tektronix (bietet einem
breiten Interessentenkreis Zugang zur Computergraphik Preis ~10 000 USD);zur Computergraphik, Preis 10.000 USD);
T. Grosch - 26 -
Geschichte der Computergraphik
Anfang der 70er Jahre: erste kommerzielle CAD/CAM-
Geschichte der Computergraphik
Anfang der 70er Jahre: erste kommerzielle CAD/CAM-Systeme kommen auf den Markt.
1971: Raster-Scan-Prinzip von M. Noll (Bell Lab.)vorgeschlagen;
1972: Erster Flugsimulator (General Electronics);
Erster Heimcomputer als Bausatz unterErster Heimcomputer als Bausatz unter dem Namen „Altair 8800“ auf dem Markt
T. Grosch - 27 -
Geschichte der ComputergraphikGeschichte der Computergraphik
1973: Erste Konferenz der SIGGRAPH (Special Interest Group on Computer Graphics) der ACM
(Association of Computing Machinery), die sich ausschließlich mit Computer Graphik beschäftigt (damals ca 1200 Teilnehmer heute > 30000);beschäftigt (damals ca. 1200 Teilnehmer, heute > 30000);
T. Grosch - 28 -
Geschichte der ComputergraphikAb Mitte der 70er Jahre:
Geschichte der Computergraphik
• Graphische Unterprogrammpakete (PLOT10, CAL-Comp),
• Graphische Programmiersprachen (DIGRA 73),p g p ( ),
• Erste kommerzielle Raster-Displays (max. Auflösung 512 x 512 Pixel, 8 Bit pro Pixel, Preis ~100.000DM);
E t V f h h tti t Obj ktd t ll• Erste Verfahren zur schattierten Objektdarstellung:• Beleuchtungsverfahren (Phong 1975, Blinn 1977),
• Schattierungsverfahren (Gouraud 1971, Phong 1975),g• Texturierung (Catmull 1974),
• Schattenwurf (Crow 1977, Williams 1978);
M. Newell (Univ. of Utah) modelliert 1975 den Utah teapot –
eine Ikone der Computer Graphikeine Ikone der Computer Graphik.
T. Grosch - 29 -
Geschichte der Computergraphik1977 Erste Vorschläge zur Standardisierung von
G hik ft CORE
Geschichte der Computergraphik
Graphiksoftware - CORE;
1979 Erstmalige Darstellung von spiegelnder Reflexion und Transparenz mit Hilfe desReflexion und Transparenz mit Hilfe des Raytracing (Kay, Whitted);
Li ht llProjektions-ebene
Lichtquelle
Strahlen-wege
Projektions-
Szene
zentrum
T. Grosch - 30 -
Geschichte der Computergraphik1979: Gründung der Computer Graphik Abteilung von
Geschichte der Computergraphik
LucasFilm durch George Lucas (die Abteilung wird der „Special Effects“-Abteilung ILM -Industrial Light and Magic- zugeordnet);
1980: Vorführung des Films Vol Libre (von Loren Carpenter, Boeing) auf der SIGGRAPH’80 (in dem Film wird der Flug durch
C ‘ G
eine fraktale Landschaft gezeigt);
Carpenter‘s Kunst-Gebirge wurde bei der Prämierung von der SIGGRAPH-Jury mit der
Begründung ausgeschlossenBegründung ausgeschlossen, weil
„... es nicht wie eine ComputerGraphik aussieht !“
T. Grosch - 31 -
Geschichte der Computergraphik
1980:~30 Min Computeranimationen im Film Tron (Film
Geschichte der Computergraphik
1980:~30 Min. Computeranimationen im Film Tron, (Film floppt, große Hollywood Filmstudios reagieren mit Zurückhaltung
gegenüber Computer Graphik);gegenüber Computer Graphik);
1981: Erstes „Rendering“-System REYES („Rendering everything you ever saw“, von L. Carpenter für LucasFilm – wird später zu Renderman weiterentwickelt);
Beginn der Entwicklung des Volume-Rendering;Rendering;
T. Grosch - 32 -
Geschichte der Computergraphik
1982 E t Fil i d i h F i L h
Geschichte der Computergraphik
1982: Erste Filmsequenz, in der sich Frau in Luchs verwan-delt (T.Brigham, SIGGRAPH´82);
Diese Technik wird späterDiese Technik wird später Morphing genannt -(wurde bis 1987 nicht weiter b ht t bi L Fil i ibeachtet, bis LucasFilm sie in dem Film „Willow“ einsetzt);
T. Grosch - 33 -
Geschichte der Computergraphik
1982: Gründung Silicon Graphics Inc (SGI) J Clark
Geschichte der Computergraphik
1982: Gründung Silicon Graphics Inc. (SGI), J. Clark, (Entwicklung von Hochleistungsrechnern für graphische Anwendungen);
1983: Jaron Lanier (Atari Research Center)entwickelt Datenhandschuh;
T. Grosch - 34 -
Geschichte der Computergraphik
1984: Globale Beleuchtungs-Simulation
Geschichte der Computergraphik
98 G oba e e euc u gs S u a omit Radiosity (Goral u.a., Nishita);
Gründung Wavefront TechnologiesGründung Wavefront Technologies für Animations-Software;
Strahlungsquelle
Reflektierte StrahlungRadiosity-Bildy
T. Grosch - 35 -
Geschichte der Computergraphik1986: Gründung der Fa. Pixar durch Ed Catmull und A.R. Smith
Geschichte der Computergraphik
nach Abspaltung von Lucas Film; Pixars RenderMan wird Industrie-Standard;1988: Film The Abyss, James Cameron
(ILM stellt dabei die Szene mit der Wasser-Kreatur her die die GesichterWasser-Kreatur her, die die Gesichter der Mannschaft imitiert);
aus J.D. Foley, et alComputer Graphics – Principles
and Practice
T. Grosch - 36 -
Geschichte der Computergraphik
1989:Einführung von Motion Capture Nutzung
Geschichte der Computergraphik
1989:Einführung von Motion Capture, Nutzung mechanischer Eingabegeräte für Computeranimation;
1992: Neue Maßstäbe bei computer-generierten Spezialeffekten,(Animationen des „T1000“-Roboters in J. Cameron‘s Film Terminator 2);
OpenGL wird als Grafikstandardfestgelegtg g
T. Grosch - 37 -
Geschichte der Computergraphik
1993 St S i lb ‘ Fil
Geschichte der Computergraphik
1993: Steven Spielberg‘s Film Jurassic Park(anstelle der ursprünglich geplanten ( p g g pPuppenanimationen werden Computer-animationen für die Dinosaurierszenen eingesetzt);g )
T. Grosch - 38 -
Geschichte der ComputergraphikAnfang- Mitte der 90er Jahre:
- Verbindung moderner Kommunikationstechnologien mit Graphik:
Geschichte der Computergraphik
- Verbindung moderner Kommunikationstechnologien mit Graphik:Multimedia in verteilten Umgebungen, CSCW Computer supported cooperative work, Graphik im Internet, Standards zur Bild und BewegtStandards zur Bild- und Bewegt-bildübertragung...,
- Daten- und Informations-Visualisierung,- Methoden des Non-Photorealistic Rendering ( Uni Magdeburg);et ode des o oto ea st c e de g ( U agdebu g);
T. Grosch - 39 -
Geschichte der ComputergraphikGeschichte der Computergraphik
1995: Toy Story kommt in die Kinos; erster vollständig computer-animierte Film von Pixar;
Rendering: 800 000 Std. Berechnungs-zeit für 70 min. Film auf 177 Sun Sparc 20
D Fil i t i ß K f lDer Film ist ein großer Kassenerfolg, wird für drei Oskars nominiert, erhält jedoch keinen davon ...
T. Grosch - 40 -
Geschichte der Computergraphik
1998: High Dynamic Range (HDR) Paul Debevec
Geschichte der Computergraphik
1998: High Dynamic Range (HDR), Paul Debevec8 Bit 32 Bit float pro PixelDigitale Kamera nimmt echte Helligkeiten auf
H
HDR Light Probe
HD
R LD
R
Image-based LightingFiat Lux 1999Fiat Lux 1999
T. Grosch - 41 -
Geschichte der ComputergraphikGrafikkarten1999 h t G hi P i U it (GPU)
Geschichte der Computergraphik
1999 - heute: Graphics Processing Unit (GPU)
SGI Grafik-Workstation wird immer mehr von PC mitSGI Grafik-Workstation wird immer mehr von PC mit Grafikkarte abgelöst
Starke Weiterentwicklung durch Spieleindustrie
GPU wird zum schnellen Coprozessor, bisherige Offline-Techniken werden EchtzeitfähigOffline-Techniken werden Echtzeitfähig
T. Grosch - 42 -
Geschichte der Computergraphik
2001: sehr gute Gesichtsanimationen
Geschichte der Computergraphik
2001: sehr gute Gesichtsanimationen von virtuellen Charakteren im Film Shrek ;
Simulation von Haaren: Monster AG
T. Grosch - 43 -
Geschichte der Computergraphik2001: Final Fantasy, erster k l tt t i i t
Geschichte der Computergraphik
komplett computer- animierter Spielfilm mit realistischen virtuellenrealistischen virtuellen Charakteren;die Produktion des Films dauerte ~4 Jahre, wobei etwa 170 Computeranimatoren tätig waren
aus: digital production,H f 3/01Heft 3/01
T. Grosch - 44 -
Geschichte der ComputergraphikSehr große, virtuelle Welten…2003 H d Ri
Geschichte der Computergraphik
2003: Herr der Ringe
2009: Avatar2009: Avatar
2012… ?
T. Grosch - 45 -
Computergrafik in Magdeburg
AG Visual Computing: Prof. Holger TheiselAG Visualisierung: Prof. Bernhard Preimg
AG Computervisualistik: Jun.-Prof. Thorsten Grosch
Computergraphik in MagdeburgComputergraphik in Magdeburg
AG Visual ComputingProf Holger TheiselProf. Holger Theisel
•VisualisierungS ö•speziell Strömungsdaten
•Information Visualization•Visual Analytics•Geometric Modelling, geometric Design
T. Grosch - 47 -
C t hik i M d bAG Visual Computing: Flow Visualization
Computergraphik in MagdeburgAG Visual Computing: Flow Visualization
T. Grosch - 48 -
Computergraphik in Magdeburg
AG Visual Computing:
Computergraphik in Magdeburg
AG Visual Computing:Geometric Modelling, Deformations
T. Grosch - 49 -
Computergraphik in MagdeburgAG Visualisierung (Prof. Bernhard Preim)
Computergraphik in Magdeburg
Gefäßvisualisierung und illustrative Visualisierung
Ausgusspräparat der Bronchialgefäße einer menschlichen Lunge Der linke Fokus- und Kontextdarstellung durcheiner menschlichen Lunge. Der linke Lungenlappen ist transparent dargestellt zusammen mit einem Volume Rendering weiterer Gefäße und umgebender Knochen
Fokus und Kontextdarstellung durch farblich hervorgehobene Fokusobjekte
und Repräsentation von Kontextstrukturen mittels Stippling und
Silh ttumgebender Knochen. Silhouetten.
T. Grosch - 50 -
Computergraphik in MagdeburgAG Visualisierung (Prof. Bernhard Preim)
Computergraphik in Magdeburg
Planung und Training von chirurgischen Eingriffen
Kombination von Farbe, Transparenz Mapping undTransparenz-Mapping und lokaler Transparenz um einen einzelnen Hals-Lymphknoten h h b
Der Nutzer kann in einer 3D-Darstellung eine virtuelle
hervorzuheben.Resektion vornehmen.
T. Grosch - 51 -
Computergraphik in MagdeburgComputergraphik in MagdeburgAG Computervisualistik (Jun.-Prof. Thorsten Grosch)Gl b l B l htGlobale Beleuchtung
Simulation aller Lichtwege von der Lichtquelle bis zum Auge• Indirektes Licht, Spiegelungen, weiche Schatten, …, p g g , ,
Ziel: Echtzeitdarstellung, also mind. 25 Bilder / sek.
Nur direktes LichtSchnell, aber künstlich
Globale Beleuchtung:Photorealistisch, aber
zeitaufwändig
Virtuelle 3D Szene,keine Beleuchtung
zeitaufwändig
T. Grosch - 52 -
BeispielbilderStroebel et al .1986
Beispielbilder
Geomerics
CryTek
Bilder: Jensen, Lightscape
CryTek
T. Grosch - 53 -
Computergraphik in MagdeburgComputergraphik in MagdeburgAG ComputervisualistikForschungsschwerpunkt
Globale Beleuchtung in Echtzeit mit der GrafikEchtzeit mit der Grafik Hardware
T. Grosch - 54 -
Computergraphik in MagdeburgComputergraphik in Magdeburg
Imperfect Shadow Maps: Ritschel, Grosch, Kim, Seidel, Dachsbacher, Kautz
T. Grosch - 55 -
Computergraphik in MagdeburgComputergraphik in MagdeburgAG ComputervisualistikErweiterung reales Kamerabild mit virtuellen Objekten AugmentedObjekten Augmented Reality
Rekonstruktion derRekonstruktion der Beleuchtung auf dem FotoGlobale Beleuchtung mit i t ll Obj ktvirtuellen Objekten
Einblendung ins Foto, Licht und Schatten sind korrekt
T. Grosch - 56 -
Computergraphik in MagdeburgComputergraphik in MagdeburgAG Computervisualistik
Vorlesungen
GPU Programmierung • Wahlpflicht Bachelor Sommersemester• Wahlpflicht, Bachelor, Sommersemester
Photorealistische Computergrafikp g• Wahlpflicht, Master, Wintersemester
T. Grosch - 57 -
Was ist OpenGL ?Was ist OpenGL ?
Open Graphics LibraryOpen Graphics LibraryGrafik Bibliothek zur Darstellung von 3D Objekten
Polygone Materialien Lichtquellen KameraPolygone, Materialien, Lichtquellen, Kamera, ….
T. Grosch - 59 -
Hintergrund / GeschichteHintergrund / Geschichte
auf der Suche nach einer einheitlichen Software-… auf der Suche nach einer einheitlichen Software-Schnittstelle (API: Application Programming Interface) zur Programmierung von Graphiksystemeng g p yStandardisierungsbemühungen
GKS, PHIGS…
„Proprietäre Systeme“HP: Starbase, SGI: GL (Graphics Library)
Gewinner: SGI mit GL in Verbindung mit sehr guter HardwareOpenGL (1992, Mark Segal & Kurt Akeley)Konkurrenz nur noch durch Microsoft (Direct3D)
T. Grosch - 60 -
OpenGLOpenGL
OpenGL ist ein Software Interface für GraphikOpenGL ist ein Software Interface für Graphik Hardware mit ca. 250 verschiedenen Kommandos
Hardware unabhängigg g
warum „Open“?offen für Lizenznehmerverwaltet vom Architecture Review Board (ARB)
• NVIDIA, ATI, IBM, Intel, SGI, ….j d Li h it b (E t i )von jedem Lizenznehmer erweiterbar (Extension)
Nicht dabei:Handhabung von Fenstern/WindowsHandhabung von Fenstern/WindowsBenutzereingabe
T. Grosch - 61 -
OpenGL HistorieOpenGL HistorieVersion Jahr Beschreibung
1.0 1992 Erste Veröffentlichung
Version Jahr Beschreibung
3.0 2008 OpenGL Shading Language
1.1 1997 Vertex Arrays, TextureObjects, Polygon Offset
1 2 1998 3D Texturen Pixelformate
1.3, Entfernung von Fixed-Function-Pipeline (begin/end, T&L,…), Annäherung an DirectX1.2 1998 3D Texturen, Pixelformate,
MipMaps
1.2.1 1998 ARB Extensions, ARB Multitexture
3.1 2009 Compatibility extension für Altlasten, Uniform BufferObjects, Primitive Restart, Instancing, CopyBuffer,
1.3 2001 Komprimierte Texturen, Cube Maps, Multi-Texturing
1.4 2002 Tiefentexturen, automatische
Instancing, CopyBuffer, Texture Buffer Objects
3.2 2009 Geometry Shader, Sync andFence, OpenGL ShadingL 1 5MipMaps, Nebelkoordinaten
1.5 2003 Buffer Objects, OcclusionQueries
Language 1.5
3.3 2010 Diverse ARB Extensions, OpenGL Shading Language 3.3
2.0 2004 OpenGL Shading Language, Multiple Render Targets, non–power-of-2 Textures, Point Sprites, Vertex Texture Fetch
4.0 2010 OpenCL, Tessellation, OpenGL Shading Language 4.0
T. Grosch - 62 -
2.1 2006 Pixel Buffer Objects, sRGBTexturen, OpenGL ShadingLanguage 1.2
4.1 2010 Binäre Shader Programme, double precision bei Vertex Shader, OpenGL ShadingLanguage 4.1
EinführungEinführung
OpenGL Core: Basisprimitive (Punkte LinienOpenGL Core: Basisprimitive (Punkte, Linien, Polygone…)Darauf aufbauend gibt es diverse Tools:Darauf aufbauend gibt es diverse Tools:
OpenGL Utility Library (GLU): standardmaessig dabei für Oberflächen (Quadrics, NURBS…)
OpenGL ist eine „State-Machine“Man versetzt die „Maschine“ in einen Zustand, der so lange besteht bis er wieder verändert wirdbesteht, bis er wieder verändert wirdBeispiel: ab jetzt alles rot, ab jetzt dieses Material, ab jetzt diese TransformationEffizienter, als Daten jedes Mal neu zu übergeben
T. Grosch - 63 -
OpenGL GrundstrukturOpenGL Grundstruktur
Low-Level-APILow-Level-APIHardware-nah aber Hardware-unabhängig
2 Arten von Funktionen2 Arten von FunktionenZustand ändernPrimitive darstellen
immediate mode Systemsehr einfache BefehleDirektes Durchreichen an die HW möglichDreiecks-basiert, keine interne Repräsentation der Szene
klarer Namensraumklarer NamensraumBefehle fangen mit gl... anKonstanten mit GLKonstanten mit GL_...
T. Grosch - 64 -
BeispielBestimmt die Farbe, mit der das Bild gelöscht wirdBeispiel
glClearColor(0 0 0 0 0 0 0 0);
Bild gelöscht wird
Löscht das Bild, genauer den Color Buffer (alternativ z-BufferglClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 1.0, 1.0);
Color Buffer (alternativ z Buffer etc.)
Setzt die Farbe auf weißglOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);glBegin(GL_POLYGON);
lV t 3f(0 25 0 25 0 0)
Definiert das Koordinatensystem für das R d iglVertex3f(0.25, 0.25, 0.0);
glVertex3f(0.75, 0.25, 0.0);glVertex3f(0.75, 0.75, 0.0);
Rendering
Definiert ein zu zeichnendes Objekt hier ein Polygon mit 4glVertex3f(0.75, 0.75, 0.0);
glVertex3f(0.25, 0.75, 0.0);glEnd();
Objekt, hier ein Polygon mit 4 Ecken
Sorgt dafür daß dieglFlush();
Sorgt dafür, daß die Zeichenkommandos auch ausgeführt werden, anstatt in einem Puffer auf weitereeinem Puffer auf weitere Kommandos zu warten
T. Grosch - 65 -
GLUT the OpenGL Utility ToolkitGLUT, the OpenGL Utility Toolkit
OpenGL ist unabhängig vom Betriebssystem oderOpenGL ist unabhängig vom Betriebssystem oder Window-ManagerLeider läuft keine Graphikapplikation ohne dass manLeider läuft keine Graphikapplikation ohne dass man zumindest ein Fenster öffnet oder einfache Eingabewerte (Tastatur/Maus) abfragtGLUT: Ganz gut für den Start…
T. Grosch - 66 -
Beispiel Initialisiert GLUTBeispielint main(int argc char** argv)
RGBA oder Color-Index Mode, Single oder Double Buffer etc.
int main(int argc, char argv){
glutInit(&argc, argv);
Position und Größe des Fensters
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (250, 250); l tI itWi d P iti (100 100)
Das Fenster mit GL-Kontext glutInitWindowPosition (100, 100);glutCreateWindow ("hello");init ();
wird erzeugt, allerdings erst durch glutMainLoop dargestellt
Di l C llb k F ktiinit ();glutDisplayFunc(display); glutMainLoop();
Display Callback Funktion: sobald GLUT ein Neuzeichnen des Fensterinhalts für nötig hält,
return 0; /* ANSI C */}
wird diese CB-Funktion aufgerufen
E t t i t H t hl ifEvent-getriggerte Hauptschleife
T. Grosch - 67 -
GLUTGLUT
InitialisierungInitialisierungglutInit(int *argc, char **argv);glutInitDisplayMode( ... );g p y ( );glutCreateWindow(„name“);
Zeichenfunktion registrierenglutDisplayFunc( void (*func)(void) );
Neuzeichnen anmeldenglutPostRedisplay();
T. Grosch - 69 -
GLUTGLUT
InteraktionsfunktionenglutMouseFunc(void (*func)(int button int state int x int y) );glutMouseFunc(void ( func)(int button, int state, int x, int y) );glutKeyboardFunc(void (*func)(unsigned char key, int x, int y) );glutMotionFunc(void (*func)(int x, int y) );
HilfsfunktionenglutReshapeFunc(void (*func)(int width, int height) );glutIdleFunc( void (*idle)(void) );
HauptschleifeglutMainLoop();
T. Grosch - 70 -
GLUTGLUT
Hilfsfunktionen für PrimitiveHilfsfunktionen für Primitive void glutWireSphere(float radius, int slices, int stacks);void glutWireTorus(float inner radius, float outer radius, int sides, g ( _ , _ , ,int rings) ;void glutWireTeapot(double size);
T. Grosch - 71 -
Genug für heuteGenug für heute…
Als nächstesAls nächstesAnmelden für die ÜbungVisual Studio Express 2010 (& Windows SDK) + CMake p ( )installierenOpenGL ausprobieren ÜbungenB i i l f d W b itBeispielprogramme auf der Webseite
Nächste WocheNächste WocheMathematische GrundlagenErstes Übungsblattg
T. Grosch - 72 -
AcknowledgementsAcknowledgements
Diese Vorlesungsskripte basieren in weiten Teilen aufDiese Vorlesungsskripte basieren in weiten Teilen auf Skripten von
Prof Stefan Müller (Universität Koblenz)- Prof. Stefan Müller (Universität Koblenz)- Prof. Holger Theisel (Universität Magdeburg)
und weiteren Kollegen.Dankeschön!
T. Grosch - 73 -