Sie sind auf Seite 1von 83

T ECHNISCHE U NIVERSITT H AMBURG -H ARBURG T HE PARALLEL C OMPUTING G ROUP

Dynamisches Hautmodell fr Muskelbasierte Gesichtsanimation


Studienarbeit im Studiengang Informatik-Ingenieurwesen

Pawel Kazakow Hamburg, 23. Februar 2007

Betreuer: Prof. Dr. Helmut Weberpals

Eidesstattliche Erklrung
Ich versichere an Eides statt, dass ich die vorliegende Arbeit selbstndig und ohne fremde Hilfe angefertigt habe. Die verwendeten Quellen sind im Text kenntlich gemacht und im Literaturverzeichnis vollstndig aufgefhrt. Die Versicherung bezieht sich auch auf in der Arbeit gelieferte Abbildungen.

Datum:

Unterschrift:

Inhaltsverzeichnis

Vorwort Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Einfhrung 2 Anatomie des menschlichen Kopfes 2.1 Schdel . . . . . . . . . . . . . . . 2.2 Gesichtsmuskeln . . . . . . . . . . 2.3 Haut . . . . . . . . . . . . . . . . . 2.3.1 Epidermis . . . . . . . . . . 2.3.2 Dermis . . . . . . . . . . . 2.3.3 Subcutis . . . . . . . . . . . 2.3.4 Vereinfachungen . . . . . . 3 Entwicklungsumgebung 3.1 Autodesk Maya . . . . . . . . . . . 3.1.1 Grundlagen . . . . . . . . . 3.1.2 Programmierschnittstellen . 3.1.3 Dynamikanimation in Maya 3.1.4 Federn in Maya . . . . . . . 3.2 Microsoft Visual Studio . . . . . . . 4 Muskelmodelle 4.1 Erzeugung der Muskelgeometrie . 4.1.1 Flchenduplikation . . . . 4.1.2 Pfadextrusion . . . . . . . 4.2 Steuerung der Muskelkontraktion . 4.2.1 Skalierung . . . . . . . . 4.2.2 Kraftfeld . . . . . . . . . 4.2.3 Pfadkontraktion . . . . . . 4.2.4 Kontraktion mit Federkraft

1 2 3 5 5 6 7 8 9 9 10 11 11 11 13 15 16 21 23 23 23 24 24 25 25 26 30

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

ii 5 Hautmodelle 5.1 Hautfedernetz . . . . . . . . . . . . . . 5.2 Einfaches Hautmodell . . . . . . . . . . 5.2.1 Implementierung . . . . . . . . 5.3 Hautmodell von K. Khler et al. . . . . 5.3.1 Implementierung . . . . . . . . 5.3.2 Experimente . . . . . . . . . . 5.3.3 Untersuchung . . . . . . . . . . 5.4 Hautmodell von Y. Lee et al. . . . . . . 5.4.1 Modizierung des Hautmodells 5.4.2 Implementierung . . . . . . . . 5.4.3 Ergebnisse . . . . . . . . . . . 5.4.4 Untersuchung . . . . . . . . . .

Inhaltsverzeichnis 35 35 36 36 37 37 38 39 41 41 42 44 44 47 47 47 48 49 49 50 51 51 53 55 57 57 59 60 60 62 62 62 63 64 64 65 67 68 i

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

6 Offset 6.1 Einfhrung . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Idealer und optimaler Offsetpolygon . . . . . . . 6.2 Offsetmethoden . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Indirekte Offsetmethoden (IOM) . . . . . . . . . 6.2.2 Direkte Offsetmethoden (DOM) . . . . . . . . . 6.3 Punktverschiebung bei einer direkten Offsetmethode . . 6.3.1 Direkter Offset von Polygonkonturen . . . . . . 6.3.2 Direkter Offset von Polygonoberchen . . . . . 6.3.3 Verschiebung entlang der Durchschnittsnormalen 6.3.4 Verschiebung in Kantenrichtung . . . . . . . . . 6.4 Selbstberschneidungen . . . . . . . . . . . . . . . . . 6.4.1 Erkennung von Selbstberschneidungen . . . . . 6.5 Behebungsmethoden . . . . . . . . . . . . . . . . . . . 6.5.1 Nachtrgliche Behebung . . . . . . . . . . . . . 6.5.2 Vermeidungsmethode . . . . . . . . . . . . . . . 6.6 Implementierung . . . . . . . . . . . . . . . . . . . . . 6.6.1 Offsetwerkzeuge von Maya . . . . . . . . . . . 6.6.2 Offset-Plug-In fr Maya . . . . . . . . . . . . . 6.6.3 Verschiebung von Punkten . . . . . . . . . . . . 6.6.4 Erkennung von Selbstberschneidungen . . . . . 6.6.5 Behebung von Selbstberschneidungen . . . . . 6.7 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

Zusammenfassung Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Literaturverzeichnis

Inhaltsverzeichnis Abbildungsverzeichnis Glossar Index

iii iii v vii

Vorwort

Danksagung
An dieser Stelle mchte ich mich ganz herzlich bei Prof. Dr. Helmut Weberpals bedanken, dass er mich ermutigt hat, eine Arbeit zu diesem interessanten Thema zu schreiben und fr seine anhaltende Untersttzung bei der Erstellung dieser Arbeit.

Aufbau
Im Kapitel 2 wird die Anatomie des menschlichen Kopfes sowie der Gesichtsmuskulatur vorgestellt. Dabei wird besonders auf die fr die Gesichtsanimation relevanten Merkmale eingegangen. Im Kapitel 3 werden die wesentlichen Eigenschaften der Software Autodesk Maya beschrieben. Im Abschnitt 3.1.4 wird die direkte Verwaltung von Federn in Maya beschrieben, die so nirgends dokumentiert ist. Die Federn werden u. a. zur Darstellung des elastischen Verhaltens der Gesichtshaut verwendet. In den Kapiteln 4 und 5 werden Hautund Muskelmodelle vorgestellt und analysiert, die ich in Maya zum Teil in Anlehnung an vorhandene Modelle implementiert habe. Das Kapitel 6 beschftigt sich mit der Erstellung einer Offsetoberche, die fr die Implementierung eines doppelschichtigen Hautmodells ntig ist.

Formale Konventionen
Da es keine deutschsprachige Version der Software Autodesk Maya und ihrer Dokumentation gibt, habe ich die dort verwendeten Begriffe ins Deutsche bertragen. Dabei habe ich bersetzungen hnlicher Begriffe aus anderen bekannten Softwareprodukten herangezogen. An einigen Stellen habe ich die englische Version des Begriffs in Klammern dazugeschrieben.

Vorwort

Zur Hervorhebung von Begriffen und zur Kennzeichnung von Denitionen wird Kursiv eingesetzt. Fr Programmfragmente, Befehle, Klassennamen und Attribute wird Courier verwendet. Mens und Optionen der graschen Benutzeroberche von Maya sind in Fettschrift dargestellt. Die Mens sind im Format Mensatz: Men | Untermen angegeben. Wenn ein Men immer verfgbar ist, wird der Mensatz ausgelassen.

Voraussetzungen
Zum Verstndnis dieser Arbeit sind gute Kenntnisse der objektorientierten Programmierung in C++ und Erfahrungen mit der Software Autodesk Maya erforderlich. Im Kapitel 3 werden die wesentlichen Merkmale der Architektur und Programmierschnittstelle von Maya nur kurz beschrieben.

Markenrechtlicher Hinweis
Die in dieser Arbeit wiedergegebenen Firmen- und Markennamen knnen auch ohne besondere Kennzeichnung geschtzte Namen oder Marken sein und sind Eigentum des jeweiligen Herstellers.

Testumgebung
Autodesk Maya 7.0 lief auf einem Rechner unter Microsoft Windows XP (32-Bit) ausgefhrt. Der Rechner ist mit einem Prozessor AMD Athlon64 3400+ mit 2,2 GHz, einem Arbeitsspeicher von 1,5 GB und einer Grakkarte nVidia Quadro FX 3000 ausgestattet. Alle Angaben ber Rechenzeiten beziehen sich auf diese Testumgebung.

1 Einfhrung
Unsere Gefhlsregungen oder sprachlichen uerungen zeichnen sich in zumeist sehr differenzierter Form in unseren Gesichtsausdrcken ab. Da wir stndig verbal oder auch nonverbal mit Mimik kommunizieren, haben wir die Bedeutung vielfltiger Gesichtsausdrcke erlernt und in unserem visuellen Gedchtnis gespeichert. Hierdurch knnen wir die Gefhlslage unseres Gegenbers richtig einschtzen und bei entsprechender bung zumindest teilweise sogar Wrter von den Lippen unseres Kommunikationspartners ablesen. Die visuell im Gedchtnis eingeprgten und sehr fein abgestuften Gesichtszge stellen fr die Modellierung und Animation von Gesichtsmodellen ein erhebliches Problem dar, weil selbst eine geringfgige Abweichung vom natrlichen Vorbild leicht als Fehler registriert wird. [7] Kommunikation ist ein wichtiger Bestandteil unseres menschlichen Lebens, ganz besonders die nonverbale Kommunikation. Die Krpersprache ist darin ein wesentlicher Bestandteil. Nach den Forschungen des Pantomimen und Hochschullehrers Samy Molcho erzeugt der nonverbale Anteil an unserer Kommunikation ber 80 Prozent der Reaktionen. Das Hauptziel der Gesichtsanimation in der Computergrak ist die realittsnahe Simulation der Mimik, also der sichtbaren Bewegungen des menschlichen Gesichts. Zur Gesichtsanimation gehren auch Augen- und Zungenbewegungen. Sie sind fr einen realistischen Gesamteindruck sehr wichtig. In dieser Arbeit beschrnke ich mich auf die Simulation der Hautbewegungen, denn sie stellt die grte Herausforderung dar.

Parametergesteuerte Gesichtsanimation Die ersten Versuche, realistisch wirkende Gesichter zu synthetisieren, wurden bereits am Anfang der Siebzigerjahre mit der parametergesteuerten Gesichtsanimation unternommen. [7] Hierbei wird durch Anwendung verschiedener Transformationen die Geometrie der Gesichtshaut direkt verndert. Ein bekanntes und sehr verbreitetes Verfahren ist das Morphing. Bei diesem Verfahren wird eine Palette mit Gesichtsausdrcken vordeniert. Jeder Gesichtsausdruck wird dabei

1 Einfhrung

durch die Verschiebung der Punkte der originalen Hautgeometrie bestimmt. Die originale Hautgeometrie beschreibt das Gesicht mit neutralem Gesichtsausdruck bei entspannter Gesichtsmuskulatur. Durch berlagerung der Gesichtsausdrcke aus dieser Palette mit verschiedener Gewichtung knnen weitere Gesichtsausdrcke erzeugt werden. Mit Interpolation sorgt man fr einen weichen bergang von einem Gesichtsausdruck zum anderen. Bei der parametergesteuerten Gesichtsanimation hngt das Ergebnis stark vom knstlerischen Geschick und der Erfahrung jenes Benutzers ab, der die Gesichtsausdrcke gestaltet. Bei jedem neuen Gesicht muss dann allerdings die ganze Arbeit wiederholt werden, oder es mssen aufwndige Anpassungen durchgefhrt werden.

Muskelgesteuerte Gesichtsanimation Die muskelgesteuerte Gesichtsanimation bedient sich der Kenntnis ber die Mechanik von Haut und Muskeln, ber die Anatomie des menschlichen Gesichtsmuskelsystems sowie ber das Zusammenwirken der einzelnen Gesichtsmuskeln. Das erste Muskelmodell wurde Ende der Achtzigerjahre von Keith Walters vorgestellt. [7] Whrend ein medizinischer Eingriff mit sehr genauen Nachbildungen der Anatomie geplant werden muss, knnen in der Computergrak bereits stark vereinfachte Modelle zu guten Ergebnissen fhren. Bei der muskelbasierten Gesichtsanimation muss man also ein stark vereinfachtes Modell fr ein virtuelles Gesicht suchen, das bei kurzer Rechenzeit und mglichst in Echtzeit optisch sehr realistische Animationsergebnisse liefert. Auch wnschenswert ist ein universelles Muskelmodell, das mit mglichst wenig Aufwand an ein neues Gesicht angepasst werden kann. Durch Kontraktion einzelner Muskeln gelingt es, den Gesichtsausdruck zu steuern. Ein Gesichtsmodell ist umso besser, je weniger es von der Kunstfhigkeit des Animators abhngt.

2 Anatomie des menschlichen Kopfes


Um ein muskelbasiertes Gesichtsmodell zu erstellen, ist es wichtig, den Aufbau des Kopfes mit seinen Knochen, seiner Haut und seiner Gesichtsmuskulatur zu kennen. In diesem Kapitel ndet man einen groben berblick ber die Anatomie des menschlichen Kopfes mit Hinweisen auf Vereinfachungen, die bei der Modellierung gemacht werden.

2.1 Schdel
Der Schdel des Menschen besteht aus ber zwanzig Knochenpartien, die miteinander ber Knochennhte verbunden sind. Anatomisch unterscheidet man den Hirnschdel, der das Gehirn stabil umhllt und den Gesichtsschdel, der die Grundlage fr das Gesicht bildet. [2]

Abbildung 2.1: Schdel und der Unterkieferdrehpunkt nach [8] Der richtige Abstand zwischen Haut und Knochen sowie die Form des Gesichtsschdels

2 Anatomie des menschlichen Kopfes

sind fr die Gte der Gesichtsanimation entscheidend. In dieser Arbeit verwende ich ein sehr stark vereinfachtes Schdelmodell. Die Schdelform wird von der Hautoberche abgeleitet. Der bewegliche Unterkiefer wird vom Schdel getrennt. Der Mensch kann nicht nur den Mund ffnen, sondern seinen Unterkiefer auch nach vorne und zur Seite bewegen. Es wird jedoch nur das ffnen betrachtet werden.

2.2 Gesichtsmuskeln
Die Abbildung 2.2 zeigt jene Muskelpartien, die fr die Mimik und das Sprechen wichtig sind. Dabei werden drei Muskeltypen unterschieden: die Linearmuskeln, die Schliemuskeln und die Flchenmuskeln.

Abbildung 2.2: Gesichtsmuskeln nach [7] Die Linearmuskeln sind am hugsten im Muskelsystem des Gesichtes vertreten. Sie kontrahieren auf einen Fixpunkt zu. Die Schliemuskeln, die Mund und Augenlieder umgeben, sind ring- oder ellipsenfrmig und haben Kontraktionszentren. Flchenmuskeln sind brei-

2.3 Haut

te Muskelbnder, die aus einer Vielzahl von parallelen Linearmuskeln zusammengesetzt sind. [7] In dieser Arbeit werde ich nur einen Teil der Gesichtsmuskeln nachbauen. Fr Experimente habe ich mir einige besonders markante Gesichtsmuskeln ausgewhlt, die ich im Folgenden vorstellen mchte. Die Buchstaben beziehen sich auf die Abbildung 2.2. a Der Augenbrauenheber (musculus frontalis) ist ein Flchenmuskel und liegt in ganzer Breite ber der Stirn bis zum Haaransatz hin. Dieser Muskel wirkt beim Anheben der Augenbrauen mit. [2] g Der Mundringmuskel (musculus orbicularis oris) umschliet den Mund ringfrmig. Er ist an keinem Knochen xiert, sondern wird von anderen Muskeln gehalten. Daher ist er besonders beweglich. Der Muskel schliet die Mundffnung und beeinusst die Lippenstellung. Er formt die Laute, dient zum Schrzen der Lippen oder kann diese gegen die Zhne drcken. [7], [2] k Der Lachmuskel (musculus zygomaticus major) setzt an der Haut des Mundwinkels sowie der Oberlippe an und ist am Jochbogen des Schdels befestigt. Er kann den Mundwinkel nach auen und nach oben ziehen. Seine Kontraktion drckt Lachen oder Vergngen aus. [7], [2] l Der Lippendehnmuskel (musculus risorius) verluft von der Wangenhaut zu den Mundwinkeln. Er erzeugt Lachgrbchen, wenn er seitlich an den Mundwinkeln zieht. [7], [2]

2.3 Haut
Die Haut eines Erwachsenen wiegt zehn bis elf Kilogramm. Sie umfasst etwa zwei Quadratmeter. Damit ist die Haut das grte Organ des menschlichen Krpers. [11] Die menschliche Haut besteht von auen nach innen gesehen aus folgenden Schichten: - Epidermis (Oberhaut) - Dermis (Lederhaut) - Subcutis (Unterhaut)

8 - Fascia (innere Schicht)

2 Anatomie des menschlichen Kopfes

Unter der Subcutis liegen die Krperfaszien. Sie bestehen aus sehr festen Kollagenfasern. Je nach Krperregion folgen dann die Muskulatur, die Knochen, die Knorpel oder das Fett. [1]

Abbildung 2.3: Hautaufbau nach [11] Auf den Augenlidern ist die Haut nur 1,5 mm stark. Dagegen ist an den Fusohlen allein die Epidermis etwa 4 mm dick. Die Strke der Haut richtet sich nach der Krperregion und der dort bentigten Schutzfunktion sowie nach der Sensorik. Der Aufbau der Haut mit den beiden Schichten Ober- und Lederhaut ist jedoch in allen Krperbereichen gleich. [11]

2.3.1 Epidermis
Die Epidermis ist die oberste Hautschicht. Sie setzt sich aus fnf unterschiedlichen Schichten zusammen: - Stratum corneum (Hornschicht) - Stratum lucidum (Glanzschicht)

2.3 Haut - Stratum granulosum (Krnerschicht) - Stratum spinosum (Stachelzellschicht) - Stratum basale (Basalschicht)

Die oberen drei Zellschichten bestehen aus verhornten, abgestorbenen Zellen. Die Stachelzellschicht und die Basalschicht bestehen aus lebenden Zellen. Sie sorgen praktisch immer fr den Nachschub fr die drei oberen Hautschichten, in denen Hautzellen stndig abgestoen werden. Beim Verschluss von Wunden werden, ausgehend von der Basalschicht der gesunden Hautteile, neue Hautzellen gebildet. Sie bedecken langsam die heilende Wunde. [1]

2.3.2 Dermis
Die Lederhaut ist eine elastische Hautschicht, die einen hohen Anteil locker verwobenes Bindegewebe enthlt. Sie ist in ihrem Aufbau ebenfalls in Schichten unterteilt: - Stratum papillare (Zapfenschicht) - Stratum reticulare (Netzschicht) Die Papillen der Zapfenschicht sind fest mit der darberliegenden Basalschicht der Epidermis verbunden. Sie sind durchzogen von feinen Blutgefen, die die Epidermis mit Nhrstoffen versorgen. In der Zapfenschicht benden sich auch die Rezeptoren fr Wrme, Klte und Tastsinn. [1] Die Netzschicht enthlt ein dichtes Netz aus Kollagenfasern parallel zur Krperoberche. Das Netz ist gefllt mit elastischem Bindegewebe. Zusammen macht diese Konstruktion die Festigkeit und die Elastizitt der Haut aus. [1]

2.3.3 Subcutis
Die Unterhaut besteht aus lockerem Bindegewebe, in das kleine Kissen aus Fett eingelagert sind. Durchzogen wird das Bindegewebe von Auslufern der festen Fasern der Lederhaut. Diese Fasern sind fest mit den unter der Subcutis liegenden Krperfaszien verbunden. So haben sie die Funktion von Haltebndern, die die Haut mit dem darunterliegenden

10

2 Anatomie des menschlichen Kopfes

Gewebe verbinden. Je nachdem, wie stark diese Haltebnder entwickelt sind, lsst sich die Haut auf ihrer Unterlage verschieben, auf dem Handrcken wenig, unter der Fusohle gar nicht. [1]

2.3.4 Vereinfachungen
Bei der Modellierung der Haut sollte man vermeiden, alle Schichten der Haut nachzubilden, da dies mit einem enormen Rechenaufwand verbunden wre. Es ist fr eine gute Animation auch gar nicht ntig. Ein Hautmodell beschftigt sich am besten nur mit der ueren Schicht (Oberhaut) und der inneren Schicht (Fascia). Die dazwischen liegende Dermis und Subcutis wird, als elastische Zwischenschicht zusammengefasst, eingeschoben.

3 Entwicklungsumgebung
3.1 Autodesk Maya
Maya ist eine professionelle, von der Firma Alias entwickelte, sehr verbreitete 3D-Visualisierungs- und Animationssoftware, die primr in der Film- und Fernsehindustrie sowie bei der Erstellung von Graken fr Computer- und Videospiele eingesetzt wird. Am 10. Januar 2006 wurde Alias von Autodesk, einem seiner grten Konkurrenten, bernommen. [2] Daneben wird Maya auch in der industriellen Fertigung, der Architekturvisualisierung und in der Entwicklung und der Forschung verwendet. Maya ist eines der bekanntesten und meistgenutzten Produkte im Bereich 3D-Modellierung, der Computeranimation und des Rendering. [2]

3.1.1 Grundlagen
Architektur

Das System von Maya ist in der Abbildung 3.1 schematisch dargestellt. Maya wird ber die grasche Benutzerschnittstelle bedient. Jede Aktion wird mit MELBefehlen (s. 3.1.2) dargestellt. Diese Befehle werden zur Ausfhrung an den Befehlsinterpreter gesandt. Die meisten MEL-Befehle arbeiten mit dem Abhngigkeitsgraphen. Der Grund dafr ist, dass der Abhngigkeitsgraph intuitiv als Szene gedacht werden kann. Eine Szene enthlt all die wichtigen Daten und Informationen, die eine 3D-Welt ausmachen, einschlielich der Objekte, Animation, Dynamik, Materialien usw. Der Abhngigkeitsgraph deniert nicht nur die Daten in der Szene, sondern auch wie diese Daten verarbeitet werden. [5]

12

3 Entwicklungsumgebung

Benutzerschnittstelle

MEL - Befehlsinterpreter

Abhngigkeitsgraph

Abbildung 3.1: System von Maya nach [5]

Abhngigkeitsgraph

Der Abhngigkeitsgraph, DAG (directed acyclic graph) oder einfach DG (dependency graph) ist der Kern von Maya. [5]

Der DAG basiert auf einer von Alias | Wavefront entwickelten und patentierten Technik. Sie unterscheidet sich stark von Konzepten anderer 3D-Anwendungen. Der DAG wurde nach dem Datenussparadigma implementiert: ein Datum durchluft von seiner Erzeugung bis zum Endergebnis eine Reihe von sequentiellen Operationen. Das Ergebnis einer Operation wird stets an die nchste Operation bergeben. Daten und Operationen werden in einem DG-Knoten gekapselt. [5]

Ein Knoten kann eine beliebige Anzahl von Anschlssen haben, deren Daten von Maya verwendet werden knnen. Jeder Knoten enthlt zustzlich einen Operator, der auf die Daten angewendet werden kann, um andere Daten damit zu erzeugen. Beliebige 3DAufgaben knnen durch die Verbindung einer Knotenreihe erledigt werden. Komplexe Modikationen beliebiger Daten knnen durch ein Knotennetzwerk realisiert werden. [5]

Bei der Verarbeitung der Daten wird nur das Ntigste berechnet. Erzeugt ein Knoten neue Daten, werden diese Daten durch die nachfolgend geschalteten Knoten erst dann verarbeitet, wenn das Ergebnis am Ausgang eines nachfolgenden Knotens von Maya wirklich gebraucht wird. Dieses Konzept macht Maya besonders exibel und efzient.

3.1 Autodesk Maya DG-Knoten

13

Knoten sind Grundbausteine von Maya. Abbildung 3.2 zeigt einen allgemeinen Knoten. Jeder Knoten wird durch Attribute gekennzeichnet. Zustzlich zu den Attributen enthalten alle Knoten die Funktion compute(). Diese Funktion wird auf einen oder mehrere Eingangsattribute angewendet und produziert eine oder mehrere Ausgabeattribute. Ein Knoten muss in erster Linie Daten speichern und auch modizieren. Die Daten werden in den Attributen des Knotens gespeichert. [5] Eine Szene wird durch den Abhngigkeitsgraphen vollstndig beschrieben, whrend der Abhngigkeitsgraph aus Serien von untereinander verbundenen Knoten besteht.

Knoten input output compute()

Abbildung 3.2: Allgemeiner Knoten nach [5]

3.1.2 Programmierschnittstellen
Maya ist fr jedermann offen. Man kann existierende Funktionen ndern oder neue Funktionen hinzufgen. Es gibt zwei Mglichkeiten Maya zu modizieren und zu erweitern, die im Folgenden beschrieben werden. [3]

Maya Embedded Language MEL ist ein Akronym fr Maya Embedded Language. Dies ist eine besondere Programmiersprache, die speziell fr die Arbeit in Maya entwickelt wurde. MEL ist eine Skriptsprache. Ein in MEL geschriebenes Programm erfordert keine Kompilierung. Es wird direkt ausgefhrt. Das ist besonders vorteilhaft zur schnellen Erstellung von kleinen Programmen. [5]

14

3 Entwicklungsumgebung

Die komplette Benutzerschnittstelle von Maya ist in MEL geschrieben und wird durch MEL gesteuert. Erstellung, Bearbeitung und Entfernung aller Steuerelemente erledigt MEL. Alle Befehle, die ein Benutzer mit der Maus ausfhren kann, knnen mit einem Programm in MEL beschrieben werden. [5] Wie jede interpretierte Sprache hat auch MEL den Nachteil, dass komplexe Programme wesentlich langsamer ausgefhrt werden als unter C++. In MEL ist es auerdem nicht mglich, einen DG-Knoten zu implementieren. [5]

Maya C++ API Maya bietet eine umfangreiche Schnittstelle fr die Entwicklung von Plug-Ins in C++, die die Funktionalitt von Maya erweitern. Ein in C++ entwickeltes Programm wird i. d. R. deutlich schneller ausgefhrt als ein gleichartiges MEL-Programm. Vorteilhaft ist auch, dass in C++ API neue DG-Knoten entwickelt werden knnen. Es gibt mehrere Typen von Plug-Ins [5]: Befehle (Commands) Eigene Befehle knnen jede Funktionalitt der in Maya eingebauten Befehle haben, einschlielich Rckgngig/Wiederherstellen (undo/redo), Hilfe, vollstndigen Zugriff auf die Szene und jede Kombination von Argumenten. Im Gegensatz zu MEL knnen in C++ externe Bibliotheken verwendet werden. DG-Knoten (Dependency Graph Nodes) Mit der C++ API kann man eigene DG-Knoten erstellen. Sobald der Knoten in Maya registriert worden ist, kann er wie jeder andere Standardknoten erstellt, entfernt und bearbeitet werden. Er kann jederzeit mit anderen Knoten verbunden werden. Eigene DG-Knoten werden also nahtlos in Maya integriert. Es gibt noch weitere Plug-In-Typen, die als spezielle DG-Knoten zusammengefasst werden knnen. In der C++ API operiert man auf einer Schicht ber dem Kern von Maya. Dabei lsst die API den Programmierer ber eine festgelegte Menge von Schnittstellen auf den Kern zugreifen, wodurch der Kern abgeschirmt ist. Die Abbildung 3.3 zeigt die verschiedenen Programmierschichten und wie sie miteinander kommunizieren. [5] Die C++ API besteht aus einer Reihe von Klassen, die in logische Hierarchien ihrem Typ nach unterteilt sind.

3.1 Autodesk Maya

15

Entwickler

C++ API

Maya-Kern

Abbildung 3.3: Maya C++ API nach [5] Im Gegensatz zum klassischen Ansatz fr Klassenentwurf gibt es in Maya C++ API keine gemischten Klassen. Es gibt Datenklassen, die Daten bereitstellen, und Funktionsklassen, die mit diesen Daten arbeiten. Die Namen aller Klassen in Maya C++ API fangen mit dem Prx an, das mit dem Buchstaben M beginnt. Das Prx sagt aus, um welche Klassenart es sich handelt: M Datenklasse (z. B. MObject, MPoint, M3dView) MPx Proxyobjekt (z. B. MPxNode) MIt Iteratorklasse (z. B. MItDag, MItMEshEdge) MFn Funktionsklasse (z. B. MFnMesh, MFnDagNode)

3.1.3 Dynamikanimation in Maya


Partikelobjekte, Weichkrper (soft bodies) und Starrkrper (rigid bodies) sind dynamische Objekte. Die Animation der Bewegung dynamischer Objekte erfolgt mit Kraftfeldern, Kollisionen, Federn, Emissionen, Zielen oder Partikelformeln (particle expressions). Maya berechnet die Dynamik von Frame zu Frame. Die Position eines Objekts in jedem Frame wird abhngig von seiner Position im vorigen Frame berechnet. Dies unterscheidet sich von der Schlsselbildanimation (keyframe animation), bei der die Position eines Objekts in jedem Frame aus den in dem Frame gesetzten Schlsselwerten berechnet

16 wird. [4]

3 Entwicklungsumgebung

3.1.4 Federn in Maya


Federmodelle zur Darstellung des elastischen Verhaltens der Gesichtshaut sind in der Gesichtsanimation weit verbreitet. [7] In diesem Abschnitt wird die Handhabung von Federn in Maya vorgestellt, und es wird gezeigt, wie man Federverbindungen direkt und damit sehr efzient verwalten kann. Diese Vorkenntnisse sind fr die Implementierung der Hautmodelle notwendig, mit denen sich diese Arbeit befasst. Einzelne Federn werden in einem Federknoten gespeichert. Die Federn eines Knotens knnen beliebig viele Objekte verbinden. Eine Szene kann beliebig viele Federknoten enthalten. Mindestens ein Ende einer Feder muss mit einem Partikel verbunden sein. Dabei ist ein Partikel in Maya ein dynamischer Punkt innerhalb eines Partikelobjekts oder eines Weichkrpers. Federn knnen in Maya sowohl Zug- als auch Druckkrfte ausben. Die Kraft wirkt dabei entlang der Geraden zwischen den Endpunkten der Feder. Der Federknoten selbst und jede einzelne Feder im Federknoten haben die Attribute Ruhelnge, Steigkeit und Dmpfung. Fr jedes dieser Attribute kann festgelegt werden, ob fr jede einzelne Feder oder fr alle Federn des Federknotens ein gemeinsamer Wert verwendet wird. Die Werte einzelner Federn knnen ber die grasche Benutzeroberche Window | General Editors | Component Editor auf der Registerseite Springs betrachtet und bearbeitet werden.

Abbildung 3.4: Abhngigkeitsgraph eines Federknotens In der Abbildung 3.4 ist ein Ausschnitt aus dem Abhngigkeitsgraphen zu sehen, der die Verbindungen zwischen einem Federknoten springShape1 und den durch die Federn beeinussten Objekte pPlaneShape1 und pPlaneShape1 zeigt. Wenn eines der Ob-

3.1 Autodesk Maya

17

jekte keinen Weichkrper hat, also kein Partikelsystem besitzt, wird mit den Federverbindungen automatisch ein spezieller Knoten geoConnector erstellt und mit diesem Objekt verbunden. Dieser Knoten stellt eine Schnittstelle zwischen blichen Geometrieobjekten und dem Dynamiksystem bereit.

Konvention zur Darstellung von Federn und Kanten In der Entwicklungsumgebung von Maya und auf Abbildungen in dieser Arbeit werden Federn mit gestrichelten Linien dargestellt. Diese Darstellung gilt auch fr Polygonkanten, die mit einer Feder zusammenfallen. Auf dreidimensionalen Abbildungen liegen sie am Rande oder innerhalb einer grau gefllten Polygonche und sind dadurch von jenen Federn unterscheidbar, die nicht mit einer Kante zusammenfallen (s. Abbildung 5.3). Auf zweidimensionalen Abbildungen werden Federn, die mit einer Polygonkante zusammenfallen, mit einem graugefllten Rechteck umrandet (s. Abbildung 5.2). Polygonkanten, die nicht mit einer Feder zusammenfallen, werden als durchgezogene Linie dargestellt oder zur strkeren Hervorhebung der Federverbindungen nicht eingezeichnet, sind aber als Rand einer grau gefllten Polygonche erkennbar (s. Abbildung 3.5).

Erstellung von Federn in MEL Man benutzt den MEL-Befehl spring, um ein Federobjekt oder weitere Federn zu erstellen. Die Syntax des Befehls lautet:

spring [flags] [obj[obj]..]

Der Befehl spring kann ber das Men Dynamic: Soft/Rigid Bodies | Create Springs aufgerufen werden. Dieser Befehl erstellt einen Federknoten und alle ntigen Verbindungen zu jenen Geometrieobjekten, die mit Federn verbunden werden sollen. Anschlieend werden Federverbindungen nach einer der drei folgenden Methoden erstellt: All Erzeugt Federn zwischen allen Punkten der ausgewhlten Geometrieobjekte. Im Komponentenmodus ist es mglich, Federn zwischen einzeln ausgewhlten Punkten zu erstellen.

18

3 Entwicklungsumgebung

MinMax Erzeugt Federn zwischen Punkten, die in einem angegebenen Abstandsbereich liegen. WireFrame Erzeugt Federverbindungen fr alle Kanten eines Polygonobjekts. Mit dem Schalter (ag) -addSprings knnen weitere Federn zu einem existierenden Federknoten hinzugefgt werden. Um beim Hinzufgen einzelner Federn Systemressourcen einzusparen, kann die Speicherung des Konstruktionsverlaufs deaktiviert werden mit: constructionHistory -tgl off; Ein Skript, das auf diese Weise versucht, einem Federknoten sehr viele Federverbindungen einzeln hinzuzufgen, wird nach zehn Minuten Rechenzeit abgebrochen. Es werden dann nur etwa 16 000 Federverbindungen erstellt. Wird der Konstruktionsverlauf nicht deaktiviert, luft der Arbeitsspeicher nach bereits drei Minuten ber, und es werden etwa 5 000 Federn erstellt. Fgt man dem Federknoten Federn nicht einzeln, sondern mit der Methode All hinzu, zeigt sich, dass das Hinzufgen von Federn prinzipiell schneller geht und es wird weniger Arbeitsspeicher beansprucht. So konnten innerhalb von zwei Minuten mit dem Befehl spring -allPoints ber 10 Millionen Federn erstellt werden.

Erstellung von Federn in C++ API Die C++ API kann mit der Klasse MPxSpringNode nur einen Federknoten mit einem benutzerdenierten Federgesetz erstellen. Das Plug-In-Beispiel simpleSpring.cpp aus dem Maya Development Kit (s. 3.2) demonstriert die Implementierung eines solchen Federknotens. Fr das Hinzufgen von Federn verwendet man ein separates MEL-Skript mit dem Befehl spring -addSprings. Weder die Hilfe von Maya noch eine umfangreiche Recherche im World Wide Web noch Fachliteratur konnten mir Hinweise liefern, wie ich direkt mit der C++ API einzelne Federverbindungen hinzufgen und lschen kann. Den entscheidenden Fortschritt brachte die Analyse der Szenendatei. In Maya kann eine Szene im Binr- oder im ASCII-Format gespeichert werden. Die ASCII-Datei enthlt dann ein in einem Texteditor lesbares MELSkript, das die Szenenelemente nacheinander erstellt und Attribute setzt. Die einzelnen Federn werden durch Setzen bestimmter Attribute des Federknotens erstellt.

3.1 Autodesk Maya

19

In der Abbildung 3.5 sind zwei einfache Polygonobjekte mit Federn verbunden. Als Erstes habe ich mit dem Befehl spring jene vier Federn erstellt, welche die Punkte mit gleichen Indizes verbinden. Anschlieend habe ich im Komponentenmodus die Feder zwischen den Punkten mit dem Index 3 gelscht und eine Feder innerhalb des unteren Polygonobjekts zwischen den Punkten 1 und 3 hinzugefgt.
2 0 3 1 0 3 1 2

Abbildung 3.5: Beispielobjekt mit Federn In der Szenendatei werden diese Federverbindungen wie folgt gespeichert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

... createNode transform -n "spring1"; createNode spring -n "springShape1" -p setAttr -k off ".v"; setAttr ".usps" no; setAttr ".udps" no; setAttr ".s" 50; setAttr ".d" 1; setAttr ".sps" -type "doubleArray" 5 setAttr ".dps" -type "doubleArray" 5 setAttr ".rps" -type "doubleArray" 5 setAttr setAttr setAttr setAttr setAttr ".vali" ".obz" ".ptz" ".obo" ".pto" -type -type -type -type -type "Int32Array" "Int32Array" "Int32Array" "Int32Array" "Int32Array" 5 5 5 5 5

"spring1";

1 1 1 1 1 ; 2 2 2 2 2 ; 1 1 1 1 1 ; 1 0 0 1 0 1 0 1 1 1 1 0 2 1 2 0 0 3 1 3 1 1 1 1 3 ; ; ; ; ;

// // // // // // // // // // // // // // //

Transformknoten Federknoten visible useStiffnessPS useDampingPS stiffness damping stiffnessPS dampingPS restLengthPS validIndex object0 point0 object1 point1

setAttr ".ms" 5; // minSprings ... connectAttr "springShape1.of[1]" "pPlane1ParticleShape.ifc[0]"; connectAttr "springShape1.of[0]" "pPlane2ParticleShape.ifc[1]";

Die einzelnen Attribute eines Federknotens sind in der Maya-Dokumentation [4] kurz erlutert. Es ist erkennbar, dass die Indizes jener Punkte, die eine Feder verbindet, in den Da-

20

3 Entwicklungsumgebung

tenfeldattributen point0 und point1 gespeichert werden. In object0 und object1 wird der Index des Objektes gespeichert, in dem der Punkt liegt. Es handelt sich dabei um den Index innerhalb jener Liste von Objekten, die der Federknoten miteinander verbindet. Die Feder zwischen den Knoten 1 und 3 ist in den Listen als letzte gespeichert. Sie verbindet die Knoten des Objekts mit dem Index 1; das ist das untere Polygon in der Abbildung 3.5. Die gelschte Feder bleibt vermutlich zur Leistungsoptimierung weiter gespeichert. Diese Feder ist aber ber das Datenfeld valid deaktiviert worden. Dem Datenfeld wird die Lnge der Liste ber das erste Element mitgeteilt. Zustzlich wird im Attribut minSprings die Lnge einzelner Datenfelder gespeichert. Ganz am Ende der Szenendatei werden die zuvor erstellen Objekte miteinander verbunden. Erst hier wird auch der Federknoten mit connectAttr mit den Polygonobjekten verknpft. Dabei ist der Federknoten nicht direkt mit den Polygonobjekten, sondern ber ihre Partikelsysteme verbunden. Die Partikel sind die Schnittstelle zwischen den Punkten eines Geometrieobjekts und dem Dynamiksystem. Die Punkte folgen den Partikeln und verndern so die Form des Polygons. Im Abhngigkeitsgraphen werden noch weitere Verbindungen zwischen dem Federknoten und den beteiligten Objekten hergestellt, auf die hier nicht eingegangen wird. Auf die Erstellung des Federknotens selbst und aller ntigen DG-Verbindungen in C++ API verzichte ich und erledige dies mit dem MEL-Befehl spring -allSprings. In der Objektliste wird dem MEL-Befehl von jedem Objekt jeweils ein Punkt bergeben, sodass nur ganz wenig provisorische Federn erstellt werden, der Federknoten aber mit allen beteiligten Objekten verbunden wird. Anschlieend wird auf den Federknoten der in C++ API implementierte MEL-Befehl angewendet, der die gewnschten Federverbindungen erstellt. Die provisorischen Federn werden dabei berschrieben. Die Federn knnen also durch den Zugriff auf bestimmte Datenfeldattribute des Federknotens verwaltet werden. In C++ mssen nun die quivalenten Zugriffe implementiert werden. Der nachfolgende Quellcode demonstriert dies.
1 2 3 4 5 6 7 8 9 10

MObject Spring; ... MFnDependencyNode fnSpring(Spring); // Zugriff auf Datenfeldattribute int index_Spring = <Federindex>; MObject ref; // Zugriff auf Datenfeldattribute vom MEL-Datentyp "Int32Array"

3.2 Microsoft Visual Studio


MPlug plug_restLengthPS = fnSpring.findPlug("restLengthPS", true); plug_restLengthPS.getValue(ref); MFnDoubleArrayData fnDblArray3(ref, &Status); MDoubleArray doublearray_restLengthPS(fnDblArray3.array()); double double_value = <Wert>; doublearray_restLengthPS[index_Spring] = double_value; // Zugriff auf Datenfeldattribute vom MEL-Datentyp "doubleArray" MPlug plug_validIndex = fnSpring.findPlug("validIndex", true); plug_validIndex.getValue(ref); MFnIntArrayData fnIntArray1(ref, &Status); MIntArray int32array_validIndex(fnIntArray1.array()); int int_value = <Wert>; int32array_validIndex[index_Spring] = int_value; // Zugriff auf einfache Attribute MPlug plug_minSprings = fnSpring.findPlug("minSprings", true); int int_arrayLength = int32array_validIndex.length(); plug_minSprings.setValue((int) int_arrayLength);

21

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Wird die Anzahl der Federn gendert, ist es wichtig, neben der Anpassung der Datenfeldlngen auch das Attribut minSprings auf die neue Federanzahl zu setzen, sonst kann Maya beim Start der Simulation abstrzen. Die vorher beschriebene Inefzienz des MEL-Befehls spring -addSprings ist vermutlich darauf zurckzufhren, dass die Datenfelder mit jeder Feder neu angelegt werden. Mit der C++ API knnen die Datenfelder von Anfang an in der richtigen Lnge angelegt werden. Dem Federknoten werden fertige Knoten- und Objektlisten bergeben. Es ist also auch denkbar, ein deutlich efzienteres MEL-Programm zu schreiben, in dem man den Befehl spring gar nicht nutzt, sondern fertige Listen mit setAttr wie in der MayaASCII-Datei dem Federknoten bergibt.

3.2 Microsoft Visual Studio


Microsoft Visual Studio ist eine umfangreiche Entwicklungsumgebung fr Mircosoft Windows, in der Programme in verschiedenen Programmiersprachen geschrieben und kompiliert werden knnen. Darunter fallen Visual Basic.NET, Visual C# und Visual C++. Visual Studio wird hauptschlich fr die Entwicklung von Programmen fr die Laufzeit-

22

3 Entwicklungsumgebung

umgebung Microsoft .NET Framework verwendet. Kompilierte Programme liegen dabei nicht im nativen Maschinencode vor, sondern in der Zwischensprache MSIL (Microsoft Intermediate Language). Der Zwischencode wird zur Laufzeit zum nativen Maschinencode kompiliert und unter berwachung von .NET Framework ausgefhrt. Ein solches Programm kann nur auf einem System ausgefhrt werden, auf dem .NET Framework installiert ist. Mit C++ ist es mglich, Quellcode auf konventionelle Weise zu einem nativen Maschinencode zu kompilieren, der kein .NET Framework zur Ausfhrung bentigt. Bei der Entwicklung von Maya Plug-Ins werden die Funktionen des .NET Framework nicht verwendet, sodass Plug-Ins auch auf Systemen ohne .NET Framework genutzt werden knnen. Alternativ kann der Quellcode mit einem frei verfgbaren Compiler wie z. B. GCC kompiliert werden.

Maya Development Kit Mit Maya 7.0 wird Development Kit ausgeliefert. Nach der Installation von Maya benden sich im Verzeichnis Maya7.0\devkit\ zahlreiche gut kommentierte Quellcodebeispiele in MEL und C++ mit Projektdateien fr Microsoft Visual Studio 2003.

Maya Plug-In Wizard Maya Plug-In Wizard ist ein Bestandteil des Maya Development Kit. Es handelt sich um einen Assistenten, mit dem Plug-In-Projekte fr Maya in Microsoft Visual Studio 2003 und 2005 schnell angelegt werden knnen. Zur Installation mssen die Dateien des Assistenten nach einer Textanleitung manuell in die dafr vorgesehenen Unterverzeichnisse von Visual Studio kopiert werden. Nach einer erfolgreichen Installation des Assistenten erscheint in Visual Studio unter den Projekttypen Visual C++ die neue Projektvorlage MayaPlugInWizard. Der Assistent bietet drei Projektvorlagen zur Auswahl: MEL Command, MEL Command with Undo/Redo und Dependency Graph Node. Abhngig von der gewhlten Vorlage werden verschiedene Dateien mit Codeblcken angelegt. Alle Einstellungen, die der Wizard an dem Projekt vornimmt, knnen auch manuell durchgefhrt werden.

4 Muskelmodelle
In diesem Kapitel werden einige Muskelmodelle und ihre Implementierung vorgestellt. Zur Vereinfachung wird auf die Simulation der Muskelverdickung bei der Kontraktion verzichtet. Es ist wichtig, einen zumindest einfachen aber funktionierenden Muskel zur Verfgung zu haben, um die Reaktion der virtuellen Haut auf die Muskelkontraktionen testen zu knnen.

4.1 Erzeugung der Muskelgeometrie


Zunchst muss die Geometrie der Muskeln erzeugt werden. Folgende Anstze sind denkbar: - Erzeugung der Muskelgeometrie unmittelbar aus der gegebenen Hautgeometrie; - Automatische Erzeugung der Muskelgeometrie aus der Hautgeometrie, untersttzt durch Benutzereingaben; - Anpassung einer vorhandenen Muskelgeometrie an die Form der gegebenen Hautgeometrie. In [9] implementiert K. Khler einen Muskeleditor. Die Lage der Muskeln wird in die gegebene Hautgeometrie grob vom Benutzer eingezeichnet. Die Muskelgeometrie wird abhngig von Benutzereingaben und Hautoberche automatisch generiert.

4.1.1 Flchenduplikation
Die einfachste Mglichkeit, eine Muskelgeometrie zu erhalten, ist, sie unmittelbar aus der Hautgeometrie zu erzeugen.

24

4 Muskelmodelle

In Maya werden dazu im Komponentenmodus Polygonchen der Hautgeometrie ausgewhlt, die ber dem gedachten Muskel liegen, und mit der Funktion Modeling: Edit Polygons | Duplicate Face in ein neues Polygonobjekt kopiert. Die Option Modeling: Polygons | Tool Options | Keep Faces Together muss aktiviert sein, sonst wird fr jede einzelne Flche ein neues Polygonobjekt mit eigenem Transformer erzeugt. Fr jede neue Hautgeometrie mssen die Muskeln erneut dupliziert werden. Der Benutzer wird dabei immer wieder mit der Herausforderung konfrontiert, den Verlauf des Muskels gut abzuschtzen und die richtigen Flchen auszuwhlen. Dabei knnen bedingt Abbildungen der menschlichen Gesichtsmuskulatur als Vorlage genutzt werden.

4.1.2 Pfadextrusion
Alternativ zu der Flchenduplikation kann ein Muskel durch Extrusion eines Prols entlang eines Pfades erzeugt werden. Der Pfad ist eine kubische NURBS-Kurve, die auf die Hautoberche entlang des gedachten Muskels gelegt wird. In Maya kann dazu Modeling: Create | CV Curve Tool genutzt werden. Das Zeichnen der Kurve erfolgt auf der Gesichtsoberche im Fangmodus Snap to Points, der mit dem MEL-Befehl snapMode -point true aktiviert wird. Als Extrusionsprol kann eine kurze Linie (lineare NURBS-Kurve mit zwei Punkten) verwendet werden, die tangential zur Hautoberche im Startpunkt des Extrusionspfades gelegt wird. Die erzeugte Muskelgeometrie kann durch Verschiebung der Kontrollpunkte des Extrusionspfades nachtrglich verndert und so an eine neue Hautgeometrie angepasst werden.

4.2 Steuerung der Muskelkontraktion


Die Steuerung der Muskelkontraktion und Entspannung kann durch direkte Deformierung der Muskelgeometrie erfolgen oder indirekt durch Einwirkung dynamischer Krfte.

4.2 Steuerung der Muskelkontraktion

25

4.2.1 Skalierung
Die einfachste Mglichkeit, die Kontraktion eines Muskels zu steuern, ist die Skalierung des ganzen Muskels um einen Bezugspunkt (scale pivot). Der Bezugspunkt kann manuell bestimmt werden, sodass der Muskel entweder wie ein Linearmuskel auf einen Anfangspunkt oder wie ein Schliemuskel auf einen Mittelpunkt kontrahieren kann. Der Bezugspunkt muss nicht mit einem Punkt der Muskelgeometrie zusammenfallen.
Bezugspunkt Muskel

Schdeloberflche

Abbildung 4.1: Skalierung eines konvexen Muskels Diese Methode ist bedingt fr die Schliemuskeln und nur fr einfache Experimente mit planaren Linearmuskeln geeignet. Ein nicht planarer Linearmuskel folgt bei der Kontraktion nicht der konvexen Schdeloberche, sondern dringt in den Schdel ein, da alle Punkte der Muskelgeometrie auf der krzesten Bahn zum Bezugspunkt bewegt werden. Die Abbildung 4.1 zeigt ein Schnittbild der Kontraktion eines konvexen Muskels. Als Bezugspunkt wurde ein Anfangspunkt des Muskels gewhlt. Die Strichlinien markieren die Bahnen, auf denen die Punkte des Muskels sich bei der Kontraktion bewegen.

4.2.2 Kraftfeld
Die Muskeln knnen unter Einwirkung einer radialen Kraft dynamisch kontrahieren. In Maya ist es mglich, jedem dynamischen Objekt ein eigenes Kraftfeld zuzuweisen, sodass dieses Kraftfeld ausschlielich auf das Objekt wirkt, dem es zugewiesen wurde. Damit ein Kraftfeld einen Polygonmuskel verformen kann, muss ber das Men Dynamics: Soft/Rigid Bodies | Create Soft Body ein Weichkrper erstellt werden. Die Verwaltung erfolgt im Editor fr dynamische Abhngigkeiten, der ber das Men Window | Relationship Editors | Dynamic Relationships gestartet wird. Fr die Entspannung und Formerhaltung des Muskels sorgen die Federverbindungen mit der Haut und den Knochen, wie es im Kapitel 5 beschrieben wird.

26

4 Muskelmodelle

Dieser Ansatz zeigt hnliche Schwchen wie die Kontraktion ber Skalierung, da auch hier die Punkte des Muskelpolygons dem Kraftfeld auf der krzesten Verbindungsstrecke zur Quelle folgen und so tendieren, in den Schdel einzudringen. Die Federverbindungen zum Knochen lenken die Punkte dabei zum Teil in die gewnschte Kontraktionsbahn.

4.2.3 Pfadkontraktion
Das Muskelmodell von K. Khler et al. ist dem Modell von Y. Lee et al. hnlich. Der Muskel besteht aus einem Bndel von Fasern, dessen Kontrollstruktur eine stckweise lineare Polygonkurve ist. Mit diesem Steuerpolygon sind geometrische Formen verbunden. Gleichmige Kontraktion des virtuellen Muskels wird ber einen numerischen Parameter gesteuert, der die Verkrzung und Deformation des Muskels verursacht. Die Punkte eines Linearmuskels bewegen sich dabei entlang des Steuerpolygons. [9] In diesem Abschnitt wird die Implementierung eines Muskelmodells vorgestellt, bei dem die Muskeln jeweils entlang eines Pfades kontrahieren. Das Eindringen des Muskels in den Schdel oder nach auen wie bei den vorher beschriebenen Modellen wird damit ausgeschlossen.

Vorbereitung Der Muskel wird direkt aus der Hautgeometrie erzeugt (s. 4.1.1). Fr je zwei benachbarte Punkte, deren Verbindungslinie mglichst senkrecht zum Kontraktionspfad liegt, wird ein Cluster erzeugt (Animation: Deform | Create Cluster). Die Punkte werden dadurch an ein Transformobjekt gebunden, mit dem die Pfadanimation mglich wird.

Animationspfade Die Bewegung eines Objekts kann in Maya durch Festlegung seiner Position zur Startund Endzeit animiert werden. Dabei bewegt sich das Objekt vom Start- zum Zielpunkt auf einer geraden Strecke. Mit einem Animationspfad lsst sich das Objekt an einen durch eine Kurve beschriebenen Animationsweg binden, sodass es sich entlang dieser Kurve vom Anfangs- zum Zielpunkt bewegt. Durch die Cluster wird mit Untersttzung des Fangmodus Snap to Points eine kubische NURBS-Kurve gelegt. Der Endpunkt der Kurve ist das Kontraktionsziel.

4.2 Steuerung der Muskelkontraktion


100

27

c1

c1

100

c1 c1 c1 c1 c1 c1 c1 c1 c1
100

c1

c1

Abbildung 4.2: Muskeln mit Kontraktionspfaden

Fr jeden Cluster wird ein Animationspfad erzeugt (Knoten motionPath auf Abbildung 4.3) mit der Kontraktionskurve als Pfadgeometrie (Animation: Animate | Motion Paths | Attach to Motion Path). Beim ersten Cluster, der im Startpunkt der Kurve liegt, sind keine weiteren Anpassungen ntig. Bei anderen Clustern muss der Startpunkt innerhalb der Kurve verschoben werden. Die Kurve ist ein eindimensionaler Raum. Der Ursprung liegt im Startpunkt der Kurve, der Endpunkt hat die Koordinate 1. Die Verschiebung des Startpunkts skaliert die Lnge des Animationspfades bei gleichbleibender Animationszeit fr den Durchlauf des Pfades, sodass alle Cluster den Kontraktionspunkt gleichzeitig erreichen wrden. Auf der Abbildung 4.2 ist eine sehr einfache Hautgeometrie zu sehen, in die drei Muskeln, der Augenbrauenheber, der Lachmuskel und der Lippendehnmuskel eingebaut wurden. Die Muskelgeometrie ist grau ausgefllt. Die Kontraktionskurven verlaufen etwa in der Mitte des jeweiligen Muskels. Die Cluster sind mit einem C gekennzeichnet. Die 1 markiert den Startpunkt fr den Animationspfad eines Clusters, die 100 den Zielpunkt. Die Abbildung 4.3 zeigt den Abhngigkeitsgraph eines pfadanimierten Clusters. Die Startposition des Clusters wird im Knoten positionMarker in dem Attribut localPositionX gespeichert. Dieser Knoten ist mit motionPath.positionMarkerTime[0] verknpft. Jeder Animationspfad hat zwei positionMarker fr die Start- und die Endposition innerhalb der Kurve. Der positionMarker fr die Endposition ist mit motionPath.positionMarkerTime[1] verknpft.

28

4 Muskelmodelle

Abbildung 4.3: Abhngigkeitsgraph eines Clusters mit Animationspfad Um die Startposition des Clusters zu ndern muss im Abhngigkeitsgraph der richtige positionMarker ausgewhlt werden. Die Verschiebung erfolgt durch Eingabe eines neuen Werts fr localPositionX im Attributeditor oder durch interaktive Verschiebung mit der mittleren Maustaste. Dazu muss das Manipulatorwerkzeug mit der Taste T aktiviert werden.

Steuerung der Kontraktion Nach diesen Arbeitsschritten kontrahiert der Muskel abhngig von der Zeit. Die Position des Clusters innerhalb des Animationspfades wird ber das Attribut motionPath.uValue gesteuert. Dieses Attribut ist mit der Schlsselbildtabelle verknpft, die Eingangswerte auf Positionen innerhalb der Kurve abbildet. Ist das Attribut Input nicht verknpft, wird die Zeit als Eingangswert verwendet.

Abbildung 4.4: Steuerung der Muskelkontraktion ber ein benutzerdeniertes Attribut Zur bequemen Steuerung verschiedener Muskeln wird ein Locator erstellt, ein Objekt, das in der Szene sichtbar ist und ausgewhlt werden kann, aber nicht gerendert wird. Diesem Objekt wird ein benutzerdeniertes Attribut hinzugefgt und ber den Knoten unitToTimeConversion mit dem Attribut Input der Animationstabelle verknpft (s. Abbildung 4.4). Die Verknpfung erfolgt im Verknpfungseditor Window | General Editors | Connection Editor. Der Knoten unitToTimeConversion wird automa-

4.2 Steuerung der Muskelkontraktion

29

tisch eingefgt. Auf diese Weise wird das Attribut mit den Pfadanimationen aller Cluster verknpft, die fr den Muskel erstellt wurden.

Experimente

Das Muskelmodell wurde an einer einfachen Hautgeometrie mit ca. 600 Polygonchen getestet. Die Haut wurde nach dem einfachen Hautmodell (s. 5.2) implementiert. Der Kopf wurde mit dem Augenbrauenheber, dem Lachmuskel und dem Lippendehnmuskel auf der rechten und linken Seite ausgestattet. Die Abbildung 4.5 demonstriert, wie sich die Kontraktion des Lachmuskels links und Augenbrauenhebers rechts auf die Hautoberche auswirken.

(a) Muskeln entspannt

(b) Muskeln angespannt

Abbildung 4.5: Auswirkung der Kontraktion des Lachmuskels links und Augenbrauenhebers rechts

30 Untersuchung

4 Muskelmodelle

Das Muskelmodell liefert bei dieser einfachen Hautgeometrie optisch gute Ergebnisse. Die manuelle Implementierung ist sehr aufwndig und bei einer komplexeren Hautgeometrie nicht zumutbar. Besonders schwierig ist die Bestimmung der Startpunkte fr die Cluster, da der Fangmodus Snap to Points bei der interaktiven Verschiebung des Startpunkts nicht untersttzt wird. Fr die Schliemuskeln ist dieses Modell nicht anwendbar. Die Simulation von ineinander verochtenen Muskeln ist nicht direkt mglich. Der Muskel ist mit einem festen Pfad verbunden. Dadurch knnen Muskeln der Haut und dem Knochen nur bedingt folgen, sodass der Mund nicht weit aufgemacht werden kann.

4.2.4 Kontraktion mit Federkraft


Der Aufbau und die Funktion eines mit Federkraft gesteuerten Muskels ist dem natrlichen Vorbild sehr hnlich. Die Idee dahinter ist, den Muskel hnlich wie die Haut als Weichkrper mit einem Federsystem zu modellieren. Der Muskel soll sich dann durch die Zugkraft der Federn kontrahieren. Die erste Herausforderung besteht darin, in Maya einen Weg zu nden, die Federkraft zu kontrollieren.

Federkraftsteuerung ber die Ruhelnge Beim Erstellen von Federn mit dem MEL-Befehl spring wird jeder Feder eine Ruhelnge zugeordnet, die dem Abstand der damit verbundenen Punkte gleicht. Wird der Punktabstand vergrert bzw. vermindert, wirkt die Feder mit Zug- bzw. Druckkrften auf die beiden Punkte und versucht stets ihre Ruhelnge zu erreichen. In der Ruhelnge wirkt die Feder nicht. Es ist mglich, die Kontraktion des Federmuskels ber die Ruhelnge zu steuern. Verringert man die Ruhelnge, ziehen sich die Federn auf die neue Ruhelnge zusammen und bewirken damit die Kontraktion des Muskels. Das Problem dabei ist, dass nach dem

4.2 Steuerung der Muskelkontraktion

31

Erstellen eines Federsystems nicht auf die einzelnen Ruhelngen der Federn steuernd zugegriffen werden kann.1 Nur die fr alle Federn gemeinsame Ruhelnge kann ber das Federknotenattribut gesteuert werden. Dazu wird das Attribut useRestLengthPS deaktiviert. Prinzipiell kann die Steuerung der Kontraktion ber die gemeinsame Ruhelnge realisiert werden, ist aber in der Praxis nicht anwendbar, da sie eine Muskelgeometrie mit quidistanten Knoten voraussetzt.

Federkraftsteuerung ber die Start- und Endkraftgewichte Die Endkraftgewichte legen in einem Federknoten fest, mit welchem Kraftanteil die Federn auf die damit verbundenen Punkte wirken. Hat ein Endkraftgewicht den Wert 1, wirkt die Feder auf den mit diesem Ende verbundenen Punkt mit voller Kraft. Die Endkraftgewichte werden in den Federknotenattributen end1Weight und end2Weight gespeichert. Beim MEL-Befehl spring knnen ber die Parameter startForceWeight und endForceWeight die Werte fr die Endkraftgewichte bei der Erstellung eines Federknotens bergeben werden. Wird die Ruhelnge aller Muskelfedern auf 0 gesetzt, zieht sich der Muskel nach dem Simulationsstart sofort zusammen. Werden aber auch beide Endkraftgewichte ebenfalls auf 0 gesetzt, wirkt der Muskel gar nicht. Damit wre bereits die Realisierung von Schliemuskeln mglich. Wird ein Endkraftgewicht auf 0 und der andere z. B. auf 0.1 gesetzt, ziehen die Federn nur in eine Richtung, sodass auch ein linearer Muskel realisiert werden kann. Der Muskel wird ber Federn mit der Faszie und dem Knochen verbunden. Mit zustzlichen Federn mit hherer Steigkeit wird der Muskel am Kontraktionsziel mit dem Knochen und am anderen Ende mit der Faszie verbunden. Dadurch wird die Haut am Muskelende verstrkt gezogen, sodass z. B. Lachfalten in den Mundwinkeln simuliert werden knnen. Die Haut nach dem Modell von Y. Lee et al. (s. 5.4) ist Form haltend und in der Lage, nach der Entspannung des Muskels die ursprngliche Form wiederherzustellen. Der Muskel
1 Mit

der in 3.1.4 vorgestellten Beschreibung der direkten Federverwaltung ist es durchaus mglich, einen Knoten in Maya C++ API zu implementieren, ber den die Ruhelngen einzelner Federn manipuliert werden knnen. Zu diesem Zeitpunkt hatte ich diese Erkenntnisse allerdings noch nicht.

32

4 Muskelmodelle

kann mit einem zustzlichen Federsystem ausgestattet werden, das ihn unabhngig von der Haut entspannen lsst.

Implementierung Bei einem linearen Muskel wird die Kontraktion ber nur ein Endkraftgewicht gesteuert, das zweite bleibt unverndert auf 0. Bei einfachen Muskelgeometrien (z. B. eine rechteckige Polygonche) knnen mit dem MEL-Befehl spring -WireFrame Kantenfedern erstellt werden. Federn, die quer zum gedachten Kontraktionspfad liegen, werden im Komponentenmodus entfernt, damit der Muskel sich nur in der Lnge zusammenzieht. Dadurch erhlt man bereits das Federsystem, mit dem die Kontraktion gesteuert werden kann. Auf der Abbildung 4.6 sind die Kontraktionsfedern des Muskels mit gestrichelten Linien gekennzeichnet. Der Muskel wurde durch Pfadextrusion erzeugt (s. 4.1.2).

Abbildung 4.6: Kontraktionsfedern bei einem federkraftgesteuerten Muskel Der MEL-Befehl scheint die Kantenfedern abhngig von der Nummerierung der Kanten oder der Punkte in dem Polygon anzuordnen. Bei komplexen Muskelgeometrien, die z. B. durch Flchenduplikation der Hautgeometrie oder wie in der Abbildung 4.6 durch Pfadextrusion erhalten wurden, werden die Federn nicht gleichgerichtet erstellt, sodass einige davon in falsche Richtung ziehen. Manuelle Behebung dieses Problems ist sehr aufwndig. Der Muskel darf nicht ausgeblendet werden. Wird der Muskel oder der Layer, in dem er sich bendet, ausgeblendet, wird er von Maya nicht simuliert. Damit die Muskelgeo-

4.2 Steuerung der Muskelkontraktion

33

metrie nicht gerendert wird, kann einfach die Verbindung zum Knoten initialShadingGroup gelscht werden. Die Muskelgeometrie erscheint dann auch im schattierten Modus als Drahtmodell.

Experimente Zum Testen der Muskelkontraktion wurde ein kleiner Hautausschnitt nach dem modizierten Modell nach Y. Lee et al. (s. 5.4.1) verwendet. Das Federsystem der Haut ist auf der Abbildung 4.7(a) zu sehen. Das obere Polygon ist die Hautoberche. Unten liegen zwei Polygonchen bereinander, der Knochen und die Faszieschicht. Der Muskel wurde zwischen der Hautoberche und der Faszieschicht platziert. Auf der Abbildung 4.7(b) sind die Federn zu sehen, die den Muskel mit dem Knochen und mit der Hautoberche verbinden. Beim Endmodell bendet sich der Muskel zwischen dem Knochen und der Faszieschicht und wird nicht mit der Hautoberche, sondern der Faszieschicht verbunden. Der abweichende Aufbau sorgt fr eine bersichtliche Anordnung der Komponenten auf den Abbildungen und ist fr den Test der Kontraktion ebenfalls gut geeignet.

Ergebnis Die Steuerung der Kontraktion ber die Federkraft ist vom Prinzip her dem natrlichen Vorbild sehr hnlich. Dadurch wird der Muskel nahtlos in die Dynamik des Gesichts integriert der Muskel kontrahiert nicht unabhngig, sondern reagiert auf die Krfte, die von der Gesichtshaut oder anderen Muskeln ausgehen. Mit diesem Modell knnen alle Muskeltypen abgebildet werden, Linear- und Flchenmuskeln sowie Schliemuskeln. Auch die Umsetzung von ineinander verochtenen Muskeln ist damit mglich. Der Test zeigte, dass eine indirekte Steuerung der Muskelkontraktion ber die Federkraft in der Simulationsumgebung von Maya funktioniert.

34

4 Muskelmodelle

(a) Federsystem der Haut

(b) Federverbindungen des Muskels, Muskel angespannt

(c) Verformung der Haut beim angespannten Muskel

Abbildung 4.7: Experimente mit der federkraftgesteuerten Muskelkontraktion

5 Hautmodelle

Federmodelle zur Darstellung des elastischen Verhaltens der Gesichtshaut sind in der Gesichtsanimation weit verbreitet. Ein frher Ansatz, der auf einem Federsystem basiert, wird bereits 1981 vorgestellt. Das polygonale Netz der Gesichtshaut besteht aus einem einschichtigen Federnetz, dessen Eckpunkte ber elastische Muskelfasern an Fixpunkten verankert sind. Diese Fixpunkte stellen die Ansatzpunkte der Gesichtsmuskeln an einem Schdelknochen dar. Bei diesem einfachen Modell treten jedoch oftmals infolge lokaler berlappungen des Gesichtshautnetzes bei greren Muskelkontraktionen unnatrliche Verzerrungen der Gesichtshaut auf. [7]

5.1 Hautfedernetz
Es ist wichtig, dass das Federnetz der Haut trianguliert ist, d. h. alle Kreisverbindungen bestehen aus genau drei Federn. Hat eine Kreisverbindung mehr als drei Ecken, kann im Federnetz ein instabiler Zustand auftreten. Dies ist z. B. bei einem Quader der Fall. Wirkt auf einen Federquader eine Kraft von auen von allen Seiten gleichmig, kann es sein, dass er sich zunchst nicht verformt, spter dann aber ruckartig in eine der zwei mglichen Richtungen ausbricht. Ein trianguliertes Federnetz verhlt sich stabil und reagiert stetig auf Auenkrfte. Die Abbildung 5.1 veranschaulicht dies. In einem federbasierten Hautmodell sollte deshalb grundstzlich ein trianguliertes Federnetz verwendet werden. In Maya scheint es unwichtig zu sein, ob das Polygonnetz trianguliert wurde oder nicht. Wird fr ein quadratisches Polygonnetz ein trianguliertes Federnetz erstellt, verhlt es sich genauso stabil wie ein trianguliertes Polygonnetz mit demselben Federnetz. Es bietet sich dennoch an, Polygonnetze zu triangulieren (Modelling: Polygons | Triangulate), um spter mit der Methode WireFrame fr das Polygonnetz Kantenfedern zu erstellen und damit automatisch ein trianguliertes Federnetz zu erhalten.

36

5 Hautmodelle

(a)

(b)

Abbildung 5.1: (a) Federquadrat mit zwei mglichen Verformungsrichtungen (b) trianguliertes Federnetz

5.2 Einfaches Hautmodell


Fr die ersten Experimente mit Muskeln und einfachen Hautgeometrien reicht es bereits, die Hautknoten mit den damit zusammenfallenden Schdelknoten zu verbinden. Der Schdel ist mit der Hautgeometrie identisch. Um optisch strende berlappungen des Schdels mit der Haut zu vermeiden, wird er einfach ausgeblendet. Dies funktioniert nur dann, wenn der Schdel keinen beweglichen Unterkiefer hat. Allgemein drfen in Maya Geometrieobjekte, die mit dem Dynamiksystem in Verbindung stehen, nicht ausgeblendet werden, da sie sonst nicht simuliert werden. Damit das Polygon nicht gerendert wird, kann die Verbindung zum Knoten initialShadingGroup gelscht werden.

5.2.1 Implementierung
Den Schdel erhlt man durch Duplizieren der Haut. Fr die Haut wird ber das Men Dynamics: Soft/Rigid Bodies | Create Soft Body ein Weichkrper erstellt, anschlieend werden die Federverbindungen mit dem MEL-Befehl spring erstellt. Fr die Verbindung der Haut mit dem Knochen wird der Schalter -minMax und fr das Federsystem innerhalb der Haut -wireFrame gesetzt. spring -minMax -minDistance 0 -maxDistance 0.001 spring -wireFrame

5.3 Hautmodell von K. Khler et al.

37

5.3 Hautmodell von K. Khler et al.


Bei K. Khler et al. werden elastische Eigenschaften der Haut, der Unterhaut und der Fettschicht darunter simuliert. Das initiale Federnetz ist die gegebene Hautgeometrie. Das Polygonnetz der Hautgeometrie ist trianguliert. Die Federn sind biphasisch: sie werden bei hherer Belastung straffer, um grob die nichtlinearen elastischen Eigenschaften der Haut zu simulieren. Jeder Punkt der Hautoberche ist entweder mit dem Punkt in der Knochenschicht oder mit dem unterliegenden Muskel ber eine Feder mit niedriger Steigkeit verbunden. Letzteres simuliert die Fettschicht, ber die die Haut frei gleiten kann. [9] Die Abbildung 5.2 veranschaulicht das Modell.

gespiegelte Knochen und Muskeln Haut Muskel Muskelschicht Knochen


Abbildung 5.2: Hautmodell von K. Khler et al. adaptiert nach [9] Wenn das Hautnetz als einfache Membran modelliert wird, kann es bei der Anspannung die Muskelschicht durchdringen oder sich berlappen. Um dies zu vermeiden und damit fr lokale Volumenerhaltung zu sorgen, werden zu jedem Hautknoten eine weitere Feder hinzugefgt, die den Knoten nach auen zieht, sodass die Feder, die diesen Knoten mit der Knotenschicht verbindet, gespiegelt wird. Dies kann als nach auen gerichtete Kraft interpretiert werden, die aus dem inneren Druck einer Hautzelle resultiert. Auf die gleiche Weise werden die Federn gespiegelt, die die Haut mit dem Muskel verbinden. Wenn sich ein Muskel kontrahiert, bewegt sich die gespiegelte Feder mit ihrem Gegenstck. Vorzugsweise bewegt sich der Knoten dadurch in tangentiale Richtung zum Schdel- bzw. Muskeloberche. Dadurch werden berschneidungen in der Praxis vermieden, jedoch nicht ausgeschlossen. Schne Eigenschaft dieses Mechanismus ist die nahtlose Integration in das Feder-Masse-System: es sind keine weiteren Bedingungen ntig. [9]

5.3.1 Implementierung
Die initiale Geometrie der Knochen erhlt man wie bei dem einfachen Hautmodell (s. 5.2) durch Duplizieren der Hautgeometrie. Anschlieend werden Augenpartien, Ohren

38

5 Hautmodelle

und Nase entfernt. Im Komponentenmodus werden die Polygonchen des Unterkiefers markiert und ber Modelling: Edit Polygons | Extract Faces in ein neues Polygonobjekt kopiert. Die Option Modelling: Polygons | Tool Options | Keep Faces Together muss dabei aktiviert sein. Die gespiegelten Knochen erhlt man durch Duplizieren des Schdels und des Unterkiefers. Die Federverbindungen zwischen Haut, Knochen und gespiegelten Knochen werden genau wie beim einfachen Hautmodell (s. 5.2) erstellt. Jetzt werden die Knochen herunter- und die gespiegelten Knochen heraufskaliert. Dadurch dass die Federverbindungen vor dem Skalieren erstellt wurden, haben sie die bentigte Ruhelnge 0 und ziehen stabilisierend an der Haut von Anfang an. Ohne Muskeln fllt die Haut ber den herausgeschnittenen Knochenbereichen zusammen. Um das Hautmodell ohne Muskeln zu testen, kann auf die Bearbeitung der Knochentopologie verzichtet werden. Bereits das Aufmachen des Mundes oder eine kurze Berhrung der Hautoberche mit einem dynamischen Objekt liefert aussagekrftige Simulationsergebnisse zum Hautmodell.

5.3.2 Experimente
Es ist wichtig, die Ruhelnge der Federn, die die Haut mit Muskeln und Knochen verbinden, auf 0 zu setzen, sodass sie bereits im Ruhezustand an der Haut ziehen. Da diese Federn gespiegelt sind, gleichen sich die Ziehkrfte aus, sodass die Haut sich nicht bewegt. Wird die Topologie oder die Geometrie der Haut verndert, muss der Weichkrper erneut erstellt werden. Dabei muss man bedenken, dass durch Lschen des Weichkrpers automatisch auch die Federverbindungen verlorengehen. Sie mssen ebenfalls neu erstellt werden. Fr die ersten Versuche wurde ein planares Hautnetz mit einem planaren Muskel verwendet. In Maya haben die Federn konstante Steigkeit. Zur Vereinfachung wurde deshalb auf die Simulation biphasischer Federn verzichtet. Die Muskelkontraktion wird ber Skalierung (s. 4.2.1) gesteuert. Wie auf der Abbildung 5.3 zu sehen, wurden zur Stabilisierung die Randpunkte des Hautausschnitts mit dem unsichtbaren starren Rahmen verbunden. Die gespiegelten Federverbindungen scheinen gut zu funktionieren, die Haut bleibt auch whrend der Kontraktion planar. Bei komplexeren Hautgeometrien verhlt sich die Haut allerdings sehr instabil.

5.3 Hautmodell von K. Khler et al.

39

(a) Muskel entspannt

(b) Muskel angespannt

Abbildung 5.3: Erste Experimente mit dem Hautmodell von K. Khler

5.3.3 Untersuchung
Experimente mit nicht planaren Hautoberchen und mit komplexen Kopfmodellen haben gezeigt, dass die Haut sich sehr instabil verhlt. Bereits nach kurzzeitiger Einwirkung geringer Krfte fngt die Hautoberche an zu schwingen und schwingt sich oft auch nach langer Zeit in der Simulation nicht ein. Der Grund dafr ist, dass die Federn zwischen Haut und Knochen den Krften in der Haut nur bedingt entgegenwirken knnen.

gespiegelter Knochenpunkt S' Hautpunkt F y x

Knochenpunkt

Abbildung 5.4: Krfte in einem Hautpunkt Die Abbildung 5.4 zeigt einen Hautpunkt, der ber Federn mit dem Knochen und dem gespiegelten Knochen verbunden ist. Die Knochenpunkte werden als Festlager modelliert. Das Krftesystem hier ndet man in der klassischen Mechanikaufgabe ber eine Wscheleine wieder, die zwischen zwei Huserwnden aufgespannt ist und mit einer Masse F in der Mitte belastet wird.

Fy = (Sy + Sy )

40 Fy = F Sy = Sy Sy = sin S F = sin 2S

5 Hautmodelle

Bei einem Winkel = 10 zieht die Leine an jeder Hauswand fast mit der dreifachen Kraft S 3 F. Der Faktor wird mit dem kleineren Winkel grer. Fr 0 streben diese Krfte gegen unendlich:

F 0 2 sin lim In der entspannten Haut verlaufen die Federverbindungen von der Haut zum Knochen nahezu senkrecht zur Hautoberche, sodass 0. Treten seitliche Krfte in der Haut auf, z. B. durch Muskelkontraktion oder durch Aufmachen des Mundes, knnen die Federn diesen Krften kaum entgegenwirken. Spter, wenn sich die Muskeln wieder entspannen, knnen diese Federn die Hautpunkte kaum in die Ruhelage bringen. Sobald sich ein Hautpunkt der Ruhelage nhert, verliert die Feder ihre zur Hautoberche tangentiale Kraftkomponente und kann den Punkt nicht halten, sodass er sich ber seine Ruheposition hinausbewegt. Es kommt zu Schwingungen der Hautpunkte um ihre Ruhepositionen, die sich ber die Hautfedern ausbreiten und auf andere Punkte bertragen. Erhhung der Steigkeit der Federn verbessert die Stabilitt der Haut nicht, sondern verschlechtert sie sogar. Es kommt zu schnellen kurzen Schwingungen. Resonanzen sorgen dafr, dass Schwingungen einzelner Punkte extrem verstrkt werden, sodass diese ins Unendliche (im Sinne der Simulationsumgebung) befrdert werden. Weitere Punkte folgen, die Hautoberche explodiert! Die Stabilitt der Haut kann verbessert werden, indem man in den Eigenschaften des Partikelsystems der Haut den Wert des Attributs conserve anpasst. Dieses Attribut steuert die Impulserhaltung der Partikel. Es bestimmt den Anteil der Geschwindigkeit, den ein Partikel vom vorigen Frame zum nchsten bernimmt. Ein Wert von 1 (die Voreinstellung) entspricht dem Impulserhaltungssatz. Fr ein einigermaen brauchbares Simulationsergebnis hat sich 0.7 als guter Wert fr conserve herausgestellt. Dies sorgt zwar dafr, dass die Haut sich schnell einschwingt, die Ruhepositionen erreichen die Hautpunkte aber trotzdem nicht ganz. In der Haut sammeln sich Verzerrungen an, die mit der Zeit sichtbar werden.

5.4 Hautmodell von Y. Lee et al.

41

Diese Probleme werden in der Arbeit von K. Khler nicht angesprochen. Mglicherweise sind sie bei ihm aufgrund bestimmter Eigenschaften seiner Simulationsumgebung nicht oder nur in geringem Mae aufgetreten.

5.4 Hautmodell von Y. Lee et al.


Epidermis Fettgewebe Faszieschicht Muskelschicht Knochenoberflche

Abbildung 5.5: Konstruktion des Hautgewebes nach Y. Lee et al. nach [7] In [10] wird ein zweischichtiges Feder-Masse-System vorgeschlagen, das den Schichtenaufbau der Haut aus Epidermis, Fettgewebe, Muskelschicht und dem Schdelknochen nachbildet. Ihr Gewebemodell besteht aus prismatischen Elementen, deren Eckpunkte, wie in Abbildung 5.5 dargestellt, mit Federn verbunden sind. Mit Hilfe von Krftebedingungen (constraints) wird erreicht, dass das durch Prismen gebildete Hautvolumen konstant bleibt und auch das Eindringen der Gesichtshaut in den virtuellen Schdelknochen weitgehend vermieden wird. Mit diesem physikalisch basierten Verfahren lassen sich auch realistische Darstellungen bei der Bildung von Gesichtsfalten erzielen. [7]

5.4.1 Modizierung des Hautmodells


Das Hautmodell von Y. Lee et al. verhlt sich aufgrund der doppelschichtigen Struktur und zustzlichen ber Kreuz angeordneten Federverbindungen deutlich stabiler als das Modell von K. Khler et al. In der Muskelschicht gibt es keine Stabilisierungsfedern, sodass diese Schicht hnliche

42

5 Hautmodelle

Schwchen wie das Modell von K. Khler in Bezug auf Stabilitt aufweist. Vermutlich sorgen bei diesem Hautmodell die Muskeln fr die ntige Stabilisierung der Muskelschicht. Um dieses Hautmodell ohne ein Muskelsystem dennoch als elastisches Gewebe simulieren zu knnen, habe ich die Faszieschicht ohne Abstand mit der Knochenoberche verbunden. Dies sorgt fr die ntige Stabilisierung der Muskelschicht, lsst die Haut aber dennoch auf der Knochenoberche gleiten.

5.4.2 Implementierung
Die Faszieschicht und Initialgeometrie der Schdelknochen wird automatisch durch Offset der gegebenen Hautgeometrie erzeugt. Die Erzeugung von Offsetoberchen ist im Kapitel 6 beschrieben. Die Knochengeometrie wird manuell bearbeitet: Augenpartien, Nase, Hals und Ohren werden herausgeschnitten. Danach wird der Unterkiefer getrennt. Zur Vereinfachung hat der Unterkiefer nur einen Freiheitsgrad, sodass der Mund auf- und zugemacht werden kann. Fr die Erstellung des Federsystems zwischen der Faszieschicht und der Haut habe ich ein Plug-In implementiert, das einen MEL-Befehl zur Verfgung stellt. Im Folgenden wird die Implementierung dieses Befehls beschrieben. Fr die Speicherung der Federverbindungen sind insgesamt vier Datenfelder ntig (s. 3.1.4). Im ersten Datenfeldpaar werden die Indizien der Punkte gespeichert, die eine Feder verbindet, im zweiten die Indizien der Objekte, zu denen die Punkte gehren. Die Erstellung einer Federverbindung erfolgt also zunchst durch Hinzufgen der Punkt- und Objektindizien in die Datenfelder. Anschlieend werden diese Datenfelder an den Federknoten bergeben, erst dann werden die Federverbindungen tatschlich erstellt. Es wird vorausgesetzt, dass beide Polygonoberchen topologisch identisch sind. Fr die Erstellung der Federn werden die Kanten einer der beiden Polygonoberchen iteriert. Ein Objekt fr den Zugriff auf die zweite Polygonoberche ist nicht ntig, da die Indizien der Endpunkte einer Kante im ersten Polygon mit den Endpunkten der gleichen Kante im zweiten Polygon bereinstimmen. Es macht also auch keinen Unterschied, welche der beiden Polygone man dem Iteratorobjekt bergibt. In der Abbildung 5.6 sind schematisch Haut, Faszie und Knochen mit Federverbindungen dargestellt. Die Federn zwischen Haut und Faszie sind durchnummeriert. Fr jedes Kantenpaar werden mindestens vier Verbindungen erstellt: zwei Stabilisierungsfedern (3 und 4) verbinden die Endpunkte der Kanten ber Kreuz, die anderen zwei (1 und 6) fallen mit den Kanten zusammen und sorgen fr Elastizitt innerhalb der Polygonoberchen.

5.4 Hautmodell von Y. Lee et al.

43

Haut 1 2 3 6 Faszie Knochen


Abbildung 5.6: Federverbindungen beim modizierten Hautmodell nach Y. Lee et al. Zwei weitere Federn (2 und 5) verbinden Knoten zwischen den beiden Oberchen mit dem gleichem Index. Da Kanten gemeinsame Knoten haben, muss vorher geprft werden, ob die Federverbindung bereits erstellt wurde. Doppelte Federverbindungen fhren zu unerwnschten Effekten und mssen vermieden werden. Um herauszunden, ob eine Federverbindung fr einen Punkt bereits erstellt wurde, muss nicht die ganze Liste der bereits erstellten Federn durchsucht werden. Da die Kanten in der Reihenfolge ihrer Indizierung iteriert werden, wurde fr einen Endknoten der aktuellen Kante eine Federverbindung erstellt, wenn unter den angrenzenden Kanten eine mit niedrigerem Index gefunden wird. Da fr jeden Knoten in einer triangulierten Polygonoberche maximal fnf angrenzende Kanten verglichen werden mssen, ist diese Methode relativ schnell. Alternativ knnen fr jedes Kantenpaar erst die vier Federverbindungen (1, 3, 4 und 6) erstellt werden. Danach wird ein weiteres Iteratorobjekt eingefhrt, das in einer separaten Schleife durch die Punkte einer der beiden Polygonoberchen iteriert und fr jedes Punktpaar eine Federverbindung (2 bzw. 5) erstellt. Die Reihenfolge, in der die Federn erstellt wurden, scheint sich nicht auf das Simulationsverhalten auszuwirken. Die Anzahl der zu erstellenden Federverbindungen n kann aus der Anzahl der Punkte v und Kanten e der Polygonoberche berechnet werden, sodass das Datenfeld sofort auf die richtige Lnge gesetzt werden kann: n = 4 e + v. Die Ruhelnge einzelner Federn ist dem Abstand zwischen den Knoten gleich, die die Feder verbindet. Nachdem die Verbindungen zwischen Haut und Faszie erstellt wurden, kann die Faszie nun mit den Knochen verbunden werden. Dies erfolgt mit dem MEL-Befehl spring mit dem gesetzten Schalter -minMax auf gleiche Weise wie bei dem einfachen Hautmodell (s. 5.2). Damit werden Federn zwischen den Punkten, die bereinanderliegen erstellt. Da die

5 4

44

5 Hautmodelle

Faszie und Knochen ursprnglich identische Geometrie hatten, wird fr jeden Punkt in der Knochengeometrie eine Feder mit einem Punkt in der Fasziegeometrie erstellt. Da einige Bereiche der Knochengeometrie herausgeschnitten wurden, bleiben Punkte der Faszie ber diesen Bereichen ohne eine Federverbindung zum Knochen. Dies ist im Gegensatz zum Federmodell von Khler u. a. (s. 5.3) kein Problem, da die doppelschichtige Hautstruktur sich selbst tragen kann. Zur zustzlichen Schwingungsdmpfung wird auch hier das Attribut conserve (s. 5.3.3) bei den Partikelsystemen der Hautoberche und der Faszieschicht auf 0.7 gesetzt.

5.4.3 Ergebnisse
Das modizierte Hautmodell nach Y. Lee et al. lieferte sehr gute Ergebnisse bei dem Berhrungstest und bei dem Mundtest. Beim Berhrungstest wird die Hautoberche durch einen aktiven Starrkrper gestreift. Die Hautoberche biegt sich bei der Berhrung mit dem Starrkrper durch und stellt kurze Zeit spter die ursprngliche Form ohne Nachschwingungen wieder her. Beim Mundtest wird durch die langsame Drehung des Unterkiefers der Mund auf- und zugemacht. Wie auf der Abbildung 5.8 zu sehen, folgt die Haut dem Unterkiefer sehr realistisch. Das Federsystem zwischen Faszieschicht und Hautoberche mit ca. 75 000 Federn wird durch das Plug-In in Sekundenbruchteilen erstellt. Auf der Abbildung 5.7 ist das erstellte Federnetz und die Faszieschicht zu sehen. Die Hautoberche wurde ausgeblendet.

5.4.4 Untersuchung
Auf der Abbildung 5.7 ist am Federnetz erkennbar, dass die modellierte Haut verglichen mit dem realen Vorbild unproportional dick ist. Die reale Haut kann bis zu 4 mm dick sein (s. 2.3), im Gesicht deutlich weniger. Wenn man die Proportionen der modellierten Haut in die Realitt bertrgt, msste sie ca. 10 mm dick sein. Der Grund dafr ist, dass beim gewhlten Federmodell die ntige Stabilitt nur dann erreicht wird, wenn der Abstand zwischen den beiden Schichten ungefhr der durchschnittlichen Lnge der Polygonkanten gleicht oder etwas grer ist. Die Modellierung einer dnneren Haut ist prinzipiell mglich, jedoch muss dafr die Komplexitt der Polygonoberchen und damit auch des Federsystems erhht werden. Dies wrde zu einem stark erhhten Rechenaufwand und

5.4 Hautmodell von Y. Lee et al.

45

Speicherverbrauch bei der Simulation fhren. Dabei kann dieses Hautmodell mit der gewhlten Komplexitt nur knapp in Echtzeit auf meinem Rechner simuliert werden.

Abbildung 5.7: Federnetz zwischen Hautoberche und Faszieschicht Wird die Hautdicke verglichen mit der mittleren Kantenlnge zu dnn gewhlt, knicken Hautsegmente bei Belastung oft nach innen ein. Bei zu hoher Belastung, z. B. durch ruckartige Bewegung des Unterkiefers, kann dieser Effekt auch bei optimal gewhlter Hautdicke erreicht werden. In diesem Fall erholt sich aber die Hautoberche nach kurzer Simulationszeit wieder.

46

5 Hautmodelle

(a) Mund zu

(b) Mund wenig auf

(c) Mund halb auf

(d) Mund voll auf

Abbildung 5.8: Mundtest mit dem modizierten Hautmodell nach Y. Lee et al.

6 Offset
6.1 Einfhrung
Das Wort Offset stammt aus dem Englischen und bedeutet Versatz. Eine Offsetgeometrie beschreibt die Form der Originalgeometrie, versetzt um einen bestimmten Abstand, den Offsetabstand oder Offsetwert. Ein Offsetverfahren beschreibt ein Verfahren zur Berechnung eines Offsets aus der gegebenen Originalgeometrie. Im zweidimensionalen Raum muss die Originalgeometrie eine Kurve oder Kontur, im zweidimensionalen Raum muss sie eine Oberche sein. Offsetverfahren werden hug in der Konstruktion verwendet z. B. zur automatischen Erzeugung der Auenwand zu einer gegebenen Innenwand. Im CAD-Bereich wird eine Offsetkurve hug auch als Offsetkontur oder Konturparallele bezeichnet. In diesem Kapitel werden Anstze fr Offsetmethoden beschrieben, anschlieend wird die Implementierung einer geeigneten Offsetmethode zur automatischen Erzeugung der Faszieschicht und der Initialgeometrie fr Knochenoberche aus der gegebenen Hautgeometrie beschrieben.

6.1.1 Idealer und optimaler Offsetpolygon


Bevor eine Offsetmethode entwickelt oder eine vorhandene bewertet werden kann, ist es wichtig, das gewnschte Ergebnis nher zu spezizieren. Dazu sollen die Begriffe optimaler und idealer Offset eingefhrt werden. Da in dieser Arbeit Polygone als Geometriebeschreibung verwendet werden, soll die Denition dieser Begriffe nur Polygone bercksichtigen. Ein Offsetpolygon zu einem Originalpolygon und einem Offsetabstand ist genau dann ideal, wenn es die folgenden Bedingungen erfllt:

48

6 Offset

1. Parallelittserhaltung Im zweidimensionalen Raum sind alle Offsetkanten parallel zu den Originalkanten. Im dreidimensionalen Raum sind alle Offsetchen parallel zu den Originalchen. 2. Abstandshomogenitt Im zweidimensionalen Raum benden sich Offsetkanten im gleichen Abstand von den Originalkanten entfernt. Im dreidimensionalen Raum benden sich Offsetchen im gleichen Abstand von den Originalchen entfernt. 3. Keine berschneidungen Das Offsetpolygon darf weder das Originalpolygon noch sich selbst schneiden. Wie sich spter zeigen wird, knnen in der Praxis meistens nicht alle drei Bedingungen gleichzeitig erfllt werden. Ein optimales Offsetpolygon ist deshalb ein Offsetpolygon, das die ersten beiden Bedingungen in einem beschrnkten Mae verletzen darf, um die letzte Bedingung erfllen zu knnen. So muss bei einer direkten Offsetmethode der Offsetabstand lokal gendert werden, um eine Selbstberschneidung aufzulsen. Bei einer triangulierten Offsetoberche kann die Parallelitt grundstzlich nicht erhalten werden (erste Bedingung), kleine Winkel mssen deshalb zugelassen werden.

6.2 Offsetmethoden
Bei der Konstruktion einer Offsetoberche entstehen zwei wichtige Probleme, fr die noch keine vollkommen zufrieden stellende Methode bekannt ist. Das erste Problem betrifft die potentielle Selbstberschneidung der Offsetoberche, wenn sie aus der Originaloberche in die konkaven Bereiche wchst. Das zweite Problem betrifft die Festlegung einer allgemeinen Parametrisierung fr die Original- und Offsetoberche. [12] Die Vielfalt von Methoden zur Berechnung der Offsetkurven und -oberchen kann in zwei Typen klassiziert werden [12]: Indirekte Offsetmethoden (IOM), die das Offsetproblem bei Kurven oder Oberchen als partielle Differentialgleichung beschreiben, dessen numerische Lsung die Offsetkurve oder -oberche liefert; Direkte Offsetmethoden (DOM), die Kurven und Oberchen direkt propagieren, basierend auf den ursprnglichen Geometriedaten.

6.2 Offsetmethoden

49

6.2.1 Indirekte Offsetmethoden (IOM)


Die meisten indirekten Offsetmethoden knnen Selbstberschneidungen effektiv verhindern, aber auf Kosten des teilweisen oder vollstndigen Verlustes der Parametrisierungsinformation, die in der Originalgeometrie enthalten war. Die Rekonstruktion der Zuordnung zwischen der Original- und Offsetparametrisierung ist i. A. keine triviale Aufgabe. [12] Wird eine geeignete Zuordnung bei einer Polygonoberche gefunden, ist davon auszugehen, dass einem Originalknoten mehrere Offsetknoten oder umgekehrt einem Offsetknoten mehrere Originalknoten zugeordnet werden knnen. Die Erstellung von stabilen Federverbindungen zwischen den einzelnen Knoten wird zu einer neuen nicht trivialen Aufgabe.

6.2.2 Direkte Offsetmethoden (DOM)


Der Vorteil einer direkten Offsetmethode ist, dass die originale Parametrisierung vollstndig oder teilweise erhalten bleibt. [12] Eine direkte Offsetmethode verndert die Topologie einer Polygonoberche nicht, sodass u. a. eine eindeutige Zuordnung der Originalkanten auf die Offsetkanten mglich ist. Die Erstellung von Federverbindungen ist, wie in 5.4 beschrieben, mglich. Selbstberschneidungen knnen bei einer direkten Offsetmethode nicht verhindert und mssen nachtrglich entfernt werden.

Skalierung als direkte Offsetmethode In bestimmten Fllen stimmt der ideale Offset mit der skalierten Geometrie berein. Da die Skalierung die Topologie nicht ndert, kann sie als eine direkte Offsetmethode betrachtet werden. Die Skalierung kann nur in ganz speziellen Fllen als Offsetmethode verwendet werden. Die Abbildung 6.1(a) zeigt ein Beispielpolygon, bei dem die Skalierung als Offsetmethode geeignet ist. Beim Polygon auf der Abbildung 6.1(b) kommt es dagegen zu Verletzung der zweiten und (ab einem bestimmten Offsetabstand) auch der dritten Bedingung fr das ideale Offsetpolygon. K. Khler schlgt in [9] vor, die Schdelgeometrie durch starke Vereinfachung der ge-

50

6 Offset

(a)

(b)

Abbildung 6.1: Skalierung als direkte Offsetmethode

gebenen Hautgeometrie und grobe Trennung des Unterkiefers vom restlichen Schdel zu approximieren. Anschlieend wird die Schdelgeometrie herunterskaliert, sodass der mittlere Abstand zwischen Haut- und Knochenoberche der durchschnittlichen Hautdicke gleicht. Fr die Implementierung des Hautmodells nach Y. Lee et al. (s. 5.4) ist Skalierung zur Erzeugung der zweiten Hautschicht nicht geeignet, da herausstehende Hautpartien wie z. B. Nase und Ohren sich mit der inneren Hautschicht berschneiden wrden. Beim Schdel werden genau diese herausstehenden Elemente entfernt, sodass die Skalierung beim Hautmodell von K. Khler eine brauchbare Knochengeometrie liefert, die sich mit der einschichtigen Hautoberche nicht berschneidet.

6.3 Punktverschiebung bei einer direkten Offsetmethode

Eine direkte Offsetmethode ndert die Topologie des Polygonnetzes nicht. Als Initialpolygon kann deshalb eine Kopie des Originalpolygons verwendet werden. Das Offsetpolygon wird durch Verschiebung der Punkte erzeugt. Die Herausforderung besteht also zunchst darin, fr jeden einzelnen Punkt des Polygons eine optimale Verschiebungsrichtung zu nden.

6.3 Punktverschiebung bei einer direkten Offsetmethode

51

6.3.1 Direkter Offset von Polygonkonturen


Jeder Punkt einer geschlossenen Kontur ist mit genau zwei Kanten verbunden. Bei einer offenen Kontur gibt es zwei Endpunkte, die jeweils nur mit einer Kante verbunden sind. Die Abbildung 6.2 zeigt eine offene Kontur mit einer Offsetkontur.

Abbildung 6.2: Beispiel fr eine offene Kontur mit einer idealen Offsetkontur

Satz 6.3.1.1 (Existenz der idealen Offsetkontur) Fr jede Polygonkontur knnen Offsetabstnde gefunden werden, fr die die ideale Offsetkontur existiert.

Die Verschiebungsrichtung gibt die Winkelhalbierende zwischen den mit dem Punkt verbundenen Kanten vor. Endpunkte werden entlang der Kantennormalen verschoben. Die Verschiebungsentfernung kann mit den Winkelstzen berechnet werden. Die Randpunkte werden um den Offsetabstand verschoben. Tritt keine Selbstberschneidung auf, liefert diese Offsetmethode die ideale Offsetkontur.

6.3.2 Direkter Offset von Polygonoberchen


Bei einer Polygonoberche sind mit jeder Kante genau zwei Flchen verbunden. Die Randkanten einer offenen Polygonoberche sind mit jeweils genau einer Flche verbunden.

Satz 6.3.2.1 (Existenz der idealen Offsetoberche) Sind mit jedem Punkt einer Polygonoberche hchstens drei nicht parallele Flchen verbunden, knnen Offsetabstnde gefunden werden, fr die die ideale Offsetoberche existiert. Parallele Flchen werden zu einer Flche zusammengefasst.

52

6 Offset

Die Offsetposition eines Randpunktes, der mit genau zwei nicht parallelen Flchen verbunden ist, ergibt sich aus dem Schnittpunkt der um den Offsetabstand parallel verschobenen Geraden, die durch die Randkanten bestimmt werden. Die Verschiebung der Geraden erfolgt entlang der jeweiligen Flchennormalen. Offsetpositionen der Randpunkte, die mit genau einer Flche verbunden sind, knnen noch einfacher aus der Summe der Originalposition des Punktes und des (normierten) Normalenvektors der Flche skaliert mit dem Offsetabstand berechnet werden. Die Position eines mit genau drei nicht parallelen Flchen verbundenen Punktes in der Offsetoberche ist der Schnittpunkt der um den Offsetabstand verschobenen Ebenen, die durch die Flchen bestimmt sind. Der Schnittpunkt der Ebenen kann z. B. mit dem Gaueliminationsverfahren berechnet werden. Tritt keine Selbstberschneidung auf, liefert diese Offsetmethode die ideale Offsetoberche. Sind mit dem Punkt mehr als drei nicht parallele Flchen verbunden, wird das lineare Gleichunssystem berbestimmt. Wird fr die ersten drei durch die Flchen bestimmten Ebenen ein Schnittpunkt gefunden, mssen die restlichen Ebenen so verschoben werden, dass sie diesen Schnittpunkt enthalten. Dadurch wird nicht fr jede Flche der Offsetabstand eingehalten. Zustzlich knnen die Ebenen um einen kleinen Winkel gedreht werden. Die ersten zwei Bedingungen fr die ideale Offsetoberche werden zwangslug verletzt. Folgerung: wenn eine Polygonoberche Punkte enthlt, mit denen mehr als drei nicht parallele Flchen verbunden sind, kann keine ideale Offsetoberche gefunden werden. In einer Polygonoberche knnen mit einem Punkt beliebig viele Flchen verbunden sein. In der Praxis wird meistens eine triangulierte Polygonoberche verwendet, bei der jede Flche mit genau drei Punkten verbunden ist. In einer solchen Oberche sind die meisten Punkte mit sechs Flchen verbunden. In der Praxis ist es also meistens nicht mglich, die ideale Offsetoberche zu nden, deshalb wird nach einer optimalen Offsetoberche gesucht, die die fr die Praxis relevanten Eigenschaften erfllt.

Existenz der optimalen Verschiebungsrichtung Da in der Praxis die ideale Offsetoberche meistens nicht gefunden werden kann, wird nach einer Methode gesucht, die eine optimale Offsetoberche liefert. Dazu muss zu-

6.3 Punktverschiebung bei einer direkten Offsetmethode

53

nchst geklrt werden, ob eine Offsetoberche immer gefunden werden kann, sodass sie zumindest die dritte Bedingung (keine berschneidungen) erfllt. Annahme: Es gibt stets eine optimale Verschiebungsrichtung, in die jeder Punkt um einen Offsetwert ungleich Null verschoben werden kann, sodass die dadurch entstehende Offsetoberche die Originaloberche nicht schneidet.1 Bedingung: Ist die Verschiebungsrichtung optimal, so ist die Relation zwischen zwei Verschiebungsentfernungen gleich der Relation zwischen den Winkeln zwischen Originalund Offsetchen (folgt aus der Annahme). D. h., wenn die Verschiebungsentfernung grer wird, werden auch alle Winkel zwischen Original- und Offsetchen grer. Andernfalls wrde eine berschneidung entstehen. Beweis: O. B. d. A. bei der Parallelverschiebung von sechs Ebenen um den gleichen Abstand entstehen zwei Schnittpunkte. Die Mitte der Geraden, die diese Schnittpunkte verbindet, msste der neue optimale Offsetpunkt sein. Bei einem beliebigen Abstand fr Parallelverschiebung msste die Richtung der Geraden durch den Original- und Offsetpunkt stets konstant bleiben. Fr einen gemeinsamen Schnittpunkt muss die Parallelitt aufgegeben werden: alle Ebenen neigen sich zur Mitte der Verbindungsgeraden zweier Schnittpunkte. Folglich werden alle Winkel zwischen Original- und Offsetebenen mit steigender Verschiebungsentfernung grer sein, was die Bedingung erfllt. Da in einer triangulierten Polygonoberche ein Punkt mit maximal sechs Flchen verbunden sein kann, wurde der Beweis mit sechs Ebenen durchgefhrt. Der Beweis kann mit jeder Anzahl von Ebenen grer vier durchgefhrt werden. Bei der Parallelverschiebung von z. B. vier Ebenen gibt es nur einen Schnittpunkt. Die Verbindungsgerade verluft dann durch den Schnittpunkt in Richtung der Normalen der Ebene, die den Schnittpunkt nicht enthlt.

6.3.3 Verschiebung entlang der Durchschnittsnormalen


Eine optimale Offsetoberche kann durch Verschiebung der Punkte in Richtung der Durchschnittsnormalen bestimmt werden. Die Verschiebungsentfernung ist der Offsetwert. Die Durchschnittsnormale berechnet sich aus dem Durchschnitt der normierten Normalenvektoren aller mit dem Punkt verbundenen Polygonchen.
1 Hierbei

handelt es sich nicht um eine Selbstberschneidung (s. 6.4)

54

6 Offset

Offset in Richtung der Durchschnittsnormalen Originalpolygon

(a) Pyramidenspitze mittig

(b) Pyramidenspitze verschoben

Abbildung 6.3: Offset einer Pyramide Diese Methode liefert ein optimales Ergebnis fr leicht gekrmmte Oberchen. Bei starken Krmmungen kann die Offsetoberche mit der Originaloberche zusammenfallen. An dem in der Abbildung 6.3 gezeigten Pyramidentest wird dies besonders deutlich: verschiebt man die Pyramidenspitze weiter nach rechts, kommt die rechte Pyramidenche der Offsetche nher. Der Grund dafr ist die ungleichmige Gewichtung der Flchennormalen, bedingt durch die Anordnung der Flchen um den Punkt. Sind mit dem Punkt zwei parallele Polygonchen verbunden, liegen sie in der gleichen Ebene. Der Normalenvektor der Ebene iet in die Durchschnittsnormale aber doppelt ein. Ein hnliches Problem entsteht bei Flchen, die nahezu parallel sind oder in einem kleinen Winkel zueinander liegen, sodass das Erkennen und Zusammenfassen der parallelen Flchen alleine das Problem nicht behebt. Die Festlegung eines Schwellwerts fr den Winkel zwischen Flchennormalen, ab dem sie als ein normierter Durchschnittsvektor in die (modizierte) Durchschnittsnormale einieen, fhrt nur lokal zu guten Ergebnissen. Wird der Schwellwert unglcklich gewhlt, entstehen Sprnge in der Offsetoberche. Denkbar ist eine Gewichtungsfunktion, die abhngig vom Winkel der Flchennormalen zueinander sie in die (modizierte) Durchschnittsnormale mit einem Faktor einieen lsst.

Implementierung Verschiebung der Punkte entlang der Durchschnittsnormalen kann in Maya besonders efzient implementiert werden, da die Durchschnittsnormale direkt ausgelesen werden kann.

6.3 Punktverschiebung bei einer direkten Offsetmethode

55

Die Richtung der Durchschnittsnormalen stimmt mit der punkteigenen Normalen berein. In Maya reprsentieren die Punktnormalen die visuelle Glttung zwischen Polygonchen. Im Gegensatz zu Flchennormalen gehren sie nicht zum Polygon, sondern geben eher wieder, wie Maya Polygonoberchen rendert. Ein Punkt hat innerhalb jeder der damit verbundenen Flchen eine Punktnormale. Wenn alle Punktnormalen eines Punktes in die gleiche Richtung zeigen, erscheint der Flchenbergang an diesem Punkt glatt. Sind die Richtungen der Punktnormalen verschieden, erscheint der Flchenbergang hart. [4] Die Richtungen der Punktnormalen knnen in Maya C++ API mit MItMeshFaceVertex::getNormal() ausgelesen werden. Zustzlich kann ber MItMeshVertex::getNormal() bei jedem Punkt die eigene Normale ausgelesen werden. Diese Punktnormale zeigt immer in Richtung der Durchschnittsnormalen und kann als Verschiebungsrichtung genutzt werden.

6.3.4 Verschiebung in Kantenrichtung


Zur Bestimmung des Offsetpunkts wurden bisher nur die Flchennormalen verwendet. Eine Flchennormale ergibt sich aus dem Kreuzprodukt zweier Kantenvektoren. Die Richtung der Kantenvektoren geht dabei verloren. Damit wurde mglicherweise eine fr die Berechnung der Offsetkoordinate wichtige Zusatzinformation vernachlssigt. Denition: die Kantenrichtung eines Punktes ist die durchschnittliche Richtung aller damit verbundener Kanten.
Offset in Richtung der Durchschnittsnormalen Offset in Kantenrichtung Originalpolygon

Abbildung 6.4: Vergleich des Offsets in Kantenrichtung mit dem Offset in Richtung der Punktnormalen an einer Pyramide mit verschobener Spitze Wie die Abbildung 6.4 zeigt, liefert die Kantenrichtung beim Offset einer Pyramide mit

56

6 Offset

verschobener Spitze besonders bei der oberen Flche im unteren Bereich ein deutlich besseres Ergebnis als die Durchschnittsnormale.
Offset in Kantenrichtung Originalpolygon

Abbildung 6.5: Offset von konkaven, kovexen und ebenen Bereichen In der Praxis erweist sich die Kantenrichtung als sehr problematisch. Die Kantenrichtung zeigt in konkaven Bereichen einer Polygonoberche nach innen, in konvexen nach auen. Infolgedessen werden die Punkte in konkaven Bereichen, wie auf der Abbildung 6.5 zu sehen, nach unten gegen die Offsetrichtung verschoben. Bei einer planaren Oberche sind alle Kantenvektoren komplanar mit dieser Oberche, sodass die Punkte die Oberche nicht verlassen knnen. In der Abbildung 6.5 wurden die Kanten der Flche ganz rechts nach auen, aber nicht nach oben in die optimale Richtung verschoben. Als Abhilfe fr dieses Problem kann die Punktnormale genutzt werden. Ist der Winkel zwischen der Kantenrichtung und der Punktnormalen grer 90 , zeigt die Kantenrichtung gegen die Offsetrichtung und wird negiert. Dadurch wird aber das Problem in planaren Bereichen, wo die Kantenrichtungen orthogonal zu den Punktnormalen verlaufen, nicht behoben. Um besonders dem letzten Problem entgegenzuwirken, kann die Punktnormale in die Kantenrichtung einfach als zustzlicher Kantenvektor einberechnet werden. Bei knstlichen Geometrien lieferte diese Offsetmethode gute Ergebnisse. In der Praxis treten Verzerrungen auf, u. a. werden Erhebungen und Vertiefungen verstrkt verschoben.

Implementierung In Maya C++ API erhlt man mit MItMeshVertex::getConnectedEdges() die mit dem Punkt verbundenen Kanten. Die beiden Endpunkte einer Kante werden ber MItMeshEdge::index(0) und MItMeshEdge::index(1) ausgelesen.

6.4 Selbstberschneidungen

57

Bei der Berechnung der Kantenrichtung eines Punktes muss dafr gesorgt werden, dass alle Kantenvektoren zum Punkt hin zeigen. Dazu muss abgefragt werden, welcher der beiden Endpunkte einer Kante der aktuelle Punkt selbst ist.

6.4 Selbstberschneidungen
Bei einer direkten Offsetmethode entstehen zwangslug Selbstberschneidungen, die nachtrglich entfernt werden mssen. Die Fhigkeit einer direkten Offsetmethode, Selbstberschneidungen effektiv zu beheben, ist ein wichtiges Kriterium fr die Bewertung dieser Methode. [12] Es gibt zwei Arten von Selbstberschneidungen: lokale und globale. Globale Selbstberschneidungen treten dann auf, wenn ein zu groer Offsetwert gewhlt wird, sodass sehr groe zusammenhngende Bereiche der Oberche an der berschneidung beteiligt sind. Globale berschneidungen sind durch den Benutzer schnell erkennbar und knnen durch die Wahl eines kleineren Offsetwerts manuell behoben werden. Eine automatische Bereinigung von globalen Selbstberschneidungen ist daher nicht notwendig. Eine grobe Erkennung der globalen Selbstberschneidung ist einfach. Wenn die Offsetentfernung die grte Entfernung zwischen zwei Flchen in der Originaloberche berschreitet, wird eine globale berschneidung auf jeden Fall auftreten. Der eingegebene Offsetwert knnte dann mit einer Warnung abgelehnt werden. Lokale Selbstberschneidungen treten dann auf, wenn die Offsetoberche aus der Originaloberche in die konkaven Bereiche hineinwchst. Auch die lokalen berschneidungen knnen durch die Wahl eines kleineren Offsetwerts manuell bereinigt werden. Dies ist aber keine allgemein brauchbare Lsung, da die Anwendung meistens einen minimalen Offsetwert vorgibt.

6.4.1 Erkennung von Selbstberschneidungen


Bei der Berechnung des Offsetpolygons werden die neuen Punktpositionen zunchst in einem Datenfeld abgespeichert und erst spter an das Polygonobjekt bergeben. Da die Liste der Positionen aber nur eine Punktwolke ist, in der Relationen der Punkte zueinander, die in einem Polygon durch Kanten und Flchen beschrieben werden, vollstndig fehlen, ist es nicht mglich, Selbstberschneidungen allein aus den Punktpositionen zu erkennen. In einem Polygon knnen Kanten und Flchen sich berschneiden. Punkte knnen sich

58

6 Offset

grundstzlich nicht berschneiden. Fr die Erkennung von Selbstberschneidungen muss ein Polygon also als Ganzes betrachtet werden. Es wre vorteilhaft, Selbstberschneidungen vor der bergabe des Datenfelds mit den Offsetpositionen zu erkennen und zu beheben, da die Originalgeometrie und damit wertvolle Zusatzinformationen nach dem Anwenden verlorengehen. Zustzlich wird das Verfahren schneller, da nachtrgliches Verschieben von Punkten zum Ausen der berschneidungen entfallen wrde.

Merkmale

Polygonchen haben eine Rck- und Vorderseite, deniert durch die Richtung der Flchennormalen, die aus der Vorderseite zeigt. Beschreibt ein Polygon einen Volumenkrper (z. B. einen Kopf), zeigen die Flchennormalen nach auen, d. h. die Vorderseiten der Polygone sind auen zu sehen. Tritt eine Selbstberschneidung auf, sind Rckseiten einiger Polygonchen auen sichtbar. Noch knnen geschlossene Bereiche in einem Polygon entstehen. Die Rckseiten der Flchen geraten dabei aber nicht nach auen. Allgemein formuliert ndert sich im Offsetpolygon eine bestimmte Relation der Flchen zueinander gegenber derselben Relationen im Originalpolygon, sobald sie an einer Selbstberschneidung beteiligt sind. Fr jede Flche muss diese Relation zu allen anderen Flchen im Offsetpolygon berechnet und mit den Relationen im Originalpolygon verglichen werden. Bei p Polygonchen mssten dann p2 O(p2 ) Relationen im Original- und Offsetpolygon berechnet und fr den Vergleich zwischengespeichert werden. Um die Komplexitt auf k p O(p1 ) zu senken und den Speicher zu sparen, knnte eine manuell festgelegte Anzahl k der umliegenden Flchen berprft werden. Dabei wird der Kompromiss eingegangen, dass berschneidungen zwischen topologisch weit entfernten Flchen nicht erkannt werden. Die Herausforderung besteht also darin, eine mathematische Relation zu nden, an der sicher erkannt werden kann, ob eine berschneidung vorliegt, und eine sehr efziente Implementierung dafr zu nden.

6.5 Behebungsmethoden Erkennungsmethoden

59

Eine nicht genaue aber funktionierende Erkennung einer Selbstberschneidung ist ber die Zentralpunkte der Polygonchen mglich. Der Zentralpunkt ist die durchschnittliche Koordinate aller Punkte einer Polygonche. Fr jeden Zentralpunkt wird ber die Differenz des Zentralpunkts jeder anderen Flche des Originalpolygons ein Vektor berechnet und mit dem Vektor zwischen denselben Zentralpunkten im Offsetpolygon verglichen. Betrgt der Winkel zwischen diesen Vektoren ber 2 , werden die Punkte beider Flchen markiert und mssen zurckverschoben werden. Wrde man die sich berschneidenden Flchen durch das Setzen eines Bits in einer quadratischen Binrmatrix notieren, wrde man stets eine symmetrische Matrix erhalten. Deshalb mssen fr p Polygonchen nur 1 p (p 1) statt p2 Vektoren verglichen wer2 den. Bei der Implementierung kann dies einfach dadurch erreicht werden, dass die innere Schleife mit der nchsten Flche der ueren Schleife beginnt, statt mit der ersten. Die Rechenzeit wird dadurch um mehr als die Hlfte reduziert. Die Ungenauigkeit dieser Methode besteht darin, dass eine Selbstberschneidung erst dann erkannt wird, wenn die Flche mit ihrem Zentralpunkt eine andere Flche durchdringt. Dies knnte dadurch verbessert werden, dass fr jeden Punkt einer Flche ein Vektor zu jedem Punkt einer anderen Flche im Offsetpolygon berechnet wird und auf gleiche Weise mit dem Vektor zwischen denselben Punkten im Originalpolygon verglichen wird. Fr jedes Flchenpaar einer triangulierten Polygonoberche mssen dann neun Vektoren verglichen werden.

6.5 Behebungsmethoden
Hier werden Methoden zur Behebung von Selbstberschneidungen vorgestellt, die die Topologie des Polygons nicht verndern. Dabei wird die dritte Bedingung (keine berschneidungen) auf Kosten der zweiten (Abstandshomogenitt) erzwungen Selbstberschneidungen werden durch lokale Verringerung des Offsetabstands behoben.

60

6 Offset

6.5.1 Nachtrgliche Behebung


Alle Punkte auf die volle Offsetentfernung zu verschieben und Selbstberschneidungen danach zu bereinigen ist kein guter Ansatz. Dabei entstehen zustzliche Selbstberschneidungen, die bei der Vermeidungsmethode gar nicht erst auftreten wrden. Es ist keine triviale Aufgabe, festzustellen, welche Selbstberschneidungen durch Zurckverschiebung der Flchen behoben werden mssen und in welcher Reihenfolge, und welche sich dabei von alleine ausen. Der Abstand, um den die Punkte der betroffenen Flchen zurckverschoben werden mssen, kann dabei nicht direkt berechnet werden. Eine Abschtzung ist mglicherweise ber den Abstand der Zentralpunkte mglich.

6.5.2 Vermeidungsmethode
Selbstberschneidungen knnen vermieden werden, indem die Punkte mit der Schrittweite w auf die vorgegebene Offsetentfernung d schrittweise verschoben werden. Tritt eine Selbstberschneidung auf, werden die Punkte der betroffenen Flchen nicht mehr verschoben. Mit jedem Durchlauf i werden die unmarkierten Punkte um den Abstand di = i w von ihrer Originalposition verschoben, bis der Offsetabstand d erreicht wurde. In jedem Durchlauf wird die Erkennung von Selbstberschneidungen durchgefhrt. Punkte von Flchen, die sich berschneiden, werden markiert und beim nchsten Durchlauf eine Schrittweite zurckverschoben auf die Position vor dem Auftreten der Selbstberschneidung. Danach ndet die Verschiebung dieser Punkte nicht mehr statt. Die Suche nach Selbstberschneidungen ist der rechenaufwndigste Schritt in jedem Durchlauf. Hier wird eine kleine Verbesserung dadurch erreicht, dass beide sich berschneidende Flchen markiert werden. Im nchsten Suchlauf werden markierte Flchenpaare nicht bercksichtigt die Berechnung der Vektoren zwischen den Zentralpunkten und ihr Vergleich wird nicht durchgefhrt. Die Anzahl der Durchlufe n hngt von dem gewhlten Offsetabstand d und der Schrittd weite w ab: n w + 1. Fr den Fall n w < d ist ein zustzlicher Durchlauf mit der angepassten Schrittweite w = d n w ntig. Die Gesamtkomplexitt der Berechnung eines Offsetpolygons hngt von der Anzahl der Punkte v, der Polygonchen p und der Anzahl der Durchlufe n ab und betrgt n (v + 1 2 2 p ). Die Bisektion des Offsetabstands kann die Anzahl der Durchlufe reduzieren.

6.5 Behebungsmethoden Bisektion des Offsetabstands

61

Anstatt sich von 0 mit der Schrittweite w dem Offsetabstand d zu nhern, kann durch Bisektion des Offsetabstands d die Anzahl der Durchlufe n und damit die Berechnungszeit oft stark reduziert werden. Die Schrittweite w wird hierbei als minimale Sektionslnge, d. h. als Toleranzgrenze verwendet.

Die Lnge der Sektion s0 wird im ersten Durchlauf auf d gesetzt. ci gibt den Abstand vor, um den die markierten Punkte verschoben werden knnen, sodass die Selbstberschneidung behoben wird. Am Anfang ist c0 = 0. Die Punkte werden um den Abstand d0 = c0 + s0 verschoben. Wird keine Selbstberschneidung gefunden, sind keine weiteren Schritte ntig, das Offsetpolygon ist fertig.

Andernfalls wird die Sektionslnge si = si1 halbiert und die Punkte von der Originalpo2 sition um den neuen Abstand di = ci + si verschoben. Die Sektion si wird so lange halbiert, bis keine Selbstberschneidungen gefunden werden oder si < w ist. Im letzteren Fall werden die Punkte aller sich in diesem Abstand berschneidenden Flchen markiert und im nchsten Durchlauf auf den Abstand ci verschoben. Die Selbstberschneidung wird dadurch behoben. Die Verschiebung dieser Punkte ndet nicht mehr statt. Fr den nchsten Durchlauf wird ci+1 = ci + w und si+1 = d ci+1 gesetzt, d. h. die Punkte werden im nchsten Schritt auf den vollen Offsetabstand d verschoben, in der Annahme, dass es keine weiteren Selbstberschneidungen mehr gibt. Die in diesem Absatz beschriebenen Schritte werden so lange wiederholt, bis di = ci + si den vorgegebenen Offsetabstand d erreicht und keine Selbstberschneidungen gefunden wurden.

Die Gesamtkomplexitt mit dieser Verbesserung ist von der Anzahl der Selbstberschneidungen abhngig. Im besten Fall betrgt sie 1 (v + 1 p2 ), im schlechtesten Fall ist sie mit 2 n log2 (n) (v + 1 p2 ) sogar schlechter als bei dem Verfahren ohne Bisektion. Im schlech2 testen Fall ist davon auszugehen, dass in jedem Schritt Selbstberschneidungen gefunden werden. Da das vorgestellte Verfahren nach jeder Behebung der Selbstberschneidungen in der Toleranzgrenze w die restlichen Punkte auf den vollen Offsetabstand verschiebt, mssen berssige Bisektionsschritte durchgefhrt werden.

62

6 Offset

6.6 Implementierung
6.6.1 Offsetwerkzeuge von Maya
Mit Maya sind bereits einige Werkzeuge zur Offseterstellung mitgeliefert. Selbstberschneidungen werden bei keinem der Werkzeuge behandelt. Mit Modelling: Edit Curves | Offset | Offset Curve kann zu einer NURBS-Kurve eine Offsetkurve und mit Modelling: Edit NURBS | Offset Surfaces eine Offsetoberche zu einer NURBS-Oberche generiert werden. Weniger bekannt ist, dass mit Maya auch Offset von Polygonoberchen generiert werden kann. ber das Men Modelling: Edit Polygons | Duplicate Face ist es mglich, markierte Polygonchen in ein neues Polygonobjekt zu kopieren (damit nicht fr jede einzelne Flche ein eigenes Transformobjekt erstellt wird, muss die Option Modelling: Polygons | Tool Options | Keep Faces Together aktiviert sein). Nach dem Ausfhren dieses Befehls wird ber den Knoten polyChipOff eine Verbindung zwischen dem Originalpolygon und dem neuen Polygon erstellt. ber das Attribut polyChipOff.localTranslateZ knnen die Flchen des neuen Polygons in Richtung ihrer Normalen verschoben werden. Das Ergebnis dieser Verschiebung ist sehr hnlich und oft sogar gleich mit dem Ergebnis, das die in 6.3.3 vorgestellte Methode liefert. Anscheinend werden hier die Punkte auch in Richtung der Durchschnittsnormalen verschoben, allerdings ist der Abstand von ihrer ursprnglichen Position nicht bei allen Punkten gleich.

6.6.2 Offset-Plug-In fr Maya


Die Offsetmethoden mit der Verschiebung in Kantenrichtung und Richtung der Durchschnittsnormalen, sowie die Erkennung und Behebung von Selbstberschneidungen ber die Zentralpunkte von Polygonchen habe ich als Plug-In fr Maya implementiert. Der Plug-In stellt den Knoten offsetDeformer und den Befehl createOffset zur Verfgung.

Offsetknoten Es wurde gezeigt, dass bei der Verschiebung der Punkte einer Offsetoberche die Parallelitt der Offsetchen zu den Originalchen meistens nicht beibehalten werden kann.

6.6 Implementierung

63

Die Durchschnittsnormale und die Kantenrichtung der Punkte im Offsetpolygon knnen sich dadurch ndern. Der m Mal wiederholte Offset einer Polygonoberche um den Abstand d stimmt deshalb meistens nicht mit dem einmaligen Offset der gleichen Oberche um den Abstand m d berein. Der Offset der resultierenden Oberche um den Abstand (1) m d liefert auch meistens nicht die Originaloberche. Es ist deshalb sinnvoller, die Offsetmethode nicht als Befehl zu kapseln, der die Punkte eines Polygons verschiebt und die ursprnglichen Positionen danach vergisst, sondern als einen Knoten, der stets mit der Originaloberche verbunden ist und den Offset immer von der Originaloberche berechnet. Dadurch wird u. a. eine nachtrgliche nderung des Offsetabstands mit reproduzierbarem Ergebnis mglich.

Offsetbefehl Der Plug-In registriert den MEL-Befehl createOffset, der ber die Kommandozeile von Maya aufgerufen werden kann. Mit diesem Befehl wird automatisch ein neues Polygonobjekt erstellt und ber den Offsetknoten mit dem markierten Polygon verbunden. Werden mehrere Polygone markiert, wird fr jedes Polygon ein Offsetpolygon mit eigenem Offsetknoten erstellt. Der Offsetknoten kann manuell ber den MEL-Befehl createNode offsetDeformer erstellt werden. Das Attribut outMesh des Originalpolygons muss mit offsetDeformer.originalMesh und offsetDeformer.offsetMesh mit inMesh des Offsetpolygons verbunden werden. Als Offsetpolygon kann ein beliebiges Polygonobjekt verwendet werden, das nicht Originalpolygon ist.

6.6.3 Verschiebung von Punkten


Bei der Berechnung des Offsetpolygons werden zur schnellen Berechnung die Positionen aller Knoten in einem Datenfeld mit MFnMesh::getPoints() gespeichert. Die Verschiebung der Knoten wird innerhalb dieses Datenfelds durchgefhrt, ohne dass die Polygongeometrie verndert wird. Erst nachdem die neuen Positionen aller Knoten berechnet und gespeichert wurden, wird das Datenfeld mit MFnMesh::setPoints() auf das Offsetpolygon bergeben. Vor der bergabe wird die Originalgeometrie mit MFnMesh:: copy() in das Offsetpolygon kopiert, sodass auch nderungen der Topologie des Originalpolygons auf das Offsetpolygon bertragen werden. ber das Attribut distance kann der Offsetabstand und ber method die Verschiebungsmethode bestimmt werden.

64

6 Offset

Verschiebt man die Punkte im Offsetpolygon einzeln, dauert die Berechnung nicht viel weniger als bei einem quivalenten MEL-Programm und kann mehrere Minuten in Anspruch nehmen. Mit der beschriebenen Methode wird das Offsetpolygon auch fr komplexe Geometrien in Echtzeit generiert.

6.6.4 Erkennung von Selbstberschneidungen


Der Offsetknoten kann wie in 6.4.1 ber die Zentralpunkte der Polygonchen Selbstberschneidungen erkennen. Die Zentralpunkte des Originalpolygons werden ber MItMeshPolygon::center() ausgelesen. Beim Offsetpolygon sind sie noch nicht verfgbar und werden aus dem Durchschnitt der verschobenen Positionen der Punkte berechnet. Fr jedes Zentralpunktpaar des Originalpolygons wird ein Vektor bestimmt und mit dem Vektor desselben Zentralpunktpaares verglichen, das aus den verschobenen Punkten berechnet wurde. berschreitet er den Winkel , werden ber MItMeshPolygon:: get2 Vertices() die Punkte der Polygonche ermittelt und in einem Datenfeld markiert.

6.6.5 Behebung von Selbstberschneidungen


Der Offsetknoten behebt Selbstberschneidungen nach der in 6.5 beschriebenen Methode mit Bisektion des Offsetabstands. Die Erkennung und Behebung muss ber das Attribut avoidIntersections aktiviert werden. Die Minimale Sektionslnge wird ber das Attribut stepLength bergeben. Die Berechnung eines kleineren Offsetpolygons (z. B. der Torus mit 400 Punkten und 400 Flchen) erfolgt fast in Echtzeit. Die Berechnung des Offsets eines komplexen Kopfes mit ca. 6 000 Punkten und ca. 11 500 Flchen (s. Abbildung 6.6) dauert ca. 3 Minuten. Es ist deshalb empfehlenswert, erst den geeigneten Offsetwert einzustellen und dann avoidIntersections zu aktivieren. Der Offset-Plug-In erlaubt negative Werte fr den Offsetabstand. Um den Programmieraufwand bei der Erkennung und Behebung von Selbstberschneidungen zu reduzieren wird mit dem Betrag des Offsetabstands gearbeitet. Das Vorzeichen wird extra gespeichert und nur bei der Punktverschiebung verwendet.

6.7 Ergebnisse

65

6.7 Ergebnisse
Mit dem Offset-Plug-In wurde fr die Implementierung des Hautmodells von Y. Lee et al. (s. 5.4) die Faszieschicht durch Offset der Hautoberche erfolgreich generiert. Die Selbstberschneidungen wurden entfernt, sodass das Offsetpolygon auen nicht sichtbar ist. Auf der Abbildung 6.6(a) sind die nach auen dringenden Selbstberschneidungen der Faszieschicht deutlich erkennbar. Die Hautgeometrie ist halbtransparent. Die Abbildung 6.6(b) zeigt das Ergebnis nach der Behebung von Selbstberschneidungen.

66

6 Offset

(a) Selbstberschneidungen nicht behoben

(b) Selbstberschneidungen behoben

Abbildung 6.6: Erzeugung der Faszieschicht durch Offset der Hautoberche

Zusammenfassung

In dieser Arbeit habe ich verschiedene vorhandene und eigens entwickelte Muskel- und Hautmodelle fr die muskelbasierte Gesichtsanimation untersucht und in Autodesk Maya implementiert. Bei Muskelmodellen konnte ich sehr gute Ergebnisse mit einem Ansatz erzielen, der dem realen Vorbild sehr hnlich ist. Die Muskelkontraktion wird dabei indirekt ber die Federkraft gesteuert. Dadurch ist der Muskel nahtlos in das physikalische System des Gesichts integriert. Bei anderen Muskelmodellen erfolgt die Kontraktion direkt, sodass die Kontraktion bei diesen Modellen unabhngig von den im Gesicht wirkenden Krften erfolgt. Fr die Modellierung der Haut habe ich die meiste Zeit investiert. Dabei habe ich zwei federbasierte Hautmodelle untersucht. Das Hautmodell von K. Khler et al. konnte ich aufgrund hoher Instabilitt, die sich in der Praxis zeigte, nicht verwenden. Mit dem modizierten Hautmodell nach Y. Lee et al. habe ich sehr gute Animationsergebnisse erzielt. Mit Bordmitteln von Maya konnte ich das Federsystem fr das Hautmodell nach Y. Lee et al. nicht erstellen. In dieser Arbeit beschreibe ich die nicht dokumentierte direkte Verwaltung von Federn in Maya, mit der eine sehr efziente Erstellung von Federverbindungen mit C++ API mglich wird. Mit diesen Erkenntnissen konnte ich ein Maya-Plug-In implementieren, der Federverbindungen selbst fr komplexe Hautgeometrien in Sekundenbruchteilen erstellt. Ein groes Kapitel ist der Berechnung von Offsetpolygonen, vor allem Offsetoberchen, gewidmet. Dabei ist ein Maya-Plug-In entstanden, mit dem Offsetoberchen mit Vermeidung von Selbstberschneidungen erzeugt werden knnen. Damit konnte fr das modizierte Hautmodell nach Y. Lee et al. die Faszieschicht erstellt werden. Whrend der Entstehung dieser Arbeit habe ich sehr tiefe Kenntnisse in der Bedienung von Maya ber die grasche Benutzeroberche und in der Automatisierung mit MEL und C++ API erlangt und damit meine Fhigkeiten und Kenntnisse im Bereich der Computergrak stark erweitert.

68

Zusammenfassung

Ausblick
Die indirekte Steuerung der Muskelkontraktion mit Federkraft zeigte besonders in Verbindung mit dem modizierten Hautmodell nach Y. Lee et al. sehr gute Ergebnisse. Bei einem Linearmuskel mssen die Kontraktionsfedern gleichgerichtet erstellt werden, damit sie in gleiche Richtung ziehen. Mit Bordmitteln von Maya ist dies nicht mglich, eine Automatisierung ist aber denkbar. Dieser Ansatz kann noch weiter ausgebaut werden. Es kann ein rumlicher Muskel aufgebaut werden, der durch die Federkraft nicht nur kontrahiert, sondern auch den Umfang ndert und damit die Muskelverdickung bei der Kontraktion simuliert. Damit wre der Aufbau der kompletten Gesichtsmuskulatur mglich. Der Plug-In fr die Erstellung von Federverbindungen knnte mit zustzlichen Funktionen erweitert werden, die neue Mglichkeiten zur Erstellung und Verwaltung von Federsystemen in Maya bieten. So ist eine nachtrgliche automatische nderung des Federsystems in Maya nicht mglich. Mchte man z. B. im Modus MinMax die Abstandsparameter ndern, muss der Federknoten gelscht und neu erstellt werden. Das Hautmodell nach Y. Lee et al. kann als eine universelle elastische Oberche in der Animation verwendet werden. Die Laufzeit der Offsetberechnung mit Vermeidung von Selbstberschneidungen kann weiter optimiert werden. Es hat sich gezeigt, dass das Verfahren mit der Bisektion des Offsetabstands im schlechtesten Fall sogar eine schlechtere Laufzeit hat als ohne Bisektion. So ist z. B. eine Abschtzung des Abstandes, in dem eine Selbstberschneidung auftritt, ber den Abstand der Zentralpunkte der Flchen denkbar. Weitere Verbesserung der Laufzeit bringt die in 6.4.1 angesprochene topologische Beschrnkung der Suche nach Selbstberschneidungen.

Literaturverzeichnis

[1] MedizInfo. www.medizinfo.de, Abruf: 01.2007 [2] Wikipedia, Die freie Enzyklopdie. de.wikipedia.org, Abruf: 01.2007 [3] [4] [5] A LIAS S YSTEMS C ORP. (Hrsg.): Maya7 API White Paper. Alias Systems Corp. A LIAS S YSTEMS C ORP. (Hrsg.): Maya7 Dokumentation. Alias Systems Corp. G OULD, David A. D.: Complete Maya Programming. Bd. I. Morgan Kaufmann, 2003 www.davidgould.com. ISBN 1558608354. An Extensive Guide to MEL and the C++ API G OULD, David A. D.: Complete Maya Programming. Bd. II. Morgan Kaufmann, 2005 www.davidgould.com. ISBN 01208884828. Fundamentals, Geometry, and Modeling JACKL, Diemat ; N EUNREITHER, Stephan ; WAGNER, Friedrich: Methoden der Computeranimation. Springer-Verlag Berlin, Heidelberg, 2006. ISBN 3540 261141 K ALWICK, David: Animating Facial Features and Expressions. 2. Graphics Series, 2006. ISBN 1584504749 K HLER, Kolja: A Head Model with Anatomical Structure for Facial Modeling and Animation / Universitt des Saarlandes. Saarbrcken, 2003. Forschungsbericht

[6]

[7]

[8]

[9]

[10] L EE, Yuencheng ; T ERZOPOULOS, D. ; WALTERS, K.: Realistic Modeling for Facial Animation. Siggraph, 1995 [11] M ERBOLD, Dr. U. ; K ARASEK, D. H.: 1000 Fragen und Antworten Mensch und Krper. Gtersloh/Mnchen, Hamburg : Wissen Media Verlag GmbH, Axel Springer AG, 2006. ISBN 3577075562

ii

Literaturverzeichnis

[12] WANG, Yuanli ; G UIBAULT, Franccois ; C AMARERO, Ricardo ; T CHON, Ko-Foa: A Parameterization Transporting Surface Offset Construction Method Based on the Eikonal Equation / AIAA. Toronto, Ontario Canada, 2005. Forschungsbericht

Abbildungsverzeichnis
2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 4.7 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 6.1 6.2 6.3 6.4 Schdel und der Unterkieferdrehpunkt nach [8] . . . . . . . . . . . . . . Gesichtsmuskeln nach [7] . . . . . . . . . . . . . . . . . . . . . . . . . . Hautaufbau nach [11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . System von Maya nach [5] . . . . . . . Allgemeiner Knoten nach [5] . . . . . . Maya C++ API nach [5] . . . . . . . . Abhngigkeitsgraph eines Federknotens Beispielobjekt mit Federn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 8 12 13 15 16 19 25 27 28 28 29 32 34 36 37 39 39 41 43 45 46 50 51 54 55

Skalierung eines konvexen Muskels . . . . . . . . . . . . . . . . . . . . Muskeln mit Kontraktionspfaden . . . . . . . . . . . . . . . . . . . . . . Abhngigkeitsgraph eines Clusters mit Animationspfad . . . . . . . . . . Steuerung der Muskelkontraktion ber ein benutzerdeniertes Attribut . . Auswirkung der Kontraktion des Lachmuskels links und Augenbrauenhebers rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kontraktionsfedern bei einem federkraftgesteuerten Muskel . . . . . . . . Experimente mit der federkraftgesteuerten Muskelkontraktion . . . . . . (a) Federquadrat mit zwei mglichen Verformungsrichtungen (b) trianguliertes Federnetz . . . . . . . . . . . . . . . . . . . . . . . Hautmodell von K. Khler et al. adaptiert nach [9] . . . . . . . . . . . Erste Experimente mit dem Hautmodell von K. Khler . . . . . . . . Krfte in einem Hautpunkt . . . . . . . . . . . . . . . . . . . . . . . Konstruktion des Hautgewebes nach Y. Lee et al. nach [7] . . . . . . . Federverbindungen beim modizierten Hautmodell nach Y. Lee et al. Federnetz zwischen Hautoberche und Faszieschicht . . . . . . . . . Mundtest mit dem modizierten Hautmodell nach Y. Lee et al. . . . . . . . . . . . . . . . . . . . .

Skalierung als direkte Offsetmethode . . . . . . . . . . . . . . . . . . . . Beispiel fr eine offene Kontur mit einer idealen Offsetkontur . . . . . . Offset einer Pyramide . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vergleich des Offsets in Kantenrichtung mit dem Offset in Richtung der Punktnormalen an einer Pyramide mit verschobener Spitze . . . . . . . .

iv 6.5 6.6

Abbildungsverzeichnis Offset von konkaven, kovexen und ebenen Bereichen . . . . . . . . . . . Erzeugung der Faszieschicht durch Offset der Hautoberche . . . . . . . 56 66

Glossar
ASCII ASCII (American Standard Code for Information Interchange) ist eine 7-Bit-Zeichenkodierung. Die Zeichen umfassen das lateinische Alphabet in Gro- und Kleinschreibung, die zehn indo-arabischen Ziffern sowie einige Satz- und Steuerzeichen. Der Zeichenvorrat entspricht weitgehend dem einer Tastatur oder Schreibmaschine fr die englische Sprache. [2] Frame Mit frame ist bei einer Animation ein Einzelbild gemeint. Eine Animation besteht aus mehreren Einzelbildern. Bei einer (Dynamik-)Simulation ist mit frame der Zustand der Simulation zu einem festen Zeitpunkt gemeint. Geometrie Eine Geometrie, eine geometrische Figur oder Form ist eine zusammenhngende Teilmenge der Ebene oder des Raums, die mit mathematischen Mitteln exakt deniert werden kann. Dabei sind die bestimmenden Eigenschaften unabhngig von der Lage und der Orientierung in der Ebene oder im Raum. [2] Bei einem Polygonnetz bezeichnet Geometrie die rumlichen Positionen der Punkte. NURBS Non-Uniform Rational B-Splines (deutsch: Nicht-uniforme rationale B-Splines, kurz NURBS) sind mathematisch denierte Kurven oder Flchen, die im Bereich der Computergrak zur Modellierung beliebiger Formen verwendet werden. Die Darstellung der Geometrieinformation erfolgt ber stckweise funktional denierte Geometrieelemente. Im Prinzip kann jede beliebige technisch herstellbare oder in der Natur vorkommende Form mit Hilfe von NURBS dargestellt werden. [2] Plug-In Ein Plug-In oder Ergnzungs- oder Zusatzmodul ist eine gngige Bezeichnung fr ein Computerprogramm, das in ein anderes Softwareprodukt eingeklinkt wird. Es ergnzt dabei die Software, stellt jedoch eine eigenstndige Software dar. [2] Polygon Ein Polygon (auch Polygonche oder Vieleck) erhlt man, indem man mindestens drei voneinander verschiedene Punkte in einer Ebene durch Strecken so miteinander verbindet, dass durch den entstandenen Linienzug eine zusammenhngende Flche umschlossen wird. [2]

vi

Glossar

Rendern Rendern bezeichnet den Vorgang, aus Rohdaten durch Anwendung geeigneter Verfahren neue Daten zu generieren. Im Bereich der Computergrak bezeichnet Rendern die Erzeugung eines digitalen Bildes aus einer Bildbeschreibung. [2] Topologie Die Topologie bezeichnet bei einem Polygonnetz die Struktur der Verbindungen mehrerer Punkte durch Kanten untereinander. Die Position der Punkte im Raum spielt fr die Topologie keine Rolle, folglich ndert die rumliche Verschiebung der Punkte die Geometrie, aber nicht die Topologie eines Polygonnetzes.

Index
Abhngigkeitsgraph 14 Animationspfad 28 Attribute 15 Augenbrauenheber 9 compute 15 DAG (directed acyclic graph) 14 DG (dependency graph) 14 DG-Knoten 14 Datenussparadigma 14 Datenklassen 17 Dermis 11 DOM (Direkte Offsetmethoden) 51 Durchschnittsnormale 55 dynamische Objekte 17 Endkraftgewichte 33 Epidermis 10 Federknoten 18 Flchenmuskeln 8 Funktionsklassen 17 Gesichtsschdel 7 Hirnschdel 7 IOM (Indirekte Offsetmethoden) 51 Kantenrichtung 57 Lachmuskel 9 Lederhaut 11 Linearmuskeln 8 Lippendehnmuskel 9 Locator 30 MEL (Maya Embedded Language) 15 Morphing 5 Mundringmuskel 9 NURBS-Kurve 26 Oberhaut 10 Offset 49 Konturparallele 49 Offsetabstand 49 Offsetkontur 49 Offsetverfahren 49 Offsetwert 49 Partikel 18 Partikelobjekt 17 Polygonoberche 53 Punktnormale 57 Ruhelnge 32 Schlsselbildanimation 17 Schliemuskeln 8 Starrkrper 17 Subcutis 11 Szene 13 Unterhaut 11 Weichkrper 17 Zentralpunkt 61