|
|
 |
|
Programmierpraktikum "Entwicklung einer 3D-Grafikengine" |
Univ.-Prof. Dr. Bernd Radig
Heiko Gottschling
Achtung: bitte benutzen Sie für den Kontakt mit den Praktikumsbetreuern
ausschliesslich die folgende eMail-Adresse:
sharp3d@in.tum.de und fügen
Sie dem Betreff der Nachricht den Präfix [SHARP3D] hinzu.
Quick Info
| Thema |
Entwicklung einer einfachen 3D-Rendering Engine (Stichworte: Polygone,
Szenengraph, Beleuchtungsmodelle)
|
| Programmiersprache |
C# |
| Ziele |
Programmiererfahrung in C#, Einführung in Computergrafik und
3D-Modellierung
|
| Voraussetzungen |
solide (!) Grundkenntnisse in Java, C++ oder C#, gute Kenntnisse in analytischer Geometrie |
| Teilnehmerzahl |
12 |
| Ablauf |
selbständige Bearbeitung in Zweiergruppen unter der Woche, wöchentliche Treffen zur
Präsentation
|
| Vorbesprechung |
dieses Semester keine Vorbesprechung! Das Praktikum beginnt mit dem ersten Präsentationstermin am Di, 26. Oktober 2004
|
| Wöchentliches Treffen |
Di, 10:15h - 11:00h und Di, 11:00h bis 11:45h |
Gallery (Abschlussprojekte)
|
|
Heiko Gottschling
Donut (komische Wurst), 2004
Torus-Objekt mit Phong-Shading, Textur
Vergrößern |
Video (DivX)
|
|
Heiko Gottschling
3D Function, 2004
Funktion mit Phong-Shading, Alpha-Blending
Vergrößern |
Video (DivX)
|
|
|
|
Suat Gedikli
Spotlight, 2004
gerichtete Lichtquelle
Vergrößern|
Video (DivX)
|
|
Suat Gedikli
Pointlight, SS 2004
punktförmige Lichtquelle
Vergrößern |
Video (DivX) |
|
|
|
Peter Pichlmaier, Thomas Endres
Borgattacke auf Ufo, SS 2004
variable Lichtquelle, Texturübergang mittels Alphablendig
Vergrößern |
Video, mit Sound! (DivX)
|
|
Tayfur Coskun, Matous Sedlacek
Sharp3D Earth, SS 2004
Textur, Gouraud-Shading
Vergrößern |
Video (DivX)
|
|
|
|
Andreas Breitschopp, Magnus Eberle
Transparente Figur, SS 2004
Rendering einer texturierten Figur mit Alphachannel
Vergrößern |
Video (DivX)
|
|
Thomas Auckenthaler, Samuel Kerschbaumer
Tropfen im Bergsee, SS 2004
Animierte 3D-Funktion mit Textur
Vergrößern |
Video (DivX)
|
|
|
|
Christian Mendl, Walter Werner
Erwachtes Stilleben, SS 2004
Rotationskörper mit Texturen
Vergrößern |
Video (DivX)
|
|
Daniel Dube, Anton Roth, Christian Schmidts
Playground, SS 2004
alles Mögliche
Vergrößern |
Video (DivX)
|
|
|
|
Christian Mendl, Walter Werner
Asteroid, SS 2004
Bumpmapping, Pixelshader
Vergrößern |
Video (DivX)
|
|
Markus Dangl, Christian Grewing
Fairy Tree, SS 2004
Baum mit Trance-Soundtrack
Vergrößern |
Video (XVid)
|
|
|
|
Daniel Dube, Anton Roth, Christian Schmidts
The Search, SS 2004
dynamische Bitmaps (Feuer), Schatten, 3D Figur
Vergrößern |
Video (DivX)
|
|
Michal Daszkiewicz, Jan Hauffa, Robert Isele
Miscatonic Valley, WS 2004/05
Partikeleffekte, Kamerafahrt entlang einer Spline-Kurve, 3D-Landschaft aus
einer Height Map
Vergrößern |
Video (DivX)
|
|
|
|
Annemarie Moerwald, Peter Voringer
Soccer-playing Mech, WS 2004/05
Geparstes VRML-Model mit zusätzlicher Laufbewegung
Vergrößern |
Video (DivX)
|
|
|
Thema
3D-Grafik ist ein wichtiges Werkzeug zur Visualisierung im Computerbereich
(z.B. computerunterstützte Medizin). Durch immer leistungsfähigere
Hardware hat sie im letzten Jahrzehnt auch im Heimanwenderbereich Einzug
gehalten (insbesondere bei Computerspielen).
Das Praktikum beschäftigt sich mit den Grundlagen der heute hauptsächlich
verwendeten Technik für interaktive 3D-Grafik, der schnellen Erzeugung
von Bildern aus polygonbasierten Oberflächenmodellen der darzustellenden
3D-Objekte. Dabei wird die Oberfläche der Objekte in viele kleine Polygone
(meistens Dreiecke) unterteilt, die sich unter Berücksichtigung
der aktuellen Betrachterposition und Beleuchtungsverhältnisse effizient
rendern lassen. Dieses Verfahren wird beispielsweise von Grafikbibliotheken
wie OpenGL und dem proprietären
Direct3D eines namhaften Herstellers eingesetzt.
Achtung: In diesem Praktikum geht es nicht
um die Verwendung bestehender Grafikbibliotheken wie OpenGL oder Direct3D, sondern
um die Implementierung der dahinterstehenden Algorithmen!
Bei der Implementierung soll die noch relativ junge Programmiersprache C# zum
Einsatz kommen. Die Sprache hat starke Ähnlichkeit sowohl mit C++ als auch
mit Java, d.h. Programmierer beider Sprachen sollten sich relativ schnell in
C# zurechtfinden.
Obwohl plattformunabhängig geplant, gibt es bislang leider
nur eine Plattform, auf der C# ohne Probleme verwendet werden kann:
Microsoft Windows.
Diese Plattform wird auch im Praktikum zum Einsatz kommen.
Inhalte
- RGB-Farbdarstellung, Organisation des Grafikspeichers
- Algorithmen zur Line-Scan-Conversion
- 2D Clipping (Cohen-Sutherland-Algorithmus)
- Polygon-Clipping (Sutherland-Hodgman Algorithmus)
- Polygon-Scan-Conversion
- 3D Transformationen (Translation, Skalierung, Rotation)
- Koordinatentransformation
- Rendering-Pipeline
- Dreiecksrepräsentation von Oberflächen
- Konstruktion von einfachen 3D-Körpern (Zylinder, Würfel, Kugel)
- Wireframe-Darstellung von Objekten
- Perspektivansicht
- 3D Clipping
- Backface-Culling
- View-Transformation durch Mausbewegung
- Beleuchtungsmodelle (ambient, diffuse, specular reflection)
- Flat-Shading von Polygonen
- Gouraud-Shading von Polygonen
- Alpha-Blending
- Texture-Mapping
- Erstellung von Rotationskörpern
Voraussetzungen/Vorkenntnisse
Aufgrund des (relativ ;-)) anspruchsvollen Themengebietes
(3D-Grafik) werden für das Praktikum solide Grundkenntnisse in mindestens
einer der folgenden Programmiersprachen vorausgesetzt: Java, C++ oder C#.
Wir bitten daher nur engagierte Studenten um Anmeldung!
Desweiteren sind gute Kenntnisse in analytischer (3D) Geometrie erforderlich.
Testen Sie sich selbst! Sie sollten die folgenden Fragen beantworten können:
- Wie berechnet sich der Winkel zwischen zwei gegebenen Vektoren?
- Wie berechnet man das Produkt einer Matrix mit einem Vektor?
- Gegeben sind zwei 3D-Vektoren, v1 und v2. Wie berechnet man einen Vektor,
der auf den beiden anderen senkrecht steht?
Anmeldung
Sie können sich bis zum 16. Juli 2004 durch eine Mail an
sharp3d@in.tum.de
direkt zum Praktikum anmelden. Die Vergabe der restlichen Praktikumsplätze
erfolgt danach über das zentrale Anmeldeverfahren
vom 20. bis 23. Juli 2004. Nähere Informationen finden Sie
hier.
Vorbesprechung
Dieses Semster keine Vorbesprechung!
Ablauf
Die Aufgaben sind jeweils während einer Woche in Zweiergruppen
selbständig zu bearbeiten. Es besteht die Möglichkeit
zur Bearbeitung in unserem Praktikumsraum, Bearbeitung zu Hause oder auf dem
eigenen Laptop (sofern vorhanden ;-)) ist ebenfalls möglich.
Die bearbeiteten Aufgaben werden einmal pro Woche den Betreuern vorgestellt
(Termine s.u.). Die Anwesenheit aller Gruppenmitglieder bei allen dieser
Präsentationstermine ist Pflicht.
Termine
Folgende Termine stehen für die Präsentationen zur Auswahl:
| Dienstag |
10:15h - 11:00h |
| Dienstag |
11:00h - 11:45h |
Skript
|
|
Zum Praktikum existiert ein Skript, in dem die Grundlagen der 3D-Darstellung
und die verwendeten Algorithmen erklärt werden.
Skript (PDF), Version vom
08.11.2004
Achtung: Das Skript befindet sich derzeit im Alpha-Stadium und somit im
kontinuierlichen Fluss.
|
Aufgabenblätter
Links zum Thema
| Link |
Microsoft DirectX 9.0b Runtime |
| Link |
TU Maniac Server (Microsoft Software für Studenten) |
| Link |
C# Coding Conventions |
| Link |
C# Tutorial |
| Link |
MSDN .NET (Online-Documentation) |
| Link |
Sharp Develop (freie C# Entwicklungsumgebung) |
| Link |
Borland C# Builder |
| Link |
"C# von Eric Gunnerson", Online-C# Buch |
| Link |
Programming C#, 2nd Edition (C# Buch) |
| Link |
Perspective Correct Interpolation [PDF] |
|