3ds Max - Rigging Without Bones | Rig completo

Post Reply
User avatar
cecofuli
Site Admin
Posts: 419
Joined: 10 January 2008, 17:31
Are you Human?: Yes
Location: Bergamo - Italy

3ds Max - Rigging Without Bones | Rig completo

Post by cecofuli » 15 January 2008, 12:50

RIGGING WITHOUT BONES


for 3ds Max

CECOFULI

ing_legrenzi@hotmail.com

Image


--------------------------------------

1. In questo tutorial vogliamo realizzare un sistema di ossatura (rigging) che ci permetta di muovere in maniera realistica le rotazioni di un personaggio.

Sappiamo che 3ds max offre già questo tipo di operazione, integrata in Character studio, ma noi vogliamo realizzarne uno partendo dal nulla.

In questo tutorial tralascerò di descrivere alcune delle più comuni operazioni che un utente con una media conoscenza del software dovrebbe aver già acquisito.



Creiamo 3 semplici box con:

a. dimensioni 20, 10, 10 ( B_Piede_DX )

b. dimensioni 5, 5, 40 ( B_Polpaccio_DX )

Allineando il Pivot del B_Piede_SX alla bese del B_Polpaccio_DX, proprio nel mezzo del poligono di base. Utilzzare l'opzione AUTO GRID per la realizzazione del B_Polpaccio_DX e utilizzare come piano ri creazione la faccia superiore del B_Piede_DX.

(fig. 01)
Image


2. Ora ruotiamo di 5 gradi in senso orario la B_Polpaccio_DX. Poi creiamo un'altro box di dimensioni 10, 10, 40 utilizzando l'opzione AUTO GRID ed allineiamolo in base aglia assi locali X e Y alla bone B_Polpaccio_DX.

(fig. 02)
Image


3. Ruotiamo in senso antiorario la B_Coscia_DX di 10 gradi.

(fig. 03)
Image


4. Creiamo un'altro box "di servizio", come avete fatto nel punto 3 e allineiamolo al B_Coscia_DX. Questo box ci servirà nel passaggio successivo, dopodiché verrà cancellato.


(fig. 04)
Image


5. Ora allineaiamo i Pivot di:

a. B_Polpaccio_DX al Pivot di B_Coscia_DX , che in questo momento si trova al centro del poligono di base (di B_Coscia_DX).

b. B_Coscia_DX al Pivot del box temporaneo.

Ora cancellate il box temporaneo.

(fig. 05)
Image


6. Linkate ora B_Piede_X a B_Polpaccio_DX e B_Polpaccio_DX a B_Coscia_DX.

(fig. 06)
Image

7. Ecco il risultato.

(fig. 07)
Image


8. Creiamo un Point helper e posizioniamolo sulla punta del piede, nella parte bassa a metà del bordo evidenziato in figura. Linkiamolo a B_Piede_DX e rinominiamolo.

Poi creiamo 2 catene IK:

a. 1 collegando B_Coscia_DX e poi B_Piede_DX.

b. 1 collegando B_Piede_DX a C_Dita_DX.

Rinominare i Goal con in figura.

(fig. 08)
Image


9. Creiamo 2 controlli e rinominiamoli come in figura:

a. C_Dita_Rotazione_DX serve per far ruotare il piede facendo perno sulle dita. Ad esso linkiamo IKC_Caviglia_DX.

b. C_Piede_DX serve invece per controllare l'intero piede. Posizioniamolo a metà del bordo, nella zona del tacco. Poi applichiamogli un Edit spline e ridisegnamo la sua forma. Ad esso linkiamo C_Dita_Rotazione_DX e IKC_Dita_DX.

(fig. 09)
Image


10. Questo è quello che dovreste aver ottenuto:

(fig. 10)
Image


11. In vista frontale duplichiamo tutti gli oggetti fin'ora creati e rinomiamoli usando come suffisso SX.

(fig. 11)
Image


12. Ora creiamo un box che useremo come parte bassa del busto. Creiamo un box 12, 14, 10 e allineiamo il suo Pivot alle coordinate globali e poi centriamolo nell'oggetto. Poi linkeate a B_Pelvis le due gambe.

(fig. 12)
Image


13. Per ogni IKC attivare l'opzione IK Goal nel pannello IK Solver Properties.

(fig. 13)
Image


14. Creiamo due Shape esagonali, una con dimensione 40 e l'altra 58. Posizioniamoli al centro delle coordinate globali 0,0,0. Rinominiamo, coloriamo e linkiamo poi gli oggetti come in figura


(fig. 14)
Image



15. Cloniamo C_Base ed allineiamolo a B_Pelvis utilizzando i rispettivi centri come riferimento per l'allineaento. Duplichiamo in nuovo controllo C_Fianchi_Root e ridimensioniamolo a 30. Rinominiamolo C_Fianchi ed effettuiamo i link come in figura.

(fig. 15)
Image



16. Creiamo 3 parallelepipedi di dimensioni:

a. B_Spine_1 = 10,10, 15

b. B_Spine_2 = 12,15,15

c. B_Spine_3 = 13,20,15

Utilizziamo la griglia automatica per creare il primo parallelepipedo allineato a B_Pelvis. Poi cloniamolo e spostiamolo di 15 in Z e così per il 3° . Poi rinominiamoli.

(fig. 16)
Image



17. Spostiamo i Pivot di B_Spine_1 e B_Spine_1 nella parte superiore di se stessi, come in figura.

(fig. 17)
Image



18. Create un helper P_spine_1 e posizionatolo come in figura.

(fig. 18)
Image



19. Linkare P_spine_1 a C_Fianchi e B_Spine_1 a B_Spine_2.

(fig. 19)
Image



20. Ora dobbiamo sostituire a B_Spine_1 e B_Spine_2 il Controller EuleroXYZ che gestisce le rotazioni in LookAt Constraint e aggiungere a:

a. B_Spine_1 -> Rotation -> LookAt Constraint to B_Pelvis.

b. B_Spine_2 -> Rotation -> LookAt Constraint to P_Spine_01.

Modificare poi le opzioni del controller come in figura.

(fig. 20)
Image



21. Selezionare e clonare per 2 volte C_fianchi e posizionarli come in figura, ossia il primo allineato alla base di B_Spine_2 e il secondo allineato alla base di B_Spine_3. Poi eseguire i link come in figura. Salvate il file.

(fig. 21)
Image



22. Adesso voglio mostrarvi un'altro tipo di rigging del busto. Salvate il lavoro fatto fin'ora e create un'altro file che andremo ora a modificare. Selezioniamo C_Fianchi ed allineiamo il suo Pivot al centro di B_Spine_2.

(fig. 22)
Image



23. Con B_Spine_1 selezionato andare nel pannello MOTION -> ROTATION -> LookAt Constraint e spuntare Select Upnode, cliccare su none e utilizzare come oggetto P_Spine_1.

(fig. 23)
Image



24. Clonare P_Spine_1, rinominarlo in P_Spine_2 ed allinearlo a C_Spine_2. Dopodiché ripetere i passaggi al punto 23, ma utilizzando B_Spine_2 e P_Spine_2. Linkare P_Spine_2 a C_Spine_1.

(fig. 24)
Image



25. Cloniamo 2 volte P_Spine_2, posizionando le due copie una appena sopra e l'altra appena al di sotto di P_Spine_2.

(fig. 25)
Image



26. Ora con selezionato P_Spine_2 andiamo nel pannello MOTION -> Rotation e sostituiamo il controller Rotation EulerXYZ in Orientation Contraint ed utiliziamo i 2 Point helper appena creati come Target.

(fig. 26)
Image



27. Ora effettuiamo i link come in figura.

(fig. 27)
Image



28. Riprendiamo il Character al punto 21, appena dopo il salvataggio. Creiamo ora la geometrie per il collo e il suo controllo. Il B_collo è di dimensioni 5,5,10 e il suo controllo, allineato al centro della sua base è un esagono con dimensioni 15. Fare attenzione ed allineare il C_Collo col Pivot del B_Collo. Altrimenti il collo ruoterà attorno ad un perno sbagliato. Linkiamo C_Collo a C_Spine_2 e B_Collo a C_Collo.

(fig. 28)
Image



29. Creare la testa (box 16,16,16) .Clonare il controller C_Collo, rinominarlo ed allinearlo al Pivot di B_testa lungo l'asse Z. Linkarli e disattivare per l'oggetto C_Testa le opzioni mostate in figura. come precedentemente detto, fare attenzione al punto di rotazione del controller e della B_Testa.

(fig. 29)
Image



30. Ora creiamo la spalla, di dimensioni 5,5,15 ed allineiamola alla base del collo e al centro del busto. Poi orientiamo le coordinate dell'oggetto a quelle globali. Poi linkiamola a C_Spine_2. Copiamo la spalla, ma senza specchiarla, ma clonandola, spostandola a coordinate 2.5 globali sull'asse X e modificando l'altezza del parallelepipedo da 15 a -15.

(fig. 30)
Image



31. Creare un Point Helper e, utilizzando la griglia automatica, posizionarlo all'estremità della spalla, come in figura. Allinearlo in modo da centrarlo sulla faccia della B_Spalla_DX. Poi allineare le sue coordinate a quelle globali e infine linkarlo alla B_Spalla_DX. Crearne una copia e , senza specchiarla, posizionarla sulla B_spalla_SX.

(fig. 31)
Image



32. Ora dovremmo affrontare una parte abbastanza complessa, ma molto interessante, il cosidetto " Bleeding FK-IK system ". Ovvero quel sistema di rigging che ci permetti di passare in modo fluido da un utilizzo delle cinematica diretta a quella inversa per la gesione dei movimenti delle ossature che compongono il braccio. Clonare per 2 volte C_Spalla_IK_DX e spostare le copie a 25 unità di distanza l'una dall'altra. Poi rinominarle e linkarle come in figura.

(fig. 32)
Image



33. Selezionare i 3 controller del braccio, clonarle e ridimensionare le copie portando a 20 la dimensione dei nuovi helper. Rinominarli come in figura. Se avete fatto tutto in modo corretto, selezionando P_Spalla_FK_DX e ruotandolo, anche gli altri 2 controlli dovrebbero ruotare.

(fig. 33)
Image



34. Ora creiamo una catena IK utilizzando P_Spalla_IK_DX e P_Polso_IK_DX. Per fare questo ruotiamo leggermente il P_Gomito_IK_DX per facilitare il posizionamento dell' IK goal. Modificate il parametro Parent Space come in figura.

(fig. 34)
Image



35. Una volta posizionato, allineate il IKC_Braccio_DX a P_Polso_FK_DX.

(fig. 35)
Image



36. Clonare P_Polso_FK_DX, rinominarlo in P_Braccio_IK_Locale_DX e ridimensionarlo portando la dimensione dell'helper a 10.

(fig. 36)
Image



37. Selezionare P_Braccio_IK_Locale_DX, clonarlo e spostarlo verso il basso. Rinominarlo il nuovo oggetto in P_Braccio_IK_Down_DX. Linkarlo poi a C_Root. Linkare anche P_Braccio_IK_Locale_DX a C_Fianchi.

(fig. 37)
Image



38. Clonare P_Braccio_IK_Down_DX e rinominare in nuovo oggetto in P_Braccio_IK_Middle_DX. Ovviamente l'oggetto non è ben visibile, perché si trova sovrapposto a P_Braccio_IK_Down_DX. e deve essere così. Infatti dovremo fare in modo che sia la sua posizione che rotazione dipenda dalla posizione e rotazione di P_Braccio_IK_Down_Dx e P_Braccio_IK_Locale_DX Per far questo dobbiamo selezionare i controller rotazione e posizione di P_Braccio_IK_Middle_DX e assegnargli un Controller Orienataion Constraint e Position Constraint, e utilizzare come targhet gli helper P_Braccio_IK_Down_Dx e P_Braccio_IK_Locale_DX.
Selezioniamo P_Braccio_IK_Middle_DX -> MOTION -> Selezioniamo le tracce Position e Rotation e poi facciamo come in figura.

(fig. 38)
Image



39. Selezioniamo il controllo P_Spalla_FK_DX e aggiungiamogli un attributo attraverso l'Attribute Editor come in figura

(fig. 39)
Image



40. Con selezionato P_Spalla_FK_DX clicchiamo col tasto destro e attiviamo la funzione Wire Parameters.

(fig. 40)
Image

User avatar
cecofuli
Site Admin
Posts: 419
Joined: 10 January 2008, 17:31
Are you Human?: Yes
Location: Bergamo - Italy

Re: 3ds Max - Rigging Without Bones | Rig completo

Post by cecofuli » 15 January 2008, 12:53

41. Comparitrà la finestra di dialogo Wire Parameters. Dovremo collegare IK_Down con tutti e 4 i controller dell'oggetto P_Braccio_IK_Middle_DX, cambiando per due di loro l'espressione come mostrato in figura.

(fig. 41)
Image



42. Portiamo lo spinner IK_Down a 50. Poi selezioniamo IKC_Braccio_DX, allineiamolo e linkiamolo a P_Braccio_IK_Middle_DX.

(fig. 42)
Image



43. Creiamo le geometrie per il braccio, avambraccio e mano. Con selezionato la B_Spalla_DX clicchiamo col tasto destro, clonimolo e spostiamolo di 15 unità verso l'esterno del braccio.Se avete usato le dimensioni corrette, ora la nuova geometria si trova esattamente sulla faccia più esterna della spalla, perfettamente allineata. Allunghiamo la nuova ossatura, B_Bracico_DX a 25. ripetere lo stesso procedimento per l'ava,braccio e la mano, usando le seguenti dimensioni.

a. B_Braccio_DX = 8 , 8 , 25.

b. B_Avambraccio_DX = 5 , 5 , 25.

c. B_Mano_DX = 2.5 , 10 , 15.

Linkare come in figura.


(fig. 43)
Image



44. Selezioniamo B_Braccio_DX e modifichiamo il suo controller di rotazione , sostituendo a EulerXYZ un Orientation Constraint. Utiliziamo come targhet P_Spalla_IK_DX e P_Spalla_FK_DX. Mi raccomando ATTENZIONE ALL'ORDINE DI SELEZIONE DEL TARGHET . Prima quello più esterno, ciè l'FK, poi quello interno, l'IK questo sarà importante nei passaggi seguenti.

(fig. 44)
Image



45. Ripetiamo lo stesso procedimento con B_Avambraccio_DX e B_Mano_DX utilizzando come target quelli in figura.

(fig. 45)
Image



46. Creiamo un altro Attibute, questa volta per gestire lo switch tra IK e FK.

(fig. 46)
Image



47. Ora dovremo creare alcuni Wire Parameters. Per il primo utilizzaremeo C_Spalla_DX e B_Braccio_DX.

(fig. 47)
Image



48. La tabella seguente mostra le 2 connessioni da fare, con la modifica al secondo script.

(fig. 48)
Image



49. Fare lo stesso con l'avambraccio e il polso.

(fig. 49)
Image



50. Proseguiamo con le dita. ridimensioniamo la mano portando l'altezza da 15 a 10. da essa poi cloniamo le 3 falangi del dito medio. Fare in modo che la prima falange penetri leggermente nella mano. Nel caso le falangi non ruotassero, assicurarsi che nella tendina Controller, vi sia impostato EulerXYZ come controller di default.

a. B_Medio_01_DX = 2 , 2 , 4

b. B_Medio_02_DX = 2 , 2 , 3.5

c. B_Medio_03_DX = 2 , 2 , 2.5

Rimodelliamo anche un po' la mano, aggiungendo un modificatore edit mesh , creando nuovi poligoni e spostandoli per dare alla mano una forma corretta. Salvate in questa posizione e create un nuovo file. Questo perché vedremo due tipi differenti di rigging delle dita.

(fig. 50)
Image


1° METODO


51. Creiamo 3 Point helper e allineiamoli al perno di ogni falange, dopodiché duplichiamo il primo e rimpiccioliamolo. Linkiamo a cascata come in figura.

(fig. 51)
Image



52. Utilizzando la B_Mano_DX come oggetto per la gestione delle dita, aggiungiamo alcuni Attributi in base alle nostre scelte. Io ho deciso di realizzare 4 dita, divise in 3 falangi. Ad ogni una di queste dita ho dato la possibilità di realizzare 3 rotazioni. Di conseguenza gli attributi saranno 4x3 = 12. L'unica caratteristica è che ho dato un range da -100 a 100 ad ogni attributo.


(fig. 52)
Image



53. Modifichiamo il controller della rotazione dei Point Helper in EulerXYZ , in quanto di default hanno un controller di tipo Smooth Rotation.

(fig. 53)
Image



54. Ora iniziamo a realizzare i collegamenti. Consiglio prima di iniziare a fare qualsiasi tipo di collegamento Wire di verificare l'asatto asse di rotazione degli oggetti presi in esame. Utilizzeremo C_Medio_01_DX per permettere la rotazione orizzontale dell'intero dito. Fare attenzione allo script, in quanto aggiungendo degtoRad si modifica l'unità di misura degli angoli da radianti a gradi sessagesimali. Ora modificando lo spinner Medio ALLARGARE tutto il dito ruoterà.

(fig. 54)
Image



55. Colleghiamo l'attributo Medio 1° ROT alla rotazione lungo l'asse Y dei tre controlli C_Medio_01_DX, C_Medio_02_DX e C_Medio_03_DX. In questo modo modificando lo spinner il dito ri arrotolerà su se stesso.

(fig. 55)
Image



56. L'attributo Medio 2° ROT ci permette invece di realizzare un controllo specifico solo sulla prima falange. Di conseguenza possiamo ruotare solo la prima falange, mentre le altre due rimangono diritte. E' possibile con questo sistema realizzare altri attributi e Point Helper per controllare singolarmente le restanti 2 falangi.

(fig. 56)
Image

Bene, ora è possibile completare l'intera mano, o se volete legere il secondo metodo e decidere quale dei due vi sempre migliore.



2° METODO


57. Creiamo 5 Helper e posizioniamoli come in figura. Rinominiamoli e linkiamoli a cascata seguento l'immagine.

(fig. 57)
Image



58. Ora dobbiamo fare qualche Wire parameter. Vogliamo che la rotazione lungo l'asse y di C_Medio_04_DX inneschi la rotazione di C_Medio_03_DX, C_Medio_02_DX e C_Medio_01_DX. Quindi niente spinner, ma un controllo diretto della rotazione delle dita nella Viewport. Utilizzando invece le rotazione di C_Medio_00_DX possiamo permettere la rotazione dell'intero dito.


(fig. 58)
Image



59. Ecco il risultato finale
Image


60. Questo è il personaggio completo. Come si può vedere ho aggiunto anche i controlli dell Swievel Angle degli IKC delle caviglie e dei polsi (per capire cosa sono vedere il tutorial della guida in linea di 3ds max ) e linkandole come nell'immagine. Poi , per un miglio ordine, si dovrebbero creare dei preset di selezione e dei layer.

BUONA ANIMAZIONE A TUTTI!

Image


Al prossimo tutorial... CIAO!


--- cecofuli ---


:)

2008 © Francesco Legrenzi

Post Reply