Zwischenergebnisse - Dynamisches Hautmodell für Muskelbasierte Gesichtsanimation
Technische Universität Hamburg-Harburg
The Parallel Computing Group
Dynamisches Hautmodell für Muskelbasierte Gesichtsanimation
Studienarbeit im Studiengang Informatik-Ingenieurwesen
Pawel Kazakow
27.10.2006
Betreuer: Prof. Dr. Helmut Weberpals
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Zwischenergebnisse 27.10.2006 - Dynamisches Hautmodell für Muskelbasierte Gesichtsanimation
1. Dynamisches Hautmodell
für Muskelbasierte Gesichtsanimation
Zwischenergebnisse 27.10.2006
www.muskelbasierte-gesichtsanimation.de
Präsentation: Pawel Kazakow
Betreuer: Prof. Helmut Weberpals
Technische Universität Hamburg-Harburg
2. Inhalt
Neuer Titel und Thema der Arbeit
Geplanter Inhalt der Arbeit
Gewähltes Hautmodell
Aktueller Stand der Implementierung
Implementierung der Federverbindungen
Berechnung des Offset-Polygons
Direkte Offset-Methoden
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
3. Neuer Titel der Arbeit
Dynamisches Hautmodell für Muskelbasierte
Gesichtsanimation
Hauptthema der Arbeit ist die Untersuchung bereits vorhandener
Hautmodelle und Umsetzung eines geeigneten Hautmodells für
muskelbasierte Gesichtsanimation.
Anschließend soll dieses Hautmodell durch Federmuskeln und
Bewegung des Unterkiefers getestet werden.
Nebenthema der Arbeit ist die Untersuchung verschiedener
Muskelmodelle. Eines davon wird zum Testen des Hautmodells
verwendet.
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
4. Inhalt der Arbeit - Vorbereitung
Vergleich der Verfahren für Gesichtsanimation
Direkte Manipulation der Hautgeometrie, Morphing
Muskelbasierte Gesichtsanimation
Untersuchung vorhandener Hautmodelle
Hautmodell von Kähler
Schichtenmodell
Kurzbeschreibung von Maya
Polygone, Federn, Partikelsystem, Dynamik
Konzept von Maya API
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
5. Inhalt der Arbeit - Implementierung
Automatische Erzeugung der Haut aus vorhandener
Hautgeometrie
Berechnung und Bereinigung des Offset-Polygons
Erzeugung der Federverbindungen innerhalb der Haut
Verbindung der Haut mit Knochengeometrie
Hilfsfunktionen für Extraktion der Knochengeometrie aus der
Haut
Muskelmodelle
Untersuchung verschiedener Modelle
Manuelle Umsetzung des Federmodells
Testen der Haut
Bewegung des Unterkiefers
Einbau von Federmuskeln
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
6. Hautmodell
Hautmodell von Kähler (verworfen)
hält nicht die Form bei fehlendem Knochen
sehr künstliches Modell (einschichtig, Spiegelknochen)
Schichtenmodell
formhaltend auch bei fehlendem Knochen
Modell näher am Vorbild (Knochen, Haut mit eigenem Volumen)
Hautgeometrie (gegeben)
Federverbindungen
Unterhaut (Offset-Polygon)
Knochen (Offset-Polygon)
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
7. Aktueller Stand der Arbeit
Maya API
Verschiebung von Polygonknoten – erledigt
Erstellung von Federverbindungen – erledigt
Erstellung eines SpringNode
Erstellung einer Benutzeroberfläche
Offset-Polygon
Knotenverschiebung entlang der Durschnittsnormalen – erledigt
Berechnung der optimalen Verschiebungsentfernung
Bereinigung von Überlappungen
Effiziente Suche der überkreuzten Flächen
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
8. Federverbindungen – Implementierung in MEL
Erstellung von Federverbindungen mit MEL
schnell implementiert: Hinzufügen von Federn zum vorhandenen
Federknoten (SpringNode) mit dem Befehl spring -add …
Skript funktioniert nur bei kleinen Polygonen
Skript versagt bei großen Polygonen:
Hautgeometrie mit ca. 60 000 Punkten
nach ca. 3 Minuten Rechenzeit läuft der Speicher voll (1,5 GB),
der Skript wird abgebrochen
Kleine Verbesserung durch Abschalten des
Konstruktionsverlaufs constructionHistory -tgl off
nach ca. 7 Minuten Rechenzeit läuft der Speicher wieder voll,
der Skript wird abgebrochen, es werden nur ca. 20 000 von
6 x 60 000 Federn erstellt
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
9. Federverbindungen – Implementierung in C++ (Maya API)
Erstellung von Federverbindungen in Maya nicht dokumentiert!
Entscheidende Hinweise liefert die .ma-Datei: mit MEL-Befehl
SetAttr werden Federverbindungen dem SpringNode nach und
nach hinzugefügt
Im Wesentlichen legen die Int32Array-Attribute point0 und
point1 die Knotennummern fest, die die einzelnen Federn
verbinden und objekt0 und objekt1 bestimmen zu welchem der
verbundenen Objekte die Knotennummern gehören:
createNode transform -n "spring1";
createNode spring -n "springShape1" -p "spring1";
...
setAttr ".obo" -type "Int32Array" 4 0 0 0 0 ; // object1 (obo)
setAttr ".obz" -type "Int32Array" 4 1 1 1 1 ; // object0 (obz)
setAttr ".pto" -type "Int32Array" 4 1 2 3 3 ; // point1 (pto)
setAttr ".ptz" -type "Int32Array" 4 0 0 1 2 ; // point0 (ptz)
...
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
10. Federverbindungen – Implementierung in C++ (Maya API)
MEL-Befehl
setAttr ".object1" -type "Int32Array" 4 1 0 3 2;
Äquivalenter C++ Code
MFnDependencyNode fnSpring(...);
MPlug plug_object1 = fnSpring.findPlug("object1", true, &Status);
MObject ref;
plug_object1.getValue(ref);
MFnIntArrayData fnIntArray(ref, &Status);
MIntArray int32array_object1(fnIntArray2.array());
int32array_object1.setLength(4);
int i = 0;
int32array_object1[i++] = 1;
Der Plug-In erstellt innerhalb von ca.
int32array_object1[i++] = 0;
int32array_object1[i++] = 3; einer Sekunde alle 6 x 60 000 Federn,
int32array_object1[i++] = 2; ohne Speicherprobleme.
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
11. Offset-Polygon - Methoden
Offset-Berechnung ein komplexes mathematisches Problem!
Indirekte Offset-Methode (IOM)
keine Überschneidungen
aufwändig in der Implementierung
hohe Rechenzeit
verändert die Topologie
keine triviale Knotenzuordnung für Federverbindungen
Direkte Methode (DOM)
Überschneidungen müssen nachträglich entfernt werden
Beibehaltung der Topologie
Federverbindungen einfach: Kanteniterierung
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
12. Offset-Polygon – Direkte Offset-Methoden
Direkter Offset in 2D: einfach
In einem Punkt schneiden sich genau zwei Geraden
Richtung: Summe der Normalenvektoren der Geraden
Entfernung: Satz von Pythagoras
Richtung und Entfernung ergeben eindeutige Position
Direkter Offset in 3D: eine Herausforderung
Verschiebungsrichtung und -Entfernung in 3D zu finden
Nachträgliche Entfernung der Überschneidungen
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
13. Offset-Polygon – Direkte Offset-Methoden
Probleme bei einem direkten Offset in 3D:
In einem Punkt können sich beliebig viele Ebenen* schneiden
Beibehaltung der Parallelität nur bei maximal drei Ebenen
Keine optimale Verschiebungsmethode bekannt
* Ebenen werden durch Polygonflächen beschrieben
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
14. Offset-Polygon – DOM: Schnittpunkt von drei Ebenen
Aufwändige Berechnung: Gaußalgorithmus
Beibehaltung der Parallelität
In der triangulierten Hautgeometrie schneiden sich meistens
sechs Ebenen in einem Punkt:
Nur bei genau drei Ebenen anwendbar, deshalb ungeeignet!
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
15. Offset-Polygon – DOM: Vertexnormale
Schnelle Berechnung der Verschiebungsrichtung
aus dem Durchschnitt der Flächennormalen, kann außerdem in
Maya API direkt ausgelesen werden:
Durchschnittliche Flächennormale = Vertexnormale
Parallelität wird i. d. R. nicht beibehalten
Entfernung muss noch berechnet werden
Verschiebung aller Knoten um die gleiche Entfernung kann
zu Überschneidungen führen
Methode für die Berechnung einer optimalen Entfernung
noch nicht gefunden
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
16. Offset-Polygon – Probleme der Vertexnormalen
Die Durchschnittsnormale gibt oft nicht die optimale Richtung vor!
Beispiel: eine Pyramide mit geneigter Spitze
Flächennormalen Durchschnittsnormalen
Durchschnittsnormale in der Spitze: keine optimale
Verschiebungsrichtung
Verschiebung in diese Richtung führt zu Überschneidung
Abhilfe: Berechnung einer gewichteten Durchschnittsnormalen
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
17. Offset-Polygon – Existenz der Optimalrichtung
Ursache des Problems:
ungleichmäßige Verteilung von Flächen um den Knoten
Annahme:
es gibt eine optimale Verschiebungsrichtung der
Pyramidenspitze, sodass bei beliebiger positiver
Verschiebungsentfernung keine Überschneidung zwischen
Offset- und Original-Polygon entsteht.
Bedingung (folgt aus Annahme):
Ist die Verschiebungsrichtung optimal, so ist die Relation
(größter / kleiner) zwischen zwei Verschiebungsentfernungen
gleich der Relation zwischen allen Winkeln zwischen Original-
und Offset-Ebenen (z. B. erhöht man die
Verschiebungsentfernung, so werden alle Winkel zwischen
Original- und Offset-Ebenen größer).
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
18. Offset-Polygon – Existenz der Optimalrichtung
Beweisversuch:
O. B. d. A. für Parallelverschiebung von sechs Ebenen um den
gleichen Abstand entstehen zwei Schnittpunkte. Die Mitte der
Geraden, die diese Schnittpunkte verbindet, müsste der neue
optimale Offsetpunkt sein.
Bei einem beliebigen Abstand für Parallelverschiebung müsste
die Richtung der Geraden durch den Original- und Offset-Punkt
stets konstant bleiben.
Für einen gemeinsamen Schnittpunkt muss die Parallelität
aufgegeben werden: alle Ebenen neigen sich zur Mitte der
Verbindungsgerade zweier Schnittpunkte. Folglich werden alle
Winkel zwischen Original- und Offsetebenen größer sein mit
steigender Verschiebungsentfernung, was die Bedingung erfüllt.
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
19. Offset-Polygon – DOM: Gewichtete Vertexnormale
In der Optimalrichtung gesehen, würden die Flächennormalen
etwa folgendes Bild ergeben:
Die Durchschnittsnormale zeigt nicht in die Optimalrichtung
(aus der Präsentationsfolie hinaus), sondern nach oben:
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
20. Offset-Polygon – DOM: Gewichtete Vertexnormale
Grund: die Flächennormalen sind nicht gleichmäßig um den
Optimalvektor verteilt
Ansatz für die Gewichtung: je mehr Flächennormalen pro
Winkeleinheit, desto weniger wird ihre Richtung gewichtet:
Problem: Optimalrichtung nicht vorher bekannt
Lösungsidee: Gewichtung über die Ähnlichkeit (Projektion der
Richtungen aufeinander) der Flächennormalenrichtungen
wählen, aber wie genau?!
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
21. Offset-Polygon – DOM: Kantenrichtung
Bisher wurde versucht den neuen Schnittpunkt ausschließlich aus
Flächennormalen zu bestimmen.
Die Kantenrichtungen wurden vernachlässigt. Eine Flächennormale
ergibt sich aus dem Kreuzprodukt zweier Kantenvektoren und enthält
die Durchschnittsrichtung der Kantenvektoren nicht:
Durchschnittsrichtung
der Kantenvektoren
Flächennormale
Polygonfläche
Kantenvektoren
Kantenrichtung eines Punktes:
Durchschnittliche Richtung aller Kanten, die sich in diesem Punkt
schneiden
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
22. Offset-Polygon – DOM: Kantenrichtung
Verschiebung in die Kantenrichtung erfüllt für die
Pyramidenspitze die aus der Annahme gefolgerte Bedingung
und ist damit die optimale Verschiebungsrichtung.
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
23. Offset-Polygon – DOM: Kantenrichtung
Diese möglicherweise optimale Verschiebungsrichtung erweist
sich in der Praxis als problematisch.
Vorzeichenproblem: Die Kantenrichtung zeigt nicht immer nach
außen, sodass einige Punkte gegen die Offset-Richtung
verschoben werden.
Offset-Richtung
Weiß: Original-Polygon, grün: Offset-Polygon
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
24. Offset-Polygon – DOM: Kantenrichtung
Lösung für das Vorzeichenproblem: im Normalfall zeigen alle
Vertexnormalen nach Außen der Polygonfigur. Zeigt die
Kantenrichtung nach innen, so wird sie negiert.
Annahme: Die Kantenrichtung zeigt nach innen, wenn ihr
Winkel zu der Vertexnormalen 90° überschreitet.
Diese Korrektur produziert ein neues Problem an den Punkten,
wo der Winkel in der Nähe von 90° liegt…
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
25. Offset-Polygon – DOM: Kantenrichtung
Abhilfe: Einberechnung der Vertexnormalen in den Durchschnitt
der Kantenrichtungen. Die Kantenrichtung wird vorher negiert,
wenn der Winkel nicht zwischen 80° und 100° beträgt.
Fazit Kantenrichtung:
Gute Ergebnisse nur bei künstlichen Beispielpolygonen
Trotz Verbesserungen, Ergebnis beim komplexen Kopf schlecht
Für die Praxis nicht geeignet
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
26. Vergleich: Kantennormale und Vertexnormale
Vergleich: Blau: Originalpolygon
Rot: Kantenrichtung
Gelb: Vertexnormale
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006
27. Vergleich: Kantennormale und Vertexnormale
Kantenrichtung Original Vertexnormale
Offset-Entfernung: 2
Bisher beste Ergebnisse in der Praxis: Vertexnormale
Pawel Kazakow
Dynamisches Hautmodell - Zwischenergebnisse Oktober 2006