MMCG-UE: Catmull-Clark-Subdivision-Surfaces

Leopold Kühschelm & Sebastian Zambal & Daniel Wagner

Hier wollen wir euch einige Ergebnisse unser Arbeit mit Catmull-Clark-Subdivision-Surfaces präsentieren.

Source & Dokumentation

Das Programm benötigt VTK 4.x, Qt 3.x.

Download

Documentation (doxygen)

Aufgabe & Lösung

Aufgabe war es eine VTK-Klasse zu schreiben die einen SubdivisionFilter, der nach der Methode von Catmull-Clark arbeitet, zur Verfügung stellt. Eine Beschreibung wie diese Methode funktioniert ist in [1] zu finden.

Um die Klasse auch Testen zu können haben wir ein kleines GUI entworfen das mit dem schon vorhandenen 3DS-Importer Meshes laden kann und dann verschiedene Subdivisions durchführt und das Ergebnis anzeigt. Wichtig ist, das man vor der Subdivision den Mesh-Typ richtig setzt (Triangle oder Quads) da sonst das Subdividing nicht gut funktioniert.

Wir haben uns bei der Implementierung der in [1] vorgestellten Methode auf die eigentliche Subdivision beschränkt. Umgesetzt haben wir die Methode realtiv staigt-forward. Zur Vermeidung der Verdopplung von Vertizes bzw. deren doppelete Berechung verwenden wir einige interne Datenstrukturen. Details dazu sind dem Source der vtkCatmullClarkFilter Klasse zu entnehmen.

GUI Manual

Das GUI ist sehr einfach und intuitiv gestaltet. Zuerst lädt man ein Mesh (im 3DS-Format) durch drücken des obersten Buttons. Dann wählt man den Meshtyp aus (Triangle oder Quads). Bevor man jetzt auf Subdivide klickt stellt man noch ein wieviele Subdivisions durchgeführt werden sollen bzw. mit welcher Methode und los gehts. Falls ein Bild besonders gut gefällt kann man es auch noch speichern.

Wichtig ist, das man druch Linksklick auf das Objekt mit der Maus und gleichzeitiges ziehen mit der Maus, das Objekt drehen kann um es so zB auch von hinten oder oben betrachten zu können.

Bilder: Box
box-3.png
Linear Filter
box-1.png
Catmull-Clark-Filter, 1 Subdivisions
box-2.png
Catmull-Clark-Filter, 2 Subdivisions
box-3.png
Catmull-Clark-Filter, 3 Subdivisions
Bilder: Hose
hose-0.png
Linear Filter
hose-1.png
Catmull-Clark-Filter, 1 Subdivision
hose-2.png
Catmull-Clark-Filter, 2 Subdivisions
hose-3.png
Catmull-Clark-Filter, 3 Subdivisions
Bilder: Torus
torus-0.png
Linear Filter
torus-1.png
Catmull-Clark-Filter, 1 Subdivision
torus-2.png
Catmull-Clark-Filter, 2 Subdivisions
torus-3.png
Catmull-Clark-Filter, 3 Subdivisions
torus-4.png
Catmull-Clark-Filter, 4 Subdivisions

Bilder: Meteorit
meteorit-3.png
Linear Filter
meteorit-1.png
Catmull-Clark-Filter, 1 Subdivisions
meteorit-2.png
Catmull-Clark-Filter, 2 Subdivisions
meteorit-3.png
Catmull-Clark-Filter, 3 Subdivisions
References

[1] Tony DeRose, Michael Kass, Tien Truong. Subdivision Surfaces in Charater Animation