martedì 8 luglio 2008

Rigging facciale

Inizio questo mio diario grafico con un progetto "aperto", riguardante l'animazione facciale.

Il morpher presente in 3ds o lo shape manger di XSI sono ottimi e efficienti ma hanno il limite di dover preconfigurare le posizione. Questo vincola nel proseguo dell'animazione a dover sempre utilizzare quelle e non poterle cambiare, se non facendo una nuova "faccia".
Per ovviare a ciò si può riggare il viso allo stesso modo di come si rigga un corpo: con le ossa (oppure semplici box, non fa differenza. L'importante è la struttura a scheletro).
Questo metodo ha il vantaggio di non dover a metà animazione, impostare un nuovo target ma semplicemente con l'uso di una GUI avere e far eseguire al tuo personaggio le tue pose.
Lo svantaggio è il setup, molto più complesso.

Come si può vedere nella figura, ho iniziato a riggare tutto il viso seguendo l'andamento muscolare (attorno alla bozza un circle, gli occhi, "muscoli" sulle guance dall'alto verso il basso, muyscoli della fronte idem) perchè, allo stesso modo in cui si modella seguendo le regole degli edge loop, le nostre ossa dovranno essere inserite per poter dare la giusta espressione al viso.

Per ora userò il 3ds, al termine di questa avventura, porterò gli stessi concetti su XSI, che è leggermente diverso nei termini ma con effetti identici.

La struttura base della ossa è molto basilare: un osso e il suo terminale. Le ossa sono però configurate (pannello Bones tools) con lunghezza NON-Frizzata. In pratica, spostando il suo terminale l'ossa si allungherà (ricordiamoci che i muscoli si allungano, non sono di acciaio).

Altre due operazioni ci serovno per completare la struttura base che ci permetterà di animare il nostro viso: collegare le nostre ossa a degli helper.Nello specifico, dovremmo creare 2 helper, in pratica uno in cima e uno in coda, a cui le nostre ossa si linkeranno.Ora, per collegare le ossa bisogna andare nel pannello motion e utilizzare gli strumenti lì presenti: position e rotation. Selezioniamo l'osso principale e nella voce "position" andiamo ad aggiungere "position contraits" e come oggetto di target, andiamo su uno dei due helper. Per quanto riguarda "Rotation", aggiungiamo "Look at constrait" e come target, selezioniamo l'altro helper.


Ora, per la ossa terminale, dovremmo solo indicare "position Contraits" e come target il secondo helper (quello utilizzato nella rotazione)
Perchè questo? il primo Contraits (pos) del primo osso indica che la sua base sarà vincolata a quell'helper, quindi spostandolo, lo seguirà come la sua ombra. Se non facessimo anche Rotation però, lui non si orienterebbe rispetto al suo terminale (che è vincolato di posizione al secondo helper) avendo come effetto che si muoverebbe correttamente ma non si orienterebbe.
Ecco alcuni esempi draft in pochi click...
Neutro...
Sorpreso...

Arrabbiato...



Per ora sono arrivato qui. Ora devo migliorare la pesatura del viso e creare la famosa GUI.

1 commento:

roberto2004 ha detto...

ciao,volevo ringraziarti per il tutorial, non se ne trovano molti in rete.spero ne farai altri, magari con qualche spiegazione in più per quei poveri disgraziati come me che sono alle prime armi.
Roberto.