# Skeletal animation

La skeletal animation, detta anche rigging o articolazione è una tecnica dell'animazione digitale nella quale un personaggio (o un altro oggetto articolato) è suddiviso in due elementi concettuali: una rappresentazione superficiale utilizzata per raffigurare l'aspetto del personaggio (chiamata superficie, skin o mesh) e un insieme gerarchico di "ossa" interconnesse (chiamato armatura, skeleton o rig) impiegato per la successiva messa in posa ed animazione della mesh. I movimenti impostati per lo scheletro vengono poi automaticamente riportati sui punti della superficie dell'oggetto animato dal software di animazione mediante opportuni fattori di pesatura stabiliti dal disegnatore.
Questa tecnica è normalmente usata per animare figure antropomorfe o animali (più generalmente per la modellazione organica) e per rendere il processo di animazione più intuitivo e veloce, ma può essere comunque utilizzata per controllare la deformazione di qualunque oggetto - una porta, un cucchiaio, un edificio, o una galassia. Quando l'oggetto animato è più generico di, per esempio, un personaggio umanoide, l'insieme di ossa potrebbe non essere gerarchico o interconnesso, ma esso rappresenta solo una descrizione a un livello più alto del movimento di una parte della mesh o skin che sta influenzando.
La tecnica è stata introdotta nel 1988 da Nadia Magnenat Thalmann, Richard Laperrière, e Daniel Thalmann. Questa tecnica è usata virtualmente in tutti i sistemi di animazione dove l'interfaccia utente semplificata permette agli animatori di controllare spesso algoritmi complessi e una grande quantità di geometria; soprattutto attraverso la cinematica inversa e altre tecniche "goal-oriented". Principalmente, comunque, l'intenzione della tecnica non è mai di imitare la reale anatomia o i comportamenti fisici, ma sono controllare la deformazione dei dati della mesh.

## Tecnica

   "Il rigging sta permettendo ai nostri personaggi di muoversi. Il processo di rigging consiste nel fatto che, noi prendiamo quella scultura digitale, e iniziamo a costruire lo scheletro, i muscoli, e attacchiamo la skin al personaggio, e inoltre creiamo un set di controlli di animazione, che i nostri animatori utilizzano per spingere e tirare il corpo attorno."
Questa tecnica è usata per costruire una serie di "ossa", alcune volte riferita al rigging. Ogni osso presenta una trasformazione tridimensionale (che include la sua posizione, scala e orientamento), e un opzionale osso genitore. Le ossa perciò formano una gerarchia. La trasformazione completa di un nodo figlio è il prodotto della trasformazione del suo genitore e della propria. Quindi muovendo l'osso della coscia, sarà mosso anche quello della gamba. Quando il personaggio è animato, le ossa cambiano la loro trasformazione nel tempo, sotto l'influenza di qualche controller di animazione. Un rig è generalmente composto da parti sia di cinematica diretta sia di cinematica inversa che possono interagire le une con le altre. La skeletal animation si riferisce alla parte del rig della cinematica diretta dove un insieme completo di configurazioni di ossi identifica un'unica posa.
Ogni osso nello scheletro è associato a una porzione della rappresentazione visuale del personaggio. Lo skinning (pittura pesi) è il processo di creazione di questa associazione. Il movimento della superficie sarà dunque correlato a quello dell'osso secondo un fattore dato dal rispettivo "peso" dell'osso sul singolo vertice. Nella maggior parte dei casi, in una mesh poligonale di un personaggio, l'osso è associato con un gruppo di vertici; per esempio, nel modello di un essere umano, l'osso della coscia sarebbe associato ai vertici che costituiscono i poligoni nella coscia del modello. Porzioni della skin del personaggio possono normalmente essere associati a più ossi, ciascuno avente dei fattori chiamati pesatura vertici (vertex weights), o fusione pesi (blend weights). Il movimento della skin presso le giunzioni di due ossi, può essere perciò influenzato da entrambi gli ossi. Nella maggior parte dei motori grafici all'avanguardia il processo è eseguito dalla GPU grazie a uno shader.
In una mesh poligonale, ogni vertice può avere una pesatura (blend weight) per ogni osso. Per calcolare la posizione finale del vertice, viene creata una matrice di trasformazione per ogni osso che, quando applicata al vertice, prima spinge il vertice nello spazio dell'osso, dopo lo spinge indietro nello spazio della mesh. Dopo aver applicato una matrice al vertice, viene scalato dal suo weight corrispondente. Questo algoritmo è chiamato matrix palette skinning, perché l'insieme delle trasformazioni delle ossa (archiviate come matrici di trasformazione) forma una "tavolozza" per il vertice della skin da scegliere.

### Benefici e svantaggi
#### Punti di forza

* L'osso rappresenta set di vertici (o altri oggetti, che rappresentano ad esempio una gamba).
** L'animatore controlla meno caratteristiche del modello.
*** L'animatore può prestare attenzione a movimenti su larga scala.
** Gli ossi sono movibili indipendentemente.
Una animazione può essere definita da semplici movimenti delle ossa, invece che vertice per vertice (nel caso di una mesh poligonale).

#### Punti deboli

* L'osso rappresenta set di vertici (o altri oggetti).
** Non fornisce movimenti dei muscoli realistici e movimenti della pelle.
** Possibili soluzioni a questo problema:
*** Speciali controller di muscolo attaccati agli ossi;
*** Consulenza di esperti di fisiologia (incrementa l'accuratezza del realismo muscolo-scheletrico con maggiori simulazioni complete di anatomia virtuale).

## Applicazioni

La skeletal animation è il metodo standard per animare personaggi o oggetti meccanici per prolungati periodi di tempo (spesso oltre 100 fotogrammi). È comunemente usata dai video game artists e nell'industria cinematografica, e può essere anche applicata a oggetti meccanici e qualunque altro oggetto fatto di elementi rigidi e giunture. La sua posizione predefinita è la T pose.
La performance capture (o motion capture) può velocizzare il tempo di sviluppo della skeletal animation, come anche incrementare il livello di realismo.
Per movimenti troppo pericolosi per la performance capture, ci sono simulazioni al computer che automaticamente calcolano la fisica del movimento e la resistenza con skeletal frames. Le proprietà della virtual anatomy come il peso degli arti, la reazioni dei muscoli, la forza delle ossa e i vincoli delle giunture, possono essere aggiunte per realistici rimbalzi, instabilità euleriana, fratture ed effetti di rotolamento conosciuti come virtual stunts. Comunque, ci sono altre applicazioni delle simulazioni della virtual anatomy come le risposte in campo militare e mediche. Soldati virtuali, soccorritori, pazienti, passeggeri e pedoni possono essere impiegati per allenamento, virtual engineering e test virtuali dell'equipaggiamento. La tecnologia della virtual anatomy può venire combinata con l'intelligenza artificiale per ulteriori potenziamenti della tecnologia dell'animazione e delle simulazioni.