Jump to content
bn-top

Una Pioggia Di Caramelle!


amedeo
 Share

Recommended Posts

Ciao a tutti... dovendo fare una cascata di caramelle in Maya (il sogno di tutti i bimbi che si rispettino!) mi son messo a smanettare colle particelle.

Non son quel che si dice un espertone, ma qualcosa ho tirato fuori.

Tuttavia ho due problemi che non riesco a risolvere:

-Problema più grosso: ho diversi tipi di caramelle e dovrebbero cadere un po mischiati tra loro. Ho usato l'instancer per assegnare alle particelle l'aspetto delle mie caramelle, ma riesco ad ottenere l'emissione di un solo tipo di caramella (diciamo quella di colore rosso). Vorrei invece che lo stesso emettitore "sputasse" anche caramelle blu, gialle, verdi (con relativi modelli) e cosi via. Qualcuno sa come si fa?

-Problema piu piccolo: le caramelle atterrano su un tavolo, grazie ad un gravity field. Il problema è che dopo aver rimbalzato ed essersi fermate, alcune di loro continuano a vibrare... in genere son solo 4 o5 su ca 80. Idee?

Vi ringrazio in anticipo!

Ciao!!!!

Amedeo

Link to comment
Share on other sites

  • 4 weeks later...
bn-top
Ciao a tutti... dovendo fare una cascata di caramelle in Maya (il sogno di tutti i bimbi che si rispettino!) mi son messo a smanettare colle particelle.

Non son quel che si dice un espertone, ma qualcosa ho tirato fuori.

Tuttavia ho due problemi che non riesco a risolvere:

-Problema più grosso: ho diversi tipi di caramelle e dovrebbero cadere un po mischiati tra loro. Ho usato l'instancer per assegnare alle particelle l'aspetto delle mie caramelle, ma riesco ad ottenere l'emissione di un solo tipo di caramella (diciamo quella di colore rosso). Vorrei invece che lo stesso emettitore "sputasse" anche caramelle blu, gialle, verdi (con relativi modelli) e cosi via. Qualcuno sa come si fa?

-Problema piu piccolo: le caramelle atterrano su un tavolo, grazie ad un gravity field. Il problema è che dopo aver rimbalzato ed essersi fermate, alcune di loro continuano a vibrare... in genere son solo 4 o5 su ca 80. Idee?

Vi ringrazio in anticipo!

Ciao!!!!

Amedeo

Amedeo,

la soluzione al problema numero uno e' estremamente semplice ed immediata.

Una volta selezionate le tue copie da instanziare e dopo aver creato l' instancer,

basta cambiare la modalita di "Cycle" da "none" (valoere di default) a "Sequential".

In questo modo l' instancer ciclera' le tue caramelle instanziate per ogni particle creata.

Le soluzioni al problema numero 2 potrebbero essere invece molteplici perche' le cause

potrebbero essere molteplici e quindi difficile da individuare quella che fa' al caso tuo

da una semplice descrizione del problema in un forum.

Se posti la tua scena possiamo trovare quella che fa' per te.

S.

Link to comment
Share on other sites

Perdonami Amedeo,

ma rileggendo la mia risposta mi sono accorta che ciclare su ogni particle il numero di instanze non e'

esattamente quello che vai cercando.

In realta' tu vorresti assegnare per ogni particle un' instance objects differente.

Per fare cio' e' un pochino piu' laborioso...giusto un pochino, e con qualche linea di codice te la cavi alla grande.

Ti ho preparato una semplice scena di esempio che ti spiego qui di seguito.

Allora, nella nostra scena abbiamo:

//il nostro particle system e relativa shape.

particle1

particle1Shape

//gli oggetti instanziati (nel mio caso sono semplici sfere ognuna con un colore/blin diverso)

sph_1

sph_2

sph_3

..

..

..

sph_10

//l' instancer

instancer1

Per prima cosa devi creare un nuovo attributo perParticle di tipo "int" chiamato "index".

(puoi chiamarlo come vuoi, io l' ho chiamato index per comodita'.)

Adesso, basta scrivere questa particle expression in "creation" ed il gioco e' fatto.

L' expression e' commentata passo dopo passo e non dovrebbe esserti difficile

riutilizzarla nella tua scena....bastera' cambiare qualche nome qua e la'.

////////////////////////////////////////////////////////////////////////////////////////////////////////

//

// N.B.: Prima di cominciare bisogna creare un'attributo perParticle chiamato "index" di tipo "int".

////////////////////////////////////////////////////////////////////////////////////////////////////////

// Dichiariamo una variabile di tipo "int"

// con lo stesso valore del numero di oggetti che abbiamo instanziato.

int $obj_count = 10;

//inizializziamo $i

int $i = 0;

//Cicliamo con un loop per il numero delle particles create.

for($i=0;$i<=particleShape1.particleId;$i++)

{

//incrementiamo ad ogni ciclo il nostro index value.

particleShape1.index += (int)1;

//Se il nostro index value raggiunge lo stesso valore del numero degli oggetti instanziati,

if(particleShape1.index == $obj_count)

{

//lo resettiamo a 0 cosi da poter ripartire da capo.

particleShape1.index = (int)0;

}

}

P.S.: La scena di esempio allegata e' stata fatta con maya 8.5.

se la tua versione e' differente puoi:

Visto che e' in Maya Ascii, aprire il file con un text editor e cambiare le linee di codice che identificano la versione.

Farmi un fischio e te la converto.... :hello:

Ciao,

S.

Link to comment
Share on other sites

  • 3 years later...

Dimenticavo la scena di esempio.

caramelle.rar

Dimenticavo di dirti anche che, alla fine di tutto dovrai andare dentro il particleShape attribute editor

e sotto la voce "instancer(Geometry Replacement)" settare "ObjectIndex" sul nostro attributo "index".

S.

add.png:)

"La potenza è nulla senza controllo" del mouse.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...