Grundlagen der 3D

Transcription

Grundlagen der 3D
Grundlagen der 3D-Modellierung
Christian Fraß
July 17, 2009
Contents
1 Allgemeines
1.1 Einführung und Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Mathematische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Szenen-Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
3
4
2 Direkte Darstellungsschemata
2.1 Zerlegung in Zellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Konstruktive Festkörpergeometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
7
3 Indirekte Darstellungsschemata
3.1 Drahtgitter- und Oberflächen-Modelle
3.2 Triangulation . . . . . . . . . . . . . .
3.2.1 Delaunay-Triangulation . . . .
3.2.2 Minimal-Gewicht-Triangulation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
9
10
10
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
B-Splines
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
11
12
13
14
16
5 Sonstige Modellierungstechniken
5.1 Lindenmayer- und iterierte Funktionen-Systeme . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Partikelsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
18
19
6 Abschluss
6.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
20
20
20
4 Freiformkurven und -flächen
4.1 Interpolations-Techniken . . . .
4.1.1 Polynominterpolation .
4.1.2 Splines . . . . . . . . . .
4.2 Approximations-Techniken . . .
4.2.1 Beziér-Kurven . . . . .
4.2.2 Nicht-uniforme rationale
.
.
.
.
1
Chapter 1
Allgemeines
1.1
Einführung und Motivation
Die geometrische Modellierung beschäftigt sich mit der Beschreibung und Erfassung von Formen und
Attributen geometrischer Objekte sowie der Bereitstellung geeigneter Datenstrukturen und Algorithmen
zur Speicherung und Manipulation derselbigen. In der Regel ist dies mit einem hohen Maß an Abstraktion und Idealisierung verbunden, sodass man zwischen Exaktheit und Nutzen abwägen muss. Da die
Umsetzung der Techniken zur Modellierung meist rechnergestützt erfolgt, spricht man auch von computer aided geometric design (kurz: CAGD). Auf welche Aspekte man sich konzentriert, hängt vom
Kontext ab, in welchem die zu beschreibenden Objekte erfasst werden sollen, sodass sich die Umsetzungen der Theorie je nach Fachgebiet und Verwendungszweck voneinander unterscheiden. Hauptsächlich
findet die geometrische Modellierung in der Computergrafik Anwendung, wird aber auch für physikalische Simulationen und ähnliches eingesetzt. Im Bereich der Computergrafik legt man den Fokus auf jene
Objekt-Informationen, welche für die Darstellungen von Belangen sind. Meist ist dabei unwichtig, wie
ein Körper im Inneren beschaffen ist, sondern nur, wie er optisch nach außen hin wirkt. Im Folgenden
werden die verschiedenen Methoden zur Beschreibung geoemtrischer Formen unter dem Gesichtspunkt
der Visualierung vorgestellt und gegeneinander abgewogen.
Ablaufschema: vom physikalischen Körper zur informatischen Beschreibung und Darstellung
2
1.2
Mathematische Grundlagen
Das wichtigste Theorie-Werkzeug für die Modellierung ist zweifelsohne die Mathematik. Viele geometrischen
Gebilde lassen sich in Form einer einfachen Relation oder Funktion definieren. Hier ein paar Beispiel, wie
man einfache Formen als bestimmte Relationen beschreiben kann:
(
ellipsoid(r1 , r2 , r3 ) =
3
(x, y, z) ∈ R |
x
r1
2
+
y
r2
2
+
z
r3
)
2
=1
kugel(r) = ellipsoid(r, r, r)
n
o
2
2 2
2
torus(rH , rN ) = (x, y, z) ∈ R3 | x2 + y 2 + z 2 + rH
= 4rH
− rN
x2 + y 2
Die Kombination von Objekten zu komplexeren Strukturen kann dann einfach mit Hilfe von MengenOperatoren bzw. stückweiser Definition realisiert werden. Dabei gilt es allerdings die Sinnhaftigkeit der
entstehenden Objekte zu gewährleisten und da kommt das Fachgebiet der Topologie ins Spiel. Dieses
ermöglicht die Untersuchung und Klassfikation von Objektformen und Beziehungen zwischen diesen. Für
einige Modellierungs-Techniken ist die Regularisierung von Teilmengen topologischer Räume ein wichtiges
Werkzeug, welches es ermöglicht isolierte und ’baumelnde’ Segmente topologischer Räume zu elinieren:
Sei X eine Untermenge des Gebietes Ω.
• x heißt Randpunkt von X, wenn jede Umgebung von x Elemente von X und von Ω \ X enthält
• x heißt innerer Punkt von X genau dann, wenn es eine Umgebung U von x gibt, mit U ⊆ X
• der Rand von X ist definiert als δ(X) := {x ∈ Ω | x ist Randpunkt von X}
• das Innere von X ist definiert als ι(X) := X \ δ(X)
• der Abschluss von X ist definiert als α(X) := X ∪ δ(X)
• die Regularisierung von X ist definiert als %(X) := α(ι(X))
• X heißt offen genau dann, wenn X = ι(X)
• X heißt abgeschlossen genau dann, wenn X = α(X)
• X heißt regulär genau dann, wenn X = %(X)
Veranschaulichung der definierten Funktionen
3
Damit führt man die regularisierten Mengen-Operationen ein (es gelte ◦ ∈ {∪, ∩, \}):
X ◦∗ Y := % (X ◦ Y )
1.3
Szenen-Graph
Häufig ist es sinnvoll, die Objekte, die man modellieren möchte in einer baumartigen Datenstruktur
anzuordnen, welche die Szene hierarchich beschreibt. Das hat den Vorteil, das einzelne Teile der Szene,
welche logisch zusammen gehören, einerseits als atomare Objekte behandelt werden können und anderseits diese selbst eine Szene darstellen, welche auf die gleiche Weise zerlegt werden kann, was in einer
höheren Kontrollierbarkeit und Dynamik der Szene resultiert. Die Blätter des Baumes sind einfache
Formen, welche die Grundbausteine der Szene darstellen, weshalb sie als Primitive bezeichnet werden.
Beispiel: Hierarchisch gestaffelte Transformationen
4
Chapter 2
Direkte Darstellungsschemata
2.1
Zerlegung in Zellen
Einen einfachen Ansatz zur Erfassung von Objekten, verfolgt das Normzellen-Aufzählungs-Schema.
Dabei wird der Raum in ein regelmäßiges Raster aufgeteilt, sodass eine (möglicherweise skalierte) reguläre
Parkettierung des Raumes entsteht. Die gleichgeformten Zellen dieses Raumgitters nennt man Voxel,
was eine Kurzwort für volumetric pixel ist. Im einfachsten Fall, wird der Raum in Quader (vorzugsweise
Würfel) aufgeteilt, was eine besonders einfache Behandlung der Voxel erlaubt. Die Exaktheit der Modellierung durch das Normzellen-Aufzählungs-Schema ist direkt proportional zur Auflösung des Rasters;
das heißt, je kleiner man die Zellengröße wählt, desto genauer und umfangreicher kann man geometrische
Objekte beschreiben.
Durch Voxel modellierter Torus: links: 4 Voxel pro LE, rechts 16 Voxel pro LE
Einem jeden Voxel werden diverse Attribute zugeschrieben, welche dazu dienen sollen, die Eigenschaften des von ihm umfassten Raumabschnittes zu beschreiben; das können Angaben wie Dichte, Masse,
Material-Zusammensetzung, Farbe, Transparenz und ähnliches sein. Gut geeignet ist das Schema daher
für pyhsikalische Messungen und Simulationen, während es für Echtzeit-Computergrafik eher schwerfällig
ist - häufigste Anwendung ist die Modellierung von Terrains. Das hängt zum einen damit zusammen, dass
der Speicherbedarf mit steigender Auflösung exponentiell wächst, womit auch die Verarbeitungszeit in
die Höhe schießt, aber auch zum anderen damit, dass sich die Visualisierung einer durch Normzellen
beschriebenen Szene etwas schwieriger gestaltet. Dennoch ist das Voxel-Modell ein sehr mächtiges
Beschreibungs-Konzept.
5
links: Durch Voxel modellierter Berg, rechts: Screenshot aus dem auf einer Voxel-Engine basierenden
Spiel ”Delta-Force”
Um den Nachteil des erhöhten Speicherbedarfs und Rechenaufwands ein wenig zu reduzieren, verzichtet
man meist auf gleiche Größe der Zellen und verwendet statt dessen eine baumartige Datenstruktur für sie.
So werden Bereiche gleicher Beschaffenheit, die man sonst mit vielen einzelnen Voxeln modellieren müsste,
zusammengefasst und als einzelnens Voxel behandelt. Dazu wird zunächst ein ausreichend großer Bereich mit der Form eines Voxels gewählt, welcher das zu beschreibende Objekt vollständig enthält. Dieser
Bereich wird nun in kleinere Bereiche ähnlicher Form zerlegt. In den entstanden Zellen wird das gleiche
getan, aber es wird nur dann unterteilt, wenn die betreffenden Würfel in Kontakt mit dem Rand des zu
beschreibenden Objektes liegt. Vollkommen innerhalb und vollkommen außerhalb liegende Zellen werden
nicht weiter zerlegt. Je nach Dimension entsteht so ein Baum mit einer bestimmten Anzahl an Nachfolgern an jedem Knoten. In der Ebene spricht man dann von einem quadtree und im Raum von einem
octree.
Veranschaulichung eines durch einen quadtree modellierten Bildes der Mandelbrotmenge
6
2.2
Konstruktive Festkörpergeometrie
lässt sich die Realitätsnähe dieses Modells schrittweise erhöehen, was ein entscheidenter Vorteil der Kantenmodelle ist. Besonders für die Visualisierung mittels Bildsynthese ist die konstruktive Festkörpergeometrie
(constructive solid geometry, kurz: CSG) interessant. Dabei werden Objekte durch regularisierte MengenOperationen kombiniert sowie durch affine Abbildungen transformiert und so zu immer komplexere Objekten verbunden. CSG ist einerseits sehr nah an der mathematischen Beschreibung, aber andererseits
eine recht intuitive Technik, denn häufig beschreibt der Mensch die Objekte seiner Umwelt auf ähnliche
Weise.
Einsatz von regularisierten Mengen-Operationen
Direkt nutzbar ist diese Modellierungs-Technik für die Bildsynthese, während sich die Visualisierung
mittels Polygonen eher problematisch gestaltet. Meist wird dann auf die sogenannte boundary representation zurück gegriffen (siehe nächster Abschnitt).
7
Chapter 3
Indirekte Darstellungsschemata
3.1
Drahtgitter- und Oberflächen-Modelle
Das grundlegende Prinzip der Kantenmodelle ist, die Form eines Körpers abstrakt als Menge von Punkten sowie Kanten und Flächen aus diesen zu behandeln. Aufgrund dieser sehr vereinfachten Sichtweise,
ist eine schnellere Berechnung möglich, da man prinzipiell lediglich die Szenen-Punkte korrekt projizieren
und daraus die Bild-Punkte ermitteln muss. Im einfachsten Fall werden nur die Punkte gespeichert und
über welche Kanten diese verbunden sind. Da die schlichte Visualisierung solcher Modelle grob den Anschein eines Gestells aus losem Draht erweckt, bezeichnet man diese Stufe als Drahtgittermodelle. Die
Einfachheit dieser Modelle bedingt, dass viele Informationen über die Objekte unter den Tisch fallen,
was einige Probleme mit sich bringt:
Es ist allerhöchstens durch die Perspektive zu erahnen, welche Flächen in diesem Bild sich auf der
Rückseite des Objekts befinden. Selbst bei Bewegung um das Objekt herum, hat man Schwierigkeiten
zu erkennen, was überhaupt dargestellt werden soll. Das Ausblenden von nicht sichtbaren Kanten (unter
der Annahme, dass geschlossene Kanten-Züge nicht durchsichtige Flächen definieren) wäre hier schon
hilfreich:
8
Hier werden aber implizit schon Polygone mit einbezogen, allerdings werden immer wieder die selben gebraucht und daher bietet es sich an, diese zu speichern. Geht die Visualisierung darauf ein, so
ist man auf der Stufe der Oberflächenmodelle (boundary represantations/b-reps) angelangt. Durch
Einbeziehen zusätzlicher Informationen über die Polygone in die Visualisierung, kann man recht schnell
bessere Ergebnisse erzielen. Naheliegend wäre zum Beispiel, die Helligkeit einer jeden Fläche gemäß ihrer
Ausrichtung relativ zur Position einer Lichtquelle anzupassen, sodass ein einfaches diffuses BeleuchtungsModell entsteht:
Auf ähnliche Weise lässt sich das Oberfächenmodell weiter ausbauen, sodass die Realitätsnähe der
dargestellten Objekte weiter wächst. Das ist ein entscheidender Vorteil der Kantenmodelle, denn je
nach gewünschtem Detaill-Grad, lassen sich bestimmte Effekte bei der Visualisierung schnell aktivieren
beziehungsweise deaktivieren, sodass die Objekte einer Szene nicht unötig exakt dargestellt werden.
Die Organisation der verschiedenen Informationen üeber die Objekte durch geeignete Datenstrukturen
ist eine Herausforderung für sich, denn es kann schnell passieren, dass Speicher- und Verwaltungs-Aufwand
stark in die Höhe schießen. Dafür wird vorzugsweise ein vef-Graph (vertices, edges, faces) genutzt.
3.2
Triangulation
Das Beschränken auf Dreiecke als Flächen bringt viele Vorteile mit sich. So ist beispielsweise immer
gewährleistet, dass die Eckpunkte in nur einer Ebene liegen, was für die Darstellung eine wichtige Rolle
9
spielt. Dreiecke sind in jedem Fall konvex und Größen wie Winkel, Umkreismittelpunkt, Schwerpunkt,
etc. lassen sich besonders leicht berechnen. Die Mächtigkeit des Modells bleibt die gleiche, da sich jedes
Polygon in Dreiecke zerlegen lässt. Diese und noch eine Reihe anderer Vorteile haben viele Hersteller von
Grafik-Karten veranlasst, ihre Geräte auf die Verarbeitung von Dreiecken zu spezialiseren.
Hat man eine Punktmenge gegeben, welche eine bestimmte Oberflächenform beschreibt, so möchte man
nicht jedes Polygon einzeln definieren, sondern hätte gerne ein Verfahren, welches selbstständig ein
geeignetes Netz entsprechend ein paar weniger Rahmengrößen generiert, welche die jeweiligen Anforderungen an die Vermaschung wiederspiegeln. Aus genannten Gründen sind Dreiecke die favorisierten Polygone
und ein Vermaschungs-Verfahren zum Generieren eines Dreiecksnetzes aus einer gegegeben Punktmenge
(und auch aus einer gegebenen Polygonmenge) wird Triangulation (oder auch Triangulierung) genannt.
Prinzipiell könnte man jede Funktion des Typs P(I) → P(I 3 ), welche aus einer Individuen-Menge I
eine Menge von Tripeln über dieser erzeugt, als Triangulation bezeichnen, aber meist werden bestimmte
Anforderungen an das Ergebnis gestellt, sodass nur einige wenige solcher Funktionen von Interesse sind.
Zwei haben sich besonders etabliert: Die Delaunay- und die Minimum-Weight-Triangulation. Verfahren
zur Generierung von Vierecks-Netzen werden pavings genannt, kommen aber weitaus weniger zum Einsatz als Triangulationen.
Neben den Verfahren zur Generierung von Dreiecks-Netzes aus Punktmengen, existieren Algorithmen
zur Erzeugung aus anderen Polygon-Netzen. Verschiedene Klassen von Polygonen lassen sich verschieden
schwer triangulieren. Am einfachsten ist es bei konvexen Polygonen; bei einfachen, aber nicht-konvexen
kommt hauptsächlich der Ear-Cutting-Algorithmus zum Einsatz, der die Polygonecken vom Gesamtpolygon abtrennt, in welchen keine weiteren Knoten liegen (sogenannte Ohren). Auch einfache Polygone mit
Löchern lassen sich triangulieren; wirklich schwierig wird es bei nicht-einfachen Polygonen.
3.2.1
Delaunay-Triangulation
Hier wird an jedes Dreieck die Bedingung gestellt, dass sich kein anderer Punkt der gegebenen Punktmenge innerhalb der kleinsten Umkugel dieses Dreiecks befindet. Das Auffinden der kleinsten Umkugel ist
ziemlich rechenintensiv, weswegen man häufig andere Ansätze verfolgt, als das naive Filtern nach dieser
Bedingung, die aber das gleiche Dreiecksnetz erzeugen; die schnelleren Algorithmen weisen eine eine logarithmische Zeit-Komplexität auf. Der duale Graph zum Dreiecksnetz einer Delaunay-Triangulation ist das
Voronoi-Diagramm. Die Delaunay-Triangulation erzeugt ein Dreiecksnetz mit minimalen Innenwinkeln
der Dreiecke.
3.2.2
Minimal-Gewicht-Triangulation
Die Minimal-Gewicht-Triangulation (Minimum-Weight-Triangulation, kurz: MWT) erzeugt hingegen ein
Dreiecksnetz mit minimaler Kantenlänge der Dreiecke. Seit einigen Jahren weiß man, dass das Auffinden
der MWT aus einer gegebenen Punktmenge NP-hart ist, also in einer höheren Komplexitätsklasse liegt
als das Auffinden der Delaunay-Triangulation. Die MWT ist in manchen Situationen vorteilhafter, wird
aber aufgrund der höheren Rechenzeit häufig gemieden.
10
Chapter 4
Freiformkurven und -flächen
Häufig ist es von Vorteil, eine bestimmte Form kontinuierlich durch eine Funktion oder ähnliches beschreiben
zu können und dann je nach gewünschtem Detaill-Grad eine diskrete Annäherung dieser Form aus dem
kontinuierlichem Modell zu erstellen. Noch hilfreicher ist ein Zweiwege-Verfahren, mit welchem man
auch aus einer diskreten Beschreibung einer Form eine kontinuierliche ermittlen kann, um eine fehlerfreie Reproduzierbarkeit dieser Formen gewährleisten zu können. Dafür unterscheidet man zwei Ansätze:
Interpolation und Approximation.
4.1
Interpolations-Techniken
Das Ziel besteht darin, aus einer gegebenen Untermenge U = ((u0 , v0 ), (u1 , v1 ), . . . , (un , vn )) eines Vektorraumes V eine Funktion zu finden, deren Graph alle Elemente U enthält.
4.1.1
Polynominterpolation
Hier
interpolierende Funktion eine Polynom-Funktion sein, hat also die Form p : R → R, x 7→
Pm soll die
k
a
x
, wobei m der Grad des Polynoms ist. Die Interpolation-Bedingung erzeugt damit das folk
k=0
gende lineare Gleichungs-System:
u00
 u01

 ..
 .

u0n
u10
u11
..
.
...
...
..
.
u1n
...
    
a0
v0
um
0
    v1 
um
1   a1 
 
..  ·  ..  =  .. 
.   .  .
um
n
am
vn
Sofern (∀i, j ∈ {0, 1, . . . , n}) ((ui = uj ) → (i = j)) gilt, also keine zwei ersten Komponenten der Elemente von U gleich sind, aber verschiedene Indizes haben, ist das Gleichungssystem eindeutig lösbar,
wenn n = m gilt.
Die Lagrange-Basis und die Newton’sche Polynomform erlauben effizienteres Finden einer Lösung als
über das Gleichungs-System.
Zwar bieten Polynome eine einfache Variante zur Interpolation einer Punktmenge, aber sehr vorteilhaft
sind sie nicht gerade. Mit steigendem Grad ist eine zunehmende Oszillation des Funktionsgraphen zu
verzeichnen, was so viel heißt, wie dass er viele unerwünschte Ausprägungen auweist.
11
4.1.2
Splines
Funktionen, welche sich stückweise aus Polynomen zusammensetzen, werden als Splines bezeichnet. Aufgrund der Vielzahl an variablen Parametern, ergeben sich auch viele verschiedene Klassen von Splines.
Gegeben sei zunächst eine Folge
Punkten
((u1 , v1 ), (u2 , v2 ), . . . , (un , vn )) mit der Bedingung u1 <
Pmvon
k
u2 < . . . < un . Wenn sk (x) = i=0
ak,i xi das k-te Segment-Polynom des Splines S bezeichnet; dann
gilt:


(nicht definiert)




s1 (x)




s2 (x)
S(x) = .
..






sn−1 (x)




(nicht definiert)
x < u1
u1 ≤ x ≤ u2
u2 ≤ x ≤ u3
..
.
un−1 ≤ x ≤ un
x > un
Nun lassen sich je nach Bedarf verschiedene Anforderung an den Spline stellen. Grundvoraussetzung
ist, dass der Graph der Spline-Funktion stetig ist und alle gegebenen Stützpunkte enthält (also interpoliert); in der Regel möchte man auch, dass er differenzierbar ist, also keine Knicke aufweist und gut
wäre noch, wenn sich die Krümmung nicht sprungartig ändert. Formal lauten diese Anforderungen wie
folgt:
(∀k ∈ {1, 2, . . . , n − 1}) ((sk (uk ) = vk ) ∧ (sk (uk+1 = vk+1 ))
(∀k ∈ {1, 2, . . . , n − 2}) s0k (uk ) = s0k+1 (uk ) ∧ s00k (uk ) = s00k+1 (uk )
Solche Bedingungen verlangen allerdings, dass der Grad der Segment-Polynome ausreichend groß ist;
für die genannten Anforderungen benötigt man mindestens kubische Polynome. Wenn also mk = 3
für beliebige k aus {1, 2, . . . n − 1} gilt, so würden die genannten Bedingungen genau 4n − 6 lineare
Gleichungen ergeben. Zur eindeutigen Lösbarkeit des Systems werden aber 4n −4 benötigt; daher werden
oft zwei weitere Bedingungen formuliert. Beim natürlichen kubischen Spline
gilt s001(u1 ) =
beispielsweise
00
0
0
00
00
sn−1 (un ) = 0 und beim periodischen kubischen Spline s1 (u1 ) = sn−1 (un ) ∧ s1 (u1 ) = sn−1 (un )
Generell lassen sich verschiedenste Spline-Typen aufstellen, hauptsächlich aber kommen kubische BasisSplines zum Einsatz. Dabei handelt es sich um kubische Splines, welche als Linear-Kombination von
bestimmten Splines dargestellt werden, die eine Basis des Vektorraums bilden und dafür sorgen, dass
die Spline-Funktion drei mal stetig differenzierbar ist. Voraussetzung dafür ist, dass je zwei benachbarte
Stützstellen den gleichen Abstand h voneinander haben - man sagt, die Stützstellen müssen äquidistant
sein. Das Gleichungs-System wird aber stark vereinfacht.
12


x3 + 6x2 + 12x + 8
−2 ≤ x ≤ −1



3
2


−3x − 6x + 4
−1 ≤ x ≤ 0
1 3
ψ(x) =
3x − 6x2 + 4
0≤x≤1
6

3
2

−x + 6x − 12x + 8 1 ≤ x ≤ 2



0
sonst
x − uk
ϕk (x) = ψ
h
n
X
S(x) =
(ak ϕk (x))
k=−1
Die Aufgabe besteht also lediglich noch darin, die Koeffizienten ak der Basis-Polynome ϕk zu finden.
Die Vorteile von Splines gegenüber Polynominterpolation sind höhere Kontrollierbarkeit und Lokalität,
was heißt, dass sich Änderungen an einzelnen Kontrollpunkten direkter auswirken, aber keine umliegenden
Segmente beeinflussen; außerdem oszillieren sie nicht. Allerdings ist der Verwaltungsaufwand, bedingt
durch meherere Fallunterscheidungen, höher und sofern man keine Basis-Splines verwendet, wird auch
mehr Speicher in Beschlag genommen.
4.2
Approximations-Techniken
Ist es nicht nötig eine Funktion zu finden, welche alle gegeben Stützpunkte enthält, so kann man statt
Interpolation auch auf Approximation zurückgreifen. Wiederum gibt es eine Möglichkeit, dies direkt mit
Polynomen zu realisieren: Die orthogonale Projektion eines Interpolations-Polynoms in einen Raum
von Polynomen geringeren Grades als für die Interpolation erforderlich (Methode der kleinsten Quadrate).
Polynom 5. Grades (grün), welches die roten Punkte interpoliert und dessen orthogonale Projektion in
den Raum der Polynome 3. Grades (blau)
Zufriedenstellend ist diese Variante aber in den seltensten Fällen, da einerseits die Nachteile der
direkten Nutzung von Polynomen nicht verschwinden und andererseits weil sie in der Praxis schlicht zu
schlechte Ergebnisse erzielt.
13
4.2.1
Beziér-Kurven
Grundsätzlich anders verläuft die parametrische Beschreibung einer Form; ein bekannter Vetreter dieser
Technik ist die Beziér-Kurve. Zu deren Beschreibung ist zunächst die Definition des k. Bernsteinpolynoms n. Grades nötig:
n
n−k k
Bn,k (t) =
(1 − t)
t
k
Bernstein-Polynome weisen eine Reihe vorteilhafter Eigenschaften auf, zum Beispiel folgt aus dem
binomischen Lehrsatz, dass die Summe aller k-ten Bernstein-Polynome n-ten Grades stets 1 ist:
n
X
k=0
(Bn,k (t)) =
n X
n
k=0
k
(1 − t)
n−k k
t
= ((1 − t) + t)n = 1n = 1
Die Bernstein-Polynome 5. Grades
Es sei nun V ein beliebiger R-Vektorraum. Die Beziér-Kurve wird durch die folgende Funktion
beschrieben:
C : Vn+1 × [0, 1] → V
((x0 , x1 , . . . , xn ) , t) 7→
n
X
(Bn,k (t) · xk )
k=0
Mit dem DeCasteljau-Algorithmus lässt sich diese Funktion durch eine numerisch stabile Rekursion effizienter berechnen:
14
(
C ((x0 , x1 , . . . , xn ) , t) =
x0
n=0
C (((1 − t)x0 + tx1 , (1 − t)x1 + tx2 , . . . , (1 − t)xn−1 + txn ) , t) n > 0
Beziér-Kurven haben die Eigenschaft der affinen Invarianz, was heißt, dass die Transformation
einer Beziér-Kurve gemäß einer affinen Abbildung gleich der Beziér-Kurve über den transformierten
Stützpunkten ist. Beweis dafür: Es sei f : Vn+1 → Vn+1 , x 7→ Ax + b eine affine Abbildung (A ∈
R(n+1)×(n+1) , b ∈ Vn+1 ):
C (AX + b, t)
=C ({Ax0 + b, Ax1 + b, . . . , Axn + b} , t)
n
X
=
(Bn,k (t) · (Axk + b))
=
=
k=0
n
X
k=0
n
X
(Bn,k (t) · Axk + Bn,k (t) · b)
(Bn,k (t) · Axk ) +
k=0
=A ·
n
X
n
X
(Bn,k (t) · b)
k=0
n
X
(Bn,k (t) · xk ) +
k=0
(Bn,k (t)) · b
k=0
=A · C(X, t) + b
Für die 3D-Modellierung sind hauptsächlich die Fälle V = R2 und V = R3 interessant. Dann
beschreibt die Beziér-Kurve eine gekrümmte Linie in der Ebene beziehungsweise im Raum.
Man kann allerdings auch komplexere Vektorräume betrachten, wie zum Beispiel den Raum aller
n2 + 1-Tupel von Beziér-Kurven über n1 + 1 Stützpunkten. Das scheint zunächst nicht allzu sinnvoll zu
sein, resultiert aber in der Verallgemeinerung der Beziér-Kurven auf höhere Dimensionen. So erhält man
unter anderem eine weitere wichtige Freiform: Die Beziér-Fläche.
X(t2 ) =
n2
X
(Bn2 ,k2 (t2 ) · x0,k2 ) ,
k2 =0
C(X(t2 ), t1 ) =
n2
X
(Bn2 ,k2 (t2 ) · x1,k2 ) , . . . ,
k2 =0
n1
X
k1 =0
Bn1 ,k1 (t1 ) ·
n2
X
n2
X
!
(Bn2 ,k2 (t2 ) · xn1 ,k2 )
k2 =0
!
(Bn2 ,k2 (t2 ) · xk1 ,k2 )
k2 =0
15
=
n1
X
n2
X
k1 =0
k2 =0
!
(Bn1 ,k1 (t1 ) · Bn2 ,k2 (t2 ) · xk1 ,k2 )
Kontrollnetz
Punkte auf Fläche ermitteln
Triangulation
fertige Freiformfläche
Tatsächlich ist die Theorie der Beziér-Kurven um einiges und umfangreicher und allgemeiner gehalten,
als der hier vorgestellte Aspekt. So wäre zum Beispiel ein anderer Spezialfall, die Approximation eines
durch Dreiecke beschriebenen Netzes.
4.2.2
Nicht-uniforme rationale B-Splines
Eine Verallgemeinerung von sowohl Splines, als auch Beziér-Kurven, sind die sogenannten Nicht-uniformen
rationalen B-Splines (kurz: NURBS). Ein wichtiger Unterschied zu beiden Techniken ist, dass man
Punkten eine Gewichtung zuschreiben, sodass die Kurve stärker von diesen beeinflusst wird. Damit
stellen sie ein Modellierungs-Spektrum von glatt gekrümmten bis hin zu eckigen und kantigen Kurven/Flächen bereit. Dieses und eine Reihe anderer Möglichkeiten machen NURBS zu einer Art ”eierlegenden Wollmilchsau”, da sich quasi jede beliebige Kurve/Fläche durch sie beschreiben lässt. Sie weisen
die positiven Eigenschaften von simplen Splines und Beziér-Kurven auf und sind zusätzlich invariant unter
projektiven Transformationen.
m
Es sei ((x1 , w1 ), (x2 , w2 ), . . . , (xm , wm )) ∈ (V × R) - eine Menge von Kontrollpunkten zusammen
mit ihren Gewichtung - gegeben. Zum Kontrollieren der Kurve steht neben der Gewichtung noch die
Anpassung des Knoten-Tupels u zur Verfügung. Die Werte dessen fließen in die Definition der NURBSBasis-Funktionen ein:
16
t − uk
un+k − t
gn,k (t) :=
un+k − uk
un+k − uk
Nn,k (t) = fn,k (t)Nn−1,k (t) + gn−1,k+1 (t)Nn−k,k+1 (t)
fn,k (t) :=
Die NURBS-Kurve wird dann folgendermaßen berechnet:
C(t) =
m
X
k=1
N (t)wk
Pm n,k
· xk
j=1 (Nn,j (t)wj )
17
!
Chapter 5
Sonstige Modellierungstechniken
5.1
Lindenmayer- und iterierte Funktionen-Systeme
Ein Lindenmayer-System (kurz: L-System) ist ein abstrakter Formalismus im Sinne einer Grammatik,
wie sie Gegenstand der theoretischen Informatik ist. Der prinzipielle Aufbau ist der selbe:
L = (V, Σ, P, S)
V ∩Σ=∅
+
P ⊆ (V ∪ Σ) × (V ∪ Σ)
∗
S∈V
Der Unterschied zur gewöhnlichen Grammatik besteht nun in der Interpretation der Produktionen
aus P und zwar wird eine Regel stets auf alle Vorkommen der Prämisse im aktuellen Wort angewendet
und nicht nur auf ein einzelnes.
LKochkurve = ({S}, {l, r, v}, { (S, SlSrrSlS), (S, v) }, S)
S
` SlSrrSlS
` SlSrrSlSlSlSrrSlSrrSlSrrSlSlSlSrrSlS
` vlvrrvlvlvlvrrvlvrrvlvrrvlvlvlvrrvlv
Ein iteriertes Funktionen-System (kurz: IFS) arbeitet nach einem vergleichbaren Schema, ist aber
etwas flexibler zu handhaben, als schlichte L-Systeme. Beide eignen sich recht gut, um allerlei fraktale
Objekte zu erzeugen, da durch die besondere Anwendung der Produktionen und Funktionen gewährleistet
wird, dass stets ein selbstähnliches und quasi skaleninvariantes Wort entsteht. Diese etwas exotisch anmutende Technik findet Anwendung zur Modellierung von Pflanzen, Kristallen und anderen Strukturen,
deren Aufbau sich fraktal-ähnlich verhält.
18
links: Ein durch ein L-System modellierter Baum, rechts: Der von Barnsley vorgestellte Farn, welcher
durch ein IFS beschrieben wird
5.2
Partikelsysteme
Obwohl das Partikelsystem vor nicht allzu langer Zeit noch als Exot unter den Modellierungstechniken
galt, ist es heute eine der bedeutendsten Techniken überhaupt. Prinzipiell modelliert man durch ein
Partikelsystem nicht zusammenhängende, dynamische Objekt-Aggregationen. Die Grundbausteine dazu
bilden die Partikel, in welchen man Position, Geschwindigkeit, Richtung, Farbe, Transparenz, Größe,
Alter, Rotation und ähnliche Eigenschaften erfasst. Damit lassen sich Dinge wie Granulate, Flüssigkeiten,
Dämpfe, Flammen und vergleichbare natürliche Phänomene gut simulieren, welche keine klar abgegrenzte
Oberfläche besitzen. Aufgrund der Möglichkeit, das Verhalten eines jeden Partikels individuell festzulegen, zeichnen sich Partikelsysteme durch eine sehr hohe Dynamik aus, wodurch auch eine Vielzahl von
Animations-Effekten wie Explosionen oder Strömungen darstellbar werden. So füllen die Partikelsysteme eine wichtige Lücke in der Modellierungs-Theorie, denn bei allen genannten Beispielen erweisen sich
Voxel- oder Kantenmodelle als unbrauchbar. Der Fortschritt der Technik der letzten Jahrzehnte hat den
Einsatz von Partikelsystemen überhaupt erst ermöglicht.
links: verschiedene Darstellungen von Flammen/Plasma durch ein Partikel-System, rechts: Screenshot
aus einer durch ein Partikel-Plugin modifizierten Version des Spiels ”The Elder Scrolls III Morrowind”
19
Chapter 6
Abschluss
6.1
Zusammenfassung
Je nach Zielsetzung und zur Verfügung stehenden Ressourcen ist eine andere Modellierungs-Technik
vorteilhafter und in der Praxis kombiniert man häufig verschiedene Techniken und kommt so zu Hybridverfahren; ebenso ist es auch möglich sich auf eine Technik zu spezialiseren, welche beispielsweise für
eine bestimmte Visualierungsmethode besonder geeignet ist. So ist die gute Modellierung einer Szene
Grundlage für effektives Aufsgestalten und Interagieren in dieser.
6.2
Verwendete Software
Textsatzsystem
LATEX
Persistance of Vision Raytracer
Java
6.3
Quellen
• Bungartz, Hans-Joachim (et al.): Einführung in die Computergraphik, Braunschweig (vieweg) 2002
2
.
• Klawonn, Frank: Grundkurs Computergrafik mit Java. Die Grundlagen verstehen und einfach
umsetzen mit Java3D, Wiesbaden (vieweg) 2005.
• Skript ”Prof. Dr. S. Gumhold, Computergraphik I, WS 08/09”
• http://en.wikipedia.org/wiki/Nonuniform rational B-spline.html
• http://www.osnews.com/img/10607/Voxel world.jpg
• http://www.fraktalwelt.de/myhome/images/farn.gif
20
• http://upload.wikimedia.org/wikipedia/commons/4/41/Fractal tree %28Plate b - 2%29.jpg
• http://acidmonk.ac.funpic.de/modbilder/partikel waffen.jpg
• http://unigine.com/products/unigine v0.33/particles.jpg
21