Zum Inhalt springen

CGSG/Workshop: Unterschied zwischen den Versionen

Cptwunderlich (Diskussion | Beiträge)
Vierlex (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 5: Zeile 5:
== Aktuelles ==  
== Aktuelles ==  


Der erste Workshop findet am '''13.2.2010''' um 16:00 statt.
Übungsaufgabe: Beleuchtung in das 3D-Beispiel vom ersten Workshop ([https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/3ddrawing.cpp 3ddrawing.cpp]) einbauen.
Wichtig: Normalvektoren angeben und auf korrekte Reihenfolge der Vertices [CCW cs. CW] achten!
 
Bei Interesse wird auch ein dritter Teil des Workshops stattfinden, der Termin wird auf der Mailingliste bekanntgegeben.


== Voraussetzungen ==
== Voraussetzungen ==
=== Computergrafik ===
Es sind keine Computergraphik-Vorkenntnisse erforderlich.
=== Programmierung ===
Ihr solltet zumindest rudimentäre Programmierkenntnisse haben.
Mein Beispielcode ist in C, der Workshop macht aber durchaus nicht nur für C/C++-Hacker Sinn. Ihr könnt durchaus auch in Java oder Python oder Processing oder ... arbeiten, die Konzepte sind die gleichen. Für den Workshop ist es aber in jedem Fall von Vorteil, wenn ihr in der Lage seid, auf eurer Plattform ein C-Programm zu kompilieren und auszuführen, damit ihr die gezeigten Beispiele gleich live selber ausprobieren könnt.


Es sind keine Computergraphik-Vorkenntnisse erforderlich.  
Bitte dafür ''vor dem Workshop'' [http://www.libsdl.org/ libSDL] auf euren Rechnern installieren. (Binaries sind verfügbar für Linux, Mac OS X und Windows, SourceCode ebenfalls.)


Ihr solltet aber zumindest rudimentäre Programmierkenntnisse haben.  
Beispielcode ist in C und Python verfügbar. (Bitte entsprechend einen funktionierenden C-Compiler wie <code>gcc</code> oder eine entsprechende Python Installation einrichten.)


Mein Beispielcode ist in C, der Workshop macht aber durchaus nicht nur für C/C++-Hacker Sinn. Ihr könnt durchaus auch in Java oder Python oder Processing oder ... arbeiten, die Konzepte sind die gleichen. Für den Workshop ist es aber in jedem Fall von Vorteil, wenn ihr in der Lage seid, auf eurer Plattform ein C-Programm zu kompilieren und auszuführen, damit ihr die gezeigten Beispiele gleich live selber ausprobieren könnt. Bitte dafür vor dem Workshop [http://www.libsdl.org/ libSDL] auf euren Rechnern installieren.
=== Empfohlene Auffrischung der mathematischen Kenntnisse ===
Um der, nicht allzu komplexen, Mathematik im Workshop leichter folgen zu können, empfiehlt es sich die folgenden Themen der Mathematik wieder einmal grob zu überfliegen.
[http://de.wikipedia.org/wiki/Grundrechenarten Grundrechnungsarten], [http://de.wikipedia.org/wiki/Modulo#Modulo Modulo Division] (Division mit Rest), [http://de.wikipedia.org/wiki/Skalar_(Mathematik) Skalar], [http://de.wikipedia.org/wiki/Vektor Vektor], [http://de.wikipedia.org/wiki/Matrizenrechnung Matrix] (''nicht'' [http://www.imdb.com/title/tt0133093/ diese Matrix]), [http://de.wikipedia.org/wiki/Lineare_Algebra Lineare Algebra] (Don't Panic!)


== Inhalt ==
== Inhalt ==
Zeile 28: Zeile 40:
* einfaches Zeichnen in 3D
* einfaches Zeichnen in 3D


=== Teil 2: Beleuchtung ===  
=== Teil 2 ===  


* Beleuchtungsmodelle
* WH Grundlagen - Beispiel Sonnensystem durchbesprechen
* Flat Shading vs. Gouraud Shading
* ''Needful things:''
* Materialeigenschaften in OpenGL
** Vollbildmodus
* Lichtquellen in OpenGL (Arten, Farbangaben)
** bessere Tastatursteuerung
* Bedeutung korrekter Normalvektoren
** Animation
* Beleuchtung:
** allgemeines
** Materialeigenschaften in OpenGL
** Lichtquellen in OpenGL (Arten, Farbangaben)


=== Teil 3 ===  
=== Teil 3 ===  


* Animation
* ???
* Texturen


== Unterlagen ==
== Unterlagen ==
Zeile 46: Zeile 61:


* [http://metalab.at/wiki/images/e/e1/CG-1.pdf Slides 1. Teil]  (13.2.2010) – PDF, 1324kB
* [http://metalab.at/wiki/images/e/e1/CG-1.pdf Slides 1. Teil]  (13.2.2010) – PDF, 1324kB
Die aktuelle Version der Sample Codes kannst Du auch per Subversion auschecken.
<code>svn co https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/</code>
(Das SSL Zertifikat ist self-signed und kann von svn daher nicht überprüft werden. Du solltest folgenden SHA1 Fingerprint präsentiert bekommen 44 9E 08 E4 56 5F 19 90 7C 77 10 A8 C9 8D D7 51 FA BA 63 3C)


''Beispiel-Code''
''Beispiel-Code''
Zeile 62: Zeile 83:
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/tricolor.cpp tricolor.cpp] Dreieck in Farbe
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/tricolor.cpp tricolor.cpp] Dreieck in Farbe
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/3ddrawing.cpp 3ddrawing.cpp] 3D-Aufgabe "Haus"
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/3ddrawing.cpp 3ddrawing.cpp] 3D-Aufgabe "Haus"
=== Teil 2 ===
* [http://metalab.at/wiki/images/1/17/CG-2.pdf Slides 2. Teil]  (13.2.2010) – PDF, 624 kB
''Beispiel-Code''
1. '''Toolbox'''
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/toolbox/tricolor_fullscreen.cpp tricolor_fullscreen.cpp] Vollbild-Modus
# Animation
#* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/toolbox/animation_sleep.cpp animation_sleep.cpp] die triviale Methode
#* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/toolbox/animation_timer.cpp animation_timer.cpp] oder mit Timer
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/toolbox/3ddrawing_keyrepeat.cpp 3ddrawing_keyrepeat.cpp] besserer Keyboard-Input
2. '''WH Sonnensystem''' (Schritt für Schritt aufgebaut)
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem1.cpp solarsystem1.cpp] Kugel zeichnen mit glu - Sonne
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem2.cpp solarsystem2.cpp] Sonne dreht sich um sich selbst
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem3.cpp solarsystem3.cpp] Erde dreht sich um die Sonne
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem4.cpp solarsystem4.cpp] Erde dreht sich auch um sich selbst
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem5.cpp solarsystem5.cpp] Mond dreht sich um die Erde
# [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/solsys/solarsystem6.cpp solarsystem6.cpp] Ekliptik
3. '''Beleuchtung'''
* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/lighting/firstlight.cpp firstlight.cpp]
* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/lighting/materialcolour.cpp materialcolour.cpp]
* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/lighting/lightcolour.cpp lightcolour.cpp]
* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/lighting/components.cpp components.cpp]
* [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws2/lighting/movinglight.cpp movinglight.cpp]


== Weiterführende Literatur, Tutorials, etc. ==
== Weiterführende Literatur, Tutorials, etc. ==


* [http://www.glprogramming.com/red/ OpenGL Redbook] - *das* Buch zu OpenGL (''"OpenGL Programming Guide"'')
* [http://www.glprogramming.com/red/ OpenGL Redbook] - *das* Buch zu OpenGL (''"OpenGL Programming Guide"'')
* [http://www.xmission.com/~nate/tutors.html Nate Robins' Tutorials] - Demos zu Projektion, Transformationen, etc. (sehr zu empfehlen!)
* [http://www.xmission.com/~nate/tutors.html Nate Robins' Tutorials] - Demos zu Projektion, Transformationen, etc. (sehr zu empfehlen!)
* [http://nehe.gamedev.net/ NEHE] - Eine der Standardquellen zu OpenGL Programmierung, keine gute Erklärungen dafür aber sehr viele Beispiele für alle möglichen Sprachen und Plattformen.


== Interessenten ==  
== Interessenten ==  
Zeile 103: Zeile 152:
# phaebz
# phaebz
#[[User:cptwunderlich|Beni]]
#[[User:cptwunderlich|Beni]]
#[[User:Moep|moep]]
#[[User:Leopold|leopold]]
#[[User:mzeltner|mzeltner]]
#[[User:ogott|ogott]]
#[[User:Nex|nex]]
# ''your name here''
# ''your name here''


Zeile 114: Zeile 168:


[[Kategorie:Workshops]]
[[Kategorie:Workshops]]
[[Kategorie:CGSG]]