RIGGING parte 2.


Crea un omino.

 

Freezzalo. Per visualizzarlo nella vista semitrasparente occorre accedere alle sue proprietà. Dato che l'oggetto è freezzato le andremo a prendere dalla Schematic View.

Clicca col destro sul nome della mesh e nel pannello che si apre vai su Edit Properties.

A questo punto attiva la voce See-Trough.

Crea le ossa per la gamba da qui:

Diamo un nome alle ossa.
Selezionale e fai un Mirror.

Rinomina gli oggetti così:

 


Seleziona la struttura della gamba e vai qui:

Applica un gradiente di colore alle ossa delle gambe.

Aggiungi dei Fins alle ossa dove necessario in modo da riempire meglio il volume.


 

Per la spina dorsale ricorreremo all'utilizzo della SplineIK.
Entra in modalità creazione delle ossa da qui:

Specifica subito nel menù IKSolver il tipo SplineIK e attiva l'opzione Assign To Children per fare in modo che il solver venga applicato a ogni nuova Bone creata.

Imposta subito la dimensione delle ossa da qui:

Crea le ossa e al termine si aprirà il pannello dello Spline IK Solver. Imposta il nome (in questo caso Spline_IK_Goal) e questi parametri:

Lungo la spina dorsale verranno generate delle scatole helpers.

Verrà creata anche una spline lungo la catena di ossa.

Rinominala come SplineIKSpline.

Seleziona le ossa della spina dorsale e rinominale.

Fai la stessa cosa per le scatole Helper.

Applica un Gradient di colore e dei Fins alle ossa.


 

Impostiamo lo scheletro per le braccia. Crea le ossa impostando i parametri così:

Creiamo le ossa che permettono di ruotare lungo il suo asse a parte inferiore del braccio.
Crea un piccolo osso e cancella quello di terminazione.

All'inea l'osso al braccio e crea un altro paio di copie.

Linka i 3 ossicini all'osso lungo su cui si sovrappongono. Dagli questi nomi:

Crea le ossa della mano partendo da quella del polso.

Poi spezza il link fra l'osso della mano e quello del polso.
Rinomina le due ossa così:

Crea le dita come catene separate e poi linka la root di ognuna alla mano.

Questo è il nome assegnato a ogni osso del dito:

Procedi in maniera analoga per le altre dita.

Una volta completato il braccio fai un Mirror.


Aggiungi delle ossa per il collo, la testa e il ciuffo posteriore.

Alla fine ci ritroviamo con lo scheletro del personaggio impostato:

Completiamo il rigging dello scheletro impostando dei vincoli tra i vari componenti.

 


RIGGING DELLE GAMBE.

Crea le 3 catene IK per la gamba sinistra.

Sulle ultime due imposta il Parent Space su IK Goal.

In questo modo un osso della catena ruota in base alla rotazione dell'IK Goal. In caso contrario la rotazione è legata all'osso precedente (ovvero allo Swivel del ginocchio).
Alcune ossa potrebbero ruotare intorno al proprio asse cambiando questa impostazione.

In questo caso regola lo Swivel Angle della IK corrispondente per ripristinare il corretto orientamento.


 

 

 

 

Crea una spline da utilizzare come helper per il piede.

Creiamo sul piede 3 Helper di tipo Point impostato su Box.

Conviene creare questi Helpers nella vista Top, in modo che i loro assi locali siano allineati a quelli del sistema World.
Centrali ognuno su una IK. Poi abbassa quello sulla caviglia allo stesso livello degli altri.

Crea una copia scalata di quello presente sulla IKBall.


Diamogli un nome. Quello sul tallone chiamalo HeelRotateLHelp.
Quello piccolo al centro chiamalo heelLiftLHELP.

Quello grande al centro chiamalo ToeRotateLHelp.
Quello sulla punta chiamalo ToeLiftLHelp.

Linka la IK sulla punta all'Helper grosso al centro. Adesso se lo ruoti, la punta segue.

Linka la IK sul tallone all'Helper piccolo al centro. Se lo ruoti il tallone segue.

Linka la IK al centro allo stesso Helper. Questo serve a stabilizzare il piede quando viene sollevato.

Linka i due helper centrali a quello sulla punta. In questo modo ruotando quest'ultimo il piede ruota centrato sulla punta.

Linka l'Helper sulla punta a quello sul tallone. Rutando questo il piede si solleva sul tallone.

Linka l'Helper sul tallone alla spline posta sotto il piede. Spostandola si muove l'intero piede.

Creiamo dei Custom Attributes per la forma helper del piede.
Assegna alla forma questo modificatore:

In esso verranno inseriti i Custom Attributes.
Poi vai qui:

Nel pannello che si apre crea un attributo chiamato Roll con questi parametri:

Poi creane un altro chiamato ToeRotate con gli stessi parametri. I nuovi attributi appariranno nel modificatore.

 

 

 

 

Adesso creiamo un wiring tra questi attributi e le tracce di animazione del CTRLFoot. Prima però aumentiamo l'intervallo temporale da -1000 a 1000, altrimenti il wiring avrà effetto solo sull'intervallo corrente.

Seleziona il CTRLLFoot e questo parametro come primo elemento del Wire.

Collegalo alla rotazione rispetto a X dell'Helper sul tallone.

A questo punto modificando il Roll il piede ruota intorno al tallone.
Per evitare che la rotazione avevnga verso il basso, e per limitarla a 60 gradi piuttosto che a 100, imposta questa espressione:

Crea un altro Wire tra il Roll del CTRLLFoot e l'asse di rotazione X dell' Helper centrale piccolo tramite questa espressione:

Creiamo una limitazione alla rotazione così:

In questo caso il piede oltre i 50 gradi non ruota.

A questo punto creiamo un altro wiring tra il CTRLLFoot e l'Helper sulla punta, sempre sulla rotazione rispetto all'asse X. Stavolta usiamo questa espressione:

In questo modo il piede ruota all'indietro per valori Roll<0, in avanti per Roll fino a 50 e ancorain avanti sulla punta per Roll>50.

Ora creiamo un Wire tra il parametro ToeRotate del CTRLLFoot e l'asse X di rotazione dell'Helper sulla punta.

 

Creiamo adesso un oggetto Helper che utilizzeremo per indicare la direzione lungo cui il ginocchio deve puntare. Posizionalo all'altezza del ginocchio e chiamalo CTRLLKnee.

Seleziona la IK sulla caviglia.

Nel pannello Motion imposta il rettangolo come target per la IK.

A questo punto spostando l'Helper del ginocchio, questo tende a rivolgersi verso di esso. Linka l'Helper del ginocchio al CTRLLFoot, in modo che spostando questo la distanza reciproca rimanga costante.
Seleztiona il CTRLFoot e sposta il suo Pivot Point qui:

In questo modo la rotazione del CTRLLFoot avviene attorno alla caviglia.

Aggiungiamo adesso un altro helper in cima alla gamba. Sarà sempre un Point a forma di Box. Allineiamolo a questa e poi linkiamo l'osso della coscia all'Helper.

Questo procedimento va ripetuto per la gamba destra.

Creiamo adesso un paio di Helper utili per il posizionamento dell'intero Character. Saranno degli NGon.

Linka il CTRLFoot all'Helper interno, e quello interno a quello esterno.

Adesso che è tutto pronto memorizziamo questa posizione di partenza, per poterla richiamare in caso di necessità durante l'animazione.
Seleziona tutti gli elementi di controllo.

Vai qui:

Muovi gli elementi di controllo come ti pare.....

Per ripristinare la configurazione di partenza selezionali tutti e poi vai qui:

Ultimo passo da considerare: i valori di default degli oggetti di controllo. L etrasformazioni di base applicate agli oggetti sono relative a quelle degli oggetti Parent corrispondenti. Se si seleziona un oggetto appartenente a una gerarchia, impostando il sistema Parent i valori numerici delle trasformazioni base sono espressi prendendo come riferimento il Pivot Point del Parent.
Per azzerare quindi le coordinate di un oggetto basta linkarlo a un oggetto Helper coincidente con esso e impostare il sistema Parent.
Ad esempio facciamolo per l'helper del piede, il CTRLLFoot.

Creiamo un punto Point con questa opzione:

 

 

 

 

 

 

Allinealo al Pivot Point del CTRLLFoot.

Linka questo helper al quello di controlo dei piedi.

L'Helper Point e la spline blu di controllo del piede nel sistema Parent hanno le stesse coordinate perchè sono linkati allo stesso oggetto. Per azzerare le coordinate dell'Helper del piede impostiamo un link fra questo e l'oggetto Point.


 

RIGGING DELLA SPINA DORSALE.

Consideriamo la spina dorsale. Dato che le ossa sono impostate sulla SplineIK esistono degli helper di controllo che permettono di snodarla quando li spostiamo.

La rotazione però non comporta cambiamenti. Vediamo come controllare la torsione lungo l'asse principale della spina dorsale.

Seleziona la SplineIK Goal e vai al pannello Motion.
La torsione può essere applicata con questi parametri:


Crea una splòine a forma di stella e allineala all'helper più basso della splineIK.

 

 

Crea un NGon concentrico.
Poi crea una copia e posizionala in cima alla spina, allineata all'ultimo Helper della SplineIK.

 

Linka i due NGon alla stella. Poi linka la stella all'Helper Placement che sta in basso (quello grosso).

Con degli oggetti Point azzera le coordinate di questi nuovi helper creati.
Fai un Set Skin Pose per memorizzare la configurazione degli helpers.

A questo punto linkiamo gli Helper della splineIK alle spline helper che abbiamo appena creato. I due più in basso vanno linkati alla spline helper inferiore.

I due più in alto alla spline helper superiore.

Per l'Helper centrale della SplineIK occorre inventarsi un metodo per farlo apparire linkato a entrambe le spline helper superiore e inferiore.
Creiamo 3 oggetti helper così:

Linka l'Helper in alto alla spline di controllo superiore della spina dorsale. L'Helper in basso alla spline di controllo inferiore della spina dorsale.

Seleziona l'helper centrale e poi applicagli questo Contraint:

Poi seleziona l'helper superiore. Ripeti il procedimento e seleziona l'helper inferiore. In questo modo l'helper centrale si troverà sempre fra i due superiore e inferiore.
Fai la stessa cosa creando stavolta dei Constraint sull'orientamento.

Alla fine linka l'Helper centrale della spina dorsale a quello centrale esterno.

A questo punto è possibile piegare la spina dorsale in avanti spostando e ruotando la spline di controllo superiore.

 

 

 

Regoliamo la torsione della spina dorsale. Seleziona la spline di controllo inferiore e poi imposta la rotazione sul sistema Parent.

Controlla che l'asse Z sia quello per la torsione della spine dorsale.

Seleziona la SplineIKGoal.

Assegna un controller Float Script a questa traccia:

Si apre il pannello in cui inserire una espressione.
Crea una variabile chiamata Bot. Inserisci il nome e clicca su Create.

Clicca su Assign Track e poi vai qui:

Crea una nuova variabile Hip e collegala a questa traccia:

Crea un'altra variabile Root e collegala a questa traccia:
Imposta questa espressione:

 


 

 

 

 


Clicca su Evaluate e poi chiudi la finestra. A questo punto ruotando una delle 3 splines helper rispetto all'asse Z l'intera spina dorsale si torce.

Pensiamo adesso al TwistEndAngle.

Come prima impostiamo uno controller Script e creiamo queste due variabili:

Poi imposta questa espressione:

In questo modo ruotando la spline di controllo inferiore, quella superiore resta ferma.

Linkiamo le gambe alla spine dorsale.
Per farlo colleghiamo l'helper sul principio della gamba con la spline di controllo alla base della spina dorsale.

Crea un oggetto helper e fagli un Constraint Position sull'ultimo osso della spina dorsale. Poi un contraint Orientation sulla spline di controllo superiore della spina dorsale.

Sarà l'elemento a cui linkeremo la testa e le braccia.


Per le braccia crea una IK che parte dall'osso della clavicola e arriva all'osso superiore del braccio.

Chiamala ClavLGoal.

Poi crea una nuova catena che va dalla parte superiore del braccio fino al suo termine.

Chiamala HandLGoal.

Crea un oggetto Point e allinealo all'osso della clavicola.

Linka l'osso della clavicola all'helper.

Per il controllo della spalla crea un rettangolo e posizionalo sulla IK della spalla.

Crea un NGon e allinealo alla IK del polso.

Crea un rettangolo per il controllo del gomito, allinealo al gomito e spostalo indietro.

Ora fai questi link:

- La IK della spalla linkata al rettangolo di controllo della spalla.

- Il rettangolo di controllo della spalla e il Point sull'inizio del braccio al Point sulla cima della spina dorsale.

Seleziona la IK della mano e nel pannello Motion imposta il target per lo Swivel Angle sul rettangolo del gomito.

In questo modo il gomito punta sempre verso il rettangolo.

Linka la IK del polso al controllo del polso.

Linka il controllo del polso al Point in cima alla spina dorsale.

Azzera le trasformazioni sulle forme di controllo della spalla e del gomito inserendo un point coincidente con le forme e intermedio nella catena gerarchica.

Prendi le forme di controllo e salva la loro configurazione con un Set Skin Pose.

Facciamo in modo da rendere la mano animabile in un riferimento "Local" e uno "World", in modo da potere alternare una gestione FK e IK.

Seleziona il controllo della mano e applica questo modificatore:
Inserisci questo parametro con variazione da 0 a 100.


Crea 3 oggetti point sulla IK della mano.

Chiamali LocalHelp, WorldHelp e TweenHelp.
Poi linka il LocalHelp al point in cima alla spina dorsale.

Linka il WorldHelp al vincolo Placement in basso.

Seleziona li TweenHelper e applica un Contraint Position sul LocalHelp e sul WorldHelp. Poi fai la stessa cosa applicando un Contraint Orientation.

Seleziona la spline di controllo sul polso e poi applica un wire fra il parametro aggiunto nell'Attribute Holder e il paraemtro Weight 0 della traccia Position del TweenHelp (il weight 0 corrisponde al primo vincolo selezionato, cioè il LocalHelp).

Azzeriamo il valore "Local" della posizione del TweenHelp con questa espressione:

Connetti da qui direttamente anche il Weight1.


Stessa cosa per i pesi dell' Orientation Constraint.

Ruota il controllo della spalla.

Seleziona il controllo della mano. Aumentando il parametro LocalWorld il TweenHelp si muove da un helper all'altro.

Ritorna alla configurazione di partenza e linka il controllo della mano al TweenHelp.
Poi azzera le trasformazioni di base del controllo inserendo un Point coincidente nella gerarchia.

A questo punto si muove l'intero braccio quando ruotiamo l'helper superiore della spina dorsale.

Occupiamoci adesso delle ossa per la torsione del polso.

Aggiungiamo un parametro al controllo della mano, facendolo variabile nel range [-360...+360].


Fai un Wire tra questo attributo e la rotazione rispetto l'asse X del primo osso del polso. Imposta l'espressione così:

Ripeti il procedimento per le altre ossa moltiplicando la rotazioe per 0.5 e 0.75.
Alla fine aumentando il WristTwist le ossa ruotano gradualmente lungo l'asse del braccio.

Seleziona l'osso della mano.

Crea un Position Contraint con l'ultimo osso del braccio. Abilita la caselletta "Keep Initial Offset" per mantenere la distanza iniziale fra mano e braccio.

Crea un Orientation Constraint con la spline di controllo della mano. Anche qui attiva la casella Keep Initial Offset.
In questo modo spostando il controllo della mano, le ossa della mano seguono e ruotano.


Pensiamo al collo e alla testa.

Crea un NGon per ogni osso della zona e allinealo.

Linka l'esagono di base al Point in cima alla spina dorsale.
Linka il primo osso al primo NGon.

 

 

Linka il secondo NGon al primo.
Linka il secondo osso al secondo NGon.

....e così via.....
A questo punto ruotando un NGon l'intera struttura succesiva nella catena gerarchica segue.

Per rendere indipendenti le rotazione del collo e della testa da quelle della spina dorsale disabilitiamo le rotazioni dal link.
Seleziona l'NGon in basso.

Poi disabilita da qui le rotazioni ereditate:

In questo modo è possibile torcere la spina dorsale mantenendo il collo inalterato.


Impostiamo il controllo degli occhi.

Creiamo un sistema Look-At.
Partiamo da una spline con questa forma:

Linkala al Placement helper e piazzala di fronte alla testa.

Crea due lettere L e R e allineale agli occhi. Poi allontanale e rendile coplanari con l'icona dell'occhio. Linkale a questa.

Azzera le trasformazioni col solito metodo.

Poi applica uno Skin Pose su queste spline di controllo.
Crea 2 helpers e centrali sugli occhi.

Applica dei Constraint di tipo Look At su i due helper in modo che guardino alle rispettive lettere R e L.

Alla fine linka gli occhi agli helper piazzati all'interno.

Creiamo adesso dei Custom Attributes per controllare la rotazione delle palpebre (per semplicità sono state cancellate quelle inferiori).
Seleziona l'icona dell'occhio e aggiungi questi parametri (variazione da -360 a +360):

Fai un Wire tra questi parametri e la rotazione rispetto all'asse X delle rispettive palpebre.

Regoliamo la forma degli occhi.

Crea uno space warp FFD per ogni occhio e allineali a questi.

Seleziona l'occhio destro e la palpebra e linkali allo space warp FFD (con il comando Bind to Space Warp, ovviamente).

Crea un oggetto Point e mettilo dentro l'occhio.

Poi a questo linka l'FFD, l'helper del'occhio e la palpebra.

Alla fine linka i due Point interni all'Helper della testa.

A questo punto sposta i punti di controllo degli FFD per deformare gli occhi.

Grazie a questi space warps è possibile ruotare le palpebre deformandole lungo gli occhi allungati, oppure ruotare gli occhi. La superficie si adatterà in base alla conformazione degli space warps e la forma generale dell'occhio resterà quella definita tramite l'FFD.
Esempiop: rotazione dell'occhio verso il basso.

.....e abbassamento della palpebra.....