CGSG/Workshop: Unterschied zwischen den Versionen
Kyrah (Diskussion | Beiträge) (→Aktuelles: Termin 2. Workshop) |
Kyrah (Diskussion | Beiträge) |
||
Zeile 39: | Zeile 39: | ||
=== Teil 2: Beleuchtung === | === Teil 2: Beleuchtung === | ||
+ | * WH Grundlagen - Beispiel Sonnensystem durchbesprechen | ||
* Beleuchtungsmodelle | * Beleuchtungsmodelle | ||
* Flat Shading vs. Gouraud Shading | * Flat Shading vs. Gouraud Shading |
Version vom 14. März 2010, 17:06 Uhr
Einführung in Echtzeit-3D-Computergraphik mit OpenGL von كرا
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
Aktuelles
Der zweite Teil des Workshops findet am 24.4.2010 um 16:00 statt.
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.
Bitte dafür vor dem Workshop libSDL auf euren Rechnern installieren. (Binaries sind verfügbar für Linux, Mac OS X und Windows, SourceCode ebenfalls.)
Beispielcode ist in C und Python verfügbar. (Bitte entsprechend einen funktionierenden C-Compiler wie gcc
oder eine entsprechende Python Installation einrichten.)
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. Grundrechnungsarten, Modulo Division (Division mit Rest), Skalar, Vektor, Matrix (nicht diese Matrix), Lineare Algebra (Don't Panic!)
Inhalt
Teil 1: Basics
Der erste Teil behandelt folgende Inhalte (alles anhand von Beispiel-Programmen erklärt):
- Basics: SDL + OpenGL
- Die Rendering-Pipeline
- Parallelprojektion und perspektivische Projektion
- Koordinatensysteme und 3D Transformationen
- Verarbeitung von Tastatureingaben
- einfaches Zeichnen in 3D
Teil 2: Beleuchtung
- WH Grundlagen - Beispiel Sonnensystem durchbesprechen
- Beleuchtungsmodelle
- Flat Shading vs. Gouraud Shading
- Materialeigenschaften in OpenGL
- Lichtquellen in OpenGL (Arten, Farbangaben)
- Bedeutung korrekter Normalvektoren
Teil 3
- Animation
- Texturen
Unterlagen
Teil 1
- Slides 1. Teil (13.2.2010) – PDF, 1324kB
Die aktuelle Version der Sample Codes kannst Du auch per Subversion auschecken.
svn co https://whatever.metalab.at/user/kyrah/opengl/workshops/ws1/
(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
- Makefile Achtung, muss für euer System angepasst werden:
- Mac OS X mit SDL als framwork:
CFLAGS = SDLMain.m
undLIBS = -framework SDL -framework Cocoa -framework OpenGL
- Unix (inkl. Mac OS X mit SDL als .dylib):
CFLAGS = `sdl-config --cflags`
undLIBS = `sdl-config --libs` -lGL -lGLU
- Mac OS X mit SDL als framwork:
- basicsdl.cpp SDL "Rahmen-Applikation"
- triangle.cpp weißes Dreieck auf schwarzem Hintergrund
- Perspektive:
- proj_ortho.cpp orthographische Projektion
- proj_persp.cpp perspektivische Projektion
- 3 Varianten, ein Dreieck zu verschieben:
- transtri1.cpp Vertices modifizieren
- transtri2.cpp glTranslatef()
- transtri3.cpp Kamera-Position verändern
- tricolor.cpp Dreieck in Farbe
- 3ddrawing.cpp 3D-Aufgabe "Haus"
Weiterführende Literatur, Tutorials, etc.
- OpenGL Redbook - *das* Buch zu OpenGL ("OpenGL Programming Guide")
- Nate Robins' Tutorials - Demos zu Projektion, Transformationen, etc. (sehr zu empfehlen!)
Interessenten
- michael
- geo
- Pepi
- georg k.
- alpi
- Olaf
- jürgen
- cypher
- tkolar
- Phantasus
- oib
- skrach
- queltos
- ra
- amir
- Bountin
- steffi
- ylem235
- Sekhmet
- xcode
- snaut
- Damian
- Woodson
- Vandebina
- mephinet
- Isis
- RavuAlHemio
- kay
- Jüfe
- Martin
- phaebz
- Beni
- moep
- leopold
- mzeltner
- ogott
- nex
- your name here
Archiv
Push teh pixels!!