Mecanim: le animazioni in Unity

Nel creare videogame spesso capita di imbattersi in modelli 3D animati e la gestione di animazioni multiple può creare difficoltà, soprattutto per quanto riguarda le transizioni tra un'animazione e l'altra o la "sovrapposizione" di animazioni.

Mecanim è un sottosistema di Unity che è stato introdotto nella versione 4.0 ed è atto esattamente a risolvere questi due problemi. Si basa su un formalismo, ben diffuso nel campo dell'informatica, chiamato macchina a stati finiti. Una macchina a stati è un modello per rappresentare sistemi che passano da uno stato all'altro in base a determinate condizioni (nel nostro caso, ad esempio, un personaggio che passa dallo stato "fermo" allo stato "salto" alla pressione del tasto).

Ad ogni stato, quindi, corrisponde un'animazione e qui entra in gioco il primo vantaggio di Mecanim: per ogni transizione da uno stato ad un altro possiamo chiedere a Mecanim di interpolare tra i fotogrammi-chiave delle due animazioni, ottenendo un risultato complessivo più morbido e naturale.

Un altro punto di forza di Mecanim sta nella sovrapposizione di più animazioni. Supponiamo ad esempio che premendo un tasto il personaggio saluti sollevando il braccio destro pur mantenendo le gambe in movimento.
Siccome Mecanim per ogni modello umanoide costruisce una struttura scheletrica standard, è possibile applicare qualsiasi animazione ad una porzione di scheletro definita dall'utente (una maschera). Nell'esempio di prima, quindi, basterà applicare l'animazione di saluto al solo braccio destro, rendendo gli altri arti indipendenti da essa.

Ultima importante funzionalità di Mecanim è il supporto alla cinematica inversa. È possibile infatti fare sì che lo scheletro subisca gli effetti del mondo che lo circonda.
In questo caso l'esempio classico è la salita delle scale: tramite la cinematica inversa le gambe del personaggio si piegheranno in modo da appoggiare i piedi ai gradini con precisione, senza compenetrazioni o animazioni dedicate, ma soprattutto senza mal di testa né dei game developer né dei 3d artist.