Zaloguj się, aby obserwować  
Obserwujący 0
Valoos

AE Script - Część 1

1 post w tym temacie

Na początku kolejnej części tutoriala wprowadzającego w arkana AE Script’u chciałbym jeszcze tylko w kilku słowach scharakteryzować czym się różni skrypt od expressions, z którymi wielu z was zapewne jest lepiej zaznajomionych. AE Script tak jak expressions jest oparty na składni Javy - oczywiście trochę zmodyfikowanej przez panów z Adobe.

Expressions są interaktywnym powiązaniem różnych parametrów, a skrypt to program, rodzaj makro - jest podobny trochę do Actions w Photoshopie, ale ze znacznie wiekszymi możliwościami. AE Scrypt jest potężniejszy od expression chociażby dlatego, że potrafi tworzyć expreszyny i je modyfikować. Głównym zastosowaniem AE Scriptu jest automatyzacja powtarzających się działań, ale także realizacja skomplikowanych obliczeń. Jeżeli czegoś nie da się zrealizować poprzez expressions to warto sięgnąć po AE Script. Oczywiście nie jest on pozbawiony wad i pewnych "wpadek", ale o tych pułapkach mam nadzieję was informować w miarę postępowania naszego małego kursu.

Dobra lecimy - teraz bardziej użyteczny przykład zastosowania AE Script’u

Kolejny skrypt, który zamierzam wam przedstawić bedzie potrzebował do działania projektu z co najmniej jedną kompozycją, a w niej co najmniej jedną warstwą.

Tu przykładowy projekt:

Projekt przykładowy - link poprawiony.

Specjalnie nie wyjaśniam co skrypt ma robić, aby wzbudzić w was trochę ciekawości :)

{
app.beginUndoGroup("AE skrypt");
CompFPS = 25;
Delay = 15/CompFPS;
var myComp = app.project.activeItem;
for (n = 1; n <= myComp.layers.length; n++)
	{
	var myLayer = myComp.layer(n);
	LayerIn = myLayer.inPoint;
	LayerOut = myLayer.outPoint;
	var fx = myLayer("Effects").addProperty("Venetian Blinds");

	fx.property(2).setValueAtTime(LayerIn+Delay,45);
	fx.property(2).setValueAtTime(LayerOut-Delay,-45);
	fx.property(1).setValueAtTime(LayerIn,100);
	fx.property(1).setValueAtTime(LayerIn+Delay,0);
	fx.property(1).setValueAtTime(LayerOut-Delay,0);
	fx.property(1).setValueAtTime(LayerOut,100);
	}

app.endUndoGroup();
alert("Gotowe...");
}

No to tłumaczymy:

1.Zaraz po zdefiniowaniu grupy undo deklarujemy sobie zmienną Delay, za pomoca której łatwo będzie nam zmieniać podstawowy parametr naszego skryptu. (żeby nie wpisywać ułamków dzielimy zadaną wartość przez fps kompozycji, ponieważ wszystkie zależności czasowe w AE Scripcie opisywane są w sekundach)

2.Zmiennej myComp przyporządkowujemy aktualnie zaznaczoną kompozycję.

3.Korzystając z pętli for będziemy przypisywać efekt do każdej warstwy znajdującej się w aktualnie aktywnej kompozycji (wstawka dla tych z was, którzy pętli for jeszcze nie poznali)

for (początkowa wartość zmiennej; warunek; działanie arytmetyczne /inkrementacja/ )

{

instrukcje do wykonania;

}

gdzie:

początkowa watość zmiennej - to nic innego jak określenie od ilu chcemy liczyć

warunek - jeżeli ten warunek nie zostanie spełniony pętla for się zakończy (inaczej mówiąc, pętla jest kontynuowana dopóki równanie/nierówność jest spełniona)

działanie arytmetyczne - to zazwyczaj zwiększanie naszej zmiennej o 1 (lub jej zmniejszanie), oczywiście nic nie stoi na przeszkodzie, aby przeskakiwać co 2, 6, 10 lub zwiekszac krok *2 itp.

Natomiast w samej pętli po kolei:

- przypisyjemy kolejną warstwę do zmiennej myLayer

- do zmiennych LayerIn i LayerOut przypisujemy gdzie jest odpowiednio początek i koniec warstwy

- do zmiennej fx wpychamy nałożony w tej samej linijce efekt Venetian Blinds, żeby w 6 następnych wstawić klucze na początku i na końcu warstwy (z uwzględnieniem czasu "tranzycji" - Delay). Aby zrozumieć do których paramertów odnoszą się poszczególne linie należy zerknąć sobie na efekt Venetian Blinds. Po chwili staje się jasne, że fx.property(1). to Transition Completion, a fx.property(2). to Direction, gdyż Transition Completion to pierwszy w kolejności parametr, a Direction to drugi. W nawiasach tych można stosować nazwy tych parametrów np. fx.property("Direction"). ale łatwo jest o błąd w pisowni. Z drugiej strony kod staje się czytelniejszy, więc jesli chcecie stosujcie nazwy - można je jednoznacznie ustalić wpisując w JavaScript Console np. fx.property(1).name

i tutaj UWAGA!

Wpisywanie wyrażeń ze zmiennymi użytymi w naszym skrypcie zadziała dopiero po pierwszym uruchomieniu naszego skryptu. Inaczej mówiąc Consola nie będzie wiedziała co to jest myComp dopóki jej o tym nie "powiemy" - po uruchomieniu skryptu zmienne, stałe i obiekty pozostają w pamięci. Można zresztą je i ich parametry przejżeć za pomocą Data Browser (trzecie okienko od góry po lewej).

4.Po pętli zamykamy grupe undo i paleceniem alert() sygnalizujemy, że skrypt skończył działanie.

Polecenie alert() oczywiście nie jest konieczne, ale dzięki niemu wiadomo co sie dzieje. W nastepnym odcinku omówimy jak stworzyć okno dialogowe, dzięki któremu nasz skrypt stanie sie troche bardziej interaktywny.

Jeżeli komukolwiek moje tłumaczenia wydały sie metne, prosze o tym zasygnalizować.

Jeżeli ktoś czegoś nie rozumie, ma pytania, ma uwagi, sprostowania, proszę pisać w watkach. (inni też skorzystają)

Bardzo proszę o uwagi dot. poziomu jaki oczekujecie. Mam wrażenie, że niektórych rzeczy niedopowiadam, a nie które zbyt szczegółowo tłumacze. Piszcie. Nie wszystko co dla mnie jest oczywiste musi być jasne dla was.

HOWGH

PS. Ostatnio miałem możliwość jak wygląda AE Script w CS'ach (CS3 i CS4) i przyznam, że wiele rzeczy sie poprawiło i wiele został usprawnionych. W miarę możliwości z czasem postaram się podryfować w tym kierunku.

0

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować  
Obserwujący 0