Subdivision Surfaces (SDS)
-
Idee: mehrfache weiche Unterteilung eines Polygonnetzes nach einem immer
gleichen Schema
-
Demo mit Cinema 4D und Maya
-
große Freiheit beim Editieren; alle Editiermöglichkeiten von
Polygonnetzen
-
Einstellen der Unterteilungsanzahl zum Editieren und zum Rendern
-
Beispiel für Arbeitsweise: Fotos
von Kopf in Frontalansicht und Seitenansicht als Hintergrund der 3D-Fenster
-
Creases (Falten) an Kanten und/oder Punkten
-
hierarchische Bearbeitung (Maya)
-
Zoo an
Unterteilungsverfahren. Demo mit Amapi.
Klassiker:
-
Doo-Sabin
-
Catmull-Clark: nach erster Unterteilung automatisch Vierecksnetz
-
Loop: Dreiecksnetz
-
Butterfly: Dreiecksnetz, interpolierend statt approximierend
-
"N-Patches" = Curved
PN Triangles = ATI "TruForm"
-
Demo mit DirectX
-
in DirectX Teil der "Higher Order Primitives" (Nvidia bietet dort stattdessen
Spline-Flächen = "RT-Patches")
-
fast so etwas wie Subdivision Surfaces
-
Normalen benutzt, aber nicht die Vertizes der benachbarten Dreiecke
-
minimale Änderungen für Grafikprogrammierung
-
aber lieber nicht im Editor verwenden (Normalenvektoren editieren?!)
-
Prinzip der Unterteilung
-
Verfahren von De Casteljau für Bézier-Kurven: Starte mit den
vier Steuerpunkten einer Bézier-Kurve. Schreibe die vordere und
die hintere Hälfte diese Kurve für sich als Bézier-Kurven.
Deren Steuerpunkte (nun sieben, von denen einer doppelt genutzt wird) entstehen
durch simples mehrfaches Halbieren (siehe Abbildung). Iteriere das Verfahren:
Die ursprüngliche Kurve wird dargestellt durch vier, acht, ... Bézier-Kurven.
Dabei nähert sich das durch die Steuerpunkte laufende Polygon immer
mehr der ursprünglichen Kurve an. Durch den Algorithmus, der sagt,
wie man aus einer Kurve zwei Hälften macht, hat man also ein Unterteilungsverfahren
gefunden, wie sich Bézier-Kurven bestimmen lassen. (Und das kommt
ohne Potenzrechnung aus!)
-
Dieses Vorgehensweise lässt sich auf Spline-Flächen übertragen.
Die klassischen SDS-Algorithmen stammen daher.
-
Aber Problem bei Flächen: Topologie. Man startet nicht unbedingt mit
einem regelmäßig geknüpften Netz. Vielleicht sind Dreiecke
und Vierecke gemischt. Oder in einem Dreiecksnetz haben nicht alle Vertizes
sechs Nachbarn, in einem Vierecksnetz nicht alle Vertizes vier Nachbarn.
Solche Vertizes sind "außergewöhnlich" (extraordinary vertices).
Für sie braucht man raffinierte Sonderregelungen, damit der SDS dort
keinen Knick erhält.
-
SDS im Detail (siehe Abbildung) am Beispiel von Catmull-Clark (anno 1978,
dennoch das Verfahren in aktueller 3D-Software)
-
Erzeuge neue Vertizes auf den Mitten jeder alten Fläche (Position
= Mittelwert der Vertizes der Fläche).
-
Erzeuge neue Vertizes (etwa) auf den Mitten jeder alten Kante (Position
= Mittelwert der beiden alten Vertizes der Kante und der beiden neuen Flächenmitten-Vertizes
auf den beiden Seiten der Kante).
-
Verschiebe die alten Vertizes auf neue Stellen (1-(3/n))a + 4b/n - c/n,
wobei
a die alte Position ist,
b der Mittelwert (nicht die Summe!) der neuen Punkte bei den
alten Kantenmitten ringsherum ist,
c der Mittelwert (nicht die Summe!) der neuen Punkte auf den
alten Flächenmitten ringsherum ist,
und n die Zahl der Kanten ist, die aus dem Vertex herauslaufen (gleiche
Zahl nachher wie vorher).