LorisWave sotto l'albero
Sfrutta al meglio i software per semplificarti la vita

Rig in LightWave - Part2

Realizzare un rig completo per la character animation

Pubblicato in Lightwave
GooglePlus icon
LinkedIn icon
MySpace icon
Pinterest icon
whatsapp icon
Avevamo lasciato il nostro personaggio con la gamba che seguiva il movimento del controller, anche se ad alcuni potrebbe essere successo che il ginocchio non piegasse dal lato voluto, questo perché non abbiamo parlato di quello che viene definito il pre-bending, lightwave di default piega le ossa di una catena ik in base al primo kf che trova su ogni singolo osso, se perciò il primo kf di un osso ha il pitch positivo, in quella direzione verrà piegato l'osso, se il pitch è negativo verrà piegato dall'altra parte. Approfondiremo questo argomento in un prossimo appuntamento, per il momento limitiamoci ad assicurarci che il primo kf dell'osso tibia/perone pieghi nella giusta direzione.

Ecco il solito video riepilogativo

Visit this page on YouTube.

Video YouTube "nFx5G8ev7Hk".



oppure su vfxcast.com

ed ora passiamo ai fatti
Tornando alla nostra gamba ci siamo sicuramente accorti che il piede rimaneva legato alla gamba senza ruotare, non è questo quello che vogliamo. Per controllare il piede ci sono diverse possibilità, si può utilizzare il "match gol orientation", si può utilizzare un follower, un orient constrain, si può utilizzare l'ik anche per il piede, o il targhet e pole. Ognuno di questi metodi ha vantaggi e svantaggi, potremmo definire due famiglie, una dove si indica una rotazione assoluta, vedi il "match gol orientation", ed un altra dove si da una direzione, vedi una seconda catena di ik per il piede, se il primo metodo ha una maggiore stabilità, il secondo adegua la posizione del piede nel caso la gamba venga allungata troppo. Come al solito oltre le motivazioni tecniche ci sono le preferenze umane ad influenzare una scelta sul metodo da utilizzare.

Per il momento utilizzerò la tecnica del "saim at item" già vista per la posizione dell'anca. Selezioniamo l'osso del piede e in motion/Controller an limits/Rotation impostiamo come Rotation item R_NP_LegGol, abilitiamo "World" e per ogni canale andiamo a selezionare "Saim at item". A questo punto il nostro piede dovrebbe essere ruotato in una maniera che non ci soddisfa, selezioniamo R_NP_LegGol e ruotiamolo in modo da riportare la rotazione del foot come era originariamente, riselezioniamo l'osso del piede e richiamiamo il rest rotation ( short cut "r" ). Ripetiamo le stesse operazioni per l'osso R_NP_toe con il null R_NP_Toe2. A questo punto il nostro sistema piede dovrebbe rispondere in maniera adeguata, proviamo perciò a testare le varie rotazioni del piede.
Se come me avete fatto un resize del null R_NP_Foot per rendere ovale il custom shape vi accorgerete che le rotazioni non funzionano bene, Clonate il R_NP_Hell, rinominatelo R_NP_Hell_RS e rendetelo trasparente, poi imparentate R_NP_Hell con R_NP_Hell_RS, questo azzera le modifiche di scala a monte delle rotazioni e fa funzionare bene il tutto.
Per un rig semplice e per lavori veloci già a questo punto potremmo ritenerci soddisfatti, abbiamo il necessario per animare la nostra gamba. Ma abbiamo un po di tempo, perciò andiamo ad aggiungere un paio di funzionalità, per prima cosa aggiungeremo un controllo che ci permette con una sola rotazione di controllare tallone e piede, riduciamo i controlli senza ridurre la potenza.
Rispetto al piano di appoggio, che viene definito con il null R_NP_foot, le rotazione del pitch sul tallone e della parte superiore del piede si escludono a vicenda, se mi metto su i talloni non posso alzarmi in punta di piedi e se sono in punta di piedi non posso essere su i talloni, per questo motivo può essere comodo semplificare il rig utilizzando un solo null per controllare la rotazione di due. Selezioniamo il null R_NP_Heel e duplichiamolo, attiviamo la traslazione sulle y e portiamolo un po più in alto, rinominiamolo R_NP_HeelCtrl, selezioniamo R_NP_Heel e mettiamo in motion/controller and limits/Rotation come "Rotation item" R_NP_HeelCtrl e i canali Heading e Banking su "saim at item", per il canale di pitch dovremo intervenire con un espressione, dobbiamo fare in modo che la rotazione negativa influenzi R_NP_Hell e la rotazione positiva R_NP_Foot2, apriamo perciò il graph editor, tab espression e creiamo una nuova espressione la chiameremo R_NP_Hell_P, l'espressione dovrà essere questa:
min( [R_NP_HeelCtrl.p], 0)
Se il valore và al di sopra di 0 la rotazione è sempre 0 perchè questa espressione restituisce il valore più basso ( il minimo ) tra i due forniti che sono la rotazione sull'asse Pitch di R_NP_HeelCtrl e il valore assoluto 0.
Creiamo una nuova espressione R_NP_Foot2_P e dobbiamo ottenere il contrario, se il valore della rotazione Pitch di R_NP_HeelCtrl è minore di 0 deve restituire 0 e se maggiore il suo valore, scriviamo perciò:
max( [R_NP_HeelCtrl.p], 0)
Applichiamo a i relativi canali di pitch dei due null ( Foot2 e Hell ) le due espressioni e rendiamoli trasparenti visto che non li useremo più come controller, infine testiamo il nostro nuovo controller e vediamo se tutto funziona a dovere.
In alcune situazioni potrebbe essere necessario avere la possibilità di fare il blending tra IK e FK, l'ultima release di Lightwave ci ha portato in dono il blend integrato nelle catene ik ma visto che abbiamo utilizzato alla base della nostra catena un osso con "Target" e "Pole" abbiamo un piccolo problema, il blending non si può applicare a queste due opzioni. Per aggirare il problema aggiungeremo un ulteriore osso su cui mixare la sua rotazione in FK e una rotazione esterna ottenuta con Target e Pole. Vediamo come fare. Cloniamo l'osso R_NP_poleLeg e rinominiamolo R_NP_poleLeg_EFF, all osso R_NP_poleLeg togliamo le impostazioni di Target e Pole, poi da Controller and Limits/Rotation impostiamo come Rotation item R_NP_poleLeg_EFF e tutti i canali su "Saim at item". Il "Saim at item può essere animato e così otteniamo il mix che cercavamo. Non ci resta che aggiungere un null che chiameremo R_NP_LegIK_FK che fungerà da controller del mix tra IK e FK. Aggiungiamo un null che chiamiamo NP_slider,( io personalmente non utilizzo gli slier di Lightwave per i rig definitivi ma sono comodi per testare alcune funzionalità ) ed andiamo a inserire come primo valore dello slider la posizione x dell'oggetto R_NP_LegIK_FK, dopo di che dobbiamo creare due espressioni, se infatti l'ik è ininfluente con il valore a 100 il "saim at item" lavora al contrario ed è ininfluente con valore 0. La prima espressione la chiameremo R_NP_Leg_IK_FK e sarà la seguente :
clamp( [R_NP_LegIK_FK.x], 0, 1)
Restituisce il valore di x di R_NP_LegIK_FK con i limiti di 0 è 1, infatti non vogliamo andare oltre a questi. la seconda espressione sarà R_NP_Leg_IK_FK inv:
clamp( ( 1 - [R_NP_LegIK_FK.x]) , 0, 1)
In questo modo restituisce un valore da 1 a 0 inverso a quello della prima espressione. La prima espressione va poi applicata al blend di IK sulla catena della gamba, non prima però di aver settato l'osso anca come stop al calcolo IK tramite il pulsante " Unaffected by IK of Descendants ".
A qusto punto selezioniamo l'osso R_NP_lowerLeg, apriamo il pannello motion e di fianco a blend ik attiviamo "E", qusto significa creare un canale di animazione per quel valore, ci si aprirà in automatico il "motion graph" con il canale appena creato selezionato, selezioniamo l'espressione R_NP_Leg_IK_FK, andiamo nel tab Espression se ancora non ci siamo e applichiamo tramite il pulsante apply l'espressione al canale, vedremo che di fianco al canale è apparso un pallino ad indicare che un espressione è applicata al nostro canale. Selezioniamo poi l'osso R_NP_poleLeg, apriamo il motion pannel, sotto "controller and limits/rotation" andiamo ad animare l'influenza del item sempre attivando "E" , ci si apre nuovamente il "motion graph" e applichiamo questa volta l'espressione R_NP_Leg_IK_FK inv. La stessa cosa va poi fatta per l'osso del piede e dell'avampiede.
Tenendo lo slider a 0 l'ik dovrebbe essere attiva e l'influenza dei "saim at item" al suo massimo, mettendo lo slider a 1, ( che poi significa il 100%) la ik dovrebbe essere ininfluente cosi come il "saim at item", come al solito testiamo il tutto per vedere se funziona a dovere.

Ed anche per questa volta siamo giunti al termine. Ovviamente non finisce qui perciò arrivederci al prossimo appuntamento.

Ti piace questo post? Pagalo!

Un condivisione è la moneta migliore con cui ripagare chi scrive. Se ti è piaciuto quello che hai letto o se lo hai trovato utile condividilo con i tuoi amici.

GooglePlus icon
LinkedIn icon
MySpace icon
Pinterest icon
whatsapp icon

L'articolo precedente: "Rig in LightWave - Part1"
L'articolo successivo: "Rig in LightWave - Part3"

Un commento

cheap ugg

I recently came accross your blog and have been reading along. I thought I would leave my first
comment. I dont know what to say except that I have enjoyed reading. Nice blog.
I will keep visiting this blog very often.

cheap ugg

Aggiungi un commento

Notifica