Die Grundidee der Subdivision Surfaces ist es eine Fläche aus einem beliebigen Polyeder (dem Kontrollmesh) zu konstruieren, indem jede der Flächen wiederholt unterteilt wird. Wenn die Unterteilung entsprechend durchgeführt wird, ist die Grenze dieses Unterteilungsprozesses eine glatte Oberfläche. Viele Subdivision-Schemata wurden im Laufe der Zeit entwickelt (Loop, Doo-Sabin etc.), aber das Catmull-Clark-Schema gilt bis heute zu den beliebtesten.

core animation dritter teil e

Warum bevorzugen Modellierer Subdivision Surfaces gegenüber NURBS?

Eine NURBS-Oberfläche ist, wie jede andere parametrische Oberfläche, darauf beschränkt, Oberflächen darzustellen, die topologisch gleichwertig zu einer Tabellen, einem Zylinder oder einen Torus sind. Da das Kontrollmesh rechteckig ist, wirkt sich die Verfeinerung eines NURBS auf die gesamte Oberfläche aus. Im Gegensatz dazu können Subdivision Surfaces lokal verfeinert werden, indem Punkte zum Kontrollmesh hinzugefügt werden, was dem Modellierer mehr Freiheit gibt. Daher ist die Unterstützung für dieses Primitiv heute in allen High-End-Renderern allgegenwärtig.

Catmull-Clark-Schema.

Diese Subdivision erzeugt drei Arten von Nodes:

  • Face-Vertex. Für jedes Gesicht ist der neue Node der Durchschnitt der Eckpunkte des Gesichts.
  • Edge-Vertex. Für jede Kante ist der neue Node der Mittelwert aus den Endpunkten der Kante und den neuen Flächenecken der beiden Flächen, die sich die Kante teilen.
  • Kontroll-Vertex. Für jeden Control-Node des Meshes wird der Node an eine neue Position verschoben, die (n-2)/n mal der alten Nodeposition entspricht, plus 1/n mal dem Durchschnitt der n benachbarten neuen Kantenvertexpositionen, plus 1/n mal dem Durchschnitt der n benachbarten neuen Flächenvertexpositionen, wobei n die Wertigkeit des ersten Node ist.

Für jede Fläche werden neue Flächen erzeugt, indem diese neuen Nodes wie folgt verbunden werden: Jeder neue Flächennode wird mit den neuen Kantennode der Flächenbegrenzung verbunden. Jeder neue Control Vertex wird mit den neuen Kanten-Node verbunden, die für die mit dem alten Control Vertex einfallenden Kanten erzeugt wurden.

Diese Regeln gelten nur für geschlossene Meshes. Sie müssen für offene Meshes verlängert werden.

Einige schöne Objekte.

Das sieht kompliziert aus und ist es wirklich. Wenn man untersucht, wie diese Regeln funktionieren, kann man eine Reihe von Eigenschaften beobachten:

  • Für Catmull-Clark Subdivision Surfaces hat für jede Fläche eine zugehörige Grenzfläche, die vollständig durch die Fläche un ihre erste Nachbarschaft definiert ist. Das bedeutet, dass ein Subdivision Surface in einzelne Komponenten zerlegt werden kann, die separat dargestellt werden, so wie Polygonmesh als einzelne Polygone dargestellt werden kann.
  • Jede neue Fläche ist rechteckig mit zwei Kantenpunkten, einem Control-Vertex und einen Face-Vertex.
  • Der Face-Vertices, die den ursprünglichen nicht rechteckigen Flächen entsprechen, sind „extraordinary“ bzw. außergewöhnlich.
  • Die neuen Kontrollpunkte behalten ihre Wertigkeit.
  • Da es nach der ersten Iteration nur rechteckige Flächen gibt, bleibt die Anzahl der „extraordinary“ Vertices konstant und es gibt höchstens einen außerordentlichen Node pro Fläche ab der zweiten Iteration.
  • Bei der Unterteilung eines unregelmäßigen Patches ergibt sich ein weiterer unregelmäßiger Patch, dessen außergewöhnlicher Node die gleiche Valenz und drei regelmäßige Patches aufweist.

Rendering.

Das Rendern von Subdivision Surfaces ist komplex: Es ist nicht allzu schwer, Subdivision Regeln zu implementieren, aber die Grenzfläche hat keinen analytischen Ausdruck und das Kontrollmesh kann eine beliebige Topologie aufweisen. Es gibt verschiedene Denkschulen: Einige tesselieren das Kontrollmesh mit Subdivisionregeln weg, bis die resultierenden Polygone klein genug sind, was zu Lasten des beträchtlichen Speicherverbrauchs geht (bei jeder Iteration vervielfacht ein Catmull-Clark-Schema die Anzahl der Polygone), andere versuchen, die Oberfläche mit bikubischen Patches zu approximieren.

Die Subdivision erfolgt spontan mit der erforderlichen Präzision, was Speicherplatz spart und Artefakte vermeidet, aber die Renderzeiten erhöht.

Algorithmus-Übersicht.

Der Algorithmus nutzt die Schema-Eigenschaft von Catmull-Clark, um die Topologie des Kontrollmeshes zu vereinfachen. Es führt eine oder zwei Subdivisionebenen durch, um ein Kontrollmesh aus Quads mit höchstens einem außergewöhnlichen Scheitelpunkt zu erhalten (dies reduziert die Anzahl der Sonderfälle drastisch) und zerlegt das Mesh in einzelne Flächen mit ihrer 1-Nachbarschaft. In den meisten Fällen handelt es sich um regelmäßiges Patches mit 16 Kontrollpunkten. Wenn der Strahl bei der Schnittstellenberechnung die Patch-Begrenzungsbox verfehlt, wird der Patch verworfen, andernfalls wird er unterteilt, bis er flach oder klein genug aussieht. Die Fläche kann dann sicher als bilinearer Patch approximiert werden, das auf Schnittpunkte gecheckt wird.

Schlußfolgerungen.

Die Subdivision Surfaces von Catmull-Clark haben in der 3D-Szene sehr viel Aufmerksamkeit gesorgt und sind auch noch heute sehr popular. Ich hoffe, dass wir ihnen mit diesem Beitrag einen ersten kleinen Einblick in die Grundlagen geben konnten.

Sofern Sie noch Fragen haben sollten, hinterlassen Sie uns unten einen Kommentar.

Vielen Dank für ihren Besuch.