Nelle precedenti versioni di Cinema4D per creare interazioni particolari fra gli oggetti, occorreva programmare "manualmente" espressioni C.O.F.F.E.E. Nonostante sia ancora disponibile questa modalità, con il nuovo editor di nodi Xpresso potrete settare automatismi e interazioni semplicemente tramite l'utilizzo di un editor visuale molto potente e flessibile: l'editor Xpresso, appunto. L'immagine sopra vi mostra questo potente editor di nodi, dove oggetti, operatori e collegamenti vengono rappresentati in modo schematico ma sicuramente più intuitivo. L'esempio sopra è quello che otterete alla fine del nostro tutorial. Affronteremo l'argomento con un pratico esempio sull'utilizzo di Xpresso per simulare l'innalzamento e l'abbassamento di una banale saracinesca tramite la semplice rotazione di un oggetto che fungerà proprio da sistema di apertura e chiusura del nostro "garage" virtuale (un po' spartano ma a questo ci potrete pensare voi in un secondo tempo...) Scaricate la nostra scena 3D, in formato Cinema4D cliccando qui. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (1 di 7) [12/07/2003 1.33.16]
La nostra scena è cosi composta: Saracinesca composta di 7 listelli di diverso colore, dell'altezza di 50 cm con il loro sistema di assi XYZ (vedremo poi come posizionarlo correttamente) per un altezza complessiva della saracinesca di 350 cm. il nostro oggetto di controllo (un semplice cilindro) la cui rotazione alzerà o abbasserà i listelli. Gli infissi del nostro garage che di fatto sono solo per bellezza... Creare questi oggetti è relativamente semplice ma è bene soffermarci un attimo sui listelli, poichè la loro definizione (soprattutto in termini di dimensioni e posizione) sarà importante per il corretto proseguimento del tutorial. Una volta creato un listello tramite parallelepipedo semplice (diciamo con dimensioni 700x50x5), lo abbiamo reso oggetto modificabile per poi allineare (tramite l'icona assi oggetto) le coordinate XYZ nella base inferiore del listello (invece che centrati nell'oggetto che avrebbe reso il tutto un po' meno immediato). Spostate gli assi XYZ dopo aver reso modificabile l'oggetto, tramite le icone che vi mostriamo qui sotto (ma che oramai dovreste conoscere come le vostre tasche). I nostri listelli sono stati posizionati in serie uno sopra l'altro ad una distanza di 50 cm, che di fatto non lascia "luce" tra i listelli visto che anch'essi sono alti 50 cm. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (2 di 7) [12/07/2003 1.33.16]
Per non farli compenetrare (almeno nella vista prospettiva) è bastato spostarli in profondità di 1 o 2 cm. A questo punto create il sistema di controllo (un semplice cilindro) che viene posizionato in basso a destra del nostro garage. La posizione non è vincolante se non nel suo orientamento, visto che ovviamente l'asse di rotazione (che controlla l'apertura) varierebbe e dovremmo modificare leggermente la nostra funzione Xpresso. Per il momento quindi, ci accontentiamo di posizionarlo come in figura. Selezionamo il cilindro appena creato e rinominato controllo. Clicchiamo con il tasto destro come in figura e scegliamo Nuova Espressione > Xpresso Espressione, applicando di fatto il tag espresso all'oggetto. Xpresso può arrivare a livelli davvero complessi che differiscono molto poco da una vera e propria programmazione della nostra scena. In questo caso cercheremo di utilizzarlo in modo tradizionale e più semplice possibile. Cliccate sul tag Xpresso appena creato e si aprirà la finestra dell'editor, simile alla prima immagine di questo tutorial ma senza ovviamente i nodi, gli oggetti e gli operatori. Ma cosa deve fare innanzitutto la nostra saracinesca? Come si devono comportare i listelli? Abbiamo di proposito voluto "complicare" un po' il meccanismo che forse tralascia qualche particolare meccanico fondamentale se fosse tutto vero, concedendoci di fatto una licenza poetica "virtuale". Ruotando il nostro oggetto di controllo sull'asse Y (d'ora in poi la chiameremo rotazione H seguendo le coordinate corrette HPB di rotazione in Cinema4D) il primo listello si alzerà trascinando il secondo listello solo dopo averlo raggiunto in tutta la sua altezza. A loro volta il primo e secondo listello continueranno ad alzarsi trascinando il terzo listello sempre e solo dopo averlo raggiunto in tutta la sua altezza e cosi' via con gli altri...piu' facile a vederlo che a spiegarlo. Ruotando in senso antiorario l'oggetto di controllo si otterrà il movimento inverso. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (3 di 7) [12/07/2003 1.33.16]
Trasciniamo l'oggetto Controllo dall' Object manager sull'editor Xpresso nell'area libera a quadretti (Xgruppo) creando di fatto un nodo di tipo Oggetto. Soffermiamoci un secondo su questo "tassello" importante. Come noterete un nodo è costituito da una parte sinistra (BLU) ed una destra (ROSSA) dove si collocano le porte di ingresso (INPUT) e di uscita (OUTPUT) del nodo stesso. Spieghiamo meglio questo fondamentale concetto, partendo direttamente con la costruzione del diagramma che regolerà la nostra saracinesca 3D. Cliccando sulla parte Rossa, diremo a Xpresso di impostare una "porta" di uscita del nostro oggetto Controllo, ovvero di stabilire quale parametro di questo oggetto (nodo) influirà il successivo. Noi vogliamo che la rotazione del cilindro (Rotazione H impostabile tramite il percorso specificato nell'immagine sotto) sia l'unico parametro che controlli il tutto. Otteniamo cosi' la scritta Rotazione H con un punto Rosso da cui far partire le linee di collegamento del nostro diagramma (perche' di questo si tratta). Sembra difficile ma è di una relativa semplicità. Le linee vengono tracciate con il solo utilizzo del mouse cliccando sul punto di uscita di un nodo e spostandosi sull'ingresso del successivo. Programmare non è una cosa semplice. Anche il più piccolo dei meccanismi comporta uno studio iniziale da non sottovalutare. Animare la saracinesca ed i suoi listelli tutte le volte sarebbe a dir poco folle ed Xpresso serve proprio a fornire un oggetto con tanto di meccanismi già pronti ma d'altro canto richiede un po' di studio all'inizio. Al termine di questo, avremo solo due movimenti da controllare o da spostare nella nostra animazione : apertura e chiusura, con tutti i vantaggi che si portano dietro. Analizziamo prima di tutto il nostro diagramma finale per potervi fornire le informazioni di concetto di come funziona la nostra animazione. Osservate per il momento come il valore di rotazione venga distribuito ed utilizzato in 7 rami che rappresentano i nostri 7 listelli. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (4 di 7) [12/07/2003 1.33.16]
E' importante notare come i rami dei listelli siano praticamente uguali, quindi per semplificare il tutto analizziamo uno solo di questi (il primo listello in basso) per poter copiare facilmente gli altri, modificandoli poi leggermente. Nella nostra funzione Xpresso, esistono oltre agli oggetti Controllo e Listelli (A, B, C, D, E,F e G), anche degli operatori. Cliccando su questi operatori potrete modificare o valutare le caratteristiche dell'oggetto nell' Attribute Manager. Vediamo meglio: Math : Create questo operatore, cliccando con il tasto destro del mouse vicino al Controllo che avete creato prima. Scegliete dal menu NUOVO NODO > XPRESSO > CALCOLA > MATH e guardate nell'attribute manager le sue caratterische (vedi foto). Esistono due ingressi (Input) ed un uscita (Output). Scegliete, ad esempio, nella tendina Funzione la voce Moltiplica, trasformando quindi il nodo in un moltiplicatore dei due valori di input che gli darete in ingresso. Nel nostro caso vogliamo che la Rotazione del Controllo venga moltiplicata per 100 e che questo dato venga passato al primo listello. Perchè? Molto semplice. Per muovere il listello (vedremo come) le coordinate di rotazione del nostro oggetto di controllo sono troppo "esili" e vanno irrobustite come valore moltiplicandole per 100. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (5 di 7) [12/07/2003 1.33.16]
Collegate il punto rosso (porta) della Rotazione H con il punto blu del primo input di Math come in foto e voilà, avete creato una prima espressione. Non vi spaventate di questa moltitudine di parole. Per Xpresso vale la pena essere precisi. Noterete che una volta collegato Input (1), nell'attribute Manager di Math appare settabile solo Input (2), che imposterete a 100. Risultato dell'output fino a questo punto è: ROTAZIONE H (Controllo) x 100 A questo punto dobbiamo solo occuparci dei nostri listelli, collegando la rotazione (potenziata x 100) al movimento in alto ed in basso dei listelli. Ruotando il controllo in senso orario otteniamo un valore positivo, ruotando in senso antiorario otteniamo un valore negativo. Quello che vogliamo fare è alzare ed abbassare i listelli ma se colleghiamo direttamente la posizione Y di ogni listello (l'asse che serve a noi per il movimento) finiremo con il fare sprofondare i listelli nel terreno (se ruotiamo in senso antiorario) o innalzarli in cielo ogni volta che ruotiamo il controllo in senso orario. Ecco spiegata la presenza in ogni ramo di un operatore Gamma Mappatore (strano nome) che di fatto ci aiuterà a limitare ogni listello in un range di movimento che sia corretto ai fini della simulazione. Esempio. Il primo listello, qualunque sia il valore di rotazione non deve mai scendere "sotto terra" ma solo salire fino all'altezza massima del nostro garage. Il secondo non scenderà mai al di sotto del primo listello ma salirà anche lui fino all'altezza massima consentita. Ma non è finita qui! Siccome vogliamo complicarci un po' la vita ed utilizzare bene questo potente nodo, vi ricordiamo che il secondo listello per salire dovrà aspettare il primo, il terzo aspetterà il secondo e cosi' via...ok? Bene, spieghiamo quindi a cosa serve il Gamma Mappatore, almeno per l'utilizzo che ne vogliamo fare noi... Gamma Mappatore : Nel nostro caso vogliamo fare in modo che il nostro primo listello, nonostante la rotazione del nostro oggetto "Controllo" abbia uno spostamento limitato nell'asse Y. In parole povere se ruotiamo troppo il listello in senso antiorario quest'ultimo non deve abbassarsi oltre alla normale posizione del listello stesso quando la saracinesca è chiusa, mentre non deve superare l'altezza massima della nostra saracinesca se ruotiamo in senso orario. Visto che i listelli hanno altezza 50 e sono 7, l'altezza massima è fissata a 300 (ovvero 7x50=350 meno 50 poiche' l'ultimo listello è fisso). Il primo listello quindi puo' spostarsi da 0 a 300, il secondo da 50 a 300, il terzo da 100 a 300 e cosi' via. Gamma Mappatore solitamente assegna ad un determinato intervallo di valori un altra gamma di valori, rimappando appunto la gamma stessa di tali valori (esempio : potrete assegnare a dei valori di ingresso che vanno da 1 a 10 un uscita che va da 1% a 100% ; un valore di 5 corrisponderebbe in uscita a 50%). Basta semplicemente agire nella zona Parametri del Gamma Mappatore nell'attribute Manager. E' effettivamente il nodo piu' complesso di questo tutorial. Gamma Mappatore si estende anche all'utilizzo di una Spline per controllarne la gamma, ed è usato per esempi molto piu' complessi ma non e' lo scopo di questo tutorial. file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (6 di 7) [12/07/2003 1.33.16]
Prima pero', terminiamo la nostra opera sul listello. Create un oggetto Spia (che semplicemente vi mostra quale valore transita per il suo percorso) e trascinate il Listello A nell'editor Xpresso. Collegateli come l'immagine che segue sotto, creando nel Listello una porta d'ingresso relativa alla Posizione Y. Il procedimento per creare questa porta è il medesimo usato all'inizio per l'oggetto di Controllo. Dovreste quindi ottenere una volta fatti tutti i collegamenti la vostra prima sequenza come nell'immagine, ricordando che all'ingresso di Gamma Mappatore va collegato il Math Moltiplica precedente. Nel nostro caso, attivate nell'attribute Manager di Gamma Mappatore, Immobilizza Sopra e Immobilizza Sotto, impostando sia come Input Inferiore/Superiore che come output superiore 0 e 300. Diciamo che il nostro Gamma Mappatore si limita a "controllare" che qualsiasi valore di movimento del nostro listello sia forzato ad essere contenuto tra 0 e 300. Ruotate il vostro oggetto di controllo e notate come il primo listello si muova solamente dalla posizione originale ad un altezza massima di 300. Spia vi segnalerà in tempo reale i valori che stanno transitando durante la rotazione del Controllo, opportunamente moltiplicati, rimappati ed usati per la posizione Y del Listello A. A questo punto il gioco è fatto. Osservate il file.c4d della scena e noterete come gli altri rami che controllano i successivi listelli variano solamente nella regolazione del range di movimento di Gamma Mappatore (ovviamente con la presenza del Listello B, C, D, E,F...). Il secondo listello avrà un intervallo del Gamma Mappatore da 50 a 300, il terzo da 100 a 300, e cosi' via. Ricordate che ogni gruppo di nodi puo' essere semplicemente copiato tramite selezione. Osservate il risultato della scena 3D e noterete come tramite una semplice procedura e l'utilizzo di Xpresso (anche se abbiamo speso molte parole) si possono ottenere oggetti completi e facili da animare. Nel nostro caso basta solo fissare le chiavi di rotazione del Controllo in una eventuale animazione ed il gioco è fatto. La versione di questo tutorial verrà come gli altri arricchita di vostri eventuali accorgimenti e suggerimenti, come tutti gli altri tutorial. Al prossimo tutorial, sperando di farvi cosa gradita... Matteo Sacco Staff Cinema4D Hotline file:///g /Progetti/Cinema4D - Xpresso/05_Xpresso.htm (7 di 7) [12/07/2003 1.33.16]