Accesso
Nota: Questa è una traduzione automatica, si prega di utilizzare un linguaggio chiaro, senza slang.

Generare Casuale Motion Con AE 5.5 Di Espressioni

Dan Ebberts
Tutorials :
Generare Casuale Motion Con AE 5.5 Di Espressioni
Generare casuale Motion con AE 5.5 di espressioni


from CreativeCow.net's ''25 Cool Things about After Effects 5.5'' Series


Generating Random Motion with AE 5.5's Expressions
Dan Ebberts Dan ebberts,
Sacramento, California, Stati Uniti d'America

© 2002 by Dan ebberts e CreativeCow.net. Tutti i diritti sono riservati.

Articolo attenzione:
In questo tutorial, Dan ebberts dimostra un metodo di generazione di moto che è casuale nel tempo e nello spazio e ti permette di montare rapidamente una composizione con un Fluidoo piacevolmente, Caotica circolazione.


Scarica film File di progetto (include ai file) Stuffit Expander per il download Windows

Il problema:

Il concetto alla base di questo tutorial è venuto fuori di un dibattito on-line. Un collega After Effects appassionato stava cercando di trovare una espressione per la generazione di moto che è stata casuale nel tempo e nello spazio. Che è, Obiettivo posizioni sarebbe casuale come il tempo necessario per arrivare. Il problema che si incontrano quando si cerca di sviluppare un tale espressione è che non esiste solo non sembra essere un buon modo per portare il valore delle variabili in avanti nel tempo da una cornice alla prossima. Tutte le variabili che si definisce sarà andato al fotogramma successivo. PrFineere in considerazione l'esempio seguente espressione di opacità:

If (tempo = 0) (
X = 10
}
Else (
X = x + 1
}

Questo funziona bene al primo fotogramma. Frame al secondo si ottiene un errore perché x è definito. L'espressione non si ricorda che è stato x 10 sul fotogramma precedente. Questa diventa una grave limitazione quando si tenta di fare qualcosa di più di un campione di tempo perché una volta che si deciderà per quanto tempo si deve prFineere, è necessario controllare ad ogni struttura per vedere se il gioco è fatto ancora. Difficile da fare se non si può che passare dal valore di un fotogramma alla prossima.


Seed_random per il salvataggio:

Si scopre che è possibile aggirare questo problema con la maggiore (per AE 5.5) seed_random funzione. Questa funzione consente di stabilire una sequenza ripetibile di numeri casuali e rigenerare loro a volontà, Solo ripristinando il seme di una precedente il valore e poi chiamando il casuale () funzione. Questo ci dà una soluzione al problema, perché anche se non siamo in grado di trasmettere i nostri valori casuali da una cornice alla prossima, Siamo in grado di ricreare utilizzando seed_random. Diamo un'occhiata a come funziona seed_random.

Aprire il file di progetto e quindi aprire la "base comp". Questo è solo uno 640x480 comp con un solido strato aggiunto 50x50. Selezionare "solido 1" e di rivelare la posizione della proprietà. Alt-clic (opzione-clic) il cronometro per attivare l'espressione di questa proprietà. Inserire la seguente espressione:

[casuale (0,This_comp.Larghezza),Casuale (0,This_comp.Altezza)];

Questo farà sì che la piazza per andare a una posizione casuale del comp. In anteprima il comp. Si noterà che la piazza passa a una nuova posizione su ogni fotogramma. Non molto utile. Aggiungere una nuova linea per l'espressione in modo che ora recita:

Seed_random (1,True);
[casuale (0,This_comp.Larghezza),Casuale (0,This_comp.Altezza)];


Notare che ancora una volta la piazza ad un salti casuali posizione, ma quando si rimane lì in anteprima. Questo nuovo comportamento è dovuto a un cambiamento che Adobe alla funzione di seed_random AE 5.5. Hanno aggiunto un secondo parametro, Che quando è impostato a "true" imposta la funzione in modo casuale che da numeri casuali generati non dipFineono tempo. I numeri casuali dipFineono dal numero di strati, Il numero di proprietà, Il valore del primo parametro della chiamata seed_random (il "seme"), E il numero di volte in cui la funzione casuale è stato chiamato. Ciò significa che la stessa espressione genererà diversi numeri casuali in un diverso livello o di proprietà (più tardi ci si avvarrà di questa complessità di aggiungere rapidamente al nostro obbl). Provare a cambiare il "seme" per qualche altro parametro numero. Si noterà che la piazza si muove in una posizione diversa e vi rimane. Modificare il secondo parametro su "false" e nota che, quando si visualizza in anteprima, Salta la piazza in tutto il luogo di nuovo.

Aggiungere un po 'più di codice per la sua espressione in modo che assomiglia a questo:

If (ora 1) (
Seed_random (1,True)
}
Else (
Seed_random (2,True)
}
[casuale (0,This_comp.Larghezza),Casuale (0,This_comp.Altezza)];


Ora si noterà che, quando si visualizza in anteprima, La piazza rimane a una posizione per i primi secondi e poi passa ad un altro luogo per il resto del comp.

Così come si fa ad utilizzare questa nuova, Più potente funzione seed_random? Ecco il concetto chiave: Con il secondo parametro impostato a "true", Per un determinato livello, Proprietà, Valore e le sementi, Il numero a caso che si ottiene quando si chiama il casuale () funzionano solo dipFinee da quante volte hai chiamato la funzione di impostazione, poiché il seme. Che è, La prima volta che si chiama casuale () dopo aver impostato il seme verrà visualizzato un numero casuale particlar (che chiameremo x). La seconda chiamata genera un numero casuale secondo (che chiameremo questo uno y) e così via. Ma se si chiama seed_random di nuovo con il seme originario, La sequenza di avvio su. Che è, La prossima casuale () chiamata rigenerare l'originale di numeri casuali (x in questo caso). Utilizzando un valore diverso sementi causare una sequenza completamente diversa da generare. Considerare il seguente esempio:

Seed_random (1,True); / / impostiamo il valore di sementi
A = random ();
B = random ();
C = casuale ();

Seed_random (1,True); / / reset delle sementi per lo stesso valore
I = casuale ();
J = random ();
K = random ();

Seed_random (2,True) / / nuove sementi
Q = casuale ();
R = random ();
S = casuale ();

Seed_random (1,True); / / ristabilire originale sementi
X = random ();
Y = random ();
Z = casuale ();

In questo caso, A,B, Ec saranno tutti diversi numeri casuali. Comunque, Uno e sarà lo stesso, "b" e "j sarà lo stesso, K "e" c "e sarà lo stesso, perché il seme è stato azzerato (a 1, in questo caso) e la sequenza casuale inizia oltre. Q,R e s sarà una nuova sequenza di numeri casuali, perché il seme è stato cambiato a 2. La sequenza x,Y,Z sarà lo stesso come un,B,C e,J,K perché il seme è stato fissato a 1 volta. In modo da poter tornare a una sequenza di numeri casuali da ristabilire il seme che ha generato valore di questi numeri.

Come funziona questo ci aiuta? Per generare il nostro movimento casuale, In ogni fotogramma abbiamo bisogno di sapere alcune cose circa l'attuale segmento di movimento: Orario di inizio, Posizione di inizio, Ora di fine, E la posizione finale. Questi saranno tutti numeri casuali che si generano utilizzando un valore diverso seme per ogni segmento di movimento. E noi le sementi di base del valore del segmento in cui siamo attualmente in. Quindi tutto ciò che dobbiamo fare è avere l'espressione essere in grado di capire che è nel segmento (da cui sarà in grado di capire il valore seed), Impostare il seme, E rigenerare la sequenza di numeri casuali che ci dà il tempo di avvio, Posizione di inizio, Ora di fine, E alla fine i valori per la posizione attuale del segmento.

Ok - lasciare la recensione che cosa sarà il nostro obiettivo per questa espressione. Vogliamo che la piazza di passare agevolmente da un casuale posizione sullo schermo di un altro. Vogliamo anche il tempo per fare questo deve essere casuale (diciamo tra .5 e 2 secondi). Questa espressione che farà:

Seg_start_time = 0; / / condizioni iniziali
Seg_Fine_time = 0;
I = 1;
Tmin = .5 / / minimo tempo di ciclo (non può essere pari a zero)
Tmax = 2; / / massimo tempo di ciclo
While (time = seg_Fine_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Fine_time;
Seg_Fine_time = seg_Fine_time + casuale (tmin,Tmax);
}
Cento = (tempo - seg_start_time) / (seg_Fine_time - seg_start_time);
Target_x = casuale () * This_comp.Larghezza;
Target_y = casuale () * This_comp.Altezza;
Seed_random (I-1,True);
X = random (); / / questo è un valore e getta
Old_x = casuale () * This_comp.Larghezza;
Old_y = casuale () * This_comp.Altezza;
Facilità (percentuale,[old_x,Old_y],[target_x,Target_y]);

Copia e incolla questa espressione nella posizione espressione (o semplicemente aprire "comp + espressione di base"). In anteprima il comp. Si noterà che la piazza ha ora un bel, Fluido, Mozione che è casuale nel tempo e la direzione.

In questa espressione, "Io" è il nostro segmento counter, Che verrà anche utilizzato come valore per il seme che segmento. "tmin" e "tmax" definire l'intervallo di tempo casuale possibile per la durata di ciascun segmento. In questo caso, Un segmento durerà tra .5 e 2 secondi. Il loop "while" è l'espressione in cui le cifre che segmento è nella. è questo il seme da crescente accumulo casuale e durata fino al segmento un valore superiore al momento attuale è stata raggiunta. A questo punto si conosce l'inizio, Fine, E l'ora correnti del segmento corrente in modo da poter calcolare la percentuale di questo segmento che è stato completato. Invita la casuale () funzione di due o più volte per ottenere l'obiettivo coordinate X e Y per la posizione finale di questo segmento. La parte successiva è un po 'complicata. L'espressione deve ancora conoscere la posizione di inizio di questo segmento, in modo da poter calcolare (sulla base della percentuale completata) l'attuale posizione. Poiché la posizione di inizio è lo stesso che la posizione finale del segmento precedente, Abbiamo appena decremento delle sementi per tornare al seme del segmento precedente. L'espressione invita quindi casuale () funzione per ottenere fine coordinate X e Y del precedente segmento. Si noterà che vi è un "usa e getta" a chiamata casuale () prima che i precedenti i valori X e Y sono determinati. Questo è dovuto al fatto che per ogni seme, Il primo casuale () è chiamata sempre utilizzato per l'ora di fine (che già sappiamo) - il 2 ° e 3 ° sono usati per le chiamate coordinate X e Y.

Aprire la "espressione comp". Comp questo è lo stesso di un precedente, ad eccezione per l'aggiunta di espressioni simili randomizing di opacità e la rotazione. L'opacità è espressione:

Seg_start_time = 0; / / condizioni iniziali
Seg_Fine_time = 0;
I = 1;
Tmin = .5 / / minimo tempo di ciclo (non può essere pari a zero)
Tmax = 2; / / massimo tempo di ciclo
While (time = seg_Fine_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Fine_time;
Seg_Fine_time = seg_Fine_time + casuale (tmin,Tmax);
}
Cento = (tempo - seg_start_time) / (seg_Fine_time - seg_start_time);
Target_Opacità = casuale () * 100;
Seed_random (I-1,True);
X = random (); / / questo è un valore e getta
Old_Opacità = casuale () * 100;
Facilità (percentuale,Old_Opacità,Target_Opacità);

E la rotazione è espressione:

Seg_start_time = 0; / / condizioni iniziali
Seg_Fine_time = 0;
I = 1;
Tmin = .5 / / minimo tempo di ciclo (non può essere pari a zero)
Tmax = 2; / / massimo tempo di ciclo
While (time = seg_Fine_time) (
I = I +1; seed_random (I,True);
Seg_start_time = seg_Fine_time;
Seg_Fine_time = seg_Fine_time + casuale (tmin,Tmax);
}
Cento = (tempo - seg_start_time) / (seg_Fine_time - seg_start_time);
Target_rotation = casuale () * 360;
Seed_random (I-1,True);
X = random (); / / questo è un valore e getta
Old_rotation = casuale () * 360;
Facilità (percentuale,Old_rotation,Target_rotation);

Queste espressioni sono praticamente identica a quella per la posizione, salvo che essi sono stati modificati per generare una gamma di valori appropriati per l'opacità e la rotazione. In anteprima il comp e nota che la piazza ha ora rotazione casuale e dissolvenza nonché circolazione.

Qui viene la parte divertente. Duplicato "solido 1" un mucchio di volte (o semplicemente aprire "multi comp") e in anteprima il comp. Ricordare - si può fare davvero rapidamente utilizzando la scorciatoia Ctrl + D (comando + d sul MAC ). Ora quando si anteprima c'è un turbinio di attività. I numeri casuali per ogni strato sono diversi anche se le espressioni sono esattamente gli stessi per ogni.


Ora le cose stanno diventando sempre più interessante


Aperto "un divertimento" e anteprima. Per questo comp, I duplicati "solido 1" due volte e poi sostituito ciascuno dei solidi con uno dei file illustratore. Poi ho duplicato ciascuno degli strati di un mucchio di volte. Si può vedere che, una volta che hai creato le espressioni, Duplicare strati rapidamente aggiunge complessità al tuo comp.


è facile creare un complesso comp rapidamente con queste espressioni


è possibile sezionare le espressioni per vedere come funzionano, O si può semplicemente copiare e incollare nel vostro proprie composizioni. I tre esempi che ho dato (posizione, Opacità, E rotazione) dovrebbe darvi una buona idea di come adeguare l'espressione di altre proprietà. Spero che questo suscita alcuni di voi a giocare con queste e di creare qualcosa di veramente cool!

# # Dan ebberts

Sentitevi liberi di discutere di questa tecnica in After Effects forum Qui a CreativeCow.




Si prega di visitare il nostro forum e visualizzare altri articoli CreativeCow.net Se hai trovato questa pagina da un collegamento diretto.


FORUMTUTORIALSMAGAZINESERVIZIVIDEONEWSBLOG


© CreativeCOW.net Tutti i diritti sono riservati.

Creative Comunità del Mondo

[Superiore]

Englishالعربية中文FrançaisDeutschעבריתहिन्दीItaliano日本語PortuguêsРусскийEspañol