Articolo attenzione: In questo tutorial, Dan ebberts esplora come è possibile utilizzare espressioni After Effects 5.Da 5 a costruire un 3d abbastanza sofisticato generatore di particelle. La nostra volontà di rispondere alle particelle velocità iniziale, Gravità, Vento, Trascinare, E molto di più. Utilizzando questo generatore di particelle, Vedremo in che modo si potrebbe creare esplosioni, Fumo, Un incendio blastica, Caduta neve, E anche un flusso di liquido, come. Noi esplorare come fare ogni particella riutilizzabili, Che ci consentirà di simulare fontana flussi di particelle simil -. Questo è abbastanza avanzato.
L'idea di base è che ci sarà una rappresentazione grafica di importazione di una singola particella. Ti trascina in un nostro e renderlo 3d. Si applicano le nostre espressioni di simulazione fisica delle particelle e quindi la nostra duplicato che strato abbastanza volte per ottenere un risultato convincente. Noi impostare le espressioni in modo che ogni particella (layer) che si comportano in modo diverso. Saremo in applicazione espressioni di molte delle proprietà delle particelle, Compresa la posizione, Scala, Opacità, E la rotazione.
Si comincerà con una semplice esplosione e sviluppare espressioni più complesse da lì. Sarà eventualmente coinvolgere alcuni piuttosto peloso e alcuni di fisica matematica (mi dispiace!), Ma la buona notizia è che non necessariamente hanno a capire esattamente come le espressioni di lavoro - è sufficiente sapere come modificare i loro di portarli a fare ciò che volete. Nella prima parte del tutorial, Ciò che io cerco di fare, Quanto più possibile, è quello di coprire le basi di come le espressioni di lavoro e come si potrebbe modificare la loro. Allora, Verso la fine, Può seguire la stouthearted me attraverso la matematica e la fisica hairy.
La strategia --- ---
Vogliamo che ognuno dei nostri particelle ad avere una durata definita che saranno casuali entro un certo intervallo. Poiché saremo in applicazione a molteplici espressioni della proprietà delle particelle, Abbiamo bisogno di un modo di comunicare le informazioni sulle particelle della vita a tutte le espressioni che ne hanno bisogno. Faremo questo eseguendo il ciclo di vita calcoli in un'espressione di controllo (se volete saperne di più sui controlli espressione, Vedere il mio tutorial Edificio più grande del mondo, cameraman). Noi quindi usare l'espressione di controllo come di sola lettura Variabile globale Che può essere letta da tutte le altre espressioni applicate ai nostri particelle.
--- lasciare 's iniziare!---
Andare avanti e aprire il file di progetto e quindi aprire la "esplosione - di base" comp. Si noterà un grafico strato chiamato "stella flare" e uno strato null, Che hanno acceso 3d. Saremo utilizzando la posizione del nulla per impostare il centro dell 'esplosione. Si riferiscono al null come la particella "emettitore" e poi ti muovere il nulla intorno a imparto "emettitore velocità" per le particelle. Selezionare la "stella flare" livello e il tipo "u" per visualizzare tutte le proprietà che hanno applicato alle loro espressioni. Anche digitare Ctrl + Maiusc + T (PC) o Cmd + Maiusc + T ( MAC ) Per visualizzare gli effetti applicato lo strato. Vedrai che un "punto" il controllo è stato applicato e ribattezzato "la vita". Potresti chiederti perché desideriamo utilizzare un punto di controllo, invece di un cursore di controllo per tenere la "vita" valore. Il motivo è che in seguito (quando si arriva a riutilizzabili particelle) che andremo a passare sia bisogno di "vita" e la "nascita" tempi così abbiamo bisogno di un controllo che può passare due valori. Non abbiamo potuto utilizzare solo due controlli di scorrimento? No, Perché i calcoli per la "nascita" e "vita" deve essere fatto all'interno di una stessa espressione per farla funzionare. Nella timeline, Fare clic sul twirly accanto al "punto" di rivelare l'espressione applicata alla "vita" punto di controllo:
Lmin = 1.5 / / minimo delle particelle di vita
Lmax = 2.5 / / massima delle particelle vita
Vedered_random (1,True);
Vita = random (lmin,Lmax);
Nascita = 0;
[nascita,Vita]
Questa espressione genererà un casuale "vita" valore per i nostri particella che è compreso tra il 1.5 e 2.5 secondi. Questo valore sarà inserito nel secondo elemento del nostro punto di controllo variabile. Il primo elemento ( "nascita") è semplicemente fissato pari a zero, dato che, per questa prima esplosione comp tutte le nostre particelle sarà nato al tempo zero. Il "seed_random" chiamata solo racconta After Effects che vogliamo ottenere lo stesso valore casuale per la "vita" ogni volta che si esegue l'espressione (altrimenti la "vita" il valore del luppolo intorno a ogni fotogramma - che non Ci aiutano Qui). Se volete saperne di più su "seed_random", Vedere il mio tutorial Generare casuale Motion. Se si volesse cambiare la vita delle particelle, Si dovrebbe modificare il proprio "lmin" e "lmax" valori.
Fare clic sul twirly accanto al grado di rivelare questa espressione:
Vmin = 500 / / minima velocità iniziale
Vmax = 700 / / massima velocità iniziale
= effetto nascita ( "vita").Param ( "punto") [0];
Vita = effetto ( "vita").Param ( "punto") [1];
Origine = this_comp.Strato ( "null 1").Posizione.Value_at_time (nascita);
Età = tempo-nascita;
Vedered_random (1,True);
S = random (Vmin,Vmax); / / velocità iniziale
A = degrees_to_radians (random (180)); / / angolo dalla verticale
R = degrees_to_radians (random (360)) / / rotazione attorno asse y
X = s * matematica.Sin (a) * matematica.Cos (r);
Y =- s * matematica.Cos (a);
Z = s * matematica.Sin (a) * matematica.Peccato (r);
V = [x,y,Z];
Origine + v * tempo
Questa è la base per una posizione espressione "zero g" esplosione. La nostra particella lancerà in una direzione casuale nello spazio 3D della "origine" (che è solo la posizione del null strato), con una velocità iniziale tra le 500 e le 700 unità (che equivale a circa di pixel al secondo). Le particelle continueranno a che velocità e la direzione fino a quando non muore fuori. Non abbiamo ancora fattorizzata vento, Gravità, E trascinare. Sono sicuro che le tre linee notato che l'uso di javascript per calcolare le funzioni trigonometriche x, y, E z componenti del vettore velocità della particella. Questo è generato dal vettore casuale valori della velocità ( "s"), Angolo di lancio da verticale ( "a") e la rotazione relativa alla comp's y ( "r"). Non si preoccupi troppo di tutto questo roba vettore a questo punto - come ho detto prima, Non è necessario capire come funziona per essere in grado di utilizzare e noi provvederemo a coprire in dettaglio più avanti. La cosa che dovete sapere su questa versione di espressione è la posizione che si modifica la "Vmin" e "vmax" per cambiare il valore iniziale della velocità delle particelle. Più tardi si aggiunge un vincolo per l'angolo dalla verticale che ci permetterà di generare una fontana di tipo spray.
Fare clic sul piccolo twirly accanto a scala a rivelare l'espressione:
Tutto questo non è espressione della rampa di scala che va da 0 al valore specificato in "Max_Scala" (50% in questo caso) per il periodo definito da "s" (.2 secondi in questo caso). Se si desidera che le particelle di raggiungere le dimensioni massime più veloce o più lenta, Si dovrebbe modificare il valore per "s". Nota che tale valore dovrebbe essere inferiore a "lmin" della "vita" di espressione, se volete essere sicuri che la particella raggiunge la piena dimensione prima che muore.
Ora clicca sul twirly accanto a z rotazione e vedrete questa espressione:
Rmax = 1080 / / massima di rotazione
Rmin =- 1080; / / minimo di rotazione
= effetto nascita ( "vita").Param ( "punto") [0];
Vedered_random (1,True);
R = random (rmin,Rmax);
Vita = effetto ( "vita").Param ( "punto") [1];
Età = tempo-nascita;
If (vita == 0) (
0
Else ()
R / * età della vita
}
Questa espressione si eccita un valore casuale (tra -1080 e 1080 gradi gradi) per la rotazione attorno al asse z oltre la vita della particella. Notare che questa espressione utilizza la "nascita" e "vita" valori dal punto di controllo. Nota anche l'uso del "seed_random" la funzione per assicurarsi che il valore di rotazione casuale selezionato è lo stesso ogni volta che l'espressione viene calcolato. Se si volesse cambiare la quantità di particelle possono ruotare, Si dovrebbe modificare il "Rmax" e "rmin" valori.
Finalmente, Fare clic sul twirly accanto a opacità di rivelare questa espressione:
Vita = effetto ( "vita").Param ( "punto") [1];
Età = tempo-effetto ( "vita").Param ( "punto") [0];
If (età vita) (
0
Else ()
If (età vita decadimento) (
((vita-età) / decadimento) * Max_Opacità;
Else ()
Max_Opacità
}
}
Questa espressione si occupa il fade-out delle particelle, alla fine della sua vita. "Decadenza" è il tempo, In pochi secondi, Che la dissolvenza dura. Volesse modificare questo valore se si volesse cambiare il fade-out. Questo valore dovrebbe essere inferiore alla "lmin" valore della "vita" di controllo. "Max_Opacità" è, Come si potrebbe aspettare, Il valore massimo di opacità che si desidera raggiungere la particella.
Che è tutto per le espressioni di questa prima esplosione. Selezionare la "stella flare" strato duplicato e che un sacco di volte. Io di solito basta premere CTRL + D (PC) o cmd + d ( MAC ) Di quattro o cinque volte, Selezionare l'originale e tutte le ripetizioni e quindi premere Ctrl + D / Cmd + da grappolo più volte per generare almeno 50 particelle. In anteprima il comp. Naturalmente, Che con molti strati, Ciascuna con cinque espressioni applicate, Si può prendere un po 'di tempo per rendere l'anteprima. Quando si applica questa tecnica, you'll have to balance render time against using enough particles to create a convincing effect. Si dovrebbe finire con una bella esplosione 3d in cui le particelle solo blastica in tutte le direzioni, senza forze che agiscono su di loro, tranne la loro velocità iniziale.
--Zero-g esplosione con 65 particelle
--- lasciare 's fisico ---
Adesso vai in profondo fine della piscina e aggiungere gli effetti fisici di vento, Gravità, Trascinare, Emettitore velocità e la nostra posizione di espressione. Verrà aggiunto il codice adesso, Ma non necessariamente l'uso di tutti i nuovi parametri per ogni esempio. Andremo attraverso molti esempi se, Finché non avremo coperto tutto. Andare avanti e aprire il "esplosione con la fisica" comp. Selezionare una delle "stelle flare" strati e il tipo "p" per visualizzare la posizione di proprietà. Fare clic sul twirly accanto a "posizione" di rivelare la nostra nuova espressione che comprende tutti i fisica. Questo è il nuovo codice:
G = 100 / / gravità
W = 0; / / vento
Wdir = 0; / / la direzione del vento (0 = da sinistra)
Vmin = 700 / / minima velocità iniziale
Vmax = 1000 / / massima velocità iniziale
Amin = 0; / / minimo angolo di lancio verticale da
Amax = 110 / / massimo angolo di lancio verticale da
D = 4; / / trascinare coeffecient
= effetto nascita ( "vita").Param ( "punto") [0];
Vita = effetto ( "vita").Param ( "punto") [1];
Origine = this_comp.Strato ( "null 1").Posizione.Value_at_time (nascita);
Età = tempo-nascita;
Vedered_random (1,True);
S = random (Vmin,Vmax); / / velocità iniziale
V_e = this_comp.Strato ( "null 1").Posizione.Velocity_at_time (nascita); / / emettitore velocità
A = degrees_to_radians (casuale (amin,Amax)); / / angolo dalla verticale
R = degrees_to_radians (random (360)) / / rotazione attorno asse y
X = s * matematica.Sin (a) * matematica.Cos (r);
Y =- s * matematica.Cos (a);
Z = s * matematica.Sin (a) * matematica.Peccato (r);
V = [x,y,Z] + v_e;
New_speed = lunghezza (v);
Unit_v = normalize (v);
Come si può vedere, Abbiamo aggiunto il codice di gravità, Vento (che non stiamo utilizzando in questo esempio), Angolo di lancio, Trascinare, Emettitore e velocità. Non ti preoccupare ancora su come tutte le opere. Basta sapere che volesse modificare i primi sette parametri per modificare il comportamento delle particelle. Tutte le altre espressioni sono ancora gli stessi che erano nel "esplosione - di base" comp.
Andare avanti e visualizzare l'anteprima del comp. Si noterà che il nostro incontro particelle ora resistenza (Trascinare) e sono colpiti dalla gravità. Abbiamo anche il limitato angolo di lancio delle particelle tra 0 e 110 gradi dalla verticale.
- esplosione, con gravità (65 particelle)
--- --- errori accadere
Aprire e visualizzare l'anteprima del "scintillio di esplosione" comp. Si tratta di una versione precedente di "esplosione con la fisica" comp che aveva commesso un errore in esso. Si scopre che avevo lasciato fuori la chiamata a seed_random l'espressione del punto di controllo. Il risultato è un errore se l'opacità si trasforma e si spegne in modo casuale dopo la particella la vita è scaduta. Dal momento che questo effetto è davvero bello, Ho deciso di tenerlo circa. Quindi la "errore" diventa una "caratteristica". Ecco il codice errato per il punto di controllo:
Lmin = 1.5 / / minimo delle particelle di vita
Lmax = 2.5 / / massima delle particelle vita
Vita = random (lmin,Lmax);
Nascita = 0;
[nascita,Vita]
Dove c'è fumo .....
Proviamo ora a creare la nostra mano alcuni fumo di andare con i nostri esplosione. Da qui in, Cose ottenere una un po 'più facile. Per ottenere diversi effetti di particelle, Soprattutto ora che sono solo di cambiare i parametri che sono stati stabiliti all'inizio delle varie espressioni. Andare avanti e aprire il "fumo" comp. Ho fatto tutti a creare un tale stato di duplicare la "esplosione con la fisica" comp e sostituire la "stella flare" immagine con il "fumo" immagine. Allora ho fatto queste modifiche ai parametri nelle espressioni:
Posizione:
G = 10; / / gravità
W = 80; / / vento
Scala:
Max_Scala = 150 / / massima scala
Z-rotazione:
Rmax = 10 / / di rotazione massima
Rmin =- 10 / / minimo di rotazione
Ho cambiato anche il modo di miscela strato da "normale" a "schermo".
Il parametro cambiamenti riflettono il modo di fumare che si comporta in modo diverso, in risposta alle diverse forze fisiche. L'effetto della gravità è stato notevolmente ridotto. L'effetto del vento è stato notevolmente aumentato. Z-rotazione è molto meno. L'opacità di ogni particella si raggiunge solo il 50%. Si arriva a questi valori, tenendo a indovinare in che modo le particelle deve reagire, E poi perfezionare fino a quando non li guarda a destra. Andare avanti e visualizzare l'anteprima del comp. Speriamo si noterà come il parametro modifiche hanno fatto una grande differenza nel comportamento delle particelle.
- 40 con le particelle di fumo
A questo punto si potrebbe chiedersi il motivo per cui lo facciamo non solo mettere tutti questi parametri il cursore controlli. Che si sarebbe potuto fare e che sarebbe sicuramente più semplice i parametri di ottimizzazione. Il problema è che se lo fate, Si prende un colpo piuttosto pesanti rendere. Potrebbe essere conveniente, Ma mi piace mantenere le cose significa magra e per quanto possibile, Ma sentitevi liberi di provare di persona se desideri.
--- lasciare 's aggiungere un po' di detriti al mix ---
Aprire e visualizzare l'anteprima del "frammenti" comp. Questo è solo una variante della "esplosione con la fisica" comp dove ho cambiato la particella di "specifiche" e cambiato la gravità e l'80 e il vento a 80. Ha Max_Scala essere impostato a 75 e lo z-espressione di rotazione è stata modificata per selezionare un solo orientamento casuale tra -180 e 180 gradi. L'opacità di espressione è stata disattivata, Lasciando l'opacità al 100%.
--- mettendo insieme le parti ---
Aprire e visualizzare l'anteprima del "combo esplosione comp". Questa contiene le comp "scintillio di esplosione", "Fumo", E "frammenti" composizioni insieme per dimostrare come i diversi tipi di particelle possono lavorare insieme per creare un effetto complesso. Notare che il "collasso trasformazioni" interruttori sono stati accesi. è così che le particelle di tre composizioni si mescolano correttamente nello spazio 3D.
- composizioni multiple per creare complessi effetti
--- nati di nuovo particelle ---
Ora stiamo andando a guardare la nostra particelle riutilizzabili. Che è, Dopo una particella muore, Vogliamo che sia rinato con diversi attributi, Come se si trattasse di una nuova particella. Questo ci permetterà di generare un flusso continuo di particelle. Per fare questo abbiamo bisogno di modificare l'espressione della nostra "vita" punto di controllo. Ecco il nuovo codice:
Lmin = 1.5 / / minimo delle particelle di vita
Lmax = 2.5 / / massima delle particelle vita
I = 1;
Vedered_random (I,True);
Ritardo = random (Lmax);
= ritardo di nascita;
= ritardo di morte;
If (ora ritardo) (
[0,0]
Else ()
While (time = morte) (
I + = 1;
Vedered_random (I,True);
Nascita = morte;
Vita = random (lmin,Lmax);
+ morte = vita;
}
[nascita,Vita]
}
Questa espressione è stato modificato per includere una variazione delle espressioni sviluppato per la mia "generando casuale Motion "Tutorial. Vi è una prima, Ritardo casuale prima della generazione della prima incarnazione della particella. Questo ritardo sarà compreso tra 0 e la vita massima delle particelle. Altrimenti, Tutti i "prima generazione" particelle generate sarebbe al tempo stesso (come in una esplosione), Che non è quello che vogliamo per una fontana di tipo effetto. In generale, Questa espressione opere dividendo il tempo in linea casuale lunghezza "segmenti", che sono tra "lmin" e "lmax" di durata. Ogni segmento rappresenta una nuova vita per le particelle. Per consentire la rigenerazione di particelle hanno attributi diversi da quello originale, Il seed_random () chiama la posizione e z-rotazione espressioni è stato cambiato in questo:
Vedered_random (nascita,True);
Questo fa sì che il tempo della nascita di particelle per essere utilizzati come sementi, Che si tradurrà in ogni "vita" delle particelle di diverso, perché la nascita volte sarà sempre diversa. Gli altri cambiamenti che sono stati compiuti a questo comp è per cambiare il "amax" (massimo angolo di lancio verticale) parametro espressione nella posizione a 30 in modo che tutte le particelle sarà lanciato in una direzione verso l'alto. Andare avanti e ad aprire la "fontana" comp e anteprima. Ora si dovrebbe vedere uno spruzzo continuo di particelle. Un atto che il presente contiene 100 particelle strati. Se il vostro processore strozzatori, Può essere utile per eliminare alcuni strati e provare di nuovo.
- fontana a spruzzo con 100 particelle
--- indietro alla fisica ---
Quando abbiamo aggiunto il codice per la posizione espressione di includere gli effetti fisici, Abbiamo aggiunto uno che non abbiamo ancora esaminato. Tal senso è la velocità impartita dal "emettitore" per le particelle. A questo punto il nostro emettitori (null strati) sono stati stazionari. è logico che se si passa attraverso il nostro spazio 3D emettitore, Le particelle che vengono emessi devono avere una tendenza a seguire l'emettitore fino trascinare gli effetti della, Gravità, Vento e li trasmette in altre direzioni. Dal momento che ora abbiamo una fontana particelle spray nel nostro arsenale, Questo è un buon momento per guardare al emettitore velocità proprietà. Aprire e visualizzare l'anteprima del "movimento emettitore 1" comp. In questo il comp emettitore è stato keyframed per spostarsi nello spazio 3D e la velocità del emettitore è impartita per le particelle. Ho parented un nuovo livello ( "spike blob") per il null in modo da potete vedere dove è l'emettitore. Per Contrasto, Aprire e visualizzare l'anteprima del "movimento emettitore 2" comp. Questa è esattamente la stessa comp, Ma il codice che aggiunge il emettitore di velocità è stato disattivato. Si dovrebbe notare la differenza.
- in movimento con velocità emettitore impartita alle particelle
- in movimento con velocità emettitore non impartita alle particelle
--- particelle più divertente ---
Ok ora siamo solo sarà goofing circa. Le ultime quattro composizioni che stiamo andando a guardare sono solo variazioni su un tema. I'm not going to go in un sacco di dettagli in merito a tali, Ma vi invito ad esaminare le espressioni di ogni comp per visualizzare il modo in cui l'parametri (e talvolta il codice) sono stati modificati per raggiungere un effetto diverso.
Aprire e visualizzare l'anteprima della "neve" comp. Ci sono diverse cose da notare su questo comp. Se si guarda alla posizione espressione, Si noterà che abbiamo un nuovo parametro per emettitore larghezza. Ciò che facciamo con questa sostanza, è il nostro punto emettitore sua volta in una "linea" emettitore. In questo caso abbiamo impostato la larghezza emettitore ( "EW") a 600. Quando una particella è nato, La sua posizione iniziale è più o meno entro la metà della larghezza emettitore (in direzione x) dalla posizione del null. Questo ci permette di generare nuove particelle ovunque lungo la linea. Una cosa che è presente su un diverso è l'uso di immagini multiple di particelle. Ho tutte le espressioni di istituire uno particelle, Duplicati tre volte e sostituito ciascuno dei duplicati, con un altro fiocco di neve immagine. Poi ho selezionato tutte e quattro le snowflake strati e duplicati loro un mucchio di volte.
- la neve con le immagini più particelle
Aprire e visualizzare l'anteprima del "fuoco blastica" comp. In questo vento comp, Gravità, E trascinare sono stati fissati a zero. Tutte le particelle sono lanciati in senso negativo z direzione (verso l'utente). Questo ha ancora bisogno di un po 'di lavoro, Ma ha il potenziale.
- incendio blastica
Ora aprire e visualizzare in anteprima il "goop" comp. Questo è stato un tentativo di generare un flusso di liquido di tipo. Comp questo utilizza la "linea emettitore" concetto di "neve" e il comp "tinta" effetto è usato per fare ogni particella un po 'diverso Coloree. Questo è anche un lavoro in corso.
- flusso di liquido di simulazione
Finalmente, Aprire e visualizzare in anteprima il nostro ultimo esempio, Il "ring" comp. Questo è simile a un "fuoco blastica", nel senso che tutti i suoi lanci di particelle in senso negativo direzione z. Comp questo ha anche una fotocamera che è keyframed per spostarsi da un lato un po 'di vista di un più di fronte a vista. Ho incluso un solo questo a dimostrare che si può anche usare queste espressioni come generatori di movimento per gli oggetti che normalmente non si potrebbe pensare a come "particelle".
- anello di generatore
--- --- utilizzando fotocamere
Questo è probabilmente un buon posto per parlare un po 'l'uso di telecamere dotate di questo sistema di particelle. Le particelle sono prodotte in AE 's spazio 3D, Così lo spostamento di una macchina fotografica circa le particelle può davvero aggiungere un senso di profondità alla vostra animazione. Se si decide di utilizzare una camera mobile, Di avere un paio di utili opzioni. Se non fare nulla, tranne ruotare la telecamera intorno al emettitore, Infine sarà ormai chiaro che le particelle sono 2d. Questo potrebbe essere l'effetto che stai dopo, Specialmente se si hanno altri elementi, disposti nello spazio 3D che sono chiaramente elementi 2d. L'altra opzione è quella di avere le particelle sempre orientata verso la fotocamera. Fate questo attraverso il livello di menu: Strato trasformare auto orientare "orientare verso la fotocamera". A seconda delle particelle, Questo in grado di fornire una convincente illusione che le particelle sono 3d. Esperimento. Divertirsi!
--- una parola circa le particelle ---
L'efficacia di queste simulazioni dipende, In gran parte, Sulla qualità delle particelle si usa. Vi incoraggio a esaminare quelli che ho utilizzato in questi esempi e di provare la tua mano a rendere il proprio e in sostituzione di una delle composizioni. Per esempio, Provare a sostituire i fiocchi di neve con le foglie d'autunno. O inventare qualche strano semi-trasparente blob e vedere quello che appare come nella fontana comp. Esperimento. Divertirsi! Anche giocare con i vari metodi di fusione. Ricordiamo che è possibile selezionare tutte le particelle e quindi quando si cambia la modalità di una miscela, Tutti gli altri cambiamenti e.
--- una occhiata sotto il cofano ---
Bene, Tra i miti si sono liberi di lasciare ora. Come promesso, I'm going to get in fisica delle particelle mozione espressione un po 'prima che si avvolgono su questo. Prendiamo un altro sguardo a un tipico esempio di posizione espressione abbiamo utilizzato (useremo quello del "movimento emettitore 1" comp):
G = 100 / / gravità
W = 0; / / vento
Wdir = 0; / / la direzione del vento (0 = da sinistra)
Vmin = 500 / / minima velocità iniziale
Vmax = 700 / / massima velocità iniziale
Amin = 0; / / minimo angolo di lancio verticale da
Amax = 110 / / massimo angolo di lancio verticale da
D = 4; / / coefficiente di resistenza
= effetto nascita ( "vita").Param ( "punto") [0];
Vita = effetto ( "vita").Param ( "punto") [1];
Origine = this_comp.Strato ( "null 1").Posizione.Value_at_time (nascita);
Età = tempo-nascita;
Vedered_random (nascita,True);
S = random (Vmin,Vmax); / / velocità iniziale
V_e = this_comp.Strato ( "null 1").Posizione.Velocity_at_time (nascita); / / emettitore velocità
A = degrees_to_radians (casuale (amin,Amax)); / / angolo dalla verticale
R = degrees_to_radians (random (360)) / / rotazione attorno asse y
X = s * matematica.Sin (a) * matematica.Cos (r);
Y =- s * matematica.Cos (a);
Z = s * matematica.Sin (a) * matematica.Peccato (r);
Io non sono un esperto di sistemi di particelle, Ma ho visto alcuni esempi di codice utilizzato per generare le. Quelli che ho visto fare tipicamente incrementale calcoli basati su quanto le cose sono cambiate dopo l'ultimo ciclo di calcolo. Un sacco di informazioni su ogni particella viene memorizzato e aggiornato per ogni ciclo di calcolo. In un semplice esempio, L'attuale posizione, Direzione, Velocità, Colore, Età, E la durata di vita di particelle può essere salvato. Guarda il calcolo di questi valori, Come pure le attuali forze che agiscono su particelle e calcola in cui ognuno dovrebbe essere la prossima volta a incrementare.
Dobbiamo approccio un po 'di cose in modo diverso in After Effects. Come forse sapete, (soprattutto se avete letto la mia "generando casuale Motion "Tutorial) non è facile passare da un ciclo di informazioni (fotogramma) di un calcolo per la prossima. Variabili non sopravvivono da una cornice alla prossima. In modo non abbiamo alcun modo per memorizzare tutte le informazioni circa lo stato di una particella al fotogramma precedente. Abbiamo bisogno di un diverso piano di. Facciamo, Comunque, Sono alcuni pezzi di informazioni utili a nostra disposizione. Dal punto di controllo, Abbiamo la particella della nascita e della vita i valori. Dal momento che abbiamo l'accesso al tempo corrente, Siamo in grado di calcolare l'età della particella. Utilizzando la seguente dichiarazione, Siamo in grado di stabilire il luogo in cui nello spazio 3D particella è nato:
Origine = this_comp.Strato ( "null 1").Posizione.Value_at_time (nascita);
Analogamente, La velocità iniziale del emettitore può essere ottenuto con questa dichiarazione:
Notare che "v_e" è un vettore. Ha una grandezza e una direzione che rappresentano la velocità del emettitore.
La velocità iniziale e angolo di lancio delle particelle sono determinate da questi tre chiamate alla funzione casuale:
S = random (Vmin,Vmax); / / velocità iniziale
A = degrees_to_radians (casuale (amin,Amax)); / / angolo dalla verticale
R = degrees_to_radians (random (360)) / / rotazione attorno asse y
Per assicurarsi che abbiamo sempre gli stessi valori casuali per tutta la durata della particella, Queste chiamate alla funzione casuale sono preceduti dalla seguente chiamata al "seed_random" la funzione:
Vedered_random (nascita,True);
Usiamo "seed_random" per impostare il seme del generatore di numeri casuali per la nascita di tempo la particella. Che il numero rimane lo stesso durante la vita della particella, Così sarai sempre in grado di ricreare la velocità iniziale e angolo di lancio valori.
Armati di queste informazioni, Un po 'di trigonometria, E un po 'di matematica vettoriale, Siamo pronti ad affrontare questa cosa. Il nostro piano è quello di calcolare sulla base di condizioni attuali condizioni iniziali e quanto tempo è trascorso dal momento che la particella è nato, Che ci dovrebbe dare risultati accettabili.
Ok il primo calcolo sarà quello di convertire la velocità e l'angolo di lancio del nostro particelle ad una velocità di vettore. Facciamo questo calcolo individuale x, y, E z componenti del vettore usando un po 'di trigonometria. Queste sono le dichiarazioni di calcolare x, y, E z:
X = s * matematica.Sin (a) * matematica.Cos (r);
Y =- s * matematica.Cos (a);
Z = s * matematica.Sin (a) * matematica.Peccato (r);
Si dovrà prendere la mia parola per questo. Ho cercato di trovare una nifty diagramma per mostrare in che modo questo è derivato, Ma deve essere indicato nello spazio 3D e la cosa diventa davvero stipato in fretta. Se sapete Trig, è possibile attraverso muscolare e capire cosa sta succedendo. Comunque, Ora siamo pronti a combinare la velocità iniziale del vettore con l'emettitore del vettore velocità iniziale per ottenere un compoSedereo vettore velocità. Ecco il codice:
V = [x,y,Z] + v_e;
Vedere, Vettore matematica non è troppo spaventoso (in particolare dal Adobe cambiato con 5.5, per consentire l'uso regolare della matematica operatori, "+" In questo caso).
Ora che andremo a convertire questo nuovo vettore di velocità a una grandezza (velocità) e il valore di una unità vettoriale (una unità vettoriale è un vettore di lunghezza 1):
Quello che stiamo andando fare è calcolare l'impatto che ha avuto sulla trascinare la particella oltre la vita della particella a questo punto. Questa è probabilmente la più delicata di calcolo l'intero progetto. Si scopre che ciò che dobbiamo fare è piegare l'effetto di trascinamento nel calcolo della posizione della particella al frame corrente. Abbiamo l'entità e la direzione delle particelle a causa della velocità iniziale della particella e la velocità iniziale di emettitore. Sappiamo che la resistenza dell'aria agirà per rallentare la discesa di particelle, Qualunque modo la particella è in movimento. Così quello che dobbiamo fare è quello di integrare (come nel calcolo - dispiace!) L'effetto di trascinare il vigore nel corso del tempo. Ciò comporta la seguente equazione:
Il risultato di questo calcolo ( "delta_p") è l'attuale posizione della particella, Tenendo conto solo della velocità iniziale di particelle, Emettitore velocità, E l'effetto di trascinamento. Drag atti a diminuire la velocità della particella a un ritmo esponenziale.
Prossimo abbiamo bisogno di calcolare l'effetto del vento. Questo uno più facile. Dalla fisica ricordiamo che
Distanza = velocità * tempo
In modo da calcolare quanto il vento ha spostato la particella sin dalla sua nascita, Abbiamo solo bisogno di fare questo:
W * = delta_w età;
La formula per l'effetto della gravità è un po 'più complicato, Ma non troppo. Tornare al nostro fisica, Ricordiamo che la nostra distanza di particelle si sposta per effetto della gravità è data da questa dichiarazione:
Delta_g = g * età * età / 2;
Ora tutto ciò che dobbiamo fare è quello di combinare questi elementi. Abbiamo tutte le grandezze delle distanze spostato dalla particella a causa delle diverse forze. Ora abbiamo solo bisogno di convertire i loro vettori nella giusta direzione e aggiungerli a ottenere la posizione finale del vettore. Sappiamo che la gravità agisce in una direzione verticale. Vento agisce nella direzione del parametro "wdir". La componente dovuta alla velocità iniziale di particelle, Emettitore velocità, Atti e trascinare nella direzione del vettore di unità che abbiamo calcolato in precedenza. Quindi ecco la fase finale, che combina tutte le componenti del indicazioni del caso:
Qui si può vedere che la particella di partenza del vettore ( "origine") è combinata con la distanza spostato a causa della velocità iniziale / trascinare (in direzione del vettore di unità), L'effetto del vento sulla "x" e "z" coordinate, E l'effetto della gravità in "y" direzione.
Bene, That's it! Sono davvero tutte queste formule corretta? Non so. Che sembra funzionare abbastanza bene utile per generare simulazioni. Spero che ti piace giocare con loro.
# # Dan ebberts
Sentitevi liberi di discutere di questa tecnica in After Effects forum Qui a CreativeCow.
Si prega di viSedereare il nostro forum e visualizzare altri articoli CreativeCow.net Se hai trovato questa pagina da un collegamento diretto.