View on GitHub

GE-Kempten.github.io

Inoffizieller Wiki des Studiengangs Informatik Game Engineering and der Hochschule Kempten

Modellierung und Animation 1

Kompetenzen

Abgrenzung

Diese Aspekte sind nicht Ziel dieses Faches:

Themen

Todo: (* Anzahl)

Einführung

Geschichte

Anfang

Gertie the Dinosaur

multiplane camera

Computeranimation (CA)

70er:

80er:

90er:

CA in Games

Bringt Nachteile mit:

  1. Echtzeitfähigkeit
    • geringere Qualität/Komplexität
    • Mehraufwand für Artist z.B. Level of Detail
  2. Weitere Limitationen:
    • Sound
    • Spielphyik wird live ausgewertet z.B. Kollistionsberechnung
    • Event-Handling
  3. 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

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:

Komponentenform:

Betrag ähnl. Notation des Absolutwert:

Rechenregeln:

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:

Ein cooles Beispiel

Kombiniert mit homogenen Koordinaten können wir die Translation nun als einzige Matrizenmultiplikation darstellen:

Veranschaulichung:

Noch ein cooles Bild

Skalierung

Eine Skalierung , streckt das Objekt entlang der Achsen. Für jeden Punkt wird die neue Position mit den Skalierungsfaktoren ermittelt:

Mega cooles Bild

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

  1. Schritt - Mittelpunkt berechnen:
  2. Schritt - Rand berechnen:
  3. 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 - :

Super Mega cooles Bild

Darstellung als Matrizenmultiplikation:

Veranschaulichung:

, ,

1 cooles Bild

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:

Cooles Picture

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:

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:

  1. Verschiebung des Objektes in den Ursprung des Welt-KS.
  2. Rotation (oder andere Transformationen)
  3. Verschiebung des Objektes zu seiner ursprünglichen Position.

Veranschaulichung:

Problem: Bild 1

Lösung: Bild 2

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.

Beispiel

Extrusion

Durch parallele Verschiebung wird ein *höherdimensionales Elementes+ erzeugt. Anwendung auf:

Im Regelfall findet die Extrusion parallel zur Normalen statt.

Beispiel

Inset

In ein bereits existierenden Polygon werden Subpolygone nach innen eingefüt.

Beispiel

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.

Beispiel

Knife

Teilung eines Meshes entlang einer Linie nach Angabe des Artists.

Beispiel

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.

Beispiel

Modifiers

Im Gegensatz zu Basics und Tools, ändern Modifier das Mesh nicht permanent, d.h. der originelle Zustand geht nicht verloren.

Unterscheidung von Modifier:

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:

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:

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:

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:

  1. Ein neuer Punkt wird für jedes Polygon in der Mitte erzeugt.
  2. Für jede Kante werden neue Kantenpunkte als Mittel der Endpunkte und der neuen Facettenpunkte erzeugt.
  3. Neuberechnug der alten Punkten - kleine Priorität auf die neuen Facettenpunkte, in denen als Ecke enthalten ist und Kanten die enthalten.
  4. Verbinden der neuen Kantenpunkte mit den zugehörigen Facettenpunkten und der “alten” Eckpunkte mit den zugehörigen Kantenpunkten.

Step-by-Step

Zusätzlich werden n-Gons in n-Quads unterteilt, wodurch am Ende ein reines Quad-Mesh übrig bleibt.

Berechnung der Anzahl von Polygone:

Kubus:

Graph

*Quadrilateral:

Graph

Vergleich

Deform

Deformation eines Objektes anhand verschiedener Optionen:

Referenzbilder

Lattice

Deformation eines Objektes anhand der Form eines “virtuellen” Lattice-Objekts, welches das gesamte Zielobjekt umfasst.

Vorteile:

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 und Auflösungsverhältnis

Linieneigenschaften:

FOV

Eigenschaften für Render-Effekte:

Projektion

Vor der Projektion rechnen wir ins Kamera-Koordinatensystem um (view transform). Anschließend kann man Multiplikationen mit der Projektionsmatrix ausführen.

Orthogonale Projektion

Ortho

Proportionen und Abstände sind besser abschätzbar, wodurch diese zur Modellierung besser geeignet ist. So können auch 2D-Darstellungen simuliert werden.

Vor- und Hinterprojektion

Wie man an der Formel erkennt, wird die Z-Koordinate anders behandelt. Dadurch entstehen verschiedene Probleme:

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.

Clipping Planes

Perspektivische Projektion

Persp

Gewohnte Sichtweise des Menschen. Wird benutzt in der Renderingvorschau.

Beispiel: Projektionsebene entland der _negativen z-Achse -> Position

Beispielprojektion

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:

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:

Bild mit Erklärung hinzufügen

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.

Beispiel - Normalenvektor

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:

Lösung: Ein Mesh wird in verschiedene Detailliserungsgrade (Entfernung <-> Auflösung) erstellt.

Also d.h. bei der Benutzung von LOD muss folgendes beachtet werden:

Umsetzung

4-Stufen Diagramm

Automatisches Erstellen von simplerer Meshes -> Edge Collapse Methode:

Edge Collapse

Problem: Manche Kanten kollabieren nicht optimal aneinander!

Edge Collapse - Problem

Weiteres Problem: Bei dieser Form von LOD-Wechsel besteht das Makel, das die Sprünge sehr sichtbar sind -> popping

Lösung: Switching:

Alpha-LODs: Übergehender Übergang zwischen Zustand A zu Zustand B, indem Zustand A ausgeblendet wird, während Zustand B eingeblendet wird.

Diagramm

LOD: Culling -> Besprechung in Vorlesung “Computergrafik”

Nachteile von Polygon-Netzen

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:

Berechnung einer param. Fläche :

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.

Beispiel Bézier

Ü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

Störfaktoren:

B-Splines

Eigenschaften:

Spezielle B-Splines:

=> NURBS: Non-Uniform Rational B-Splines

Anwendungsbeispiele von NURBS

Coole Bilder

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:

In Games:

Beispielbilder

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