RIGGING

quinta parte - i polsi





In questa quinta e ultima parte ci occuperemo dei polsi.

E' il caso in genere di gestire un polso che si orienti con l'andamento del braccio ed uno invece fisso perchè, ad esempio, potrebbe capitare di dover spingere qualcosa...nel qual caso un polso non fisso ci obbligherebbe a settare un keyframe praticamente ogni frame, per fare in modo che la mano non attraversi l'oggetto che stiamo spingendo...

Questo è un esempio di spinta(certo che il testone non rende le cose facili...comunque..)

Image 94

Spostando in avanti la Root, fino a far penetrare la testa nell'oggetto, con il polso fisso vedete che le mani rimangono nella stessa posizione, ben piantate...

Image 95

Invece utilizzando un polso normale, muovendo la root si otterrebbe quest'effetto, obbligandoci ad ogni frame a risettare la posizione dei polsi per fare in modo che non si muovano

Image 96

La tecnica che utilizzerò è semplicemente quella descritta prima per il collo(nella terza parte), che in questo caso ancora non mi soddisfa molto...ma è un punto di partenza...ci sto ancora lavorando, e, appena raggiungerò risultati più che accettabili(o meglio, totalmente soddisfacenti)ve lo farò sapere...se no ditemelo voi.

Ricreate gli ultimi due joints di una delle catene, e cioè il ForeArm e il polso(j_L_ForeArm_fix e j_L_Wrist_Fix).

Image 97

Non creeremo un wrist_ori perchè già ne abbiamo due, uno è quello della catena IK e uno quello della catena FK.

Faremo un point constraint ForeArm_0-ForeArm_Fix...Dopodichè faremo tre orient constraint...

1) Wrist_Ik-Wrist(base)

1) Wrist_Fk-Wrist(base)

1) Wrist_Fix-Wrist(base)

Aggiungiamo un attributo di tipo integer, minimo = 0, massimo = 1 su ctrl_L_Arm, e chiamiamolo wfixIndex...

Ora...il polso può essere comandato da...Ik(wrist), Fk(wrist) o Fix(Wrist), ed in base a quello dobbiamo settare ad 1 una delle tre voci corrispondenti dell'orient constraint, ed a 0 le altre 2.

Queste sono le tre voci dell'orient constraint:

IK = ctrl_L_Arm.ikIndex * inverso(ctrl_L_Arm.wfIndex)

FK = ctrl_L_Arm.fkIndex * inverso(ctrl_L_Arm.wfIndex)

FIX = ctrl_L_Arm.wfIndex

In qualsiasi caso, se FIX = 1, le altre due sono = 0, se invece FIX = 0, uno degli altri due sarà 1, e l'altro di conseguenza 0.

Quindi colleghiamo ctrl_L_Arm.wfIndex all'orient constraint j_L_Wrist_FixW2(chiaramente se voglio il polso fisso, questo sarà ad uno);

Creiamo un reverse node(rev_L_W_OC) ed otteniamo "inverso(ctrl_L_Arm.wfIndex)".

Il resto è intuibile, un md_L_W_OC dove moltiplicheremo ikIndex e fkIndex per l'output del reverse node, e li assegneremo agli altri due elementi dell' orient constraint.

Il controllo del wrist è fra gli attributi di ctrl_L_Arm, controlla in maniera uguale tutti e tre i polsi, ed io ho deciso di metterlo in ctrl_L_Hand, quindi connetteremo l'attributo vector di nome wrist di quest'ultimo con il corrispondente del primo, mentre il primo è direttamente connesso alle rotazioni dei tre polsi.

Questo rigging è un WIP, e già sto decidendo di cambiare alcune cose, ad esempio mi sono accorto che non utilizzo mai l'FK per il braccio...molto probabilmente lo toglierò, e, come ho detto prima, il polso ancora non mi convince...Se questo tutorial sarà bene accetto, condividerò con voi anche le prossime idee.

---
Questo articolo è stato importato automaticamente dal forum il 31/lug/2014
Per vedere il post originale e/o i commenti sul forum prima di quella data clicca qui