Modellierung und Animation 1
Kompetenzen
- Überblick über Methoden und Techniken der Modellierung und Animation
- Verständnis über zugrundeliegende Konzepte
- Balance aus Theorie <-> Praxis
Abgrenzung
Diese Aspekte sind nicht Ziel dieses Faches:
- Pre- und Postproduction, etc.
- Künstlerische Aspekte
- Theoretische Vertiefung
- Software-Umsetzung genannter Konzepte
- Programmspezifische Kenntnisse
Themen
- [x] Einführung
- [x] Grundbegriffe
- [x] Mathematische Grundlagen (* 2)
- [x] Modellieren
- [x] Modellierungstechnik (* 12)
- [x] Basics
- [x] Tools
- [x] Modifiers
- [x] Kamera (* 7)
- [x] Polygonale Netze (* 6)
- [x] Parametrische Patches (* 3)
- [x] Einschub: Prozedurales Modellieren (* 1)
- [x] Modellierungstechnik (* 12)
- [ ] Material und Licht
- [ ] Physikalische Grundlagen
- [ ] Begriffe für Licht
- [ ] Licht (Lokale Beleichtung, etc.)
- [ ] Schatten
- [ ] Beleuchtung
- [ ] Shading
- [ ] Spiegelung
- [ ] Transparenz
- [ ] Transluzenz
- [ ] Dispersion
- [ ] Coating
- [ ] Texture Mapping
- [ ] Animation
Todo: (* Anzahl)
Einführung
Geschichte
Anfang
- Winsor McCay -> 2D-Handzeichnungen (Gertie the Dinosaur, 1914)
- Earl Hund & John Bray -> Kombinierung von mehreren Schichten aus durchsichtige Cels (Celluloid)
- Disney -> Innovationsträger:
- erstmalig Ton -> Steamboat Willie (1928)
- multiplane camera:
- Kamera über mehrere Ebene angebracht mit veränderbare Entfernung
- Jede Ebene trägt eine Animationszelle -> Bewegung in 6 Richtungen
- ermöglicht:
- Geschwindigkeit
- motion blur
- Tiefeneindruck
Computeranimation (CA)
70er:
- Forschungsbereich: University of Utah
- Einfache Computeranimation z.B. in Werbung (Star Wars 1977)
80er:
- Produktionshäuser mit eigener Software und teilweise spezieller Hardware: Lucasfilm, Pixar
- Kein Zwang zur Realitätsnähe -> Weltraum als Kulisse
90er:
- CA wird normal
- Meilensteine: Aliens (Terminator II), Forrest Gump (Ping-Pong), Toy Story (komplett in CA), Titanic (künstliche Figuren, Wasser)
- Kommerzielle Software z.B: Autodesk 3D Studio, Lightwave 3D
CA in Games
Bringt Nachteile mit:
- Echtzeitfähigkeit
- geringere Qualität/Komplexität
- Mehraufwand für Artist z.B. Level of Detail
- Weitere Limitationen:
- Sound
- Spielphyik wird live ausgewertet z.B. Kollistionsberechnung
- Event-Handling
- …
- Interaktion:
- Animationen sind nicht fest vorgegeben z.B. Laufen in verschiedenen Richtungen
- Oft physikalisch begründet
- Umgebung:
- Umgebung muss teilweise komplett ausgearbeitet sein, da die Kamera nicht statisch ist
- Vereinfachungen sind nicht unbedingt möglich z.B. Türen kann man öffnen
- Umgebung ist durch den Spieler veränderbar z.B. Gegenstände verschieben
Grundbegriffe
- Ein Objekt einer 3D-Szene ist i.d.R. letztendlich ein Polygon-Netzmodell - Mesh
- Oberfläche eines Objekts -> Verbindung aus mehreren planare Polygone
- Ein Polygon - Face besteht aus einer List miteinander verbundener Punkte - Vertices
- Ein Vertex ist ein Punkt im R3 (3D-Kooridnatensystem)
- Unterscheidung zwischen exakter Darstellung - z.B. ein Quader - und einer Näherung - z.B. Kugel
- Anzahl der Polygone = Genauigkeit der Näherung => Speicherplatz, Redering, evtl. Erstellungszeit der Artist
Mathematische Grundlage
Ein Polygon ist definiert durch eine Menge an Punkten, i.d.R. besteht ein Polygon aus 3 Punkten.
Ein gesamten Objekt soll verändert werden können, z.B. Verschiebung, Skalierung und Rotation. Das sind Affine Transformationen einer Punktmenge in eine andere Punktmenge. Diese werden dargestellt durch Vektoren und Matrizen.
Vektoren
Notation:
- Größe definiert durch einen Betrag (magnitude)
- Richtung (direction) definiert im Raum
- Grafische Darstellung als Pfeil -> Länge und Richtung
Komponentenform:
Betrag ähnl. Notation des Absolutwert:
Rechenregeln:
- Multiplikation mit einem reelen Skalar (positiv und negativ)
- Addition, Subtraktion und Vektoren
- -> siehe Vorlesung Lineare Algebra und Analytische Geometrie
- Skalarprodukt:
- Vektorprodukt:
Matrizen
- Matrixnotation:
- Multiplikation zweier Matrizen: “Zeile mal Spalte”
- Vektoren transformieren durch Matrizen:
Umsetzung
Mit diesen Grundlagen möchten wir nun Translation, Skalierung und Rotation kombinieren und umsetzen. Allerdings existiert keine 3x3-Matrix für die Translation eines 3D-Vektors.
Dieses Problem kann aber gelöst werden, indem wir eine neue Dimension hinzufügen -> homogene Koordinaten:
-> mit Skalierungsfaktor
Darstellung im Koordinatensystem: und §§ z_k = z/\omega $$
Translation
Eine Translation versetzt jeden Punkt eines Objektes um einen bestimmten Wert in einer Dimension:
Kombiniert mit homogenen Koordinaten können wir die Translation nun als einzige Matrizenmultiplikation darstellen:
Veranschaulichung:
Skalierung
Eine Skalierung , streckt das Objekt entlang der Achsen. Für jeden Punkt wird die neue Position mit den Skalierungsfaktoren ermittelt:
Darstellung als Matrixmultiplikation:
Veranschaulichung:
Man unterscheidet zwischen isotropischer und anisotropischer Skalierung. Das Bsp grade eben ist eine anisotropische Skalierung.
Die Skalierung wird auf jeden Vertex angewendet und daher kann diese auf eine beliebige Punktmenge eines Objektes angewandt werden. Allerdings ist dann die Wahl des Bezugspunktes wichtig => Ursprungspunkt der Skalierung. I.d.R. ist der Standard-Bezugspunkt der Objektmittelpunkt. Abweichende Bezugspunkte sind z.B. Median und Fixpunkt, Individueller Ursprungspunkt, Ursprungspunkt des aktiven Elements, etc.
Skalierungsfaktor:
> 1.0 | < 1.0 |
---|---|
höhere Entfernung vom Pivotpunkt | verringerte Entfernung vom Pivotpunkt |
Veranschaulichung - negativer Wert der Skalierungsfunktion:
Gegeben: , Pivot: Median
- Schritt - Mittelpunkt berechnen:
- Schritt - Rand berechnen:
- Schritt - Skalierte Punkte berechnen:
Rotation
Um eine Rotation ausführbar zu machen, muss zunächst eine Rotationsachse definiert werden. Im Folgenden Beispiel ist es einer der drei Hauptachsen.
Rotation um die z-Achse - :
Darstellung als Matrizenmultiplikation:
Veranschaulichung:
, ,
Bei der Rotation kann auch ein Pivotpunkt definiert werden, welcher dann die Rotationsachse(n) bestimmt.
Kombination aus Matrizen
Und ist es nun möglich einen Punkt bzw. ein Objekt im zu verschieben (Translation), vergrößern bzw. verkleiern (Skalierung) und zu drehen (Rotation). Diese können nun kombiniert werden, da wir diese als homogene Koordinaten (4x4 Matrix) mit Multiplikationen darstellbar gemacht haben.
Eine Gesamttransformation besteht aus einzelnen Transformationen:
- Matrixmultiplikationen sind nicht kommutativ ->
- Bei dem Produkt wird zuerst angewendet werden.
- Insgesamt sollte man darauf achten, die richtige Reihenfolge zu benutzen
Koordinatensysteme
Alle unsere Transformationen beziehen sich auf einen Ursprung. Welcher ist aber festgelegt? Dazu schauen wir auf das Weltkoordinatensystem, in dem alle Objekt untergebracht sind.
Im gibt es zwei Möglichkeiten die Achse zu definieren:
- Rechtssystem (RHS)
- Linkssystem (LHS)
Dazu nehmen wir unseren beide Hände zeigen sie offen nach oben und winkeln sie an. Das soll nun die horizontale und vertikale Achse darstellen. Nun schauen wir uns die letze Achse an. Zeigt sie nach links (also da wo der Daumen ist), dann bezeichnen wir sie als LHS, oder RHS, wenn die Achse nach rechts zeigt.
Zudem muss angemerkt werden, dass die Gesamtorientierung nicht einheitlich ist. Es haben sich einfach im Laufe der Zeit unterschiedliche Repräsentationen der Achsen eingebürgert.
Für unsere Transformationen benötigen wir aber unterschiedliche Bezugspunkte, weswegen wir auch verschiedene Koordinatensysteme brauchen.
Überblick - Koordinatensysteme (KS):
Deutsch | Englisch |
---|---|
Welt-KS | world space |
Objekt.KS | objekt space |
Kamera-KS | eye space |
Licht-KS | light space |
Bild-KS | image space, texture space |
Geräte-KS | screen space |
Momentan interessiert uns nur der Welt-KS und Objekt-KS.
Möchten wir nun eine Transformation durchführen, erwarten wir, dass sich unser Objekt um seine eigene Achse dreht, also umdie Objekt-KS. Umgesetzt wird diese aber anders:
- Verschiebung des Objektes in den Ursprung des Welt-KS.
- Rotation (oder andere Transformationen)
- Verschiebung des Objektes zu seiner ursprünglichen Position.
Veranschaulichung:
Problem:
Lösung:
Todo: Ebenfalls selbst malen - Bilder von André Kettner
Modellierungstechnik
Beim Beginn eines Projekts sollte man sich überlegen, welches typische Grundobjekt - Primitive - man wählt. Diese sind bereits parametrisiert, d.h. sie haben eine einheitliche Größe.
Anschließend kann die Bearbeitung des Modells beginnen - Transformation von Faces, Edges und Vertices.
Basics
sind Standard-Operationen auf bestimmte Elemente des Meshes.
Origins
Jedes Objekt hat einen virtuellen Center Point - Origin - welcher i.d.R. der Mittelpunkt der Geometrie ist.
Die Geometrie bezieht sich auf das Objektkoordinatensystem (z.B. beim Abspeichern), aber Transformationen werden trotzdem am Weltkoordinatensystem ausgeführt (siehe Mathematische Grundlagen - Koordinatensysteme).
Origins sind außerdem auch der Ursprung - Pivot Points - für Rotationen und Skalierung, d.h. eine Translation vom Origin auf den Ursprung des Weltkoordinatensystems stattfindet.
Duplikationen
Erstellt einen Klon, dbaei wird zwischen einer normalen Duplikation, Links - also Verknüpfungen bzw. Referenzen -, Prozedurale Duplikation - Erstellung von Klonen nach bestimmten Regeln - und Externe Duplikation - Einfügen von externen Objekten - unterschieden.
Tools
sind spezielle Modellierungswerkzeuge.
Glättung
ist eine Sukzessive Angleichtung der Winkel benachbarter Flächen, wodurch das Objekt runder und glatter wird, da die harten Kanten verändert werden.
Die Gemeotrie wird transformiert, d.h. sie wird nicht unterteilt, woduch die Anzahl der Elemente nicht verändert werden.
Extrusion
Durch parallele Verschiebung wird ein *höherdimensionales Elementes+ erzeugt. Anwendung auf:
- Punkt => neue Kante
- Kante => neuer Polygon
- Polygon => neuer Körper
Im Regelfall findet die Extrusion parallel zur Normalen statt.
Inset
In ein bereits existierenden Polygon werden Subpolygone nach innen eingefüt.
Unterteilung
Verfeinerung des Meshes, in dem Kanten in der Mitte geteilt werden und dadurch neue Vertices, Edges und Faces entstehen. Die Form bleibt gleich, aber die Topologie ändert sich.
Knife
Teilung eines Meshes entlang einer Linie nach Angabe des Artists.
Bevel
Bearbeitung von harten Kanten, indem der Artist die Tiefe (Offset) und Anzahl der Segmente angibt und damit dem Objekt einen natürlicheren Look verleiht.
Modifiers
Im Gegensatz zu Basics und Tools, ändern Modifier das Mesh nicht permanent, d.h. der originelle Zustand geht nicht verloren.
Unterscheidung von Modifier:
- Modify: keine Änderung der Geometrie - Änderung an Meshdaten
- Generate: Erzeugung von Geometrie
- Deform: Veränderung der Geometrie
- Simulate: Simulationsoperationen
Modifier sind wie eine Art Funktion, d.h. dass das Mesh als Eingabeparameter dient, welches durch ein spezifisch verändertes Mesh ersetzt wird. Die Änderungen sind beeinflussbar durch viele Parameter.
An einem Objekt können mehrere Modifier gleichzeitig wirken, aber nur in einer festgelegten Reihenfolge. Zusätzlich können die bereits eingerichteten Modifier zu jedem Zeitpunkt geändert werden.
Modifier können aber auch wie Tools/Basics verwendet werden, indem man die Änderungen “backt”, heißt die Parameter sind anschließend nicht mehr veränderbar und das Basismesh endgültig ersetzt.
Anwendungsbeispiele ist z.B. die sukzessive Erstellung eines Modelles oder Objekte zu verformen, ohne den Ausgangszustand zu überscheiben, welches nützlich für Animationen ist. Auch die Parameter der Modifier können bei Animationen verändert werden.
Ein paar Generate und Deform Modifier werden in den nächsten Zeilen erklärt.
Basics und Tools als Modifier
Folgende Basics und Tools sind auch als Modifier einsetzbar:
- Glättung: Reduzierung der Winkel benachbarter Polygone
- Bevel: Bearbeitung aller Kanten
- Solidify: Aus flachen Objekt -> 3D-Körper
- Triangulate: n-Gons -> Dreiecke
Array
erstellt eine beliebige Anzahl an Kopien eines Objektes. Dazu können verschiedene Regeln bestimmt werden. Die _Topologie des Basismeshes bleiben unverändert__, werden aber referenziert, was dazu führt, dass Änderungen am Basismesh auf die Kopien übertragen werden. Unter anderem können Fraktale Strukturen durch mehrdimensionale Arrays abgebildet werden.
Boolean
Nutzung von Boole’schen Operationen auf die gewünschte Geometrie.
Operationen:
- Subtraktion / Difference
- Vereinigung / Union
- Schnittmenge / Intersect
Es muss ein zweites Objekt als Parameter angegeben werden.
Das Objekt wird durch das Ergebnis der Modification ersetzt.
Decimate
Reduktion der Polygon-Anzahl des Meshes. Ggf. werden n-Gons davor trianguliert.
Verschiedene Reduktionsmethoden:
- Edge Collapse
- Un-Subdivide
- Planar
Anwendungsbeispiele sind die Bereinigung der Auflösung importierter Objekte und die Erstellung von verschiedenen Level-of-Detail(LOD)-Meshes. Zu LOD gibt es später mehr.
Mirror
Automatische Spiegelung der Geometrie anhand einer Ebene.
Die Ebene ist frei wählbar, überlicherweise wird die Hauptebene des lokalen Objektkoordinatessystems gewählt. Optional können Punkte auf der Spiegelungsachse verbunden werden.
Symmetrische Objekte sind das idealle Anwendungen für diesen Modifier.
Subdivision Surfaces
ist eine Formverändernde Unterteilung, d.h. die Kanten werden gleichmäßig geglättet. Je öfter diese wiederholt wird, desto runder und stärker unterteilt ist die Geometrie.
Die Wiederholungszahl kann seperat für das Modeling (View) und Rendering angepasst werden, d.h. dass man an einem vereinfachtem Mesh effizienter arbeiten kann und trotzdem das Rendering hübsch aussieht. Dadurch eignet sich dieser Modifier auch für LOD.
Der weiteste Verbreitester Algorithmus ist der Catmull-Clark (1978) (Namen der Entwickler).
Catmull-Clark Subdivion Surface Algorithmus:
- Ein neuer Punkt wird für jedes Polygon in der Mitte erzeugt.
- Für jede Kante werden neue Kantenpunkte als Mittel der Endpunkte und der neuen Facettenpunkte erzeugt.
- Neuberechnug der alten Punkten - kleine Priorität auf die neuen Facettenpunkte, in denen als Ecke enthalten ist und Kanten die enthalten.
- Verbinden der neuen Kantenpunkte mit den zugehörigen Facettenpunkten und der “alten” Eckpunkte mit den zugehörigen Kantenpunkten.
Zusätzlich werden n-Gons in n-Quads unterteilt, wodurch am Ende ein reines Quad-Mesh übrig bleibt.
Berechnung der Anzahl von Polygone:
Kubus:
*Quadrilateral:
Deform
Deformation eines Objektes anhand verschiedener Optionen:
- Twist: Rotation um eine Achse
- Bend: Verbiegung um eine Achse
- Taper: Verjüngung entlang einer Achse
- Stretch: Streckung entlang einer Achse
Lattice
Deformation eines Objektes anhand der Form eines “virtuellen” Lattice-Objekts, welches das gesamte Zielobjekt umfasst.
Vorteile:
- Deformation des gesammten Objektes -> Unabhängigkeit von Auflösung und Geometrie
- Entsprechend “glatte” und saubere Deformation
- Da die Deformation in ein seperates Objekt - also der Lattice - ausgelagert wird, kann diese mehrfach verwendet werden -> mehr Effizienz und weniger Aufwand
Shrinkwarp
Abbildung des Meshes eines Objektes auf die Oberfläche eines Andern. Man “umwickelt” das Objekt, wie ein Kleidungsstück.
Anwendung bei Kleidung, Beschiftung von Oberflächen und der Verteilung von Objekt auf Oberflächen.
Kamera
Die Kamera befindet sich auf einem Punkt im §§ R_3 $$ (eye), dabei ist die Blickrichtung - Orientierung - abhängig vom sog. “look-at”-Vektor.
Alternativ kann anstatt dem “look-at”-Vektor ein “Point-Of-Interest” (aka Coi, “Center-…”) benutzt werden, dieser Punkt beeinflusst dann den “look-at”-Vektor: .
Die Rotation ist abhängig von der “look at”-Achse, diese steht im Lot auf den “look-at”-Vektor und zeigt immer nach oben.
Zusätzlich zur Richtung der Kamera müssen noch weitere Eigenschaften geklärt werden.
Eigenschaften
- Auflösung (resolution)
- Auflösungsverhältnis (aspect ratio)
Linieneigenschaften:
- Brennweite (focal length)
- Field of View (**FOV): $$ focal length \alpha FOV^{-1}
- etc.
Eigenschaften für Render-Effekte:
- Tiefenschärfe (Depth of Field - DOF)
- Bewegungsunschärfe (Motion Blur)
Projektion
Vor der Projektion rechnen wir ins Kamera-Koordinatensystem um (view transform). Anschließend kann man Multiplikationen mit der Projektionsmatrix ausführen.
Orthogonale Projektion
Proportionen und Abstände sind besser abschätzbar, wodurch diese zur Modellierung besser geeignet ist. So können auch 2D-Darstellungen simuliert werden.
Wie man an der Formel erkennt, wird die Z-Koordinate anders behandelt. Dadurch entstehen verschiedene Probleme:
- Punkt mit ± Werten für z werden projiziert Objekte “hinter” der Kamera werden gerendert
- Die Projektion it irreversibel (z-Tiefeninformation geht verloren) insuffizient für Z-Buffering
Aufgrund der Probleme werden i.d.R. der durch die Clipping Planes (top, bottom, right, left, near, far) definierte Quader in den Ursprung transformiert und auf die Größe des Einheitswürfel skaliert.
Perspektivische Projektion
Gewohnte Sichtweise des Menschen. Wird benutzt in der Renderingvorschau.
Beispiel: Projektionsebene entland der _negativen z-Achse -> Position
Gesucht: Punkt als Projektion von Punkt auf die Projektionsebene.
Punkt gegeben durch:
d.h.
Matrix, die die oben genannte Projektion abbildet: , also:
Probe:
Transformationen von homogenen zu kartesischen Koordinaten:
Die Projektion ist nicht invertierbar, d.h. z-Werte gehen verloren geringe Erweiterung von um die Clipping Planes des Hüllvolumens
Polygonale Netze
verschiedene Darstellungen eines 3D-Modells:
- Polygonale Netze (Meshes)
- Parametrische Kurven und Flächen (Patches)
- Constructive Solid Geometry (CSG)
- Implizit, prozedural
Hinweis: Wir konzentrieren uns in nachfolgenden Themen primär auf Polygonnetze. Hier werden aber alle angeschnitten!
Grundlagen
Ein Objekt besteht aus einer Mengen an Polygonen, wodurch Krümmungen durch Annäherung passiert. Je höher die Polygonanzahl, desto genauer ist die Annäherung.
Allerdings besteht zwischen realer Fläche und Mesh kein fester Bezug. Der Artist muss das klarstellen! Außerdem sind Polygon im Programm leider begrenzt auf Form und Punktanzahl (viele Programme akzeptieren inzwischen Abweichungen von der “3-Punkt”-Regel).
Praktischerweise existieren für Poly-Netze effiziente Schattierungsalgorithmen!
Poly-Netze sind am gebräuchlichsten in CGI und Games, deswegen wird es auch hier primär besprochen.
Anforderungen
Einem Polygon können technische Anforderungen gestellt:
- planar
- Punktanzahl
- Geschlossenheit
- Überschneidungsfrei
- Konvexität
- Frei von Löchern
Sollte die Punkteanzahl > 3 sein, dann ist das Polygon nicht zwangsweise planer und konvex!
Das Programm entscheidet letztendlich die Grenzen, trotzdem muss der Artist auf die Sauberkeit des Meshes achten!
Topologie und Geometrie
Geometrie: Koordinaten von Vertices
d.h. exakte Position und Form der Topologie
z.B. P1 (2, 4), P2 (3, 5)
Topologie: Struktur des Netzes
d.h. Information über Verbindungen zwischen Elementen unabhängig von Position und Form.
z.B. E1 = P1 & P2
Normalen
Ein Normalenvektor ist eine wichtige Eigenschaft eines Polygons.
Dieser ist definiert als senkrecht zur Polygonfläche stehender Vektor und muss daher berechnet werden: Produkt zweier Vektoren, definiert durch drei nicht-kollineare Punkte.
Die Normale wird i.d.R. als Einheitsvektor angegeben -> Normierung:
=> Eine Ebene kann definiert werden als einen Normalenvektor und einen Punkt auf der Ebene.
Praktischerweise kann der Normalenvektor nun nur in 2 Orientierungen** zeigen, also der Ober- und Unterseite des Polygons. Die Seiten sind abhängig von der Repräsentation des Koordinatensystems (RHS oder LHS).
Ein Problem entsteht durch z.B. die Rotation. die Normalenvektoren können sich willkürlich ändern, wodurch der Artist dieser wieder richten muss. Glücklicherweise gibt es dazu Tools!
Und warum aber nun Normalen?
Sie werden benutzt für Berechnungen an verschiedenen Stellen der Pipeline z.B. Beleuchtung, Schattierung, Rendering,…
Deswegen besitzen Vertices, Edges und Faces Normalen!
Die Vertex Normals werden durch Mittelung der umgebenden Polygonnormalen bestimmt:
Normalen werden nochmal besprochen bei dem Thema “Materialien”.
Level of Detail (LOD)
Vor allem in Videospielen ist es oft gewollt schöne Objekte (besonders Charaktere) zu erstellen, wodurch aber die Polygonanzahl ansteigt.
Aber:
- anspruchsvoller für den Computer.
- nicht jedes Objekt ist in der Szene sichtbar
- weit entfernte Objekte sind nicht aus der Entfernung nicht sehr wichtig
Lösung: Ein Mesh wird in verschiedene Detailliserungsgrade (Entfernung <-> Auflösung) erstellt.
Also d.h. bei der Benutzung von LOD muss folgendes beachtet werden:
- Modell muss in unterschiedlichen Auflösungen erstellt sein
- Beim Rendern muss das zur Entfernung passende Modell herangezogen werden
- LOD-Management (what exactly?)
Umsetzung
Automatisches Erstellen von simplerer Meshes -> Edge Collapse Methode:
Problem: Manche Kanten kollabieren nicht optimal aneinander!
Weiteres Problem: Bei dieser Form von LOD-Wechsel besteht das Makel, das die Sprünge sehr sichtbar sind -> popping
Lösung: Switching:
- Diskrete Geometrie -> popping
- lineares Blending zwischen zwei LOD-Stufen
- Alpha-LODs: Transparenz Abstand
Alpha-LODs: Übergehender Übergang zwischen Zustand A zu Zustand B, indem Zustand A ausgeblendet wird, während Zustand B eingeblendet wird.
LOD: Culling -> Besprechung in Vorlesung “Computergrafik”
Nachteile von Polygon-Netzen
- gekrümmte Flächen können nur durch Annäherung dargestellt werden
- Änderung der Genauigkeit -> Aufwand steigt
- Kein fließender Übergang zwischen verschiedenen Genauigkeiten
- Genauigkeit ist nicht skalierungs-unabhängig
Um die Nachteile von Polygon-Netzen zu umgehen wurden Parametrische Patches entwickelt.
Parametrische Patches
sind ±±mathematisch beschriebene, gekrümmte Flächen. Ein Objekt wird aus **mehreren Patches zusammengesetzt.
Aufgrund der Formel-Darstellung ist jeder Punkt des Patches exakt analytisch festgelegt, wodurch LOD einfacher umsetzbar ist.
Eine mögliche Metapher im : Pixelgrafik (Netze) vs. Vektorgrafik (Patches)
Mathematische Grundlage
Parametrische Kurve: mit
Parametrische Fläche: mit und
Dieses Flächenelement ist definiert als Patch.
Mehr zu Patches und deren mathematische Grundlage gibt es in der VL Computergrafik.
Normalen:
- Jeder Punkt des Patches hat eine eigene Normale
- Kreuzprodukt aus den Tangenten beider Richtungen
Berechnung einer param. Fläche :
- Tangenten gegeben durch und
- (unnormierte) Normale gegeben durch
Bézier
ist eine weit verbreite parametrische Kurve die von Paul de Caseljau und Pierre Bézier entwickelt wurde.
Der Kurvenverlauf ist beeinflussbar durch Position und Anzahl der Kontrollpunkte, wobei der Grad dieser Bézierkurve ist. Steigt die Anzahl der Kontrollpunkte, so steigt auch der Rechenaufwand.
Übertragen auf das sprechen wir von einem Bézier-Patch.
Spline
Verbindung mehrerer Kurven ist nicht zwingend stetig. Stetigkeit wird erricht, wenn zwei verbindenden Kontrollpunkte kollinear sind.
Eine Aneinanderreihung wird als Spline bezeichnet. Hier: Bézier-Spline
Eigenschaften von Bézier-Splines
- Kurve bleibt in der Konvexen Hülle des Kontrollpolygons
- Kontrollpunkte haben einen globalen Einfluss (in unterschiedlichen Maße)
- Transformation durch Kontrollpunkte
- Kurvenverlauf ist durch Transformation invariant (?)
Störfaktoren:
- Eingeschränkte lokale Editierbarkeit
- Skalierender Aufwand mit Anzahl der Kontrollpunkte (Aneinanderreihung nötig)
B-Splines
Eigenschaften:
- Einfluss ist lokal beschränkt
- Grad unabhängig von der Anzahl der Kontrollpunkte
- Kurve führt analog Bézier nicht zwingend durch die Kontrollpunkte
- Gleiches gilt innerhalb der konvexen Hülle
- Transformation analog zu Bézier
- Ordnung bestimmt EInfluss der Kontrollpunkte
Spezielle B-Splines:
- Uniformität: Einfluss eines Kontrollpunktes ist konstant
- Rationalität: Analytische Beschreibung ist als Verhältnis ausdrückbar
=> NURBS: Non-Uniform Rational B-Splines
Anwendungsbeispiele von NURBS
- Verbreitet in der Konstruktion (CAD)
- NURBS-Modeler: Rhinocerus, Mol, nPower
Prozedurales Modellieren
Gemeotrie wird anhand einer oder mehreren Regeln generiert. Die Regeln können mathematische Funktionen oder beliebe Algorithmen sein. Prozedurale Methoden sind stark unterschiedlichen in deren Komplexitätsgrad und bieten ein intensiver Forschung.
Parameter des Algorithmus schaffen Gestaltungsmöglichkeiten für den Artist.
Allgemeine Beispiele:
- Fraktale Formen
- Geländegeneration
- Städtegeneration
- Architektur
- Pflanzen, Wald, Gras
- Biologische Strukturen, Neuronen, Korallen,…
In Games:
- Prozeduraler Levelaufbau -> Daggerfall, Diablo, Minecraft, Binding of Isaac
- Pozedurale Animation -> Morrorwind, Spore
- Pozedurale Eigenschaften -> Borderlands
- Pozedurale Umgebungseffekte -> Left 4 Dead 2
Animation
Animationstechniken
Man unterscheidet zwischen High- und Lowleveltechniken der Animation, der Übergang ist fließend.
Einordnung | Technik |
---|---|
Lowlevel | Parametrisches Keyframing |
Pfadanimation (Splined Animation) | |
Soft-Object Animation | |
Kinematik und inverse Kinematik | |
Prozedurale Techniken | |
>Dynamik für Partikel | |
>Analytische Modelle (Simulation) | |
V | >Mimik und Gestik |
Stochastische Animation | |
Highlevel | Verhaltens-Animation (Pathfinding, AI) |
Parametrisches Keyframing
Die Eigenschaften (Parameter, z.B. Pos, Rot, etc.) zu zwei Zeitpunkten (Keyframes) werden angegeben, dazwischen wird ein Übergang interpoliert oder approximiert. Bei der Interpolation liegen alle berechneten Punkte genau auf der Kurve, bei der Approximation wird eine Boundingbox (eine Art Toleranzbereich) um die Kurve gelegt, in der alle Punkte liegen.
Problem: Arc Length: Wenn die Punkte ungleich nah beieinander liegen, kann es passieren, dass die Änderungsgeschwindigkeit der Parameter auf der Kurve variiert. Die Meißten Programme (so auch Blender) gleichen diesen Effekt jedoch automatisch aus. Man spricht dabei von Reparametrisierung.
Rigid Body Transformations: Auf diese Weise ist es auch möglich, die Translation, Rotation und Skalierung des Objekts zu interpolieren. Irgendwas mit Rotation macht hier Probleme. Wieso ist 3D so kopliziert?
whaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat
/me ist verwirrt