CREAZIONE DI DUE RUOTE CHE RIMANGONO TANGENTI AL VARIARE DEI DIAMETRI

In questo breve tutorial (è breve perché è il primo che scrivo!!!) vedremo come creare due ingranaggi (per il tutorial saranno rappresentati da due cilindri) che ruotano in senso contrario e che al variare dei rispettivi raggi si mantengono automaticamente tangenti l’uno all’altro e di conseguenza varieranno anche le rispettive velocità di rotazione. Non sono molto bravo a spiegare…comunque seguendo il tutorial sarà tutto più chiaro.

1-Creiamo una nuova scena

2-Creiamo due cilindri poligonali:
Selezioniamo il menu Create>Polygon Primitives>Cylinder
Le dimensioni non sono importanti comunque per restare fedeli al tutorial impostate raggio 1,altezza 2, subdivision axis 20 e tutto il resto a 1. Ripetete il tutto per il secondo cilindro.

3-Raggruppare e rinominare i Cilindri:
Apriamo l’Hypergraph dal menu Window>Hypergraph:Hierarchy
Dovremmo avere solo due parti come nella figura qui sotto.

img01

Raggruppiamo i due oggetti selezionandoli entrambi (shift+clic sx oppre finestra sulle due parti) e poi premiamo Ctrl+g oppure dal menu Edit>Group. Verrà creato un gruppo group1 che contiene i nostri due cilindri.Abbiamo raggruppato i nostri due ingranaggi per una questione di praticità nel caso in cui sia necessario spostare il nostro meccanismo.
Rinominiamo ora le nostre parti:
pCylinder1 lo rinominiamo chiamandolo “a”. Per rinominarlo andiamo nell’hypergraph,tenete premuto il tasto dx sul nome e selezionate rename,cambiate il nome in a. Ripetete l’operazione per il pCylinder2 chiamandolo b. (che fantasia..)

4-Ora si inizia la parte interessante….Creiamo un’ espressione per tenere tangenti i due cilindri al variare dei raggi.
Per fare questo dobbiamo aprire l’expression editor che si trova in Window>Animation Editor>Expression Editor come mostrato qui sotto.

img02

Vi si aprirà la schermata dell’immagine precedente. Selezionate nel menu dell’espression editor Select Filter>By expression Name. Inserite il nome che vi piace per la nostra espressione e schiacciate new expression.
Adesso andate in fondo e nel rettangolo bianco scrivete questa espressione:

b.translateX=polyCylinder1.radius+polyCylinder2.radius;

Cliccate Create e vi troverete in questa condizione.

img03

Se riducete a icona tutte le finestre davanti ala vista 3d vi accorgerete che i due cilindri si sono posizionati tangenzialmente. Provate a cambiare i raggi dei cilindri e vedrete cosa succede.Per variare i raggi selezionate la parte,aprite il channel editor,ciccate su polyCylinder1 o 2 nella sezione inputs e variate il raggio..
Cerchiamo di capire cosa abbiamo fatto.
b.translateX= questa dichiarazione significa che vogliamo assegnare un valore al campo traslate sull’asse X dell’oggetto b (se avete notato se selezionate b noterete che il campo traslate X è viola).
polyCylinder1.radius è il raggio del cilindro1 che ora si chiama a. Se selezionate a vedrete che nella sezione inputs è rimato il nome polyCylinder1. Se ci serve di utilizzare un campo del cilindro(nel nostro caso il raggio ma potrebbe essere l’altezza o altri campi..)dobbiamo scrivere esattamente il nome presente negli inputs (Attenzione alle maiuscole e alle minuscole!!) e scriverci di fianco il nome del campo di nostro interesse dividendo il tutto con un punto,nel nostro caso polyCylinder1.radius
tirando le somme non abbiamo fatto altre che dire a Maya di spostare il cilindro b sull’asse x per una distanza pari alla somma dei raggi dei due cilindri.

5-La seconda parte dell’espressione farà ruotare nel senso corretto i due cilindri come se si toccassero e varierà la velocità di rotazione al variare dei raggi.
Torniamo nell’expression editor,selezioniamo il nome della nostra espressione dalla casella in alto sotto la sezione selection.Sotto l’espressione precedente andiamo ascrivere quanto segue:

if(polyCylinder1.radius>polyCylinder2.radius)
b.rotateY=-a.rotateY*(polyCylinder1.radius/polyCylinder2.radius);
else
b.rotateY=-a.rotateY/(polyCylinder2.radius/polyCylinder1.radius);

Clicchiamo su edit per imputare la modifica all’espressione.
Abbiamo impostato una condizione:abbiamo detto a Maya che se il raggio del polyCylinder1 è maggiore del raggio del polyCylider2 deve impostare la rotazione del cilindro b pari all’inverso della rotazione del cilindro a moltiplicato per il rapporto fra i due raggi.
Il codice else entra in causa nel caso in cui la condizione presente in if non sia vera ovvero quando il raggio del polyCylinder1 non è maggiore del raggio del polyCylider2. In questo caso maya imposterà la rotazione del cilindro b pari all’inverso della rotazione del cilindro a diviso per il rapporto fra i due raggi.

Visto che questa espressione fa riferimento a dei valori presenti nella sezione input è IMPORTANTE NON CANCELLARE LA HISTORY DEGLI OGGETTI DELL’ESPRESSIONE altrimenti non funziona più nulla.

6-Testiamo o script
Impostiamo i frame a 120.Clicchiamo nel campo evidenziato nell’immagine sottostante,scriviamo 300 e premiamo invio.

img04

Andiamo al frame 1,selezioniamo il cilindro a premiamo s oppure selezionate il menu animation poi andate su animate>Set Key.
Posizioniamoci al frame 120,selezioniamo ancora il cilindro a,impostiamo rotateY a 360 (1 giro in 120 frame,non esagerate con la velocità perché si crea un effetto ottico che fa sembrare sbagliato lo script) e creiamo un'altra key sempre su animate>Set Key.
Ritorniamo al frame 1 e facciamo partire l’animazione con play. Provate a variare i raggi dei cilindri e vedete quello che succede…Male che vada vi si formatta il pc…Scherzo…Spero vi sia piaciuto il mio primo tutorial e soprattutto che sia stato utile per qualcuno che si è costruito un meccanismo…ora sta a voi modellare un bell’ingranaggio da animare!!!Io me lo sono creato in questo modo:

-creato cilindro
radius 5
height 2
division axis 60
division height 1
division cap 1

-selezionate 2 facce si una no fino a fare il giro completo

-estrudi facce
translate z0.5
local scale x 0.7
local sacle y 0.8
local direction x 1
division 1

-premere g per estrudere di nuovo

-estrudi facce (senza selezionare nulla perchè continua l’estrusione precedente)
translate z0.4
local scale x 0.4
local sacle y 0.8
local direction x 1
division 1

-premere g per estrudere di nuovo

-estrudi facce (senza selezionare nulla perchè continua l’estrusione precedente)
translate z0.25
local scale x 0.2
local sacle y 0.8
local direction x 1
division 1

Spero vi sia piaciuto il mio primo tutorial..
Buon divertimento!!! :hello:

---
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