Il Rigging dei character per la Realtà Virtuale


Saverio Trapasso
CEO & Co-founder of Artheria
Il Rigging dei character per la Realtà...

Possiamo considerare il rig dei characters come l’anello che congiunge la fase di modellazione con quella dell’animazione. Il rig, difatti, è la costruzione di una specifica ‘ossatura’ – bones – all’interno della mesh dell’oggetto 3d, che consente di gestirne le deformazioni.

Nonostante quest’introduzione faccia apparire il rigging come qualcosa di semplice e meccanico, beh, non lo è: un rigger richiede di conoscere molta tecnica per gestire tutte le possibili deformazioni a cui un asset 3D può essere sottoposto, oltre a necessitare di un occhio artistico per rendere quanto più fluide e naturali le deformazioni stesse.

Un esempio di deformazione

Lasciatemi essere più chiaro con un esempio: la maggior parte di noi è dotato di un arto composto da mano, avambraccio, braccio e spalla. La semplice azione di ‘piegare il braccio’ è consentita dalla presenza di una cerniera – nel nostro caso, il gomito – e da muscoli agonisti ed antagonisti, che si contraggono e si rilasciano. In altre parole, si deformano.

Ed è qui che interviene l’occhio artistico del rigger: comprendere la modalità e le deformazioni a cui sono sottoposti gli elementi in scena è il primo passo verso il realismo.

Rigging per VR

Come avrete già avuto modo di leggere qui e là in questo blog, esiste una differenza sostanziale tra quanto viene prodotto – in termini di modellazione, texturing e, di conseguenza, anche rigging – per i motori di render off-line e quanto viene prodotto per i motori di render online.

Ho già affrontato le differenze sostanziali di queste due tipologie di motori di render nell’articolo dedicato alla creazione dei capelli per un progetto VR, ma per maggiore chiarezza le accennerò di seguito.

I motori di render off-line (quelli utilizzati per il cinema e per i cartoni animati, per intenderci) renderizzano ogni frame in un tempo che può variare da una manciata di minuti a, verosimilmente, ore. I frame ottenuti vengono soltanto successivamente montati in sequenze di 25 fps.
Trattandosi di una tipologia di destinazione d’uso che privilegia la qualità alla performance, oltre ad avere in scena degli oggetti 3D composti da geometrie molto dense e complesse, hanno a disposizione molti strumenti di deformazione specifica per la gestione dei vari movimenti: lattice, cluster, tension, wrap, twist, jiggle sono tutti deformatori.

I motori di render online – utilizzati prevalentemente per videogames e Realtà Virtuale – funzionano sostanzialmente in modo opposto: come è intuibile dal nome, renderizzano ogni frame in tempo reale, privilegiando la performance rispetto alla qualità visiva.
Ne consegue la necessità di ottimizzare il flusso dati per evitare un dropdown del framerate: geometrie e textures molto leggere procedono di pari passo ad un rig semplificato, sprovvisto di strumenti di deformazione specifica.

E qui viene il bello. Come fare ad ottenere un rig di buona qualità – come richiesto da un progetto come Vajont – pur dovendo ricorrere ad un sistema semplificato?

Il workflow del rigging

1 – Costruire l’ossatura

Poiché la deformazione della mesh avviene seguendo quella che è la topologia del modello 3D – ovvero l’organizzazione e la distribuzione dei poligoni che compongono l’oggetto – il primo passaggio in assoluto è assicurarsi che tutto sia corretto ed ottimizzato. 

Successivamente, si passa al posizionamento delle ossa all’interno della mesh. Ogni osso virtuale – bone – dispone di un joint, una sorta di pivot  che indica le diverse direzioni in cui l’osso stesso può essere ruotato.

joints bones maya rigging

Joints e bones. Immagine tratta dal sito di Autodesk Maya a solo scopo didattico.

I joint vengono posizionati sulle giunture del corpo: alcuni esempi sono il polso, il gomito, la spalla, il collo, il ginocchio ecc. La rotazione dei joint può essere limitata solamente ad alcuni assi e per un certo numero di gradi: ad esempio, la rotazione della testa avviene unicamente sugli assi destra-sinistra, alto-basso con degli angoli di rotazione che difficilmente superano i 180°.

posizionamento dei joint interni a corpo umano rigging 3d

A tal proposito, è importante che ogni joint sia correttamente orientato, per avere un processo che sia quanto più possibile standardizzato.

rigging 3d orientamento dei joint corpo umano

Facciamo un piccolo passo indietro. Piegate il vostro gomito fino a disegnare un angolo di circa 90 gradi tra braccio ed avambraccio. Ci siete? Bene. Cominciate a ruotare il polso, guardando bene quello che accade alla pelle del vostro avambraccio. Cosa potete notare?

Vi do un piccolo indizio: la parte di avambraccio più vicina al polso ruota di un’ampiezza maggiore rispetto a quella più vicina al gomito. Questo movimento è il risultato dello slittamento di radio ed ulna, le due ossa dell’avambraccio.

Come è stato possibile trasferire questo effetto sul nostro modello 3D?
In realtà, il processo è più semplice di quello che appare.

rigging 3d movimento mano rotazione polso e braccio realtà virtuale

Tra gomito e polso ho inserito tre diversi joint, applicando ad essi funzioni matematiche tali da ricalcare la rotazione che avviene nella realtà. Questo piccolo trucco mi ha consentito di ricreare una rotazione che avvenisse in modo fluido e graduale.

2 – Aggiungere i controlli

Non dobbiamo dimenticare che il rig è fatto per essere utilizzato da un animatore. Di conseguenza, non dobbiamo dimenticare l’importanza dell’usabilità! Non possiamo chiedere all’animatore di muovere ogni singolo osso per realizzare l’animazione, in quanto i tempi di realizzazione triplicherebbero, senza tra l’altro avere garanzia di un risultato godibile.

Bisogna quindi aggiungere i controlli.

rigging controlli rotazioni corpo umano 3d

Sostanzialmente, i controlli sono delle shape a cui vengono agganciati – tramite dei constrain – dei sistemi di ossa e joint. I controlli consentono comodamente di gestire rotazione e traslazione di ciascun gruppo di ossa a cui si riferiscono.

Per quei gruppi di ossa e joint troppo ravvicinati, in cui i controlli sul modello rischierebbero di sovrapporsi – come avviene per le falangi delle dita – vengono costruiti dei pannelli esterni, sempre nel rispetto dell’usabilità.

rigging 3d controlli per le mani

3 – Skin-binding e pesatura

È adesso il momento di collegare la mesh 3D alle ossa posizionate al suo interno. Questo processo prende il nome di skin-binding: una volta che viene agganciata la ‘pelle’ ai sistemi di ossa e joint, al movimento dell’osso coincide il movimento di una parte della geometria.

Si passa dunque alla fase di pesatura, che consente di definire con precisione quali sono le aree di influenza di ciascun joint, sulla mesh 3D.

pesatura rigging 3d per realtà virtuale su mesh

La pesatura viene proprio ‘dipinta’ sulla mesh attraverso un apposito pennello. Come potete vedere nell’immagine, le zone bianche definiscono le aree di influenza dei joint; più ci si allontana dal joint, più l’area di influenza sfuma. Per meglio aiutarci a visualizzare questo passaggio, possiamo pensare che muovere la spalla avrà comunque una minima influenza sul petto e sul braccio.

Avete mosso anche voi la spalla per capire come influenza il resto del corpo?
Bene, in questo modo vi sarà ancora più chiara l’importanza della pesatura.

4 – Blendshapes

Possiamo pensare ai blendshapes come differenti versioni di un unico modello: questa è una delle possibili tecniche utilizzate per il rig facciale.

Ciascun blendshape corrisponde ad una diversa espressione dello stesso viso: avremo dunque una mesh 3D differente per rabbia, gioia, tristezza…
Includendo la diversa posizione delle labbra e delle guance per la pronuncia di ogni singolo fonema, i personaggi di Vajont hanno 68 blendshape facciali l’uno, ricalcando l’espressività propria degli attori che hanno loro dato voce e motion-capture per avere un look finale ancora più realistico.

blendshapes 3d per volto umano in realtà virtuale

Un gruppo di blenshapes realizzato per il character del marito. È possibile vedere le diverse posizioni della bocca.

I blenshapes vengono dunque integrati nel rig. Nel nostro caso specifico, abbiamo scritto un sistema customizzato, talmente vasto da non rientrare all’interno di un unico screenshot!

Anche in questo caso, viene realizzato un pannello di controllo per consentire all’animatore un utilizzo più agevole del sistema.

5 – Export per Unity

Il personaggio così riggato viene dunque consegnato all’animatore. Quest’ultimo, attraverso un sistema di chiavi, registra la posizione di ogni controllo nel tempo. L’animazione viene quindi bakata – fissata, memorizzata – direttamente sulle ossa, consentendo di importare all’interno di Unity un file leggero ed ottimizzato, sprovvisto di controlli e di ogni ulteriore dato.

Per i personaggi la cui animazione non è realizzata dall’animatore, ma gestita dinamicamente dal sistema, il comando bake deformation to skin weight consente di trasferire le informazioni relative alla deformazione della mesh all’interno del file di pesatura. In questo modo, muovendo l’osso in Unity si muoverà la mesh.

Mostra Commenti (0)

Comments

Articoli Correlati

Character creation

La modellazione dei volti

Il focus della nostra esperienza VR è decisamente la relazione umana.  Il tempo, in Vajont, trascorre in presenza di personaggi che, per tutta la durata del pezzo, tentano di...

Pubblicato il da Yuri Giordani
Character creation

Texturing dei characters – Abiti ed accessori

Come abbiamo già visto nell’articolo dedicato al texturing della pelle e dei dettagli del viso, il texturing consente di raccontare parte della storia senza scomodare gli...

Pubblicato il da Irene Zappon