Homepage Personen Lehre Projekte Publikationen Infos Sitemap
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

Blatt 1 als PS (184 KB) oder PDF (66 KB) blatt1.zip
Blatt 2 als PS (203 KB) oder PDF (49 KB)
Blatt 3 als PS (133 KB) oder PDF (43 KB)
Blatt 4 als PS (185 KB) oder PDF (60 KB) blatt4.zip
Blatt 5 als PS (389 KB) oder PDF (65 KB)
Blatt 6 als PS (157 KB) oder PDF (53 KB) Achtung: Die Bearbeitungszeit für Blatt 6 beträgt 2 Wochen!
Blatt 7 als PS (231 KB) oder PDF (91 KB) blatt7.zip
Blatt 8 als PS (836 KB) oder PDF (86 KB) Achtung: Nächster Praktikumstermin: 11. bzw. 12. Januar 2005!
Blatt 9 als PS (1473 KB) oder PDF (82 KB)
Blatt 10 als PS (2204 KB) oder PDF (103 KB)
Blatt 11 als PS (3059 KB) oder PDF (101 KB)
Blatt 12 als PS (122 KB) oder PDF (38 KB)

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]
Homepage Personen Lehre Projekte Publikationen Infos Sitemap

Last modified 2005/03/16 by Heiko Gottschling