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