CatmullClark
UE Mathematische Methoden der Computergraphik SS 2003
Doris Mühlgassner (0125415), Alexander Zapletal (9725910)
Verwendetes Paper: "Behavior of recursive division surfaces near extraordinary points" von D.Doo und M.Sabin
Inhaltsverzeichnis:
Problemstellung
Erstellte Klasse und Programme
Lösungsweg
GUI
Ergebnisbilder
Doxygen-Source-Dokumentation
Problemstellung:
Gegeben ist ein Vierecksnetz eines Körpers im Raum. Auf dieses soll nun das Subdivision-Verfahren nach Catmull-Clark angewendet werden. Dabei wird das Verhalten an "außergewöhnlichen" Punkten (das sind jene mit Valenz ungleich 4) betrachtet.
Durch eine Modifizierung des Catmull-Clark-Schemas soll das Aussehen des erzeugten Meshes an diesen speziellen Punkten verbessert werden.
Erstellte Klasse und Programme:
- CMesh: Diese Klasse implementiert den Catmull-Clark Subdivision-Algorithmus.
- CatmullClark: Diese Konsolen-Programm verwendet die Klasse CMesh und kann mittels Kommandozeilenparameter gesteuert werden.
- CatmullClarkUI: Diese Applikation dient zur praktischen Benutzung und Präsentation. Es können hier alle notwendigen Parameter eingestellt werden und auf Knopfdruck an das eigentliche Renderprogramm CatmullClark übergeben werden.
Lösungsweg:
Struktur der Mesh-Dateien:
Die verwendeten Mesh-Dateien haben folgendes Format:
Anzahl der Vertices
Anzahl der Kanten
Anzahl der Flächen
Liste der Vertices
Liste der Kanten
Liste der Flächen
Eine Kante ist ein Tupel aus den beiden IDs der inzidenten Knoten und der beiden IDs der angrenzenden Flächen.
Eine Fläche ist ein Tupel aus den 4 IDs der Ecken, die diese Fläche begrenzen.
Algorithmus:
Der Algorithmus läuft nun alle Flächen durch, und berechnet anhand deren Ecken, Kanten und der entsprechenden Catmull-Clark-Masken die Ecken des neuen Meshes. Zusätzlich werden auch die Adjazenz- und Inzidenz-Informationen entsprechend erzeugt.
Außergewöhnliche Punkte:
Bei den von uns verwendeten Meshes ist an den außergewöhnlichen Punkten keine Veränderung erkennbar. So wie auch im Paper beschrieben, müßte man wohl noch weitere Verbesserungen bei der Berechnung und Gewichtung der Punkte beim Erstellen der Subdivision durchführen.
GUI:

- Dateiname: Gibt die Meshdatei an, auf die der Catmull-Clark-Algorithmus angewendet werden soll.
- Durchsuchen: Ermöglicht das Bestimmen des Dateinamen mittels eines Dateibrowser-Fensters.
- Anzahl der Subdivision-Schritte: Gibt an, wieviele Subdivision-Schritte durchgeführt werden sollen. Ist dieser Wert 0, wird nur das Ausgangsmesh dargestellt.
- Ausgangsmesh rendern: Gibt an, ob das Ausgangsmesh auch angezeigt werden soll (in weißer Farbe).
- Art der VertexPoint-Berechnung: Normal...Standardberechnung der Vertex-Points nach Catmull-Clark. Zusammengangs gewichtet...Verbesserte Berechnung der Vertex-Points (siehe Paper).
- Render: Startet das Renderprogramm CatmullClark mit den angegebenen Parametern.
- Info: Ein About-Fenster wird angezeigt.
- Beenden: Das Programm wird beendet.
Ergbenisbilder:
In weiß ist jeweils das Ausgangs-Mesh dargestellt, in rot das durch Subdivision entstandene Mesh.
Ebenes Quadrat mit Diagonalen:
Ausgangs-Mesh:

1 Subdivision-Schritt:

2 Subdivision-Schritte:

Würfel:
Ausgangs-Mesh:

1 Subdivision-Schritt:

2 Subdivision-Schritte:

3 Subdivision-Schritte:

Würfel mit aufgesetztem Pyramidenstumpf:
Ausgangs-Mesh:

1 Subdivision-Schritt:

2 Subdivision-Schritte:

3 Subdivision-Schritte:

4 Würfel:
Ausgangs-Mesh:

2 Subdivision-Schritte:

3 Subdivision-Schritte:

8 kreisförmig aneinandergereihte Würfel:
Ausgangs-Mesh:

1 Subdivision-Schritt:

3 Subdivision-Schritte:

Pyramide:
Ausgangs-Mesh:

1 Subdivision-Schritt:

3 Subdivision-Schritte:
