3D-Objektmodellierung Beschränkung auf echte dreidimensionale Strukturen: keine isolierten Punkte, Kanten oder Flächen keine baumelnden Kanten oder Flächen Computergrafik: Modellierung dreidimensionaler Körper p.1/87
Polygone als Oberflächenelemente zur Oberflächenmodellierung: flexible Formen zur Repräsentation gekrümmter Flächen für die Berechnung der Darstellung: Annäherung durch viele ebene Polygone, in der Regel Dreiecke (ggf. Triangulation) Computergrafik: Modellierung dreidimensionaler Körper p.2/87
Polygone als Oberflächenelemente Orientierung der Polygonecken entgegen dem Uhrzeigersinn: nach außen zeigende sichtbare Seite des Körpers 0,1,2: von vorne sichtbar 0,2,1: Betrachtung der unsichtbaren Rückseite Computergrafik: Modellierung dreidimensionaler Körper p.3/87
Beispiel: Tetraeder Computergrafik: Modellierung dreidimensionaler Körper p.4/87 Seiten des Tetraeders:,,
Topologische Begriffe. Es sei heißt genau dann Umgebung, wenn ein existiert mit Eine Menge des Punktes heißt genau dann innerer Punkt von, wenn es eine Umgebung von gibt. mit heißt ist innerer Punkt von in das Innere von. heißt genau dann Randpunkt von, wenn jede Umgebung sowohl einen nichtleeren Schnitt mit und dem Komplement von besitzt. Computergrafik: Modellierung dreidimensionaler Körper p.5/87
Topologische Begriffe bound heißt der Rand von. Es gilt in cl cl reg bound ist Randpunkt von heißt genau dann offen, wenn in bound. gilt. ist der Abschluss von. heißt genau dann abgeschlossen, wenn gilt. cl in heißt die Regulasierung von. heißt genau dann regulär, wenn reg gilt. Computergrafik: Modellierung dreidimensionaler Körper p.6/87
3D-Objektmodellierung Durch Regularisierung lassen sich sowohl isolierte Punkte, Kanten und Flächen als auch baumelnde Kanten und Flächen entfernen. Computergrafik: Modellierung dreidimensionaler Körper p.7/87
Voxelmodell Aufteilung des Raumes in ein Gitter gleich großer Würfel (Voxel) Darstellung eines Körpers durch eine Menge von Würfeln Computergrafik: Modellierung dreidimensionaler Körper p.8/87
Voxelmodell Ein Voxel gehört genau dann zu einem Körper, wenn sich sein Mittelpunkt innerhalb des Körpers befindet. Die Güte der Approximation eines Körpers durch Voxel hängt von der Größe der Voxel ab. kleine Voxel gute Approximation, hoher Speicher- und Rechenaufwand große Voxel schlechte Approximation, geringer Speicher- und Rechenaufwand Speicherung eines Körpers als Binärmatrix oder Voxelliste Computergrafik: Modellierung dreidimensionaler Körper p.9/87
Oktalbäume (Octrees) Einschließen des Körpers in einen hinreichend großen Würfel Aufteilung des Würfels in acht gleich große Teilwürfel. Teilwürfel, die vollständig innerhalb (in) oder vollständig außerhalb (off) des Körpers liegen, werden entsprechend markiert und nicht weiter verfeinert. Teilwürfel, die den Rand des Körpers enthalten (on), werden wieder in acht gleich große Teilwürfel zerlegt, mit denen entsprechend verfahren wird, bis eine minimale Kantenlänge erreicht wurde. Computergrafik: Modellierung dreidimensionaler Körper p.10/87
Oktalbäume zweidimensionales Analogon: Quadtrees: Computergrafik: Modellierung dreidimensionaler Körper p.11/87
Oktalbäume korrespondierender Quadtree bis zur Ebene 4: Computergrafik: Modellierung dreidimensionaler Körper p.12/87
CSG-Schema ähnlich wie die Verwendung der Klasse Area bei Java 2D: Es gibt elementare Grundkörper (z.b. Quader, Kugel, Zylinder, Pyramide). Auf diese Grundkörper können Transformationen angewendet werden. Mittels (regularisierter) Mengenoperationen können aus den (transformierten) Grundkörpern neue Körper erzeugt werden. Computergrafik: Modellierung dreidimensionaler Körper p.13/87
U U \ U CSG-Schema Computergrafik: Modellierung dreidimensionaler Körper p.14/87
Verschiebegeometrie Körper werden aus zweidimensionalen Flächen und Verschiebeoperationen erzeugt: Computergrafik: Modellierung dreidimensionaler Körper p.15/87
Approximation durch Polygone Computergrafik: Modellierung dreidimensionaler Körper p.16/87
Approximation durch Polygone Kugel mit unterschiedlicher Tesselierung Computergrafik: Modellierung dreidimensionaler Körper p.17/87
Tesselierung in Java 3D Darstellung als Drahtgittermodell: PolygonAttributes polygattr = new PolygonAttributes(); polygattr.setpolygonmode( PolygonAttributes.POLYGON_LINE); myapp.setpolygonattributes(polygattr); Computergrafik: Modellierung dreidimensionaler Körper p.18/87
Tesselierung in Java 3D Festlegung der Auflösung bei elementaren geometrischen Objekten: Sphere s = new Sphere(r, Sphere.GENERATE_NORMALS, res,sphereapp); Annäherung der Oberfläche mit jeweils res Dreiecken im Gesamtumfang Computergrafik: Modellierung dreidimensionaler Körper p.19/87
Tesselierung in Java 3D Cylinder c = new Cylinder(r,h, Cylinder.GENERATE_NORMALS, xres,yres,app); Cone c = new Cone(r,h, Cone.GENERATE_NORMALS, xres,yres,app); Annäherung der Oberfläche mit jeweils xres und yres Dreiecken in - bzw. -Richtung. Computergrafik: Modellierung dreidimensionaler Körper p.20/87
Java 3D: GeometryArrays Ein GeometryArray beschreibt einen Körper (bzw. dessen Oberfläche) und besteht im Wesentlichen aus Punkten, Flächen (oder Formen), die durch die Punkte definiert werden (z.b. Dreiecke oder Vierecke), Farb- oder Texturinformationen, Normalenvektoren, die Informationen über die tatsächliche Oberflächenform des Körpers enthalten. Computergrafik: Modellierung dreidimensionaler Körper p.21/87
Java 3D: GeometryArrays einfache Möglichkeit zur Erzeugung eines GeometryArrays: Zerlegung der Körperoberfläche in Dreiecke Definition eines Arrays, das die Eckpunkte der Dreiecke enthält: Point3f[] vertices = { new Point3f(...),... new Point3f(...) }; Computergrafik: Modellierung dreidimensionaler Körper p.22/87
Java 3D: GeometryArrays Definition der Dreiecke int triangles[] = { 0,2,1, 1,4,7,... }; Die Oberfläche des Körpers besteht dann aus den Dreiecken, die aus dem 0., 2. und 1. Element (Punkt), 1., 4. und 7. Element (Punkt) des vertices-array gebildet werden. Computergrafik: Modellierung dreidimensionaler Körper p.23/87
Java 3D: GeometryArrays Erzeuge zunächst ein GeometryInfo-Objekt: GeometryInfo gi = new GeometryInfo( GeometryInfo.TRIANGLE_ARRAY); gi.setcoordinates(vertices); gi.setcoordinateindices(triangles); NormalGenerator ng = new NormalGenerator(); ng.generatenormals(gi); Computergrafik: Modellierung dreidimensionaler Körper p.24/87
Java 3D: GeometryArrays Erzeuge aus dem GeometryInfo-Objekt ein GeometryArray und generiere daraus einen Shape3D. GeometryArray ge = gi.getgeometryarray(); Shape3D inducedshape = new Shape3D(ge,desiredAppearance); Das Shape3D-Objekt kann dann wie die elementaren geometrischen Objekte einer Transformationsgruppe zugeordnet werden. (vgl. GeomArrayExample.java) Computergrafik: Modellierung dreidimensionaler Körper p.25/87
Laden von Szenen Diverse Grafikformate können direkt als Java 3D Szenen geladen werden. Beispiel: Wavefront Object Dateiformat (.obj ) Dieses Format enthält ähnliche Informationen wie die GeometryArrays. Neben einigen zu importierenden Packages kann eine Szene folgendermaßen geladen werden: Computergrafik: Modellierung dreidimensionaler Körper p.26/87
Laden von Szenen ObjectFile f = new ObjectFile( ObjectFile.RESIZE); Scene s = null; try { s = f.load("file.obj"); } catch (Exception e) { System.out.println("Error..."); } BranchGroup thescene = s.getscenegroup(); Computergrafik: Modellierung dreidimensionaler Körper p.27/87
Die Objekte der geladenen Szene können folgendermaßen abgefragt werden: Laden von Szenen Hashtable sobs = s.getnamedobjects(); Enumeration enum = sobs.keys(); String name; while (enum.hasmoreelements()) { name = (String) enum.nextelement() System.out.println("Name: "+name); } Computergrafik: Modellierung dreidimensionaler Körper p.28/87
Laden von Szenen Auf ein Objekt in der Szene kann mittels seines Namens zugegriffen und beispielsweise die Farbe geändert werden: Shape3D szeneobject = (Shape3D) sobs.get("objname"); szeneobject.setappearance( desiredappearance); Computergrafik: Modellierung dreidimensionaler Körper p.29/87
Laden von Szenen Verwendung eines Teils einer Szene: Shape3D part = (Shape3D) namedobjects.get("partname"); Shape3D extractedpart = (Shape3D) part.clonetree(); extractedpart.setappearance(app); tg.addchild(extractedpart); (vgl. Load3DExample.java und Extract3DExample.java) Computergrafik: Modellierung dreidimensionaler Körper p.30/87
Flächen als Funktionen weitere mögliche Definiton einer Oberfläche als Funktion in zwei Variablen in impliziter Form: Nachteile: Schwierigkeiten eine Gleichung zu finden, die die gewünschte Fläche beschreibt Lösung der Gleichung für das Rendering Computergrafik: Modellierung dreidimensionaler Körper p.31/87
Flächen als Funktionen einfacher: Beschreibung einer Fläche als explizite Funktionsgleichung in der Form Nachteil: Geschlossene Oberflächen müssen stückweise aus Funktionen zusammengesetzt werden. Computergrafik: Modellierung dreidimensionaler Körper p.32/87
Flächen als Funktionen Computergrafik: Modellierung dreidimensionaler Körper p.33/87
Flächen als Funktionen Bestimmung der Dreiecke für die Darstellung einer Funktion: Computergrafik: Modellierung dreidimensionaler Körper p.34/87
Flächen als Funktionen Wahl der Feinheit der Auflösung durch die Dreiecke: hohe Auflösung: gute Annäherung der Funktion, hoher Rechenaufwand geringe Auflösung: schlechte Annäherung der Funktion, niedriger Rechenaufwand Computergrafik: Modellierung dreidimensionaler Körper p.35/87
Flächen als Funktionen mögliche Lösung: flexible Aufteilung in Dreiecke In jedem Quadrat wird der Approximationsfehler berechnet. Jedes Quadrat wird so lange rekursiv weiter in kleinere Quadrate aufgeteilt, bis der Fehler genügend klein oder die maximal erlaubte Rekursionstiefe erreicht ist. Computergrafik: Modellierung dreidimensionaler Körper p.36/87
Darstellung von Landschaften Landschaften bestehen aus Höhen- und Texturinformationen Die Höheninformationen entsprechen einer Abtastung einer Funktion, wobei die Höhe der Landschaft über dem Punkt angibt. Problem: Ein enges Gitter mit Höheninformationen führt zu einer hohen Anzahl von Dreiecken beim Rendering, auch für Teile der Landschaft, die weit entfernt sind. Computergrafik: Modellierung dreidimensionaler Körper p.37/87
Level of Detail (LOD) Auflösung in Abhängigkeit der Entfernung: Computergrafik: Modellierung dreidimensionaler Körper p.38/87
Text Klassen für Text im Dreidimensionalen: Text2D und Text3D Erzeugung eines Shape-Objekts (für Text2D ähnlich): Font3D f3d = new Font3D(f, new FontExtrusion()); Text3D t3d = new Text3D(f3d,s,p); Shape3D textshape = new Shape3D(t3d,app); Computergrafik: Modellierung dreidimensionaler Körper p.39/87
Billboard Behaviour Bei Beschriftungen wünschenswert: Der Text soll immer zum Betrachter hin orientiert sein. Dies nennt man Billboard Behaviour. Billboard bb = new Billboard(tgBBGroup, Billboard.ROTATE_ABOUT_POINT, p); bb.setschedulingbounds(bounds); tgbbgroup.addchild(bb); tgbbgroup.setcapability( TransformGroup.ALLOW_TRANSFORM_WRITE); Computergrafik: Modellierung dreidimensionaler Körper p.40/87
Oberflächenmodellierung (Gekrümmte) Oberflächen von Körpern werden meistens durch (viele kleine) Dreiecke angenähert. Die Modellierung von Oberflächen wird oft (vor allem im CAD-Bereich) durch Freiformflächen ermöglicht. Dadurch kann auch die Auflösung (Approximationsgüte der Oberfläche/Anzahl der Dreiecke) abhängig von der gewünschten Genauigkeit oder Entfernung des Objektes bestimmt werden. Computergrafik: Modellierung dreidimensionaler Körper p.41/87
Oberflächenmodellierung Normalenvektoren von Oberflächen werden unter Anderem für Beleuchtungseffekte benötigt. Für die durch Dreiecke angenäherte Oberfläche werden die Normalenvektoren nicht direkt berechnet (als Normalenvektoren von Ebenen Polygonen), sondern in Abhängigkeit von der Originaloberfläche. Methoden zur Berechnung von Normalenvektoren werden später genauer besprochen. Computergrafik: Modellierung dreidimensionaler Körper p.42/87
Freiformkurven und -flächen Freiformkurven sind Teile von Freiformflächen. Computergrafik: Modellierung dreidimensionaler Körper p.43/87
Freiformkurven Freiformflächen werden über Freiformkurven (ähnlich wie QuadCurve2D oder CubicCurve2D in Java 2D) definiert. Freiformkurven werden über Punkte (im Raum) definiert. Interpolation bedeutet, durch eine vorgegebene Menge von Punkten eine Kurve zu legen. Approximation erfordert nur, dass die Kurve die Punkte annähert. Computergrafik: Modellierung dreidimensionaler Körper p.44/87
Kurvenmodellierung Sollen Kurven (oder auch Oberflächen) über Parameter (z.b. Punkte im Raum) definiert werden, sind folgende Eigenschaften wünschenswert: Kontrollierbarkeit: Der Einfluss der Parameter auf den Kurvenverlauf ist für den Benutzer intuitiv verständlich. Soll ein Kurvenverlauf geändert werden, muss für den Benutzer einfach erkennbar sein, welche Parameter er wie ändern sollte. Lokalitätsprinzip: Es muss die Möglichkeit geben, die Kurve lokal zu verändern. Wird beispielsweise eine Stützstelle der Kurve verändert, sollte dies nach Möglichkeit nur Auswirkungen in der Nähe der Stützstelle haben. Computergrafik: Modellierung dreidimensionaler Körper p.45/87
Kurvenmodellierung Glattheit: Die Kurve sollte gewisse Glattheitseigenschaften besitzen. Stetigkeit Differenzierbarkeit eventuell auch Existenz höherer Ableitungen beschränkte Variation Computergrafik: Modellierung dreidimensionaler Körper p.46/87
Polynominterpolation Durch Stützstellen lässt sich immer ein Interpolationspolynom höchstens -ten Grades legen. Nachteile: Bei vielen Stützstellen erreicht das Polynom sehr schnell einen sehr hohen Grad. Das Lokalitätsprinzip ist verletzt. Der Bereich, in dem das Interpolationspolynom verläuft, ist nur schwer anhand der Stützstellen zu bestimmen, was zu Problemen beim Rendering führt. (Hochgradige) Interpolationspolynome neigen zum Schwingen. Computergrafik: Modellierung dreidimensionaler Körper p.47/87
Polynominterpolation 1.5 f(x) 1 0.5 0-0.5-1 -1.5 0 1 2 3 4 5 Interpolationspolynom 5. Grades durch die Stützstellen (0,0), (1,0), (2,0), (3,0), (4,1), (5,0): Computergrafik: Modellierung dreidimensionaler Körper p.48/87
Polynominterpolation 1.5 1 f(x) 0.5 0-0.5-1 -1.5 0 1 2 3 4 5 Das Interpolationspolynom verläuft nicht innerhalb der konvexen Hülle der Stützstellen. Computergrafik: Modellierung dreidimensionaler Körper p.49/87
Bézier-Kurven ): -tes Bernstein-Polynom -ten Grades ( Es gilt: für alle für alle Computergrafik: Modellierung dreidimensionaler Körper p.50/87
Bézier-Kurven zur Es seien Kontrollpunkte Beschreibung einer Kurve im Computergrafik üblicherweise gegeben. (in der oder ) heißt Bézier-Kurve vom Grad. heißen Bézier- oder Kontrollpunkte. Computergrafik: Modellierung dreidimensionaler Körper p.51/87
Bézier-Kurven und Es gilt: Die Bézier-Kurve interpoliert den Anfangs- und den Endpunkt. Die anderen Kontrollpunkte liegen i.a. nicht auf der Kurve. Es gilt: Die Tangente im Anfangspunkt verläuft in Richtung des Punktes, die Tangente im Endpunkt kommt aus der Richtung des Punktes. Computergrafik: Modellierung dreidimensionaler Körper p.52/87
Bézier-Kurven Aufgrund der Eigenschaften der Bernstein-Polynome ist die Bézier-Kurve an jeder Stelle eine Konvexkombination der Kontrollpunkte. Die Bézier-Kurve verläuft innerhalb der konvexen Hülle der Kontrollpunkte. Bézier-Kurven sind invariant unter affinen Abbildungen. D.h., wenn man auf alle Kontrollpunkte eine affine Transformation anwendet, stimmt die Bézier-Kurve aus den transformierten Punkten mit der Transformation der ursprünglichen Bézier-Kurve überein. Computergrafik: Modellierung dreidimensionaler Körper p.53/87
Bézier-Kurven Bézier-Kurven sind symmetrisch in den Kontrollpunkten, d.h. die Kontrollpunkte und ergeben dieselbe Kurve (nur rückwärts durchlaufen). Verwendet man als Kontrollpunkte eine Konvexkombination zweier Sätze von Kontrollpunkten, ergibt sich als Bézier-Kurve die Konvexkombination der entsprechenden Bézier-Kurven:. definiert die Bézier-Kurve. definiert die Bézier-Kurve definiert die, falls Bézier-Kurve gilt. Computergrafik: Modellierung dreidimensionaler Körper p.54/87
Bézier-Kurven Liegen alle Kontrollpunkte auf einer Geraden oder einer Parabel, ergibt sich als Bézier-Kurve ebenfalls die entsprechende Gerade bzw. Parabel. Bézier-Kurven erhalten gewisse Formeigenschaften wie Monotonie oder Konvexität der Kontrollpunkte. Obwohl Bézier-Kurven sehr gute Eigenschaften besitzen, sind sie für größere Anzahlen von Kontrollpunkten ungeeignet, da sich ein zu hoher Polynomgrad ergibt. Computergrafik: Modellierung dreidimensionaler Körper p.55/87
B-Splines B-Splines werden aus mehreren Bézier-Kurven niedrigeren Grades (üblicherweise Grad 3 oder 4) zusammengesetzt, um eine Kurve zu einer gegebenen Menge von Kontrollpunkten zu definieren. Es wird für jeweils aufeinander folgende Punkte eine Bézier-Kurve berechnet. Der letzte Kontrollpunkt der vorhergehenden Bézier-Kurve bildet den ersten Kontrollpunkt der nachfolgenden Bézier-Kurve. Computergrafik: Modellierung dreidimensionaler Körper p.56/87
B-Splines Dadurch interpolieren B-Splines die Kontrollpunkte, an denen die einzelnen Bézier-Kurven jeweils aneinander gefügt werden. Diese Nahtstellenpunkte werden als Knotenpunkte bezeichnet. Die anderen Kontrollpunkte heißen innere Bézier-Punkte. Computergrafik: Modellierung dreidimensionaler Körper p.57/87
B-Splines P 5 P 6 P 2 7 P P 4 3 P P 1 und inneren B-Spline mit Knotenpunkten Bézier-Punkten Damit keine Knicke an den Nahtstellen entstehen (Nicht-Differenzierbarkeit), müssen der jeweilige Knotenpunkt, der direkt davor und der direkt dahinter liegende innere Bézier-Punkt kollinear sein. Computergrafik: Modellierung dreidimensionaler Körper p.58/87
B-Splines Mit B-Splines -ten Grades lassen sich durch geeignete Wahl der inneren Bézier-Punkte Kurven erzeugen, die -mal stetig differenzierbar sind. Bei kubischen Splines (Polynomgrad 3) muss neben der Kollinearitätsbedingung eine weitere Bedingung an die benachbarten inneren Bézier-Punkte gestellt werden. Computergrafik: Modellierung dreidimensionaler Körper p.59/87
B-Splines Computergrafik: Modellierung dreidimensionaler Körper p.60/87
B-Splines B-Splines verlaufen in der konvexen Hülle der Kontrollpunkte. sind invariant unter affinen Abbildungen. interpolieren Anfangs- und Endpunkt der Kontrollpunkte. sind symmetrisch in den Kontrollpunkten. genügen dem Lokalitätsprinzip. Computergrafik: Modellierung dreidimensionaler Körper p.61/87
B-Splines perspektivsche Projektion einer parametrische Kurve in homogenen Koordinaten: Computergrafik: Modellierung dreidimensionaler Körper p.62/87
B-Splines in kartesischen Koordinaten: Ergebnis: rationale Funktionen in Computergrafik: Modellierung dreidimensionaler Körper p.63/87
NURBS Bei der perspektivische Projektion ergeben sich aus Polynomen rationale Funktionen. Damit sind B-Splines nicht invariant unter beliebigen Projektionen. NURBS (non-uniform rational B-splines) verwenden auf rationale Funktionen erweiterte Bézier-Kurven der Form: Computergrafik: Modellierung dreidimensionaler Körper p.64/87
Effiziente Polynomberechnung Meistens werden kubische Kurven zur Modellierung von Kurven (und Flächen) verwendet. Die kubischen Kurven müssen für konkrete Modellberechnungen abgetastet werden. Die parametrische Kurve wird an äquidistanten Stellen des Parameters ausgewertet, die entsprechenden Punkte berechnet und jeweils durch Geradenstücke verbunden. Alternative könnte man die Auswertung rekursiv verfeinern, bis der Mittelpunkt der zu zeichnenden Geraden nahe genug an der Kurve liegt. Computergrafik: Modellierung dreidimensionaler Körper p.65/87
Effiziente Polynomberechnung Verwendung von Vorwärtsdifferenzen bei Schrittweite : d.h. oder erhalten wir Für Computergrafik: Modellierung dreidimensionaler Körper p.66/87
Effiziente Polynomberechnung ebenfalls Wendet man zur Berechnung von Vorwärtsdifferenzen an, ergibt sich: Computergrafik: Modellierung dreidimensionaler Körper p.67/87
Effiziente Polynomberechnung Die gleiche Technik lässt sich ebenfalls auf die Berechnung von anwenden: ein: Zur Initialisierung setzen wir den Wert Computergrafik: Modellierung dreidimensionaler Körper p.68/87
Effiziente Polynomberechnung + + + + + + Differenzenschema für Polynome dritten Grades Computergrafik: Modellierung dreidimensionaler Körper p.69/87
Effiziente Polynomberechnung 3 6 15 36 75 63 21 3 9 39 30 18 6 24 12 6 6 6 6 6 Differenzenschema für das Polynom mit der Schrittweite Computergrafik: Modellierung dreidimensionaler Körper p.70/87
Freiformflächen t=1 P (t) 1 t=0.8 t=0.6 t s t=0.4 t=0.2 t=0 P (t) 2 Freiformflächen als parametrische Kurven in zwei Parametern Computergrafik: Modellierung dreidimensionaler Körper p.71/87
Freiformflächen Verwendung von Bézier-Flächen anstelle von Bézier-Kurven: und mit Kontrollpunkten den Computergrafik: Modellierung dreidimensionaler Körper p.72/87
Freiformflächen Computergrafik: Modellierung dreidimensionaler Körper p.73/87
Freiformflächen Die vier Eckpunkte liegen auf der Fläche, die anderen Kontrollpunkte i.a. nicht. Die Fläche verläuft innerhalb der konvexen Hülle der Kontrollpunkte. sind Die Kurven mit konstantem Wert Bézier-Kurven bzgl. der Kontrollpunkte Entsprechendes gilt für die Kurven mit konstantem. Computergrafik: Modellierung dreidimensionaler Körper p.74/87
Freiformflächen In der Computergrafik werden häufig Dreiecke (und nicht Vierecke) als Basis für Oberflächen verwendet. Bézier-Fläche vom Grad über einem Dreiecksgitter: Computergrafik: Modellierung dreidimensionaler Körper p.75/87
Freiformflächen mit den Bernsteinpolynomen und, mit, Computergrafik: Modellierung dreidimensionaler Körper p.76/87
Dreiecksgitter Computergrafik: Modellierung dreidimensionaler Körper p.77/87
Normalenvektoren bei Dreiecken Berechnung der Ebenengleichung: Der Vektor ist der (nichtnormierte) Normalenvektor zur Ebene, denn: nicht-normierter Normalenvektor Punkt in der Ebene Computergrafik: Modellierung dreidimensionaler Körper p.78/87
Normalenvektoren bei Dreiecken Der Verbindungsvektor zwischen und liegt in, d.h., wenn er senkrecht zum Normalenvektor steht: Setze,, und Computergrafik: Modellierung dreidimensionaler Körper p.79/87
Normalenvektoren bei Dreiecken Sind mindestens drei (nicht-kollineare) Punkte gegeben, so lässt sich der Normalenvektor mittels des Kreuzproduktes berechnen: kann dann durch Einsetzen eines der Punkte bestimmt werden: Computergrafik: Modellierung dreidimensionaler Körper p.80/87
Normalenvektoren an Oberflächen -Tangentenvektor: Computergrafik: Modellierung dreidimensionaler Körper p.81/87
Normalenvektoren an Oberflächen -Tangentenvektor: Computergrafik: Modellierung dreidimensionaler Körper p.82/87
Normalenvektoren an Oberflächen Die beiden Tangentenvektoren verlaufen parallel zur Oberfläche an der Stelle, so dass das Kreuzprodukt dieser beiden Vektoren den Normalenvektor bildet. Computergrafik: Modellierung dreidimensionaler Körper p.83/87
Dreieck mit verschiedenen Normalen Bei der Annäherung einer gekrümmten Fläche durch Dreiecke werden nicht die Normalenvektoren zu den planaren Dreiecken, sondern entsprechend der gekrümmten Originalfläche bestimmt. Computergrafik: Modellierung dreidimensionaler Körper p.84/87
Normalenvektoren an Oberflächen Bei der Modellierung einer Oberfläche in Java 3D mittels eines GeometryInfo-Objekts werden im Normalfall die Normalenvektoren zu den planaren Dreiecken bestimmt. Es kann aber auch angegeben werden, dass die Normalenvektoren sich aus der Interpolation benachbarter Dreiecke ergeben: NormalGenerator ng = new NormalGenerator(); ng.setcreaseangle(alpha); Computergrafik: Modellierung dreidimensionaler Körper p.85/87
Normalenvektoren an Oberflächen Der Winkel alpha gibt an, wie groß der Winkel zwischen benachbarten Dreiecken maximal sein darf, damit eine Interpolation der Normalenvektoren vorgenommen werden soll. Der Defaultwert von alpha ist Null, so dass im Normalfall keine Interpolation der Normalenvektoren stattfindet. (vgl. NormalsForGeomArrays.java) Computergrafik: Modellierung dreidimensionaler Körper p.86/87
Normalenvektoren an Oberflächen interpolierte und nicht-interpolierte Normalenvektoren Computergrafik: Modellierung dreidimensionaler Körper p.87/87