Computergrafik

Blender Tesselierungsbeispiel

GL Tesselierungsbeispiel | | Hierarchische Modellierung

Anwendungsbeispiele fĂĽr Tesselierungen in Blender

Die Beispiele oben finden auch eine reale Anwendung in Blender. Grundobjekte lassen sich mathematisch beschreiben und so sehr einfach in unterschiedlichen Detailstufen generieren. Am Beispiel der Kugel funktioniert das wie folgt:

Niedrig aufgelöste Kugel
Niedrig aufgelöste Kugel
Hoch aufgelöste Kugel
Hoch aufgelöste Kugel

Die Gesamtzahl der Polygone lässt sich beispielsweise sehr einfach mit $ \text{faces}=\text{segments} \cdot \text{rings} $ berechnen.

Es ist ebenfalls möglich neue Objekte durch die Angabe von mathematischen Funktionen zu generieren. Dazu muss jedoch zunächst ein Addon in Blender aktiviert werden (vgl. altes Tutorial zu 3D Function Surfaces). Ein Beispiel für die prozedurale Generierung des Meshes für einen rigded (gezahnter) torus ist nachfolgend zu sehen:

3D Function Surfaces (alte Blenderversion)
3D Function Surfaces

Etwas komplizierter sieht es aus, wenn man ein beliebiges Objekt tesselieren möchte. Dazu verwendet man in der Regel den Subdivision Surface Modifier, welcher entweder im Modus Simple jedes vierseitige Polygon (Quad) in vier weitere Polygone aufteilt oder im Modus Catmull-Clark zusätzlich das Objekt nach jeder Tesselierungsstufe abrundet. Nachfolgend an Blenders Maskottchen Suzanne demonstriert:

Suzanne ohne Tesselierung
Suzanne ohne Tesselierung
Suzanne mit dreifacher Catmull-Clark-Tesselierung
Suzanne mit dreifacher Catmull-Clark-Tesselierung
Suzanne mit dreifacher Simple-Tesselierung
Suzanne mit dreifacher Simple-Tesselierung

Die Berechnung der Gesamtzahl der Polygone im Falle von Quadmeshes (vier Punkte pro Polygon) ist nur minimal komplizierter als die für mathematische Oberflächen und lässt sich mit $ \text{subdivided_faces}=\text{faces} \cdot 4^{\text{subdivisions}} $ berechnen. Die Umkehrung von Tesselierung wird meist als Dezimierung (Decimation) oder Remeshing bezeichnet. Man verwendet es beispielsweise zur Realisierung von Level-Of-Detail (LOD, Beispiel in Blender). Bei diesen Verfahren wird abhängig von der Kameradistanz das Objekt entweder detailliert (geringe Distanz) oder stark vereinfacht (große Distanz) dargestellt.

Bisher haben wir nur die gleichmäßige Tesselierung anhand von einigen Beispielen betrachtet. Manchmal kann es jedoch sinnvoll sein, die Tesselierung nur in bestimmten Bereichen eines Objekts zu erhöhen, z.B. dort wo mehr Details gewünscht sind. Beim digitalen Bildhauen (Sculpting) gibt es in Blender die Möglichkeit Dynamic Topology zu aktivieren und so während der Bearbeitung das Mesh mit bestimmten Pinseln adaptiv zu tesselieren:

Sculpting in Blender mit Dynamic Topology
Sculpting in Blender mit Dynamic Topology

Besonders nützlich ist das Konzept der Spline-basierten Modellierung, z.B. mit Bézier Splines. Ein Kontrollpolygon definiert dabei eine Kurve im Raum. Diese Kurve lässt sich relativ einfach verändern, indem nur die einzelnen Punkte des Kontrollpolygons verändert werden. Die Konstruktion der Bézier Spline auf Basis des Kontrollpolygons kann sehr leicht mithilfe des De Casteljau-Algorithmus veranschaulicht werden.

Wenig tesselierte BĂ©zierkurve
Wenig tesselierte BĂ©zierkurve
Stark tesselierte BĂ©zierkurve
Stark tesselierte BĂ©zierkurve

Um mit Splines eine Oberfläche zu erzeugen, gibt es verschiedene Methoden. Einerseits kann entlang dieser Spline neue Geometrie extrudiert werden. Andererseits können Oberflächen durch mehrere Splines beschrieben werden und so Bézier-Surfaces formen. Diese Splines bilden dann ein Kontrollgitter, wie nachfolgend dargestellt.

Non-Uniform Rational B(asis)-Spline (NURBS) Surface in Blender
Non-Uniform Rational B-Spline (NURBS) Surface in Blender

Eine besonders gute Erklärung zur prozeduralen Erzeugung von Dreiecksnetzen mithilfe von Splines aus dem Gebiet der Spieleentwicklung gab es auf der Konferenz Unite 2015 mit dem Titel “A coder’s guide to spline-based procedural geometry”.

GL Tesselierungsbeispiel | | Hierarchische Modellierung

Options: