CGSG/Workshop: Unterschied zwischen den Versionen

aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springen
(Code-Beispiele vom 2. Workshop)
(Cleanup, upcoming workshop)
Zeile 1: Zeile 1:
= Einführung in Computergraphik/OpenGL =
+
'''''[http://www.opengl.org/ OpenGL]''' (Open Graphics Library) ist eine Spezifikation für ein plattform- und programmiersprachenunabhängiges API (Application Programming Interface) zur Entwicklung von 3D-Computergrafik. Der OpenGL-Standard beschreibt etwa 250 Befehle, die die Darstellung komplexer 3D-Szenen in Echtzeit erlauben.'' --[[wde:OpenGL|Wikipedia]]
''von [[Benutzer:Kyrah|kyrah]]''
 
  
'''''[http://www.opengl.org/ OpenGL]''' (Open Graphics Library) ist eine Spezifikation für ein plattform- und programmiersprachenunabhängiges API (Application Programming Interface) zur Entwicklung von 3D-Computergrafik. Der OpenGL-Standard beschreibt etwa 250 Befehle, die die Darstellung komplexer 3D-Szenen in Echtzeit erlauben.'' --[[wde:OpenGL|Wikipedia]]
+
== Nächster Termin ==
  
== Hausaufgabe :) ==
+
Da einige Leute beim 2. Teil (Beleuchtung + Texturen) nicht dabeisein konnten, wird es Anfang Februar eine Wiederholung des 2. Workshops geben.
  
'''Beleuchtung und Texturen''' - das  "Haus" ([http://kyrah.net/scratch/opengl/src/06_3ddrawing.cpp 06_3ddrawing.cpp]), das wir im ersten Teil gezeichnet haben, beleuchten und texturieren.
+
Inhalt: Kurze Wiederholung der [http://kyrah.net/scratch/opengl/cg-intro-1.pdf Grundlagen vom 1. Teil], Beleuchtung, Texturen.
  
== Software ==
+
Wer Interesse hat, möge bitte im folgenden seine Terminpräferenzen kundtun :)
  
Zusätzlich zu OpenGL bitte installieren:
+
* Samstag, 2. Februar, 16:00 [[Benutzer:Kyrah|+]]
 +
* Sonntag, 3. Februar, 16:00 [[Benutzer:Kyrah|+]]
 +
* Samstag, 9. Februar, 16:00 [[Benutzer:Kyrah|+]]
 +
* Sonntag, 10. Februar, 16:00 [[Benutzer:Kyrah|+]]
  
* [http://www.libsdl.org/ SDL]
+
Eine weiterführende Fortsetzung (Teil 3) ist für Ende Februar/Anfang März geplant.  
* [http://www.libsdl.org/projects/SDL_image/ SDL_image]
 
  
 
== Unterlagen ==
 
== Unterlagen ==
  
=== Vortrag ===
+
=== Teil 1 ===
'''Präsentation:'''
 
  
* [http://kyrah.net/scratch/opengl/cg-intro-1.pdf Teil 1] (15.9.2007) – PDF, 1052kB
+
* [http://kyrah.net/scratch/opengl/cg-intro-1.pdf Folien 1. Teil] (15.9.2007) – PDF, 1052kB
* [http://kyrah.net/scratch/opengl/cg-intro-2.pdf Teil 2] (29.9.2007) - PDF, 1452kB
 
  
'''Code-Beispiele 1. Teil:'''
+
''Beispiel-Code''
 
# [http://kyrah.net/scratch/opengl/src/Makefile Makefile] – Achtung, muss für euer System angepasst werden:
 
# [http://kyrah.net/scratch/opengl/src/Makefile Makefile] – Achtung, muss für euer System angepasst werden:
 
## Mac OS X mit SDL als framwork: <code>CFLAGS =  SDLMain.m</code> und <code>LIBS = -framework SDL -framework Cocoa -framework OpenGL</code>
 
## Mac OS X mit SDL als framwork: <code>CFLAGS =  SDLMain.m</code> und <code>LIBS = -framework SDL -framework Cocoa -framework OpenGL</code>
Zeile 39: Zeile 38:
 
# [http://kyrah.net/scratch/opengl/src/06_3ddrawing.cpp 06_3ddrawing.cpp] 3D-Aufgabe "Haus"
 
# [http://kyrah.net/scratch/opengl/src/06_3ddrawing.cpp 06_3ddrawing.cpp] 3D-Aufgabe "Haus"
  
'''Code-Beispiele 2. Teil:'''
+
=== Teil 2 ===
 +
* [http://kyrah.net/scratch/opengl/cg-intro-2.pdf Folien 2. Teil] (29.9.2007) - PDF, 1452kB
 +
 
 +
''Beispiel-Code''
 
# Beleuchtung
 
# Beleuchtung
 
## [http://kyrah.net/scratch/opengl/src/07-firstlight.cpp 07-firstlight.cpp] einfache Lichtquelle
 
## [http://kyrah.net/scratch/opengl/src/07-firstlight.cpp 07-firstlight.cpp] einfache Lichtquelle
Zeile 66: Zeile 68:
 
// -->
 
// -->
  
'''Nate Robins' Tutorials'''
 
  
Die von mir gezeigten Demos zu Projektion, Transformationen, &c. könnt ihr von von [http://www.xmission.com/~nate/tutors.html Nate Robins' Website] herunterladen.
 
  
=== Übungsaufgaben ===
+
== Misc. ==
* [[Media:Solar_final2.cpp.txt|solar_final2.cpp.txt]] Sonnensystem
 
* [[Media:Solar_final3.cpp.txt|solar_final3.cpp.txt]] Sonnensystem mit Kamera auf Planet
 
 
 
=== Anderes ===
 
  
 +
* '''Nate Robins' Tutorials:''' Die von mir gezeigten Demos zu Projektion, Transformationen, &c. könnt ihr von von [http://www.xmission.com/~nate/tutors.html Nate Robins' Website] herunterladen.
 +
* [[Media:Solar_final2.cpp.txt|solar_final2.cpp.txt]] Musterlösung Sonnensystem
 +
* [[Media:Solar_final3.cpp.txt|solar_final3.cpp.txt]] Musterlösung Sonnensystem mit Kamera auf Planet
 
* [[Media:SharpGL House.zip|SharpGL House]] 3D-Aufgabe "Haus" ([http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx Visual Studio 2008]; [http://www.dopecode.co.uk/sharpgl/index.php SharpGL]) – ''(contributed by MovGP0)''
 
* [[Media:SharpGL House.zip|SharpGL House]] 3D-Aufgabe "Haus" ([http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx Visual Studio 2008]; [http://www.dopecode.co.uk/sharpgl/index.php SharpGL]) – ''(contributed by MovGP0)''
 
* [http://www.opengl.org/resources/faq/technical/projection_abuse.php Help stamp out GL_PROJECTION abuse]; mehr zum thema GL_PROJECTION / gluLookAt
 
* [http://www.opengl.org/resources/faq/technical/projection_abuse.php Help stamp out GL_PROJECTION abuse]; mehr zum thema GL_PROJECTION / gluLookAt
 
* http://www.glprogramming.com/red/ - sehr praktischer guide
 
* http://www.glprogramming.com/red/ - sehr praktischer guide
  
== Ich war bei den ersten beiden Terminen nicht da, kann ich trotzdem noch einsteigen? ==
 
 
Ja, klar!
 
 
Was wir bisher gemacht haben, siehst du in den Folien und den dazugehörigen Code-Beispielen (siehe oben), bei Fragen dazu einfach mit [[Benutzer:Kyrah|mir]] Kontakt aufnehmen.
 
 
== Past ==
 
 
=== Erster Termin (Grundlagen) ===
 
 
==== Inhalt ====
 
Grundlegende Einführungsveranstaltung, Dauer ca. 2.5 - 3 Stunden. Der Workshop ist praktisch orientiert, C-Kenntnisse sind also sehr von Vorteil. Vorkenntnisse aus CG sind nicht nötig.
 
 
==== Termin ====
 
 
* Wann: Samstag, '''September 15''' 2007, 15:00
 
* Wo: Metalab, [[Lage|Rathausstrasse 6]], 1010 Vienna
 
 
==== Hausaufgabe  ;) ====
 
 
Sonnensystem (Sonne, mind. 3 Planeten, mind. einer davon mit Mond...)
 
 
Hinweis: eine Kugel kann man z.B. wie folgt zeichnen:
 
 
<pre>
 
void drawSphere(float radius, GLint slices=20, GLint stacks=20)
 
{
 
  GLUquadricObj* q = gluNewQuadric();
 
  gluQuadricDrawStyle (q, GLU_FILL);
 
  gluQuadricNormals  (q, GLU_SMOOTH);
 
  gluSphere (q, radius, slices, stacks);
 
  gluDeleteQuadric(q);
 
}
 
</pre>
 
 
=== Zweiter Termin (Fortsetzung) ===
 
 
==== Inhalt ====
 
* Beleuchtung
 
* Texturierung
 
* Timer-basierte Animation, Fullscreen-Mode,...
 
 
==== Inhalt ====
 
* Wann: Samstag, '''29. September''' 2007, 16:00
 
* Wo: Metalab, [[Lage|Rathausstrasse 6]], 1010 Vienna
 
  
 
[[Kategorie:Workshops]]
 
[[Kategorie:Workshops]]

Version vom 21. Januar 2008, 15:43 Uhr

OpenGL (Open Graphics Library) ist eine Spezifikation für ein plattform- und programmiersprachenunabhängiges API (Application Programming Interface) zur Entwicklung von 3D-Computergrafik. Der OpenGL-Standard beschreibt etwa 250 Befehle, die die Darstellung komplexer 3D-Szenen in Echtzeit erlauben. --Wikipedia

Nächster Termin

Da einige Leute beim 2. Teil (Beleuchtung + Texturen) nicht dabeisein konnten, wird es Anfang Februar eine Wiederholung des 2. Workshops geben.

Inhalt: Kurze Wiederholung der Grundlagen vom 1. Teil, Beleuchtung, Texturen.

Wer Interesse hat, möge bitte im folgenden seine Terminpräferenzen kundtun :)

  • Samstag, 2. Februar, 16:00 +
  • Sonntag, 3. Februar, 16:00 +
  • Samstag, 9. Februar, 16:00 +
  • Sonntag, 10. Februar, 16:00 +

Eine weiterführende Fortsetzung (Teil 3) ist für Ende Februar/Anfang März geplant.

Unterlagen

Teil 1

Beispiel-Code

  1. Makefile – Achtung, muss für euer System angepasst werden:
    1. Mac OS X mit SDL als framwork: CFLAGS = SDLMain.m und LIBS = -framework SDL -framework Cocoa -framework OpenGL
    2. Unix (inkl. Mac OS X mit SDL als .dylib): CFLAGS = `sdl-config --cflags` und LIBS = `sdl-config --libs` -lGL -lGLU
  2. 01_basicsdl.cpp SDL "Rahmen-Applikation"
  3. 02_triangle.cpp weißes Dreieck auf schwarzem Hintergrund
  4. Perspektive
    1. 03_proj_ortho.cpp orthographische Projektion
    2. 03_proj_persp.cpp perspektivische Projektion
  5. 3 Varianten, ein Dreieck zu verschieben:
    1. 04_transtri1.cpp Vertices modifizieren
    2. 04_transtri2.cpp glTranslatef()
    3. 04_transtri3.cpp Kamera-Position verändern
  6. 05_tricolor.cpp Dreieck in Farbe
  7. 06_3ddrawing.cpp 3D-Aufgabe "Haus"

Teil 2

Beispiel-Code

  1. Beleuchtung
    1. 07-firstlight.cpp einfache Lichtquelle
    2. 07-materialcolour.cpp Materialfarben
    3. 07-components.cpp Materialkomponenten (ambient/diffuse/specular)
    4. 07-lightcolour.cpp Lichtfarben
    5. 07-movinglight.cpp bewegte Lichtquelle
    6. 07-house.cpp das Haus aus der Aufgabe vom letzten Mal mit Beleuchtung
  2. Needful Things
    1. 08-movinglight-keyrepeat.cpp verbesserte Tastatureingabe
    2. 08-timer.cpp Animation mit Timer
    3. 08-timer-waitevent.cpp Animation mit Timer und SDL_WaitEvent()
    4. 08-notimer-waitevent.cpp Animation OHNE Timer und SDL_WaitEvent()
  3. Texturen
    1. 09-texturing.cpp Image.h Image.cpp Makefile crate.tga komplettes Beispiel zur Texturierung
    2. 09-texturing-abstracted.cpp Texture.h Texture.cpp Makefile-abstracted ditto, mit Klasse Texture



Misc.