Simulazione Anatomica di Muscoli Facciali per Volti Virtuali Generici

Università degli studi di Roma La Sapienza
Facoltà di Ingegneria
Tesi di Laurea in
Ingegneria Informatica
Simulazione Anatomica di Muscoli
Facciali per Volti Virtuali Generici
Relatore
Candidato
Prof. Marco Schaerf
Francesco Iannucci
Correlatore
Ing. Marco Fratarcangeli
Anno Accademico 2005/2006
Università degli studi di Roma La Sapienza
Facoltà di Ingegneria
Tesi di Laurea in
Ingegneria Informatica
Simulazione Anatomica di Muscoli
Facciali per Volti Virtuali Generici
Relatore
Candidato
Prof. Marco Schaerf
Francesco Iannucci
Correlatore
Ing. Marco Fratarcangeli
Anno Accademico 2005/2006
Alla mia famiglia
Sommario
Il volto è il canale più rilevante della comunicazione non verbale. Le espressioni del volto cambiano rapidamente e hanno una funzione fondamentale
nell’interazione sociale; esse sono attentamente controllate dallo sguardo rivolto al viso.
In questa tesi è stata sviluppata un’applicazione chiamata Anatomical Facial Muscle Simulator (afms) che è in grado di generare automaticamente
le mappe complete dei muscoli mimici di un volto virtuale, a partire dal
modello vrml della faccia 3D e da alcuni punti situati in posizioni particolari del volto come occhi, zigomi, bocca che definiscono completamente le
caratteristiche del viso rappresentato.
La pelle del volto è stata realizzata introducendo un sistema di masse e molle
che ne simulano le proprietà elastiche. I muscoli mimici sono stati costruiti
attraverso l’aggregazione di segmenti muscolari di base.
Tutti i muscoli generati da afms sono controllabili singolarmente attraverso
i relativi slider posti nel pannello di controllo dell’applicazione, in questo
modo possono essere realizzate molteplici espressioni facciali.
afms è stato concepito per essere applicato prevalentemente a volti umani,
in quanto tutto lo studio anatomico e fisiologico è stato fatto in relazione
all’uomo, tuttavia, come è stato verificato, è possibile anche un suo utilizzo
per modelli umanoidi più generali.
3
Indice
1 Introduzione
6
2 Background
2.1 Related Works . . . . . . . . . . .
2.2 MPEG-4 . . . . . . . . . . . . . . .
2.3 Implementazione . . . . . . . . . .
2.3.1 Ambiente di sviluppo . . .
2.3.2 Microsoft Foundation Class
2.3.3 OpenGL . . . . . . . . . . .
2.3.4 Il modello VRML . . . . . .
2.3.5 visage|SDK . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
13
13
14
15
16
19
3 Anatomia del volto umano
3.1 Osteologia del cranio . . . . . . . . . . .
3.1.1 Neurocranio . . . . . . . . . . . .
3.1.2 Splancnocranio . . . . . . . . . .
3.2 Miologia del cranio . . . . . . . . . . . .
3.2.1 Muscoli scheletrici (Masticatori)
3.2.2 Muscoli mimici (Pellicciai) . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
20
20
21
23
24
24
.
.
.
.
.
.
.
.
.
32
32
34
35
37
39
39
42
42
42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Modello della pelle
4.1 Anatomia della pelle umana . . . . . . . . . . . . . . . . .
4.2 Biomeccanica della pelle umana . . . . . . . . . . . . . . .
4.3 Mass-Spring System . . . . . . . . . . . . . . . . . . . . .
4.4 Forze vincolari di compenetrazione del cranio . . . . . . .
4.5 Integrazione numerica . . . . . . . . . . . . . . . . . . . .
4.5.1 Equazioni che regolano la deformazione della pelle
4.6 Strutture dati nel mass-spring system . . . . . . . . . . .
4.6.1 Struttura dati del nodo-massa . . . . . . . . . . . .
4.6.2 Struttura dati della molla . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
5 Modello muscolare
44
5.1 Struttura anatomica reale del muscolo . . . . . . . . . . . . . 44
5.2 Modello muscolare virtuale . . . . . . . . . . . . . . . . . . . 50
4
5.3
5.2.1 Il modello muscolare di Kähler . . . . . . . . . . . . .
5.2.2 Il modello muscolare realizzato . . . . . . . . . . . . .
La mappa muscolare . . . . . . . . . . . . . . . . . . . . . . .
6 Analisi dei risultati
50
55
59
63
7 Conclusioni
73
7.1 Prospettive future . . . . . . . . . . . . . . . . . . . . . . . . 74
A Guida all’interfaccia utente
79
5
Capitolo 1
Introduzione
Il volto umano è uno dei più importanti e complessi mezzi espressivi con il
quale l’uomo può comunicare. È proprio attraverso il viso che si riesce a
trasmettere un particolare sentimento o stato d’animo. La complessità e il
numero di espressioni che si riescono a produrre ha attratto l’attenzione di
importanti discipline quali la psicologia, la computer vision e non ultima la
computer graphics.
Infatti il riuscire a riprodurre nel miglior modo possibile le espressioni del
volto umano è uno degli obbiettivi che ci si è posti nell’ambito dell’informatica grafica, in quanto sono sempre maggiormente richieste applicazioni
riguardanti l’intrattenimento (effetti speciali per il cinema, videogames), comunicazione tra dispositivi mobili con poca banda disponibile (videoconferenze, videofonia), applicazioni mediche e realtà virtuale.
In questa tesi ci si è posti come obbiettivo principale la simulazione delle
espressioni del viso attraverso un’attenta realizzazione dei muscoli facciali,
nel modo più anatomicamente corretto possibile. Sono infatti i muscoli che
guidano l’animazione deformando la pelle e non viceversa.
È stato creato quindi un tool applicativo che genera automaticamente su
un modello di volto virtuale 3D i suoi muscoli mimici attraverso i quali è
possibile generare tutte le espressioni facciali umane.
La pelle è stata simulata realizzando una complessa rete di masse e molle
che ne emulano le proprietà elastiche mentre per realizzare i muscoli facciali,
si è deciso di implementare il modello muscolare introdotto da Kähler, Haber e Seidel [1] (che a sua volta è stato sviluppato partendo dal modello di
Lee, Terzopoulos e Waters [2]), in cui sia i muscoli lineari che quelli circolari vengono costruiti essenzialmente come un’unica aggregazione di segmenti
muscolari di base.
La contrazione isotonica del muscolo si ottiene attraverso la contrazione di
ciascun singolo segmento che lo costituisce rispetto al suo punto di inserzione, se il muscolo è di tipo lineare, come per esempio il muscolo zigomatico
maggiore che ha origine nella faccia laterale dell’osso zigomatico e si inseri-
6
sce sulla faccia profonda della cute e della mucosa labiale, in corrispondenza
della commessura labiale (vedi fig. 5.9a par. 5.2.2).
Se invece il muscolo è di tipo circolare, come per esempio il muscolo orbicolare dell’occhio che ha la forma di un anello ellittico che si dispone intorno
alla rima palpebrale, la contrazione avviene rispetto ad un punto, che normalmente è interno al muscolo stesso (vedi fig. 5.9b par. 5.2.2).
In questo modo è possibile realizzare qualsiasi tipo di muscolo che compare
nel volto umano cosı̀ da ottenere un’animazione quanto più realistica possibile e soprattutto rispondente ai vincoli anatomici reali.
A partire da un modello vrml (Virtual Reality Modeling Language) che rappresenta un volto umano e attraverso gli 84 fdp (Facial Definition Points)
definiti dallo standard mpeg-4, viene ricostruita automaticamente l’intera
mappa dei muscoli facciali. Gli fdp sono utilizzati per definire la forma
di un modello di viso proprietario [3], sono disposti in gruppi, ognuno corrispondente ad una diversa zona del viso (occhi, naso, bocca, ecc.). La
localizzazione degli fdp deve essere conosciuta per ogni modello facciale.
L’applicazione realizzata in questa tesi, Anatomical Facial Muscle Simulator
(afms), è interattiva, cioè permette all’utente di azionare i muscoli mimici
e di vederne in tempo reale il loro movimento, che genera, a sua volta, la
relativa deformazione della pelle del modello virtuale.
afms ancora non supporta il movimento simultaneo di più muscoli contemporaneamente, l’espressione facciale desiderata deve essere quindi composta
agendo su un muscolo alla volta.
Nel Capitolo 2 verrà introdotto l’ambiente di sviluppo, gli strumenti softR
Foundation Class, visage|SDK [3]) e
ware (MPEG-4, OpenGL, Microsoft
gli algoritmi (Kähler, Haber e Seidel [1]) che sono alla base della realizzazione di questo lavoro.
Nel Capitolo 3 verrà dato un breve accenno all’anatomia reale del volto
umano, analizzando sia la sua struttura ossea che quella muscolare, focalizzando però prevalentemente l’attenzione sui muscoli mimici, il loro posizionamento e la loro attività.
Il Capitolo 4 descrive il modo in cui è stato realizzato il modello che simula
le proprietà della pelle e come vengono visualizzati gli effetti prodotti dall’attività muscolare; la realizzazione di un buon modello di pelle è un passaggio
fondamentale per una buona simulazione. Vengono inoltre descritti i metodi
matematici e fisici utilizzati per ottenere la simulazione, ponendo particolare
attenzione al mantenimento di un buon compromesso tra prestazioni e costi
computazionali.
Il Capitolo 5 è il cuore di questa tesi, qui infatti viene descritto in modo molto accurato il modello muscolare implementato, il posizionamento
7
anatomico dei muscoli sul volto e il modo in cui i muscoli agiscono sulla
deformazione della pelle.
Il Capitolo 6 è la sezione dedicata all’analisi dei risultati ottenuti e in particolare, facendo riferimento alle espressioni facciali reali fornite da [4], viene
presentata una serie di immagini delle espressioni facciali dei volti virtuali
con cui è stata testata l’applicazione realizzata nel corso di questo studio.
Infine, nel Capitolo 7, viene presentata una breve digressione sulle possibili
applicazioni dello studio effettuato e sulle sue prospettive future.
8
Capitolo 2
Background
2.1
Related Works
Sono passati ormai più di venti anni da quando, agli inizi degli anni Ottanta,
prima Platt e Badler [5] nel 1981 e poi Parke [6] nel 1982 iniziarono a lavorare all’animazione facciale; all’inizio l’animazione era ottenuta attraverso il
morphing tra due maschere calcolate a priori e salvate in una libreria [7],
poi però, per eliminare la necessità di possedere un database completo dei
modelli usati, furono introdotti i modelli parametrici che permettevano all’animatore di creare un’espressione facciale specificando un insieme di valori
per i parametri di controllo.
In seguito, per applicazioni multimediali con un basso bit rate, la ricerca
si focalizzò sullo standard mpeg-4 che definisce 68 diversi faps(Facial Animation Parameters), attraverso i quali è possibile controllare l’animazione
facciale.
Sono stati anche sviluppati dei modelli chiamati physics-based, che simulano
le proprietà elastiche della pelle attraverso un sistema di masse e molle. Un
modello di questo tipo è stato realizzato da Lee, Terzopoulos e Waters [2],
in cui il viso è costituito principalmente da solo due strati (derma + strato grasso e muscoli), connessi attraverso delle molle al teschio, che viene a
sua volta stimato a partire dalla superficie del volto. Il sistema di masse
e molle utilizzato in questo approccio preserva il volume del volto in modo
tale da non essere deformato in modo non opportuno.
Un lavoro molto importante è stato quello realizzato da N. I. Badler , C.
Pelachaud e M. Steedman [8] sull’animazione facciale di alta qualità con il
movimento della testa in accordo con il parlato, che include anche l’intonazione della voce.
Ci sono stati degli sviluppi anche in ambito medico, come negli articoli di E.
Gladilin, S.Zachow, P. Deuflhard, H.C. Hege [9] [10] che, simulando i muscoli e la pelle del volto, hanno cercato di prevedere i risultati post-operatori
sulla mimica facciale dopo un intervento di chirurgia cranio-facciale.
9
2.2
MPEG-4
L’mpeg-4 [11] è uno standard iso/iec sviluppato dall’mpeg (Moving Picture Experts Group) lo stesso comitato che ha sviluppato l’mpeg-1 e l’mpeg-2.
L’mpeg-4 è il risultato di uno sforzo che ha coinvolto centinaia di ricercatori
e di ingegneri di tutto il mondo, la sua definizione formale è iso/iec 14496,
ultimato nell’Ottobre del 1998 e diventato un’International Standard agli
inizi del 1999.
L’mpeg-4 è stato costruito a partire dal successo acclarato di tre campi: la
Digital television, l’Interactive graphics applications e l’Interactive multimedia; l’mpeg-4 fornisce gli elementi tecnologici standard per la produzione,
la distribuzione e l’accesso al contenuto dei paradigmi di questi tre campi.
L’interesse verso questo standard in questo progetto è legato al fatto che
l’mpeg-4 supporta la face animation e la body animation.
La face animation viene usata per effettuare il rendering di un volto animato virtuale, la forma, l’espressione e le texture sono controllate dai Facial
Definition Points (fdps) e/o dai Facial Animation Parameters (faps ). A
partire da un volto che ha un’espressione generica neutra, con la ricezione
dei fap viene prodotta l’animazione del volto (espressione, parlato, ecc.).
La specifica dell’mpeg-4 definisce 84 punti di definizione facciale chiamati
Facial Definition Points (fdp) o anche Feature Points (fp) e 68 Facial Animation Parameters (faps ).
Gli fdp (vedi fig. 2.1) vengono usati per definire le caratteristiche principali
di un volto e per fornire le giuste corrispondenze spaziali ai fap. Gli fdp
sono raggruppati in base alla loro diversa posizione sul volto (occhi, bocca,
naso, ecc.), la loro posizione deve essere nota a priori per ogni modello facciale, affinché afms funzioni correttamente. Per i modelli utilizzati in afms,
gli fdp sono stati calcolati con l’ausilio del pacchetto software visage|life.
I fap specificano di quanto può essere mosso un particolare fdp, modificando cosı̀ il modello facciale generico di input. I fap si basano sullo studio delle
azioni facciali minimali e sono strettamente correlati alle azioni muscolari.
Rappresentano un insieme completo di espressioni facciali.
Tutti i fap sono espressi in termini di Face Animation Parameter Units
(fapus ) (fig. 2.2), che sono definiti per permettere l’interpretazione dei fap
su ogni modello facciale in modo consistente, producendo risultati ragionevoli in termini di espressioni e di parlato. Per ogni fap si conosce su quale
fdp agisce, in quale direzione si muove e quale fapu è usato come unità per
il movimento.
La specifica definisce anche una Face Animation Tables (fats ), che permette di specificare, per ogni fap, l’esatto movimento dei vertici nel modello
3D.
10
Fig. 2.1: Facial Definition Points (fdp)
11
Fig. 2.2: Face Animation Parameter Units (fapu)
IRIS Diameter
Eye Separation
Eye - Nose Separation
Mouth - Nose Separation
Mouth - Width Separation
Angular Unit
IRISD = IRISD0 /1024
ES = ES0 / 1024
ENS = ENS0 / 1024
MNS = MNS0 / 1024
MW = MW0 / 1024
AU = 10−5 rad
La divisione per 1024 è stata introdotta per avere unità sufficientemente
piccole in modo che i fap possano essere rappresentati con i numeri interi.
12
2.3
Implementazione
2.3.1
Ambiente di sviluppo
L’applicazione è stata sviluppata su un personal computer con processoR
Centrino 1.4 GHz e 512 MB ddr sdram con sistema operativo
re Intel
R
R
ViWindows XP con SP2. L’implementazione è avvenuta con Microsoft
sual C++ 6.0 con il supporto fondamentale del pacchetto di sviluppo visage|SDK (C++ Software Development Kit for Virtual Character animation)
prodotto dalla Visage Technologies AB [3] e la libreria grafica OpenGL.
R
Foundation Class.
L’interfaccia grafica è stata realizzata con le Microsoft
A partire da un modello vrml raffigurante un volto umano e dai relativi
fdp (che devono essere noti), Anatomical Facial Muscle Simulator (afms),
genera automaticamente la mappa anatomica dei muscoli mimici, inoltre
Fig. 2.3: Esempio di Anatomical Facial Muscle Simulator (afms)
attraverso i relativi slider situati sul pannello a sinistra, si può regolare la
contrazione di ciascun muscolo, fino ad ottenere l’espressione facciale voluta.
La forza che ciascun muscolo esercita sulla pelle viene letta dal relativo file
.mfo (Muscle FOrce), nel caso in cui però non si ha a disposizione il suddetto file, verranno caricate delle forze muscolari di default.
Attraverso il mouse è possibile effettuare lo spostamento, la rotazione e lo
zoom del modello all’interno della finestra OpenGL, inoltre attraverso il menu a tendina sono disponibili varie operazioni da poter effettuare sul modello.
Per ulteriori informazioni circa l’utilizzo di afms, si consiglia la lettura
dell’Appendice A (Guida all’interfaccia utente).
13
2.3.2
Microsoft Foundation Class
Come detto in precedenza, il progetto afms è stato interamente sviluppato con Microsoft Visual C++ 6.0 avvalendosi dell’utilizzo delle Microsoft
Foundation Class (MFC), infatti uno degli sforzi più importanti che è stato
compiuto per realizzare questa applicazione è stato proprio quello di imparare ad usare le MFC in modo corretto, cosa tutt’altro che banale.
Microsoft Foundation Class, meglio conosciuta con l’acronimo MFC, è una
libreria di classi C++ prodotta da Microsoft con lo scopo di incapsulare le
Windows API; è un application-framework, fornisce infatti tutto il codice
necessario per la gestione di finestre, menu e dialog box.
MFC è stata introdotta nel 1992 per essere usata con le versioni a 16 bit di
Windows ed è stata progettata per essere una sorta di rassegna delle potenzialità del linguaggio di programmazione C++.
Da un punto di vista pratico, lo sviluppo di programmi Windows con MFC
risulta molto più rapido e semplificato rispetto all’uso diretto delle Windows
API, anche se la loro conoscenza è quasi indispensabile per un programmatore MFC per via della poca astrazione introdotta dalla libreria di classi.
Uno dei vantaggi maggiori deriva dal fatto che gli handle degli oggetti vengono gestiti automaticamente dalla libreria e chiusi quando gli oggetti vengono
distrutti.
Quando un’applicazione gira su Microsoft Windows, l’utente interagisce con
documenti che sono visualizzati in frame window. MFC definisce due tipi
di document frame window : Single Document Interface (SDI) e Multiple
Document Interface (MDI).
Le applicazioni di tipo SDI permettono di aprire un solo document frame
window alla volta, mentre quelle di tipo MDI permettono di aprire più document frame window contemporaneamente. Un document frame window
è costituito principalmente da due componenti: il frame e il contenuto del
frame, questi sono visualizzati e gestiti da due diverse classi in MFC. Una
Fig. 2.4: Relazione tra frame window e view in SDI - MFC
14
frame-window class gestisce il frame e una view class gestisce il contenuto.
La view window è una sottofinestra della frame window e tutto quello che
riguarda l’interazione con l’utente viene effettuato nella window’s client area
(Fig. 2.4). Il frame window fornisce un frame visibile attorno ad una view
completa della caption bar e di tutti i controlli standard di Windows (menu,
bottoni per minimizzare e massimizzare la finestra e i controlli per effettuare
il resizing della finestra).
afms è stato realizzato a partire da un progetto SDI standard.
2.3.3
OpenGL
OpenGL (Open Graphics Library) è una specifica che definisce una API
per più linguaggi e per più piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D. L’interfaccia consiste in circa 250 diverse
chiamate di funzione che si possono usare per disegnare complesse scene tridimensionali a partire da semplici primitive (punti, linee e poligoni). È usato
nell’industria dei videogiochi, per applicazioni di tipo CAD e realtà virtuale.
La specifica di OpenGL è supervisionata dall’OpenGL Architecture Review
Fig. 2.5: Logo di OpenGL
Board (ARB), che si è formato nel 1992. L’ARB consiste in un insieme di
aziende interessate a creare un’API coerente e ampiamente disponibile.
OpenGL è un’evoluzione di (ed ha uno stile molto simile a) IRIS GL, l’interfaccia 3D di SGI (Silicon Graphics). Una delle restrizioni di IRIS GL
era che forniva accesso solamente alle caratteristiche supportate dall’hardware soggiacente. Se l’hardware grafico non supportava una caratteristica,
allora l’applicazione non poteva usarla. OpenGL ha superato questo problema fornendo supporto via software per le caratteristiche non supportate
dall’hardware, permettendo alle applicazioni di usare della grafica avanzata
su sistemi di potenza relativamente bassa.
OpenGL è stato progettato per essere di solo output: fornisce solamente
funzioni di rendering. L’API di base non contempla la gestione di finestre, l’audio, la stampa, la tastiera, il mouse, né altri dispositivi di input.
Per quanto questo può sembrare restrittivo, permette al codice di rendering
di essere completamente indipendente dal sistema operativo su cui funziona,
permettendo lo sviluppo di codice indipendente dalla piattaforma. Tuttavia,
per consentire un’interazione con il sistema ospitante, è necessario integrare
il software con il sistema a finestre nativo. OpenGL è una rendering library
e lavora in immediate mode, cioè la definizione di un oggetto causa immedia15
Fig. 2.6: Librerie basate su OpenGL
tamente il suo disegno, OpenGL però non scrive direttamente sullo schermo
ma accede ad un framebuffer ; inoltre OpenGL è una state-machine per cui
sono le variabili di stato che guidano il rendering. Per costruire e modificare
oggetti complessi si usano librerie costruite sopra OpenGL (fig.2.6).
2.3.4
Il modello VRML
Il vrml (Virtual Reality Modeling Language) è un linguaggio di programmazione che consente la simulazione di mondi virtuali tridimensionali. Mediante il vrml è possibile cioè descrivere ambienti virtuali contenenti oggetti,
sorgenti luminose, immagini, suoni e filmati. Questi mondi, inoltre, possono
essere animati e presentare caratteristiche anche complesse di interattività.
Infine, allo stesso modo di qualsiasi documento ipertestuale, il vrml prevede
l’impiego di link a url remoti e naturalmente a qualunque altro file di tipo
.wrl (questo è il formato dei files vrml).
Per una corretta pronuncia della sigla vrml occorre sillabare le singole lettere dell’alfabeto inglese: ViErEmEl. In gergo vrml viene anche denominato,
più semplicemente, “vermel”. Per quanto riguarda il significato, in un pri-
Fig. 2.7: Logo vrml97
mo periodo vrml veniva tradotto in Virtual Reality Markup Language (in
analogia con html e i linguaggi che fanno uso dei cosiddetti “marcatori” o
contrassegni); in seguito la parola Markup è stata sostituita con Modeling
per meglio rappresentare le proprietà di modellazione grafica del linguaggio.
Il motivo fondamentale per cui si è deciso di usare il vrml per importare i
volti virtuali sta nel fatto che il vrml costituisce un formato standard per
descrivere scene tridimensionali, contrariamente ai formati proprietari dei
16
numerosi tools che si trovano in circolazione.
Ciò significa che un file vrml è accessibile da qualsiasi macchina indipendentemente dalla piattaforma, come per i documenti html che possono essere
visualizzati sostanzialmente allo stesso modo su macchine Windows, Mac,
Unix, Linux, ecc.
Il vrml consente all’utilizzatore di interagire con il modello, spostarlo, ruotarlo e osservarlo da diversi punti di vista.
Un file .wrl, è un semplice file di testo che utilizza caratteri ascii (come
l’html ad esempio) che contiene al suo interno tutti i comandi necessari a
descrivere una scena tridimensionale. I principali componenti [12] contenuti
nel file vrml sono: header, scene graph, i prototypes e gli event routing:
• header - per una semplice identificazione del file vrml, ogni file vrml
inizia con: #VRML V2.0.
• scene graph - lo scene graph contiene i nodi che descrivono gli oggetti
e le loro proprietà, i componenti sono raggruppati gerarchicamente
per fornire una rappresentazione audio/video dell’oggetto. È un grafo
diretto aciclico, se c’è un arco tra un nodo A e un nodo B, significa
che nel nodo A c’è un campo nel quale viene direttamente specificato
il nodo B.
• prototypes - i prototypes permettono all’utente di estendere l’insieme
dei tipi dei nodi vrml.
• event routing - alcuni nodi vrml possono generare eventi in risposta
ai cambiamenti del mondo rappresentato oppure a causa dell’interazione con l’utente. L’event routing fornisce all’autore del modello un
meccanismo per separare la scena visualizzata dallo scene graph attraverso il quale gli eventi si propagano, generando cambiamenti in altri
nodi. Una volta generati, gli eventi vengono inviati sequenzialmente
e processati dai nodi cui sono destinati. Questo processamento può
cambiare lo stato di un nodo, può generare eventi addizionali oppure
cambiare la struttura dello scene graph.
Il processamento, l’esecuzione e la presentazione di un file vrml tipicamente
fanno parte di un meccanismo che prende il nome di browser, che visualizza
gli oggetti contenuti dallo scene graph.
Il browser mostrato in fig. 2.8 raffigura un’applicazione che prende come
input il file contenente il modello vrml e gli input di manipolazione e navigazione che arrivano dall’utente. I tre principali componenti del browser
sono: il parser, lo scene graph e l’audio/visual presentation.
Il parser legge il file vrml e genera lo scene graph. Lo scene graph è costituito dalla Transformation Hierarchy (i nodi) e dal Route Graph; include
anche l’Execution Engine che processa gli eventi, legge e edita il Route Graph ed effettua i cambiamenti nella Transformation Hierarchy. Lo user input
17
Fig. 2.8: Modello concettuale di un browser vrml
riguarda i sensori e la navigazione, è strettamente collegato al Route Graph (i sensori) e all’Audio/Visual Presentation. L’Audio/Visual Presentation
esegue sia il rendering grafico che quello audio della Transformation Hierarchy che viene ripresentato all’utente.
In afms, il modello che viene fornito come input per l’applicazione deve
soddisfare dei prerequisiti fondamentali, più specificatamente, il modello deve essere compatibile con la definizione di volto neutro data dallo standard
mpeg-4, e cioè:
lo sguardo deve essere rivolto nella direzione dell’asse z, tutti i muscoli devono essere rilassati, le palpebre devono essere tangenti all’iride, il diametro
della pupilla deve essere 1/3 di quello dell’iride, il labbro superiore e quello
inferiore si toccano in modo tale che la bocca sia chiusa, i denti dell’arcata
superiore si toccano con quelli dell’arcata inferiore.
Infine, al modello di input vengono resettate tutte le trasformazioni presenti
(traslazioni, rotazioni e scalamenti), in modo tale da rappresentarlo in coordinate del mondo anzichè in coordinate locali. Il fatto di avere il modello
rappresentato in coordinate del mondo è necessario per la costruzione della
mappa muscolare del volto e per deformare la pelle agendo direttamente
sulla mesh vrml.
18
2.3.5
visage|SDK
visage|SDK C++ Software Development Kit for Virtual Character animation, è
un pacchetto software completamente dedicato all’animazione di personaggi
virtuali, è basato sullo standard mpeg-4 fba (Face and Body Animation)
e contiene i supporti necessari sia all’interattività che all’animazione off-line
dei modelli virtuali (vrml).
Il visage|SDK-SE è un insieme di librerie per lo sviluppo dell’animazione facciale utilizzabili sia con Microsoft Visual C++ 6.0 che con Microsoft Visual
Studio .NET 2003, il loro utilizzo è stato fondamentale per l’implementazione di afms, in quanto mettono a disposizione dello sviluppatore tutti gli
strumenti necessari per l’animazione dei volti virtuali, come per esempio la
possibilità di gestire i modelli vrml con i relativi fdp e di interagire con
essi attraverso mouse e tastiera.
Del pacchetto software messo a disposizione dalla Visage Technologies AB [3]
di particolare aiuto è stato visage|life con il quale è stato possibile visualizzare ed editare gli fdp dei modelli vrml.
Fig. 2.9: Esempio di visage|life
19
Capitolo 3
Anatomia del volto umano
3.1
Osteologia del cranio
Lo scheletro del cranio è distinto in due porzioni: la scatola cranica (neurocranio) ed il massiccio facciale (splancnocranio).
3.1.1
Neurocranio
Le ossa del neurocranio si distinguono in impari e pari.
Le ossa impari sono rappresentate dal frontale, l’etmoide, lo sfenoide, l’occipitale; quelle pari sono il temporale e il parietale.
Il frontale è un osso mediano, che contribuisce a delimitare la fossa cranica,
con la sua porzione verticale, e la cavità orbitaria, con la sua porzione orizzontale.
L’etmoide è un osso mediano, costituito da due lamine e due masse laterali.
La sua lamina perpendicolare contribuisce alla costituzione del setto nasale.
Le masse laterali contribuiscono a formare l’orbita, mentre la faccia mediale
compone in parte le cavità nasali.
L’osso sfenoide è anch’esso mediano; insieme ad altre ossa, compone la base
cranica, le cavità orbitarie e nasali.
Esso presenta un corpo centrale, dalle cui facce laterali originano le cosiddette ali dello sfenoide: due piccole ali anteriori e due grandi ali posteriori.
Inferiormente, sono presenti i processi pterigoidei.
L’occipitale, osso mediano, occupa la porzione postero-inferiore della scatola
cranica. È costituito da una squama posteriore, da due porzioni laterali e
da una anteriore o basilare. Tali porzioni delimitano il foro occipitale.
Il temporale è un osso pari. Contribuisce alla costituzione della base cranica
e delle pareti laterali della volta. È composto da più parti: la petromastoidea, la squamosa, la timpanica e la stiloidea. Notevole importanza è
rivestita dalla porzione petrosa, costituita dalla piramide o rocca, contenente l’organo dell’udito.
Il parietale è un osso quadrilatero, pari e simmetrico, che contribuisce a de20
limitare la volta cranica, nella sua porzione postero-superiore.
3.1.2
Splancnocranio
Lo splancnocranio, o massiccio facciale, è rappresentato dalle quattordici
ossa della porzione antero-inferiore del cranio.
Le ossa pari del massiccio facciale sono: il mascellare, il nasale, il lacrimale,
l’osso palatino, il cornetto inferiore e lo zigomatico; le ossa impari sono il
vomere e la mandibola. Solo quest’ultima gode di mobilità, articolandosi
con i condili dell’osso temporale (articolazione temporo-mandibolare).
Il mascellare è un osso pari, che contribuisce a delimitare la cavità orbitaria,
boccale e nasale. È costituito da un corpo e da quattro processi: frontale,
zigomatico, palatino ed alveolare. Nel corpo è disposta un’ampia cavità,
detta seno mascellare, comunicante con le cavità nasali.
Le ossa nasali sono piccole lamine quadrilatere, che costituiscono la volta
della piramide nasale.
L’osso lacrimale è un osso pari e simmetrico, che contribuisce a delimitare
parte della cavità orbitaria.
L’osso palatino, anch’esso pari, è costituito da due lamine: verticale ed orizzontale. Quest’ultima forma, insieme al processo palatino del mascellare, la
volta del palato e, quindi, la base delle cavità nasali.
Lo zigomatico è un osso quadrilatero pari. È articolato anteriormente con il
mascellare, posteriormente con il temporale e superiormente con il frontale.
Il vomere è un osso impari, che partecipa alla costituzione del setto nasale,
insieme all’etmoide.
La mandibola è un osso impari e mediano, costituito da una parte centrale, detta corpo, e da due porzioni laterali, dette branche montanti. Nella
porzione superiore di queste ultime si trova una profonda incisura, che si articola con l’osso temporale per formare l’articolazione temporo-mandibolare,
per mezzo della quale è possibile compiere movimenti di apertura e chiusura della bocca, nonché di spostamento anteriore, posteriore e laterale della
mandibola stessa.
[13]
21
Fig. 3.1: Vista frontale del cranio. Legenda: 1- Tubercolo mentale. 2Corpo della mandibola. 3- Ramo della mandibola. 4- Spina nasale anteriore.
5- Fossa canina. 6- Foro infraorbitario. 7- Foro zigomatico. 8- Superficie
orbitaria del mascellare. 9- Fossa temporale. 10- Superficie laterale dell’etmoide. 11- Fessura orbitaria superiore. 12- Osso lacrimale. 13- Foro ottico.
14- Forame etmoidale. 15- Linea temporale. 16- Solco sopraorbitario. 17Glabella. 18- Tuberosità frontale. 19- Arco sopraccigliare. 20- Osso parietale. 21- Sutura naso frontale. 22- Pterion. 23- Grande ala dello sfenoide. 24Superficie orbitaria della grande ala dello sfenoide. 25- Parte squamosa del
temporale. 26- Osso nasale sinistro. 27- Osso zigomatico. 28- Fessura orbitaria inferiore. 29- Arco zigomatico. 30- Apertura piriforme. 31- Processo
mastoideo. 32- Fossa incisiva. 33- Angolo della mandibola. 34- Forame
mentale. 35- Sinfisi mentoniera.
22
3.2
Miologia del cranio
Al cranio fanno capo vari gruppi muscolari, che possono essere distinti in
estrinseci ed intrinseci.
I muscoli estrinseci hanno origine in parti diverse dal cranio (collo, tronco)
e prendono inserzione su di esso.
I muscoli intrinseci sono invece completamente alloggiati nella testa, dove
trovano sia origine che terminazione.
La muscolatura intrinseca del cranio è costituita da muscoli scheletrici (o
masticatori) e muscoli mimici (o pellicciai).
Oltre ad essi, si trovano nella testa altri muscoli, come quelli del padiglione
auricolare, del globo oculare, dell’orecchio medio, della lingua etc., che non
saranno però oggetto della presente trattazione.
Fig. 3.2: Muscoli mimici visti anteriormente [14]
23
3.2.1
Muscoli scheletrici (Masticatori)
I muscoli masticatori collegano la scatola cranica alla mandibola, determinando i movimenti di quest’ultima: abbassamento ed elevazione, proiezione
anteriore e posteriore, lateralità.
I muscoli agenti sull’articolazione temporo-mandibolare sono il temporale,
il massetere ed i muscoli pterigoidei esterno ed interno.
Il muscolo temporale ha una forma triangolare ed è alloggiato nella fossa
temporale. Esso origina dalla linea temporale inferiore dell’osso parietale e,
anteriormente, dall’osso frontale. I suoi fasci si fissano, tramite un robusto
tendine, sul processo coronoideo della mandibola. La contrazione di tale
muscolo determina l’elevazione e lo spostamento posteriore della mandibola.
Il muscolo massetere è un muscolo di forma quadrilatera, disposto sulla
branca montante della mandibola. È formato da una porzione superficiale
e una profonda. Esso origina dall’arcata zigomatica e si porta in basso per
raggiungere il margine posteriore, l’angolo e il margine inferiore della mandibola. L’azione del muscolo massetere determina, unitamente a quella del
temporale, l’elevazione della mandibola.
Il muscolo pterigoideo esterno origina dal processo pterigoideo e dalla grande
ala dello sfenoide e si porta lateralmente al collo del condilo della mandibola.
Tale muscolo agisce spostando la mandibola in avanti e lateralmente.
Il muscolo pterigoideo interno ha forma quadrilatera ed è situato sulla faccia mediale del ramo della mandibola. Origina dalla fossa pterigoidea e si
inserisce sulla faccia mediale dell’angolo della mandibola. L’azione di tale
muscolo determina l’elevazione mandibolare.
3.2.2
Muscoli mimici (Pellicciai)
I muscoli mimici sono per lo più formati da esili fasci muscolari, spesso privi
di aponeurosi. Essi prendono inserzione, con almeno uno dei due capi, sulla
faccia profonda della cute e sono determinanti nell’espressione fisionomica.
Tali muscoli intrinseci, per la prevalente funzione che svolgono, sono particolarmente sviluppati nel massiccio facciale, mentre si presentano più ridotti in
corrispondenza del neurocranio. Lo strato muscolare mimico è posizionato
profondamente allo strato del tessuto connettivo sottocutaneo.
I muscoli mimici sono numerosi e collocati in diversi strati, tuttavia la descrizione seguente considera unicamente i muscoli implementati nel presente
progetto.
Per comodità espositiva, è possibile seguire un criterio topografico e suddividere le regioni del cranio in: epicranica, orbitaria, nasale e buccale, considerandone i relativi muscoli. Non sarà menzionata la regione auricolare,
della quale non è stato implementato alcun muscolo, essendo questa dotata,
24
nell’umano, di scarsissima possibilità di movimento.
Regione epicranica
Di essa fanno parte il muscolo frontale e il muscolo procero (porzioni del
muscolo epicranico, che occupa l’intera regione).
Il muscolo frontale è rappresentato dalla porzione anteriore del muscolo epicranico, che si presenta come una sottile formazione muscoloaponeurotica,
distesa sulla volta cranica. Il frontale è un muscolo pari, appiattito e di forma quadrilatera; origina dal margine anteriore della galea capitis (porzione
intermedia aponeurotica del muscolo epicranico) e si porta anteriormente e
in basso per inserirsi nella faccia profonda della cute, in corrispondenza del
sopracciglio, della glabella e della parte superiore del dorso del naso; i suoi
fasci più mediali sono indicati con il termine di muscolo procero. Il muscolo
frontale, contraendosi, sposta in avanti il cuoio capelluto e corruga la fronte
(vedi fig. 3.3).
Fig. 3.3: Muscolo frontale e muscolo procero in afms.
Regione orbitaria
Di tale regione fanno parte due muscoli: il corrugatore del sopracciglio e
l’orbicolare dell’occhio.
Il muscolo corrugatore è una sottile lamella carnosa, a concavità inferiore,
situata nel sopracciglio.
Origina dall’estremità mediale dell’arcata sopraccigliare e si inserisce sul
derma del sopracciglio in corrispondenza del foro sovraorbitario. È posto
25
profondamente al muscolo frontale e alla parte orbitaria del muscolo orbicolare. Contraendosi, porta medialmente e in basso la cute del sopracciglio.
Il muscolo orbicolare dell’occhio ha la forma di un anello ellittico, che si
dispone intorno alla rima palpebrale. Vi si distinguono una parte orbitaria,
una parte palpebrale e una parte lacrimale.
La porzione orbitaria è la più sviluppata ed è posta eccentricamente rispetto
alla palpebra. Essa origina dal margine superiore del legamento palpebrale
mediale e dal terzo mediale del margine sovraorbitario; si inserisce sul margine inferiore del legamento palpebrale mediale, sul terzo mediale del margine
infraorbitario e sul sacco lacrimale. Essa costituisce dunque un anello quasi
completo intorno alle palpebre, che si interrompe soltanto medialmente, tra
l’origine e l’inserzione. In corrispondenza dell’angolo laterale dell’occhio, alcuni fascetti abbandonano la parte orbitaria, scendendo nella guancia, dove
entrano nella compagine del muscolo zigomatico.
La porzione palpebrale è contenuta nello spessore della palpebra superiore
ed inferiore. Le sue fibre originano dal legamento palpebrale mediale e si
portano esternamente per inserirsi al rafe palpebrale laterale.
La porzione lacrimale è situata profondamente. Prende origine dalla cresta
lacrimale posteriore, dietro al sacco lacrimale, e si dirige anteriormente e
in fuori, fino alla commessura palpebrale mediale dove si divide in due fasci, rispettivamente per la palpebra superiore e inferiore, che confluiscono
nella parte palpebrale del muscolo. La contrazione del muscolo orbicolare
dell’occhio determina la chiusura della rima palpebrale, convoglia le lacrime
verso l’angolo interno dell’occhio e ne facilita il deflusso, dilatando il sacco
lacrimale (vedi fig. 3.4).
Fig. 3.4: Muscolo corrugatore del sopracciglio e muscolo orbicolare
dell’occhio in afms.
26
Regione nasale
I muscoli considerati, per questa regione, sono il nasale e il trasverso nasale
(porzione del precedente).
Il muscolo nasale è formato da una parte trasversa (muscolo trasverso del
naso) e da una parte alare (muscolo mirtiforme).
L’origine delle due parti è comune, dai gioghi alveolari dei denti incisivi e
canini superiori e dalla fossetta incisiva.
La parte trasversa, che ha origine più lateralmente, ricopre la parte posteriore dell’ala del naso e si fissa al dorso del naso mediante un’aponeurosi che
si unisce a quella del lato opposto.
La parte alare si porta alla cute dell’estremità posteriore del setto mobile e
della narice. Contraendosi, il muscolo nasale comprime la parete leterale del
naso, restringendo la narice e il vestibolo (vedi fig. 3.5).
Fig. 3.5: Muscolo nasale e muscolo trasverso nasale in afms.
Regione buccale
Le labbra presentano grande mobilità e sono pertanto fornite di un ricco
corredo muscolare, del quale sono stati presi in considerazione il muscolo elevatore del labbro superiore, zigomatico maggiore e minore, orbicolare
della bocca, risorio, depressore dell’angolo della bocca e mentale.
Il muscolo elevatore del labbro superiore origina dal margine infraorbitario,
al di sopra del foro infraorbitario, e si inserisce alla cute del labbro superiore,
medialmente alla terminazione dello zigomatico minore. La contrazione di
tale muscolo determina il sollevamento del labbro superiore (vedi fig. 3.6).
Il muscolo zigomatico maggiore origina dalla faccia laterale dell’osso zigomatico e si inserisce sulla faccia profonda della cute e della mucosa labiale,
in corrispondenza della commessura, dove invia anche fibre nella compagine
del muscolo orbicolare della bocca. Con la sua azione, sposta la commessura
labiale in alto e indietro (vedi fig. 3.7).
27
Fig. 3.6: Muscolo elevatore del labbro superiore in afms.
Fig. 3.7: Muscolo zigomatico maggiore in afms.
Il muscolo zigomatico minore origina dalla faccia laterale dell’osso zigomatico, anteriormente allo zigomatico maggiore, e si inserisce alla cute del labbro
superiore, al di sopra della commessura. La contrazione di tale muscolo consente il sollevamento del labbro superiore (vedi fig. 3.8).
Il muscolo orbicolare della bocca partecipa largamente alla costituzione delle labbra e si presenta come un anello ellittico disposto intorno alla rima
buccale; si estende dal margine libero delle labbra alla base del naso, in alto,
e al solco mentolabiale, in basso. Vi si considerano una parte esterna e una
parte interna. La parte esterna è periferica e comprende fasci che provengono da vari muscoli mimici (canino, buccinatore, triangolare, incisivi); tali
fasci formano due semicerchi che hanno il loro centro in corrispondenza della
commessura e la loro estremità sulla linea mediana del labbro superiore e inferiore. Alcuni fasci della porzione esterna si inseriscono alla faccia profonda
della cute labiale, in vicinanza della linea mediana e della cute che riveste il
contorno posteriore della narice e la parte posteriore del setto membranoso
(muscolo depressore del setto). La parte interna del muscolo orbicolare è
formata da una anello posto in vicinanza del margine libero delle labbra.
Tale anello è costituito da una parte superiore (labbro superiore) e da una
28
Fig. 3.8: Muscolo zigomatico minore in afms.
parte inferiore (labbro inferiore), che si incrociano a livello delle commessure, inserendosi alla faccia profonda della cute e della mucosa.
In vicinanza del margine libero delle labbra, si trovano poi fasci che si dirigono sagittalmente dalla faccia profonda della cute alla faccia profonda della
mucosa. Con la sua azione, il muscolo orbicolare della bocca restringe o
chiude la rima buccale; consente inoltre di sporgere in avanti le labbra (vedi
fig. 3.9).
Fig. 3.9: Muscolo orbicolare della bocca in afms.
Il muscolo risorio ha forma triangolare, con la base posteriore e l’apice anteriore. Prende origine dalla fascia parotidea e si porta anteriormente, decor29
rendo sulla fascia masseterina, per raggiungere la commessura labiale, dove
si inserisce profondamente alla cute. Contraendosi, il risorio sposta indietro
la commessura labiale (vedi fig. 3.10).
Fig. 3.10: Muscolo risorio in afms.
Il muscolo depressore dell’angolo della bocca (o muscolo triangolare delle
labbra) si trova al di sotto della commessura labiale, con la base in basso e l’apice in alto. Origina dalla faccia esterna del corpo della manibola,
in vicinanza della base; i suoi fasci si portano in alto, inserendosi in parte
sulla cute della commessura e in parte risalendo nel labbro superiore, dove
entrano a far parte del muscolo orbicolare. La contrazione del depressore
dell’angolo sposta in basso la commessura labiale (vedi fig. 3.11).
Fig. 3.11: Muscolo depressore dell’angolo della bocca in afms.
Il muscolo mentale si trova in corrispondenza della sinfisi del mento. Origina dal giogo alveolare del dente incisivo mediale inferiore e si porta in basso
inserendosi alla cute del mento. Con la sua azione, solleva e corruga la cute
del mento (vedi fig. 3.12).
[13] [14] [15]
30
Fig. 3.12: Muscolo mentale in afms.
31
Capitolo 4
Modello della pelle
4.1
Anatomia della pelle umana
La pelle umana è l’organo più grande di tutto il corpo, la sua superficie, in
una persona adulta, è di circa 2 metri quadri e svolge innumerevoli funzioni,
tutte di grandissima importanza e utilità: ci protegge dai virus e dai batteri che ci attaccano dal mondo esterno, regola la temperatura corporea e
immagazzina acqua, grasso e sangue. La sua importanza può essere meglio
percepita con l’aiuto di qualche dato significativo:
• la pelle di una persona adulta costituisce circa il 15–20% dell’intero
peso corporeo
• ogni centimetro quadrato di pelle ha circa 6.000.000 di cellule, 5.000
recettori sensoriali, 100 ghiandole sudoripare e 15 ghiandole sebacee.
La pelle viene continuamente rigenerata. Una cellula nasce nel livello più
basso chiamato derma, fornita di vasi sanguigni e terminazioni nervose, quindi migra verso l’alto per circa due settimane, fino a quando raggiunge il livello più esterno, chiamato epidermide. La cellula passa altre due settimane
nell’epidermide, appiattendosi gradualmente, poi muore e viene cambiata.
Ogni giorno vengono cambiate circa 2-3 miliardi di cellule, la pelle si rinnova completamente ogni mese e questo accade perché è la nostra prima
linea difensiva contro la disidratazione, le infezioni, le ferite e le temperature
estreme.
L’epidermide
L’epidermide è la zona più esterna della pelle, ha uno spessore compreso tra
0.5 - 1 mm, ed è costituita da tre tipi di cellule: cheratinociti, melanociti e
cellule di Langerhans.
Le cellule cheratinociti sono quelle che producono la cheratina e rappresentano la maggior parte delle cellule dell’epidermide, man mano che maturano
32
perdono acqua e si appiattiscono, muovendosi verso lo strato più esterno,
chiamato stratum corneum, formato anche da proteine indurite e da lipidi,
generando cosı̀ una crosta protettiva.
I melanociti invece, producono la melanina, che è il pigmento responsabile
del tono e del colore della pelle.
Infine ci sono le cellule di Langerhans che costituiscono il primo livello del
sistema immuntario, queste prevengono l’assorbimento da parte della pelle
di sostanze dannose.
Il derma
Il derma è lo strato interno della pelle. In esso sono presenti le ghiandole
sudoripare, i bulbi piliferi e le terminazioni nervose, mentre alla sua base si
trova il pannicolo adiposo, che prende il nome di ipoderma. Il ruolo del derma
è fondamentale in quanto provvede al nutrimento e all’ossigenazione della
soprastante epidermide, sprovvista di vasi. L’interfaccia tra epidermide e
derma è costituita da centinaia di estroflessioni di entrambi i tessuti (papille
e creste) il cui fine è quello di aumentare esponenzialmente l’area di contatto
in modo da ottimizzare l’adesione e gli scambi.
L’ipoderma
È lo strato più interno della pelle, si trova al di sotto del derma ed è costituito
essenzialmente di grasso. Il grasso subcutaneo assorbe gli urti e funge da
isolante termico, proteggendo i tessuti sottostanti dal freddo e dai traumi.
Fig. 4.1: Sezione trasversa della pelle umana
33
4.2
Biomeccanica della pelle umana
La biomeccanica studia il comportamento meccanico dei materiali biologici
sotto particolari condizioni (pressione, trazione, vibrazione, frattura, ecc.).
Nel caso particolare di questo studio sull’animazione facciale, la biomeccanica spiega bene il comportamento della pelle del volto quando questa viene
deformata da forze esterne, che possono essere indotte dalla contrazione muscolare e/o dal movimento della mandibola.
Tipicamente in biomeccanica, la forza applicata ad un materiale è misurata
in relazione della grandezza del campione. Questa relazione è espressa dalla
seguente formula:
f
σ=
S
N
m2
(4.1)
dove σ è lo sforzo, f è la forza applicata e S è la sezione su cui è stata
applicata la forza.
Se invece si tratta di qualcosa di abbastanza semplice, come per esempio una
molla, lo sforzo e dovuto al cambiamento della sua lunghezza l, a partire da
una lunghezza a riposo lr si può calcolare come:
e=
l − lr
lr
(4.2)
Purtroppo, però, il comportamento della pelle, come quello di altri tessuti
organici, non può essere propriamente descritto da queste formule.
Risultati sperimentali hanno mostrato che la pelle ha un andamento viscoelastico non lineare [16] (vedi fig. 4.2). Sottoposta ad un piccolo sforzo, la
Fig. 4.2: Relazione stress-strain del tessuto facciale
cute offre una piccola resistenza alla forza, a causa delle fibre di collagene
che si tendono. Se però la deformazione è maggiore, le fibre di collagene si
34
tendono ancora di più, fino ad allinearsi con la deformazione, aumentando
la resistenza.
Si può vedere infatti che la relazione stress-strain durante la fase di deformazione (loading) è diversa da quella durante la fase di rilascio (unloading),
formando un ciclo. Ciascuna parte di questo ciclo (loading e unloading) può
essere descritta da una funzione pseudo-elastica non lineare, poiché però, la
differenza tra le due non è significativa, è possibile approssimare tutta la
relazione con una curva bifasica.
La pelle mostra delle evidenti proprietà viscoelastiche, infatti si comporta
in parte come un solido elastico e in parte come un fluido viscoso.
La simulazione delle complesse proprietà della pelle è un obiettivo molto difficile da perseguire, anche se si hanno a disposizione PC sempre più potenti
e performanti.
In afms, per simulare in maniera realistica la cute umana, si è deciso di
usare un modello fisico che si basa principalmente sul concetto di masse e di
molle (mass-spring system), che permette di simulare l’elasticità non lineare
con uno sforzo computazionale abbastanza contenuto.
4.3
Mass-Spring System
Nella computer graphics il sistema masse-molle (mass-spring system) viene
utilizzato spesso per simulare oggetti deformabili, come per esempio la stoffa
e gli oggetti soffici. In questo caso viene utilizzato un sistema di masse-molle
per simulare la cute umana. Come è stato già detto, afms prende come
input un modello vrml che raffigura un volto umano, il modello è costituito
da un insieme di mesh triangolari (vedi fig. 4.3). In pratica, simulare l’elasticità della pelle vuol dire deformare le mesh del modello vrml quando i
muscoli facciali vengono azionati.
A questo scopo l’intero sistema di mesh che costitutisce il modello viene convertito in un sistema di masse e molle, in cui a ciascun vertice del triangolo
Modello
VRML
beta
joakim
john
kevin
king
reana
yoda
Vertici
2197
909
736
498
757
6420
853
Poligoni
4118
1752
1341
956
1468
12524
1622
Molle
12634
5324
4156
2908
4452
37864
4954
Tabella 4.1: Questa tabella mostra, per ciascun modello, il numero di
vertici, di poligoni e di molle.
35
Fig. 4.3: (a) Modello facciale con textures (b) Modello facciale wire frame
viene fatta corrispondere una massa m e a ciascun lato viene fatta corrispondere una molla.
La deformazione è generata dall’applicazione delle forze muscolari sui nodimassa, il movimento di questi nodi induce delle forze interne che a loro volta
fanno muovere i nodi-massa a loro adiacenti, questo processo continua fino a
quando non si raggiunge un nuovo punto di equilibrio in cui le forze interne
ed esterne si annullano.
La forza esercitata da una molla [17] sui nodi-massa a e b che vi sono
attaccati è:
l̇ · l l
Fa = − ks (|l| − r) + kd
|l| |l|
(4.3)
Fb = −Fa
(4.4)
dove con Fa e Fb è stata indicata la forza esercitata rispettivamente sul
nodo a e b, l è la lunghezza della molla deformata, r è la lunghezza della
molla a riposo, ks è la costante di rigidità, kd è la costante di smorzamento
e l̇ è la derivata nel tempo di l, cioè la differenza tra le velocità dei due nodi
a e b (va − vb ).
Nell’equazione 4.3 l’intensità della forza è proporzionale alla differenza tra
36
Fig. 4.4: (a) Disposizione delle molle sulla superficie del modello (b) Le
unità di base che costituiscono la molla nel sistema di coordinate 3D. Il
triangolo grigio rappresenta lo smorzamento (damper).
la lunghezza attuale della molla e quella a riposo, mentre l’intensità della
forza di smorzamento è proporzionale alla differenza delle velocità dei nodi a
e b. Forze uguali ed opposte agiscono su ogni nodo, lungo l’asse che li unisce.
Come è stato detto nel par.4.1, la pelle umana è essenzialmente costituita
da tre strati; in afms la pelle viene simulata come un unico strato, questo
per ottenere una simulazione più veloce, in quanto si riduce sensibilmente il
numero di molle. Nonostante questa semplificazione, la simulazione continua ad essere molto relistica.
Può però accadere che l’intero sistema di masse e molle diventi instabile quando il movimento delle molle diventa estremamente grande e rapido
(questo può accadere quando c’è un movimento facciale molto veloce), in
questo caso quindi, l’intero sistema entra in risonanza e collassa. A volte
nemmeno aumentare la costante di smorzamento può servire. Per cercare di
rendere l’intero sistema il più stabile possibile, si cerca di calibrare bene la
costante di elasticità e il timestep della simulazione.
4.4
Forze vincolari di compenetrazione del cranio
Per riuscire ad ottenere una buona simulazione bisogna tener conto anche di
un altro componente fondamentale del volto: il cranio. A causa infatti della
presenza del teschio [2], la pelle, durante la creazione di un’espressione, deve
poter scivolare sulla parte ossea.
Se cosı̀ non fosse, durante la simulazione, a causa delle forze imposte sul modello dai muscoli mimici, si potrebbero avere degli effetti indesiderati come
per esempio quello della perdita della forma e del volume corretti del volto.
Per ovviare a questo problema, è stata aggiunta oltre alle varie forze (musco37
lari ed elastiche) anche una forza vincolare di non penetrazione del teschio,
applicata a tutti i nodi interessati dal movimento, che permette a tutti i
nodi della pelle di scivolare sul cranio.
In afms viene preso come superficie di riferimento per il teschio il modello
vrml stesso.
La forza vincolare di non penetrazione del volto Fskull (xi ), applicata a ciascun nodo xi del modello vrml è calcolata come:
Fskull (xi ) =
−(Fnet (xi ) · ni ) ni se Fnet (xi ) · ni < 0
0
altrimenti
(4.5)
dove Fnet (xi ) è la forza totale (elastica, di smorzamento e muscolare) dell’intera rete di nodi del modello vrml agente sul nodo xi e ni è la normale
al nodo xi . Quindi, affinchè la pelle scivoli sul cranio (vedi fig. 4.5), alla
Fnet (xi ) viene sommata la Fskull (xi ), ottenendo come risultato la F net (xi ).
Fig. 4.5: Forza vincolare di non penetrazione del cranio Fskull (xi )
38
4.5
Integrazione numerica
Durante lo sviluppo di afms, è stata posta particolare attenzione sull’utilizzo da parte di questa applicazione delle risorse di memoria e di tempo, si è
cercato infatti di riuscire ad ottenere un buon compromesso tra prestazioni
e accuratezza dell’animazione.
Uno dei punti chiave è stato quello di realizzare correttamente il comportamento dell’intero sistema di masse e molle, dell’azione muscolare e del
vincolo imposto dal cranio, attraverso un’integrazione numerica che fosse la
meno dispendiosa possibile dal punto di vista delle risorse computazionali.
4.5.1
Equazioni che regolano la deformazione della pelle
Le equazioni che regolano la deformazione del volto virtuale costituito dal
sistema di masse e molle, dai muscoli mimici e dal vincolo di non compenetrazione del cranio, sono equazioni differenziali del secondo ordine e possono
essere espresse [18] attraverso vettori tridimensionali, del tipo:
M
dx(t)
d2 x(t)
+ Kx(t) = Fmus (x(t)) + Fskull (x(t))
+D
2
dt
dt
(4.6)
dove M è la massa del nodo, D è il fattore di smorzamento, K è il coefficiente di elasticità, Fmus è la forza esercitata dai muscoli e infine Fskull è la
forza vincolare di non compenetrazione del cranio.
Se si ha un sistema formato da n nodi, allora x è un vettore di dimensione
3n mentre M, D e K sono matrici diagonali 3n × 3n.
Kx(t) è la forza elastica, quindi si può introdurre Fela che può essere espressa come:
Fela (x(t), K) = Kx(t)
(4.7)
sostituendo la 4.7 nell’equazione 4.6 e riordinando si ottiene:
M
dx(t)
d2 x(t)
= Fmus (x(t)) + Fskull (x(t)) − Fela (x(t), K)
+D
2
dt
dt
(4.8)
Fmus , Fskull e Fela sono vettori di dimensione 3n.
La soluzione completa per l’intero sistema si ottiene processando iterativamente tutti i punti-massa e per ognuno di essi bisogna risolvere l’equazione 4.8.
39
Si prenda, per semplicità, in considerazione un singolo punto-massa mi e
per esso verrà risolta l’equazione 4.8. Per comprendere meglio come cercare
la soluzione di questa equazione differenziale del secondo ordine, la si divide
in un sistema di due equazioni differenziali del primo ordine, introducendo
la funzione della velocità vi (t).
⎧ dx (t)
i
⎪
⎨ dt = vi (t)
⎪
⎩ dvi (t)
dt
=
Fmus (xi (t))+Fskull (xi (t))−Fela (xi (t),K)−Dv i (t)
mi
(4.9)
Se al tempo t0 i valori iniziali sono:
x0i = xi (t0 )
vi0 = vi (t0 )
data la posizione xni = xi (tn ) e la velocità vin = vi (tn ) al tempo tn , l’obiettie vin+1 del time step successivo
vo è quello di calcolare rispettivamente xn+1
i
tn+1 .
È stato dimostrato [17] che i metodi di integrazione implicita sono migliori rispetto a quelli espliciti nel caso in cui si ha a che fare con sistemi di
equazioni rigidi. In questo modo, un sofisticato metodo implicito consente
di poter usare time step abbastanza grandi per risolvere le equazioni indicate sopra. L’attenzione verrà ora focalizzata su un semplice metodo che
garantisce un’alta velocità di aggiornamento per l’animazione.
e vin+1 al tempo tn+1 a partire
Si usa il metodo implicito per calcolare xn+1
i
dagli stati correnti xni e vin al tempo tn .
⎧
Fmus (xn+1
)+Fskull (xn+1
)−Fela (xn+1
,K)−Dvn+1
i
i
i
i
⎪
⎨ vin+1 = vin + Δt
mi
⎪
⎩
xn+1
i
=
xni
+
(4.10)
Δtvin+1
Come è possibile notare, la seconda equazione del sistema 4.10 dipende solamente dalla variabile vin+1 ; ma nella prima equazione, la funzione della
forza muscolare, la funzione della forza vincolare di non compenetrazione
del cranio e la forza elastica del sistema masse-molle, dipendono a loro volta
.
ancora da xn+1
i
ad ogni
Per semplificare la risoluzione del sistema, anzichè estrarre xn+1
i
viene
stimato
usando
il
metodo
di
Eulero
esplicito,
ottenentime-step, xn+1
i
do:
= xni + Δtvin
(4.11)
xn+1
i
appena calcolato con la 4.11 nella prima
Quindi, inserendo il valore di xn+1
i
equazione del sistema 4.10, si ottiene la vin+1 .
Il metodo di Eulero viene utilizzato per una gran quantità di applicazioni,
come per esempio i videogames. In afms è stata introdotta un’ulteriore
40
semplificazione nel metodo di Eulero (Semi-Implicit Backward Euler), che
permette una maggiore stabilità dell’applicazione, infatti viene dapprima
calcolata in maniera esplicita la vin+1 come:
Fmus (xn+1
) + Fskull (xn+1
) − Fela (xn+1
, K) − Dvn+1
i
i
i
i
mi
(4.12)
come:
e poi viene calcolata in maniera implicita la xn+1
i
vin+1 = vin + Δt
= xni +
xn+1
i
Δt n
(v + vin+1 )
2 i
(4.13)
Per assicurare che il sistema sia stabile, bisogna che valga sempre la seguente
relazione:
mi
(4.14)
Δt < 2
K
il che in pratica vuole dire che il time step Δt e la costante di rigidità K non
devono essere troppo grandi, mentre la massa mi non deve essere troppo
piccola.
41
4.6
Strutture dati nel mass-spring system
Al fine di ottenere una simulazione realistica degli effetti dei muscoli mimici
sulla pelle del volto, si è resa necessaria la disponibilità di alcuni dati per
ciascun nodo-massa e per ciascuna molla.
In fase di progettazione di afms, si è deciso di dedicare una classe per la
rappresentazione del singolo nodo e una classe per la rappresentazione della
molla.
4.6.1
Struttura dati del nodo-massa
L’oggetto “nodo” è composto dai seguenti campi:
• Massa: la massa del nodo, tutti i nodi hanno la medesima massa.
• Posizione iniziale: la posizione iniziale del nodo all’istante t0 .
• Posizione corrente: la posizione corrente del nodo all’istante ti .
• Prossima posizione corrente: la posizione del nodo all’istante ti+1 .
• Velocità corrente: la velocità corrente del nodo all’istante ti .
• Prossima velocità corrente: la velocità del nodo all’istante ti+1 .
• Forza della rete: la somma di tutte le forze agenti sul nodo.
• Normale: la normale ni del nodo.
• Nodi vicini: il vettore contenente gli indici dei nodi vicini.
• Numero dei nodi vicini: il numero dei nodi vicini.
• Facce: il vettore contenente gli indici delle facce dei poligoni a cui il
nodo appartiene.
• Vettore delle molle di connessione: il vettore contenente tutte le
molle che collegano il nodo xi ai suoi vicini.
• Numero delle molle di connessione: il numero delle molle che
connettono il nodo xi ai nodi vicini.
4.6.2
Struttura dati della molla
L’oggetto “molla” è composto dai seguenti campi:
• Lunghezza di riposo: è la lunghezza della molla quando su di essa
non agisce alcuna forza.
42
Fig. 4.6: Modello strutturale della molla. s è la componente elastica, d è
lo smorzamento
• Costante di rigidità: (stiffness) la costante di rigidità della molla
gioca un ruolo fondamentale nella simulazione, infatti attraverso di
essa si riesce a regolare la “durezza” della molla, controllandone quindi
l’andamento oscillatorio.
• Fattore di smorzamento: (damping factor ) è il fattore di smorzamento che regola per l’appunto lo smorzamento della molla. Vale la
pena ricordare che il modello di molla utilizzato in questo progetto
è quello costituito da una componente elastica e dallo smorzamento
(vedi fig. 4.6).
• Gli estremi: vengono specificati i nodi-massa che si trovano agli estremi della molla; degli estremi si conosce l’indice che fa riferimento ai
vertici del modello vrml e la posizione attuale assunta dai nodi-massa
al tempo ti .
43
Capitolo 5
Modello muscolare
5.1
Struttura anatomica reale del muscolo
Ogni muscolo risulta composto da fibre muscolari, il cui numero dipende
dalla grandezza del diametro trasverso del muscolo e dal trofismo1 di ogni
singola fibra, nonché dall’orientamento delle fibre stesse.
Vi sono diverse fasce connettivali che avvolgono il muscolo e le sue fibre, in
maniera tale da dividere la sua struttura globale in gruppi e sottogruppi.
La fascia più esterna è quella che avvolge l’intero muscolo e prende il nome
di epimisio. Le successive fasce sono il perimisio (che avvolge i fasci di fibre
muscolari) e l’endomisio (che avvolge le singole fibre).
Ogni fibra ha un diametro da 10 a 100 μm ed è costituita dalla membrana che
la avvolge, l’endomisio, da un contenuto indifferenziato detto sarcoplasma
(il citoplasma delle cellule muscolari) e da un certo numero di miofibrille, il
cui diametro varia da 1 a 2 μm. A sua volta la miofibrilla, avvolta da una
membrana detta sarcolemma, è costituita da miofilamenti fra loro contigui
o a contatto, in base alla funzione che stanno esplicando, detti actina e
miosina.
Funzione contrattile ultramicroscopica
La funzione contrattile è desumibile dal movimento dei filamenti di actina e
miosina (proteine contrattili). Tali filamenti, siti all’interno delle miofibrille,
si allineano parallelamente lungo l’asse maggiore del muscolo.
I filamenti di miosina sono più grossi e dotati di espansioni peduncolate,
dette ponti trasversali. Durante la contrazione, i ponti trasversali vengono
a contatto con i filamenti di actina, in particolari punti detti siti attivi; successivamente essi modificano la loro angolazione, spostando actina e miosina
l’una rispetto all’altra; quando un ponte perde il contatto con un sito dell’actina, viene ripreso dal sito attivo successivo, e cosı̀ via fino al termine della
1
Grado di “nutrizione” di un tessuto. Per le fibre muscolari ci si riferisce al loro spessore.
44
contrazione. I filamenti non variano dunque la loro lunghezza, ma scorrono
gli uni sugli altri, determinando macroscopicamente un complessivo accorciamento muscolare.
Anatomicamente, le striature visibili nelle sezioni longitudinali del muscolo
sono dovute al particolare allineamento dei filamenti actinici e miosinici. Si
distinguono, infatti, bande chiare e scure.
Le bande chiare sono definite bande o zone I (isotrope), quelle scure sono
definite bande o zone A (anisotrope). All’interno di ogni zona A è visibile
una parte più chiara detta zona H. La linea verticale che divide a metà la
zona I è detta linea Z.
L’unità funzionale contrattile del muscolo è denominata sarcomero. Tale segmento è compreso tra due linee Z, dunque risulta composto da una banda
scura A e due semibande chiare I. Le miofibrille possono essere considerate
come una successione di sarcomeri.
La contrazione muscolare determina un avvicinamento di due linee Z successive e, dunque, l’accorciamento di ogni singolo sarcomero.
Fig. 5.1: Struttura muscolare
45
Modello meccanico muscolare
Oltre alla specifica azione contrattile svolta dalle miofibrille, il muscolo è
dotato anche di strutture elastiche.
Le strutture elastiche sono costituenti del tessuto connettivo e si dividono
in strutture elastiche in serie e in parallelo.
Le strutture elastiche in serie (Es) sono rappresentate dal tendine e dai suoi
prolungamenti all’interno del muscolo: la loro funzione, durante l’attività
contrattile, è quella di “ammortizzare” le sollecitazioni prodotte sia dagli allungamenti che dalle contrazioni.
Le strutture elastiche in parallelo (Ep), rappresentate dal sarcolemma (membrana connettivale della miofibrilla), da altre membrane connettivali e dal
tessuto connettivo interposto, “smorzano” soltanto le sollecitazioni prodotte dagli allungamenti, riducendo le resistenze. Dalla fig. 5.2 che mostra il
Fig. 5.2: Modello meccanico muscolare
modello meccanico muscolare, dove C sono gli elementi contrattili (fibre),
Es ed Ep rispettivamente gli elementi elastici in serie e in parallelo, si può
constatare che se C si accorcia, solo gli Es si allungano, viceversa se il muscolo viene allungato, sia gli Es che gli Ep vengono allungati. Se, infatti,
nella linea del modello meccanico rappresentato da C e da Es ci fosse solo
C, dopo lo stiramento tutto il percorso necessario per la contrazione sarebbe
effettuato solo in maniera attiva, richiedendo quindi energia supplementare.
È necessario inoltre considerare la funzione di protezione interna, oltre che
esterna, di tali elementi connettivali: infatti, alla trazione e contrazione a
cui la parte contrattile partecipa in prima persona, contribuiscono con il
loro apporto di resistenza gli Es e gli Ep. Da sottolineare nuovamente, il
contributo in allungamento dato dagli Es, che consentono inoltre, nella fase
di ritorno elastico del muscolo, un risparmio di energia contrattile.
Forma e diametro dei muscoli
I muscoli del corpo umano presentano forme e dimensioni diverse, che dipendono in gran parte dalla qualità e dalla quantità di lavoro che devono
compiere. Ovviamente, quante più fibre muscolari sono comprese in un muscolo, tanta più forza esso potrà esprimere.
46
Per valutare la forza potenziale esprimibile da un muscolo, si considera la sezione trasversa anatomica del muscolo nel punto medio in cui, normalmente,
il diametro presenta la sua maggior ampiezza. Ciò è possibile soprattutto nei
muscoli fusiformi, che presentano la particolarità funzionale di poter esprimere un maggior grado di accorciamento e di allungamento.
Quando, tuttavia, si ha a che fare con muscoli penniformi, l’obliquità delle
loro inserzioni non consente con un’unica misura di verificare il diametro
trasverso; si fa, pertanto, ricorso alla misurazione della loro sezione trasversa fisiologica, cosı̀ detta in quanto non si tratta di una vera e propria sezione
trasversale.
Va osservato che l’obliquità delle fibre di un muscolo pennato consente di
potervene immagazzinare una maggior quantità e, quindi, di essere potenzialmente più forte. Viceversa, i muscoli fusiformi hanno, proporzionalmente, minor forza, ma, come già ricordato, possono esprimere una maggior
escursione dei loro filamenti contrattili, dunque una maggior ampiezza di
movimento.
Contrazione, allungamento e velocità di contrazione
Ricerche di fisiologia, effettuate con preparazioni muscolari confermate da
ricerche in vivo, hanno consentito, soprattutto attraverso la costruzione della
curva tensione/lunghezza (T/L) e tensione/velocità (T/V), di determinare
una serie di dati uili alla comprensione di alcune importanti proprietà e limiti del tessuto muscolare.
Si tratta, innanzitutto, delle modalità con cui si realizzano contrazioni e allungamenti nelle fibre muscolari e, poi, delle particolari modificazioni fisiche
che possono aver luogo a loro carico in presenza di variazioni della velocità
di contrazione o di allungamento.
Occorre infatti precisare che, per effetto di un identico impulso nervoso,
quindi con eguale scarica di potenziali d’azione, si possono avere effetti meccanici diversi. Ciò è dovuto al fatto che la forza espressa dal muscolo non
dipende solo da fattori nervosi, ma anche dallo stato in cui esso si trova nel
momento in cui viene raggiunto dallo stimolo elettrico.
Oltre alla funzione elastica delle strutture passive del muscolo (Ep, Es) e alla funzione contrattile delle strutture attive (filamenti di actina e miosina),
occorre aggiungere che il muscolo presenta le seguenti proprietà meccaniche
durante la funzione contrattile:
- la stiffness;
- la viscosità.
Si intende per stiffness (“durezza”, “rigidità”) il rapporto esistente fra l’aumento della tensione muscolare e l’allungamento che la fibra muscolare subisce. In pratica, la stiffness rappresenta la reazione del muscolo a seguito
47
del suo stesso allungamento; tale reazione è direttamente proporzionale all’entità dell’allungamento ed è dovuta soprattutto all’impiego delle strutture
attive (fibre muscolari), ma anche di quelle passive, ossia delle strutture elastiche in serie (Es).
Si intende per viscosità la reazione meccanica presente nel muscolo soprattutto a causa della velocità con la quale si compiono contrazione e allungamento. Si tratta di un fenomeno che porta a dissipazione di parte dell’energia
utilizzata per l’azione muscolare. Vi è proporzionalità diretta con la velocità
di contrazione per quanto riguarda attriti modesti dovuti agli Es. Gli attriti
principali, però, sono quelli presenti nei filamenti di actina e miosina, per i
quali tale principio di proporzionalità non è valido.
La curva tensione/lunghezza (fig. 5.3) manifesta che, in seguito all’allunga-
Fig. 5.3: Curva Tensione/Lunghezza
mento di un muscolo, la tensione inizia alla lunghezza di riposo (Ldr) del
muscolo stesso e l’allungamento può arrivare fino a circa il 90% in più della
sua Ldr; superato tale livello, il muscolo si rompe.
La produzione di tensione può iniziare anche a metà della Ldr, ma non a misure inferiori a questa, poiché il muscolo perderebbe la capacità di contrarsi.
Dal 50% della Ldr fino al 100%, la tensione è tutta a carico delle strutture
contrattili, successivamente intervengono anche le strutture elastiche.
Strutture elastiche e contrattili lavorano insieme fino a circa il 120–130%
della Ldr, successivamente si ha una rapida riduzione e scomparsa del contributo delle strutture contrattili e, fino al limite di rottura, la tensione
rimane a carico delle sole strutture elastiche. Si è potuto, cosı̀, stabilire che
le condizioni di allungamento ottimali del muscolo che determinano la migliore risposta muscolare allo stimolo nervoso sono, all’incirca, il 120-130%
48
della sua Ldr. Lunghezze maggiori o minori riducono la tensione esistente
nel muscolo e quindi la validità della sua contrazione.
Dal punto di vista ultramicroscopico, si verificano i seguenti fenomeni: il
sarcomero si allunga con una certa proporzionalità fino ad un massimo che
corrisponde all’apice della curva T/L, corrispondente al 120–130% della Ldr.
Qui le capacità contrattili sono favorite da un massimo numero di ponti fra
actina e miosina. All’inizio dell’allungamento (dal 50% della Ldr), è presente
una grande sovrapposizione dei ponti actomiosinici, cosa che li rende meno
efficienti.
Al contrario, dopo la fase ottimale (120–130% della Ldr) inizia un allontanamento eccessivo dei filamenti di miosina rispetto a quelli di actina. Si
hanno, pertanto, sempre meno ponti: ciò porta a minor contrazione e al
vicariamento della tensione a carico dei soli elementi elastici in serie; vi è
caduta di tensione e l’allungamento diminuisce. È stato inoltre dimostrato
che occorre uno stimolo nervoso di intensità minore per ottenere lo stesso
tipo di contrazione se il muscolo è preventivamente allungato.
La forza esprimibile varia a seconda dello stato di allungamento delle fibre,
riferito alla Ldr, nel momento in cui il muscolo viene stimolato. Riassumendo, un allungamento del 120%, rispetto al 100% della Ldr di una fibra
muscolare, è quello che consente di ottenere il massimo della forza, a parità
di altre condizioni, mentre la minor forza si ha partendo da una lunghezza
della fibra muscolare pari al 50% della sua Ldr. La curva tensione/velocità
(fig. 5.4) mostra il rapporto esistente tra le variazioni di forza (tensione)
Fig. 5.4: Curva Tensione/Velocità
espresse dal muscolo e gli incrementi di velocità della contrazione.
A sinistra del grafico, si può constatare che, con l’aumento della velocità,
una contrazione isotonica eccentrica (in allungamento), tende ad aumentare
49
la tensione, fino ad un punto in cui essa si stabilizza. A destra del grafico è illustrata la relazione T/V nella contrazione isotonica concentrica, che
provoca accorciamento delle fibre fino alla fine del movimento articolare. In
essa si può notare che quanto più aumenta la velocità, tanto più il muscolo
diminuisce la propria tensione, fino ad una massima velocità, in cui la tensione si riduce a zero. Ciò si verifica per effetto della “viscosità”, che risulta
soprattutto a carico dello scorrimento dei filamenti di actina e miosina.
Dai due grafici T/L e T/V si evince che la massima potenza muscolare in
condizioni ergonomiche, ossia di massima funzionalità con minimo dispendio
energetico, si ottiene a velocità e accorciamenti non elevati, ma intermedi.
[19]
5.2
Modello muscolare virtuale
afms prende come input un modello vrml che raffigura un volto umano e,
a partire da questo e dagli fdp (che devono essere necessariamente noti),
vengono generati automaticamente tutti i muscoli mimici del volto, realizzando cosı̀ l’intera mappa muscolare.
In afms, i muscoli mimici possono essere suddivisi in due gruppi distinti: i
muscoli lineari (frontale, nasale, zigomatico, ecc.) e i muscoli circolari (muscoli degli occhi e della bocca).
Per realizzare i muscoli, si è deciso di implementare il modello proposto da
Kähler [1], nel quale, sia i muscoli lineari che quelli circolari vengono definiti
come un’aggregazione di segmenti.
5.2.1
Il modello muscolare di Kähler
In questo modello [1] il muscolo viene rappresentato come un insieme di
fibre, ognuna delle quali ha una struttura di controllo costituita da un poligono lineare formato da segmenti.
La contrazione isotonica di un muscolo viene controllata da un parametro
numerico, che causa l’accorciamento e la deformazione della geometria del
muscolo.
La semplificazione sta nel fatto che tutte le contrazioni del muscolo vengono visualizzate istantaneamente, in modo che possono essere trascurate le
dinamiche interne e la dipendenza dal tempo.
I modelli muscolari basati sulle fibre sono molto comuni nell’ambito dell’animazione facciale, queste fibre possono essere combinate tra di loro in fasci
paralleli, in modo da formare piani muscolari di larghezza arbitraria. La superficie del muscolo è il risultato dell’unione di forme geometriche (poligoni
rettangolari) che sono attaccate ai segmenti che lo costitiuscono.
Il modello supporta due tipi di contrazioni: il muscolo lineare si contrae
lungo la sua estensione nella direzione del suo punto di origine mentre il
50
muscolo circolare, si contrae nella direzione di un punto centrale, tipicamente in modo ortogonale alla direzione delle fibre.
Entrambi i tipi di muscoli sono descritti essenzialmente dallo stesso tipo di
poligono di controllo, anche se la rappresentazione del muscolo circolare necessita dell’identificazione del suo centro di contrazione.
Poligono di controllo del muscolo
Una fibra muscolare è costituita da N control points pi ∈ R3 (i = 0, . . . , N − 1)
formando un poligono di controllo P. Un muscolo lineare si contrae sempre nella direzione di po (il punto di origine del muscolo lineare), invece il
muscolo circolare necessita di un ulteriore centro di contrazione p∗ verso il
quale si muovono tutti i suoi control points.
Per riprodurre la sporgenza e la contrazione delle labbra, non è sufficiente
un unico centro di contrazione statico, bensı̀ p∗ può muoversi lungo un asse
centrale a0 a1 , fornendo al muscolo un parametro addizionale a ∈ [0, 1] che
descrive la posizione del centro di contrazione corrente tra i due estremi a0
e a1 dell’asse:
p∗ = (1 − a)a0 + aa1 .
(5.1)
Fig. 5.5: Esempio di fibre muscolari lineari con i relativi poligoni di controllo
P = {pi }. (a) un muscolo lineare; (b) un muscolo circolare con il centro di
contrazione sull’asse centrale. Le frecce indicano la direzione generale della
contrazione.
Forma dei segmenti muscolari
Ciascun segmento del muscolo ha le proprie coordinate del mondo, che definiscono la sua orientazione, lunghezza, altezza e spessore. Gli assi del
51
Fig. 5.6: Geometria del segmento muscolare. (a) Fibre muscolari stilizzate
(b) Alle fibre muscolari sono stati aggiunti dei parallelepipedi per migliorarne
la rappresentazione.
segmento sono definiti dalla sua direzione, che è data dalla connessione dei
control points, in più c’è un ulteriore vettore che punta nella direzione della pelle. La deformazione del muscolo modifica i segmenti del poligono di
controllo e le molle che sono attaccate ai nodi della mesh vengono mossi in
accordo con la nuova posizione che hanno assunto.
Il fatto importante è che il cambiamento delle coordinate locali dei segmenti
durante la deformazione del muscolo, definisce completamente la forza esercitata da quest’ultimo sulla pelle del volto, non è quindi necessaria nessuna
informazione aggiuntiva circa la geometria complessiva del muscolo.
Tipicamente, un muscolo è formato da un fascio di fibre che lavorano in
parallelo, però, per facilitare la gestione delle connessioni dei segmenti (del
poligono di controllo) che formano ciascun muscolo e le connessioni del muscolo con la pelle, è stata introdotta una semplificazione: ciascun muscolo
viene rappresentato come un’unica fibra.
Deformazione del muscolo
Per ogni frame di animazione, la contrazione corrente di ciascun muscolo è
specificata da uno scalare c ∈ [0, 1], dove c = 0 significa che non c’è contrazione e c = 1 significa invece che c’è contrazione. Deve essere inoltre
specificato il parametro a ∈ [0, 1] introdotto per il muscolo circolare, che
muove il centro di contrazione del muscolo.
Sono sempre i muscoli che guidano la deformazione della pelle, al contrario,
la pelle non muove i muscoli.
Il processo che implica la traduzione dei parametri di contrazione di un muscolo nella deformazione vera e propria e nel conseguente spostamento dei
nodi-massa della mesh vrml viene effettuato per stadi successivi.
Per un muscolo lineare, dato il valore di contrazione c, viene calcolato un
−1
N −1
nuovo poligono di controllo Q = {qi }N
i=0 a partire da P = {pi }i=0 , a ciascun control point pi ∈ P è assegnato un parametro t ∈ [0, 1] che descrive
52
Fig. 5.7: Contrazione (c = 12 ) di un muscolo lineare (a) e circolare (b). I
control points {pi } e {qi } rappresentano rispettivamente il muscolo rilassato
e contratto [1].
la posizione del punto nel poligono:
⎧
⎪
⎨ 0
i
||pj −pj−1 ||
ti =
j=1
⎪
N−1
⎩
j=1
||pj −pj−1 ||
, se i = 0
, altrimenti.
(5.2)
I parametri ti vengono scalati dal fattore di contrazione (1 − c) e quindi
limitati nell’intervallo [0.01, 1] per evitare di contrarre troppo il segmento:
t̃i = max{(1 − c)ti , 0.01}
(5.3)
Successivamente, ogni parametro t̃i è mappato nell’indice ki ∈ {0, . . . , N −2}
del punto di origine del segmento che contiene t̃i :
ki =
0
, se i = 0
j : tj < t̃i ≤ tj+1 , altrimenti.
(5.4)
Infine i nuovi control points qi sono calcolati per interpolazione lineare:
qi = pki + (pki +1 − pki )
t̃i − tki
tki +1 − tki
(5.5)
In questo modo si ottiene un accorciamento della fibra pari ad un fattore c,
in cui tutti i control points del muscolo si muovono lungo il percorso descritto
dal poligono di controllo di partenza, come mostrato nella figura 5.7(a).
53
Per il muscolo circolare, i segmenti vengono semplicemente contratti nella direzione del centro di contrazione corrente p∗ ∈ R3 (vedi fig. 5.7(b)).
qi = p∗ + (1 − c)(pi − p∗ )
(5.6)
Per migliorare la contrazione non omogenea del muscolo orbicolare della
bocca, alle fibre viene data la possibilità di sporgere di una quantità diversa
per la parte superiore rispetto a quella inferiore.
La parte più esterna del muscolo orbicolare della bocca (quella subito sotto
il naso) sporge molto poco, poiché questa parte del volto è strettamente vincolata da altri muscoli e dall’attaccamento al cranio del tessuto circostante.
Al contrario, la parte più interna del labbro può muoversi molto liberamente, questo effetto viene realizzato variando il centro di contrazione per ogni
fibra.
I punti che si trovano nella parte più esterna di una fibra si contraggono
nella direzione del punto p⊥ , calcolato come:
p⊥ = a0 +
a · (pi − a0 )
a
||a||2
(5.7)
I punti che invece si trovano nella parte più interna della fibra usano p∗ .
Per quei muscoli formati da f > 1 fibre che lavorano in parallelo, le fibre
sono numerate da 0 a f − 1, a partire dalla fibra più esterna. Il centro di
contrazione p∗j usato dai punti sulla fibra j viene calcolato per interpolazione
lineare tra gli estremi:
p∗j
j
j
p∗ + 1 −
=
p⊥
f −1
f −1
54
(5.8)
5.2.2
Il modello muscolare realizzato
In questa sezione viene presentato il modello muscolare implementato in
afms e, con l’ausilio di una serie di immagini, viene fatto il parallelo con
quello definito da Kähler, che è stato descritto nella sezione precedente.
I muscoli facciali si suddividono in: muscoli lineari e muscoli circolari.
Fig. 5.8: (a) Muscolo lineare: “muscolo elevatore del labbro superiore”. (b)
Muscolo circolare: “muscolo orbicolare della bocca”
I muscoli lineari presenti nella mappa muscolare facciale di afms sono: frontale, procero, corrugatore, nasale, trasverso nasale, elevatore del labbro superiore, zigomatico minore, zigomatico maggiore, labbro superiore, risorio,
depressore e mentale.
I muscoli circolari invece sono: l’orbicolare dell’occhio e l’orbicolare della
bocca.
Fig. 5.9: (a) Elementi costitutivi di un muscolo lineare. (b) Elementi
costitutivi di un muscolo circolare.
Per ciascun muscolo lineare si ha un punto di origine, un punto di inserzione
55
nella cute e inoltre il muscolo è suddiviso, come accade in realtà, in tanti
sarcomeri, che ne rappresentano le unità di costituzione di base (a livello
microscopico).
Per il muscolo circolare, invece, non c’è né origine e né inserzione, ma c’è il
centro di contrazione, inoltre anch’esso è suddiviso in tanti sarcomeri.
Poligono di controllo del muscolo
Come descritto dal modello muscolare di Kähler [1], per ciascun muscolo
viene definito un poligono di controllo P = {pi }; allo stesso modo, in afms
il comportamento di un muscolo viene regolato dal suo poligono di controllo.
Fig. 5.10: (a) Poligono di controllo di un muscolo lineare (zigomatico maggiore). (b) Oltre al poligono di controllo viene mostrato anche il perimetro
delimitatore.
La figura 5.10(a) mostra il poligono di controllo del muscolo zigomatico maggiore che, come si può vedere, è formato dai suoi control points {p0 , . . . , p5 },
mentre la figura 5.10(b) mostra anche il perimetro delimitatore del muscolo.
Allo stesso modo la figura 5.11(a) mostra il poligono di controllo del muscolo
orbicolare dell’occhio, che è un muscolo circolare, formato dai control points
{p0 , . . . , p7 }; la figura 5.11(b) mostra inoltre il suo perimetro delimitatore.
56
Fig. 5.11: (a) Poligono di controllo di un muscolo circolare (orbicolare dell’occhio). (b) Oltre al poligono di controllo viene mostrato anche il perimetro
delimitatore.
57
Contrazione del muscolo
In afms ciascun muscolo viene deformato, in base a quanto descritto dall’algoritmo di Kähler, agendo progressivamente sul suo poligono di controllo
(e quindi anche sui suoi control points).
Fig. 5.12: (a) Muscolo zigomatico maggiore rilassato. (b) Muscolo zigomatico maggiore contratto. (c - d) Esempio di azione dei muscoli orbicolari
degli occhi.
58
5.3
La mappa muscolare
Come è stato già detto in precedenza, afms, a partire da un modello vrml
rappresentante un volto umano e dai suoi fdp, ricostruisce in modo automatico la mappa dei muscoli facciali.
In questo studio è stata posta particolare attenzione all’aspetto anatomico, infatti si è cercato di ricreare e posizionare ciascun muscolo in modo
anatomicamente corretto, seguendo fedelmente le indicazioni dei manuali di
anatomia clinica e umana [13] [14] [15] e di quello di cinesiologia [19].
Ciascun muscolo è stato posizionato sul volto traducendo le indicazioni anatomiche nella sua localizzazione virtuale, che è funzione degli fdp.
Ovviamente il risultato che si ottiene dipende molto dalla definizione del
modello vrml fornito in input (che può essere espressa in base al numero
dei vertici che lo costituiscono); ma ancora di più dall’accuratezza con cui
sono stati editati (con l’aiuto di visage|life) gli fdp.
La tabella seguente mostra la corrispondenza tra gli fdp e i punti di origine
e inserzione dei muscoli lineari. Vale la pena ricordare che i punti di origine
e inserzione definiscono completamente il muscolo lineare e la sua posizione
sul volto.
Muscolo Lineare
Frontale Interno
destro
sinistro
Frontale Maggiore
destro
sinistro
Frontale Esterno
destro
sinistro
Corrugatore del
destro
sopracciglio
sinistro
Procero
destro
sinistro
Nasale
destro
sinistro
Trasverso
destro
Nasale
sinistro
Labbro
destro
superiore
sinistro
Elevatore del
destro
labbro superiore
sinistro
Punto di
origine
(11.2 − 11.1) 16 + 11.1
(11.3 − 11.1) 16 + 11.1
(11.2 − 11.1) 13 + 11.1
(11.3 − 11.1) 13 + 11.1
(11.2 − 11.1) 23 + 11.1
(11.3 − 11.1) 23 + 11.1
4.4
4.3
(11.2 − 11.1) 16 + 11.1
(11.3 − 11.1) 16 + 11.1
9.6
9.7
9.12
9.12
(9.15 − 9.4) 12 + 9.4
(9.15 − 9.5) 12 + 9.5
3.10
3.9
Punto di
inserzione
4.2
4.1
4.4
4.3
4.6
4.5
(4.2 − 4.4) + 4.4
(4.1 − 4.3) + 4.3
(4.2 − 4.4) 43 + 4.4
(4.1 − 4.3) 32 + 4.3
9.2
9.1
(9.3 − 9.2) 12 + 9.2
(9.3 − 9.1) 12 + 9.1
8.9
8.10
(9.15 − 9.3) 12 + 9.2
(9.15 − 9.1) 12 + 9.1
Tabella 5.1: (1-2) Tabella delle corrispondenze dei punti di origine e di
inserzione di un muscolo lineare con gli fdp del modello.
59
Muscolo Lineare
Zigomatico
destro
minore
sinistro
Zigomatico
destro
maggiore
sinistro
Risorio
destro
sinistro
Depressore del
destro
labbro inferiore
sinistro
Mentale
destro
sinistro
Punto di
origine
3.10
3.9
5.4
5.3
5.2
5.1
(8.4 − 9.2) + 8.4
(8.3 − 9.1) + 8.3
(2.1 − 8.3) · 2 + 9.1
(2.1 − 8.4) · 2 + 9.2
Punto di
inserzione
(2.7 − 8.6) 12 + 8.6
(2.6 − 8.5) 12 + 8.5
8.4
8.3
8.4
8.3
8.4
8.3
2.9
2.8
Tabella 5.2: (2-2) Tabella delle corrispondenze dei punti di origine e di
inserzione di un muscolo lineare con gli fdp del modello.
Come per i muscoli lineari, anche il posizionamento dei muscoli circolari è
stato effettuato a partire dagli fdp. Come descritto dal modello di Kähler,
la contrazione del muscolo circolare è definita a partire dal centro di contrazione p∗ verso il quale tendono tutti i punti del poligono di controllo. In
afms il poligono di controllo del muscolo circolare viene calcolato a partire
dai punti che si trovano rispettivamente a nord, sud, est e ovest (Np, Sp, Ep,
Wp) di p∗ e che appartengono al contorno dell’occhio o della bocca (vedi
fig. 5.13).
Fig. 5.13: I punti che definiscono completamente il muscolo circolare. p∗
è il centro di contrazione; Np, Sp, Ep, Wp sono i punti attraverso i quali
viene realizzato il poligono di controllo del muscolo.
60
La tabella 5.3 mostra per ciascun muscolo circolare il centro di contrazione
p∗ e i quattro punti Np, Sp, Ep e Wp.
Muscolo Circolare
Orbicolare
destro
dell’occhio
sinistro
Orbicolare della bocca
p∗
3.6
3.5
2.3
Np
3.14
3.13
8.1
Sp
3.10
3.9
8.2
Ep
3.8
3.7
2.4
Wp
3.12
3.11
2.5
Tabella 5.3: Tabella delle corrispondenze tra i punti p∗ , Np, Sp, Ep, Wp
e i relativi fdp.
La figura 5.14 mostra il risultato finale ottenuto da afms, confrontato con la
mappa dei muscoli facciali reali [14]. Come si può vedere, a ciascun muscolo
del volto umano corrisponde il relativo muscolo sul volto virtuale.
Fig. 5.14: Corrispondenza tra i muscoli facciali reali (a) e quelli virtuali
generati automaticamente da afms (b).
61
Fig. 5.15: (a) Mappa muscolare completa stilizzata, sono visibili tutti i
muscoli con i loro poligoni di controllo. (b) Mappa muscolare completa wire
frame, per ciascun muscolo sono ben visibili i suoi sarcomeri.
Fig. 5.16: Esempio di due espressioni facciali realizzate con afms. (a)
Felicità (yoda). (b) Collera (john).
62
Capitolo 6
Analisi dei risultati
Come è stato già detto nel Capitolo 1, il volto è il canale più rilevante della
comunicazione non verbale [4].
Gli individui sono in grado di assumere, a piacere, un gran numero di espressioni facciali diverse, ma i decodificatori riescono a discernere solo fra più
ampi raggruppamenti di espressioni. Le diverse ricerche condotte sull’argomento, concordano che tutte le espressioni emozionali possono essere suddivise in sei grandi gruppi: felicità, tristezza, sorpresa, collera, paura e disgusto/disprezzo.
Con afms è possibile riprodurre tutte le espressioni appena citate sopra ed
eventualmente anche altre, che però potrebbero non riferirsi propriamente
ad emozioni, come per esempio interesse, vergogna, dolore, perplessità, stupore, ecc.
Verranno di seguito mostrati alcuni dei risultati ottenuti con afms; dapprima verranno mostrate per vari modelli facciali le mappe muscolari generate
automaticamente, si ricorda che la maggiore aderenza della mappa virtuale
con la muscolatura facciale reale dipende dal modello vrml, dal numero
dei suoi vertici e da quanto sono accurate le posizioni degli fdp del volto.
Quindi verranno mostrate le principali espressioni facciali realizzate per vari
modelli vrml.
Alla fine ci sono anche le tabelle 6.1 e 6.2 nelle quali vengono dati i parametri
fisici con cui sono state realizzate le suddette espressioni facciali e il tempo
impiegato da afms per realizzare l’intera rete di masse-molle e la mappa
muscolare.
I risultati riportati di seguito sono stati ottenuti con un personal computer
R
Centrino 1.4 GHz e 512 mb ddr sdram con sistema
con processore Intel
R
operativo Windows XP con SP2.
63
Fig. 6.1: I modelli vrml di riferimento utilizzati durante losviluppo di
afms. (a) beta. (b) john. (c) kevin. (d) yoda. (e) king. (f) reana.
64
Fig. 6.2: Esempi dei poligoni di controllo dei muscoli facciali. (a) beta. (b)
john. (c) kevin. (d) yoda. (e) king. (f) reana.
65
Fig. 6.3: Esempi di mappe muscolari con textures generate automaticamente da afms. (a) beta. (b) john. (c) kevin. (d) yoda. (e) king. (f)
reana.
66
Fig. 6.4: Espressioni facciali di beta. (a) Felicità. (b) Tristezza. (c)
Sorpresa. (d) Collera. (e) Paura. (f) Disgusto/Disprezzo.
67
Fig. 6.5: Espressioni facciali di john. (a) Felicità. (b) Tristezza. (c)
Sorpresa. (d) Collera. (e) Paura. (f) Disgusto/Disprezzo.
68
Fig. 6.6: Espressioni facciali di kevin. (a) Felicità. (b) Tristezza. (c)
Sorpresa. (d) Collera. (e) Paura. (f) Disgusto/Disprezzo.
69
Fig. 6.7: Esempio di espressioni realizzate da afms per un volto non umano:
yoda.
70
Fig. 6.8: Espressioni varie di king.
71
beta
john
kevin
king
reana
yoda
Stiffness
2.8
10
2.8
10
10
20
Damping factor
30
30
30
30
30
30
Massa (g)
0.30
0.30
0.30
0.30
0.30
0.30
Tabella 6.1: I valori della stiffness, del damping factor e della massa dei
nodi usati in afms per ottenere le espressioni riportate in precedenza.
beta
john
kevin
king
reana
yoda
Rete
masse-molle (sec)
1.362
0.671
1.052
1.342
10.445
0.471
Mappa
muscolare (sec)
0.02
0.01
0.01
0.01
0.06
0.01
Tempo
totale (sec)
1.382
0.681
1.062
1.352
10.505
0.481
Tabella 6.2: Tempi impiegati (in secondi) da afms per costruire la rete di
masse-molle e per generare la mappa muscolare.
72
Capitolo 7
Conclusioni
Il percorso logico concettuale che è stato seguito fin qui è stato realizzato
in modo tale da spiegare nella maniera più accurata possibile tutte le scelte
implementative e tutti i problemi incontrati e risolti durante la realizzazione
di afms.
Tutto è nato dalla volontà di realizzare qualcosa che potesse in qualche
modo avere delle applicazioni reali, soprattutto nell’ambito della multimedialità e, più specificatamente, nell’informatica grafica.
Il fatto di implementare un’applicazione che realizzasse i muscoli mimici per
modelli virtuali e, conseguentemente le relative espressioni facciali, è sembrato l’argomento ideale che più si coniuga con l’obiettivo appena dichiarato.
Come è stato già accennato in precedenza, il volto umano può essere considerato senza alcun dubbio uno dei più potenti mezzi espressivi e di comunicazione esistenti; infatti tutti noi siamo capaci di interpretare il pensiero e
lo stato d’animo della persona con cui stiamo interagendo solamente osservando con attenzione l’espressione del suo viso.
Innanzitutto si è cercato di individuare il modello muscolare che fosse il
più “anatomicamente” adatto e quello proposto da Kähler nel suo articolo:
“Geometry-based Muscle Modeling for Facial Animation” [1] è quello che più
di altri simula il reale comportamento delle fibre muscolari umane.
Si è passati poi alla progettazione e all’implementazione dell’applicazione,
sfruttando principalmente le librerie grafiche contenute nel pacchetto software visage|SDK, messe a disposizione dalla Visage Technologies AB[3].
Durante lo sviluppo è stata posta particolare attenzione all’utilizzo delle
risorse computazionali di tempo e di memoria, quindi si è cercato di raggiungere un livello di simulazione che fosse il più reale possibile. Infatti,
oltre ad usare modelli di volti umani, afms è stato applicato anche ad un
volto non umano, yoda, riuscendo comunque ad ottenere dei buoni risultati
(le immagini di afms applicato a yoda si trovano nel capitolo 6 fig. 6.7).
73
afms è un’applicazione efficiente e robusta, soprattutto grazie all’utilizzo
del metodo di Eulero (Semi-Implicit Backward Euler) per la realizzazione
del movimento fisico delle molle.
Tutti i parametri della simulazione sono stati calibrati in modo tale da rendere l’applicazione più robusta possibile, cercando di ridurre al minimo i
casi di oscillazione dell’intero sistema masse-molle durante la simulazione.
Le oscillazioni rendono infatti il sistema molto instabile e talvolta possono
danneggiare irreparabilmente il modello 3D.
Per di più afms è un’applicazione interattiva, il che complica non poco le
cose, in quanto c’è un utente che interviene direttamente sulla simulazione,
che si ricorda avviene in tempo reale.
Tuttavia, la forte dipendenza della simulazione dalla topologia del modello
(disposizione e numero dei vertici e la precisione degli fdp sul volto), va a
scapito dell’accuratezza.
Nonostante tutto, in afms si è cercato di arrivare ad un buon compromesso tra efficienza e robustezza, e i risultati che ne derivano sono certamente
molto credibili.
7.1
Prospettive future
Ovviamente, lo sviluppo di afms potrà continuare cercando da una parte di
migliorarne alcuni aspetti e dall’altra di estendere questa applicazione per
un più ampio utilizzo. afms potrebbe infatti essere preso come punto di
partenza nell’ambito di eventuali progetti di animazione facciale.
In questo senso, infatti, afms può essere l’inizio dell’animazione di personaggi virtuali 3D.
Per esempio: con afms si può realizzare la mappa dei muscoli mimici del
volto di un personaggio virtuale che poi potrà essere usata per simulare in
maniera opportuna le sue espressioni facciali nell’ambito della sua animazione globale.
Le future applicazioni di questo progetto potranno coinvolgere vari campi,
come ad esempio le telecomunicazioni, la realtà virtuale, l’insegnamento e
l’apprendimento, l’intrattenimento.
• Telecomunicazioni: nell’ambito delle telecomunicazioni si può pensare ad applicazioni tipo le videoconferenze online, infatti anziché trasmettere i frames con i volti reali, si potrebbe realizzare il modello
virtuale 3D dell’interlocultore, memorizzarlo su tutti i dispositivi connessi e quindi trasmettere soltanto i parametri di animazione del volto. In questo modo si potrebbe risparmiare moltissima banda, il che
avrebbe come diretta conseguenza la possibilità di realizzare videoconferenze anche con apparecchi che hanno una limitata disponibilità di
74
banda per la connessione, come ad esempio i telefoni cellulari di ultima
generazione.
• Realtà virtuale: moltissime sono le possibilità di utilizzo di afms
nella realtà virtuale, come per esempio la realizzazione di pagine web,
di tools per il training in ambito medico, centri informazioni, simulatori
di vario tipo, ecc.
• Insegnamento e apprendimento: si possono realizzare applicazioni
per impartire i primissimi insegnamenti ai bambini nella prima età scolare, per far apprendere le persone disabili oppure anche per realizzare
strumenti multimediali in grado di aiutare eventuali utenti nell’utilizzo
di un particolare pc o macchinario nell’ambiente lavorativo.
• Intrattenimento: non ultime sono le possibilità di applicazione nell’ambito dell’intrattenimento, quali la creazione di effetti speciali per
il cinema, cartoni animati in 3D che ormai sono sempre più diffusi e i
videogiochi che, nell’ultimo decennio, grazie alla possibilità di sfruttare
le risorse di computer sempre più potenti, sono diventati cosı̀ curati in
ogni loro dettaglio che sembra quasi di essere realmente i protagonisti
delle avventure vissute sullo schermo.
75
Bibliografia
[1] K. Kähler, J. Haber, H. P. Seidel. Geometry-based Muscle Modeling for Facial Animation. Max-Planck-Institut für Informatik,
Stuhlsatzenhausweg, Germany.
[2] Y. Lee, D. Terzopoulos, K. Waters. Realistic Modeling for Facial
Animation. Computer Graphics (SIGGRAPH ’95 Conf.Proc.), pages
55–62, August 1995.
[3] Visage Technologies AB. URL: www.visagetechnologies.com, October,
2006.
[4] M. Argyle. Il corpo e il suo linguaggio, studio sulla comunicazione non
verbale. Zanichelli 2 Ed.
[5] S. M. Platt, N. I. Badler. Animating Facial Expressions. Computer
Graphics (SIGGRAPH ’81 Conf. Proc.), pages 245–252, August 1981.
[6] F. I. Parke. Parameterized Models for Facial Animation. IEEE
Computer Graphics and Applications, pages 61–68, November 1982.
[7] F. I. Parke. Computer generated animation of faces. Master’s thesis,
University of Utah, Salt Lake City, June 1972.
[8] C. Pelachaud, N. I. Badler, M. Steedman. Generating Facial Expressions for Speech. Department of Computer and Information Science,
University of Pennsylvania, Philadelphia.
[9] E. Gladilin, S. Zachow, P. Deuflhard, H.C. Hege. Towards a Realistic
Simulation of Individual Facial Mimics. In Proc. of Vision, Modeling
and Visualisation 2001 (VMV), Stuttgart, Germany:129–133, 2001.
[10] E. Gladilin, S.Zachow, P. Deuflhard, H.C. Hege. A nonlinear soft tissue model for craniofacial surgery simulations. In Proc. of Modeling
and Simulation for Computer-aided Medicine and Surgery (MS4CMS),
12:61–66, INRIA, Paris, France 2002.
[11] ISO/IEC 14496. MPGEG-4 Standard.
76
[12] ISO/IEC 14772. VRML97 - The Virtual Reality Modeling Language,
1997.
[13] G. Marinozzi, E. Gaudio, M. Ripani. Anatomia clinica. Antonio Delfino
Editore, Roma, 1993.
[14] F. H. Netter. Atlante di anatomia umana. Novartis Edizioni.
[15] G. Balboni, A. Bastianini, P. Motta et al. Anatomia umana. Edi-Ermes.
[16] Y. Zhang, E. Sung, E. C. Prakash. 3D Modeling of Dynamic Facial
Expressions for Face Image Analysis and Synthesis.
[17] A. Witkin, D. Baraff. Physically Based Modeling: Principles and
Practice. School of Computer Science Carnegie Mellon University,
SIGGRAPH ’97.
[18] Y. Zhang, E. Sung, E. C. Prakash. Real-time Facial Expression
Animation on An Individualized Face Using Adaptive Simulation
Algorithm.
[19] V. Pirola.
Cinesiologia - Il movimento umano applicato alla
rieducazione e alle attività sportive. Edi-Ermes, February 1999.
[20] M. Fratarcangeli. Physically Based Synthesis of Animatable Face Models. Workshop On Virtual Reality Interaction and Physical Simulation,
F. Ganovelli and C. Mendoza (Editors) 2005.
[21] L. P. Nedel, D. Thalmann. Real Time Muscle Deformation Using
Mass-Spring Systems. Swiss Federal Institute of Technology, Lausanne,
Switzerland.
[22] Microsoft Developers Network MSDN. URL: www.msdn.microsoft.com,
October, 2006.
[23] D. Terzopoulos, K. Waters. Physically-Based Facial Modeling, Analysis
and Animation. University of Toronto, Toronto, Ontario.
[24] D. Baraff, A. Witkin. Large Steps in Cloth Simulation.
Institute Carnegie Mellon University.
Robotics
[25] Foley, Van Dam, Feiner, Hughes, Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.
[26] P. Ekman.
Program.
Psychology Emotion and Facial Recognition Training
[27] M. Cadoli, M. Lenzerini, P. Naggar, A. Schaerf. Fondamenti della progettazione dei programmi, principi tecniche e loro applicazioni in C++.
Città Studi Edizioni.
77
[28] J. Neider, T. Davis, M. Woo. OpenGL Programming Guide - The red
book. Addison-Wesley, First Printing, 1993.
[29] M. Fratarcangeli, M. Schaerf. Realistic Modeling of Animatable Faces
in MPEG-4. Departement of Computer System Science - University of
Rome ”La Sapienza”.
78
Appendice A
Guida all’interfaccia utente
Questa appendice è stata realizzata per guidare gli utenti ad un corretR
Vito utilizzo di afms. afms è un’applicazione realizzata con Microsoft
sual C++ 6.0 e gira su macchine con sistema operativo Windows XP.
Fig. A.1: Come si presenta afms al suo avvio.
Si presenta come una finestra suddivisa in due parti: la parte destra è costituita dalla finestra OpenGL nella quale viene visualizzato il modello vrml
del volto, mentre la parte sinistra è costituita da un pannello nel quale è
possibile trovare tutti i controlli necessari per la creazione dell’espressione
facciale, agendo direttamente su ciascun singolo muscolo.
79
Nella parte superiore della finestra c’è un menu di tipo standard, attraverso
il quale si può caricare il file .wrl ed effettuare alcune operazioni di visualizzazione sul modello.
Di seguito è stata riportata una tabella che spiega la funzione svolta da ciascun item del menu.
Open WRL...
File
Exit
View
Face FDP
Face Vertex
Simple
Map
Polygon
Map
Texture
Map
Muscle
Muscle
Muscle
Muscle
Single Muscle
Apre il file .wrl contenente il
modello del volto
Termina l’applicazione e chiude la
finestra di afms
Mostra gli fdp del modello caricato
Mostra tutti i vertici del modello che
costituiscono la pelle del viso
Mostra l’intera mappa muscolare in
maniera stilizzata (linee e punti)
Mostra l’intera mappa muscolare
realizzata con i poligoni
Mostra l’intera mappa muscolare
realizzata con le textures
Frontalis
Visualizza solo il
muscolo frontale
Procerus
Visualizza solo il
muscolo procero
Corrugator Visualizza solo il
muscolo corrugatore
Orbicularis Visualizza solo il
Oculi
muscolo orbicolare
dell’occhio
Nasalis
Visualizza solo il
muscolo nasale
Transversus Visualizza solo il
Nasalis
muscolo trasverso
nasale
Upper Lip Visualizza solo il
Elevator
muscolo elevatore
del labbro superiore
Tabella A.1: (1-2) Tabella esplicativa degli elementi del menu di afms
80
Muscle
?
Single Muscle
Legenda
About...
Zygomaticus Visualizza solo il
Minor
muscolo zigomatico
minore
Zygomaticus Visualizza solo il
Major
muscolo zigomatico
maggiore
Upper Lip
Visualizza solo il
muscolo del labbro
superiore
Orbicularis Visualizza solo il
Oris
muscolo orbicolare
della bocca
Risorius
Visualizza solo il
muscolo risorio
Depressor
Visualizza solo il
Anguli
muscolo depressore
della bocca
Mentalis
Visualizza solo il
muscolo mentale
Mostra una finestra con una semplice legenda delle abbreviazioni usate
per etichettare i vari slider
Mostra una finestra con le informaziioni relative ad afms
Tabella A.2: (2-2) Tabella esplicativa degli elementi del menu di afms.
Comando
tasto sx mouse
tasto dx mouse
Ctrl + tasto sx mouse
F1
F2
F11
Azione
Il modello viene traslato
Il modello viene ruotato
Zoom
Visualizzazione wireframe
Visualizzazione solid con textures
Riposizionamento del modello al centro
della finestra
Tabella A.3: Questa tabella mostra l’azione svolta da ciascun comando.
81
È possibile anche interagire con il modello visualizzato nella finestra
OpenGL attraverso una combinazione di comandi impartiti con il mouse
e la tastiera, la tabella A.3 mostra l’azione svolta da ciascun comando.
Attraverso il menu a tendina “Single Muscle” è possibile visualizzare uno
o più muscoli generati da afms, come è possibile vedere nella figura A.3a.
Ciascun muscolo è costituito da più parti ed è possibile agire su ognuna
di esse muovendo il relativo slider, tutti gli slider relativi ad uno stesso muscolo sono stati raggruppati all’interno di un “group box ” (vedi fig. A.3b).
Ogni slider inoltre, all’interno del suo group box, viene identificato attraverso un’etichetta che è l’acronimo del muscolo che muove; per esempio,
osservando la fig. A.3b lo slider indicato con l’etichetta LFI muove il muscolo frontale interno sinistro (Left Frontalis Inner).
Sul pannello di controllo si trova anche un group box chiamato “Eye z-Adjust”
(fig. A.2), all’interno del quale si trovano due campi editabili etichettati con
L e R. Il valore inserito in ciascuno dei due campi indica l’entità dello spiazzamento sull’asse z tale che, quando l’occhio si chiude, non accade che la
palpebra compenetri il bulbo oculare. I valori di default sono 1 e 4 ma possono essere cambiati solamente dopo che è stato caricato il modello vrml.
Una volta inseriti i valori desiderati, bisogna premere il pulsante “Apply”
affinché i cambiamenti vengano memorizzati.
All’interno di questo group box si trova anche un check button anch’esso
usato per aggiustare il movimento della chiusura dell’occhio, si può attivare
soltanto prima che il modello vrml sia caricato e fa sı̀ che durante la chiusura dell’occhio venga eliminato uno spiazzamento lungo l’asse x inserito per
default.
Normalmente il setup iniziale che si trova quando l’applicazione viene avviata, è quello che, nella maggior parte dei casi, funziona meglio.
Fig. A.2: Eye z-Adjust group box.
82
Fig. A.3: (a) Esempio dell’utilizzo del menu a tendina “Single Muscle”. (b)
Etichetta del muscolo frontale interno sinistro (LFI = Left Frontalis Inner).
83
Continuando a scorrere il pannello di controllo si trova un group box di
fondamentale importanza: “Stiffness” (fig. A.4).
Attraverso questo group box è possibile modificare il valore della stiffness
per il modello, il nuovo valore deve essere inserito prima che il modello venga
caricato. In pratica, modificando questo valore si agisce sulla durezza delle
molle che formano l’intero sistema di masse-molle attraverso il quale viene
simulata l’elasticità della pelle.
Come in precedenza, una volta inserito il nuovo valore, affinchè questo venga
memorizzato, bisogna premere il bottone “Apply”.
Fig. A.4: Il group box per la regolazione della stiffness.
Di seguito vengono riportate alcune figure sull’utilizzo di afms, di come
agiscono i comandi del menu sul modello e l’azione della forza muscolare
regolata dagli slider.
Fig. A.5: Questa figura mostra come, attraverso il menu View → Face FDP,
vengono visualizzati sul modello i suoi fdp.
84
Fig. A.6: Questa figura mostra come, attraverso il menu View → Face Vertex, vengono visualizzati sul modello tutti i vertici della mesh della
pelle.
Fig. A.7: Esempio di applicazione della forza muscolare.
85
86
Abbreviazioni e simboli
AFMS
:
Anatomical Facial Muscle Simulator
API
:
Application Program Interface
CAD
:
Computer Aided Design
FAPs
:
Facial Animation Parameters
FAPUs
:
Face Animation Parameter Units
FATs
:
Face Animation Tables
FDP
:
Facial Definition Points
Ldr
:
Lunghezza di riposo
MDI
:
Multiple Document Interface
MPEG
:
Moving Picture Experts Group
OpenGL
:
Open Graphics Library
SDI
:
Single Document Interface
VRML
:
Virtual Reality Modeling Language
P
:
Insieme dei punti del poligono di controllo di un muscolo rilassato
Q
:
Insieme dei punti del poligono di controllo di un muscolo contratto
87
Ringraziamenti
Vorrei ringraziare tutti coloro che mi sono stati vicini durante il mio percorso
universitario a partire dalla mia famiglia, i miei amici e soprattutto Nadia.
Ringrazio il prof. Marco Schaerf che mi ha dato la possibilità di svolgere
questo lavoro e in particolare l’Ing. Marco Fratarcangeli, che mi ha seguito
durante tutto lo svolgimento di questa tesi per i suoi consigli fondamentali,
la sua grande disponibilità e pazienza.
Un ringraziamento sentito va ai miei cari amici Carmine e Luigi con i quali
ho condiviso tutta la mia avventura universitaria.
88
Questo documento è stato realizzato in LATEX.
89