Skeletal animation
# Skeletal animation

La skeletal animation è una tecnica dell'animazione digitale nella quale un personaggio (o un altro oggetto articolato) è rappresentato in due parti: una rappresentazione superficiale utilizzata per disegnare il personaggio (chiamata skin o mesh) e un insieme gerarchico di ossa interconnesse (chiamato skeleton o rig) impiegato per animare (posa e keyframe) la mesh. Mentre questa tecnica è spesso usata per animare umani o più generalmente per la modellazione organica, essa serve unicamente per rendere il processo dell'animazione più intuitivo e la medesima tecnica può essere 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 è il processo di creazione di questa associazione. 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 vertex weights, o 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 di skinning è eseguito dalla GPU grazie a uno shader.

In una mesh poligonale, ogni vertice può avere un 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.

