Pentru a merge împreună cu tutorialul nostru recent despre fluxul de lucru pentru dezvoltarea scenariilor, vom trece peste conceptele de bază și bunele practici necesare pentru a începe să scriem scripturile After Effects. Vom trece peste acțiunile obișnuite After Effects cum ar fi: crearea unui proiect, crearea unei compoziții, crearea unui strat, crearea de forme, adăugarea de efecte, schimbarea valorilor și a expresiilor, utilizarea textului și a fonturilor, adăugarea cadrelor cheie, utilizarea funcțiilor etc..
Dacă sunteți în căutarea unei soluții rapide cu un script After Effects, există o colecție minunată pe VideoHive. Sau, puteți lua în considerare solicitarea de a trimite propriile scenarii ca autor!
Așa cum se menționează în tutorialul de instalare și utilizare a pachetelor de construire After Effects Sublime Text, script-urile sunt fișiere care folosesc limbajul Adobe ExtendScript. ExtendScript este o formă extinsă de JavaScript folosit de mai multe aplicații Adobe, cum ar fi Photoshop, Ilustrator, și InDesign. ExtendScript este o modalitate bună și eficientă de a obține tot ce doriți în After Effects.
Scripturile utilizează limbajul Adobe ExtendScript, care este o formă extinsă de JavaScript folosit de mai multe aplicații Adobe, cum ar fi Photoshop, Illustrator și InDesign
Acest tutorial va trece peste conceptele de bază și bunele practici necesare pentru a începe să scrieți scripturile After Effects.
Vom începe prin utilizarea funcției
proiect nou()
metodă a
aplicaţia
obiecte și împachetați-le între paranteze curbate.
// Crearea proiectului app.newProject ();
aplicaţia
obiect este rădăcina a aproape tot ceea ce se vede pe această schemă:
Această schemă poate fi găsită în Ghidul de scriptare Adobe After Effects CS6, precum cele mai multe dintre ceea ce voi explica în acest tutorial.
Acum creăm compoziția noastră folosind
aplicaţia
obiecte sub-obiecte
proiect
care conține proiectul creat în prima linie și
articole
sub-obiect care vă oferă acces la folderele și compozițiile pe care le vedeți în fereastra de proiect din After Effects.
// Crearea proiectului app.newProject (); // Crearea comp app.project.items.addComp ("Demo", 1280, 720, 1, 10, 24);
Scrierea unui cod curat și întreținut este foarte important. Nu mai scriem expresii rapide și murdare. Deoarece vrem ca scripturile noastre să fie ușor de scalabil, trebuie să îmbrățișăm convențiile comunității Javascript.
Deci, vom izola datele cheie în variabile și le vom numi în funcție de conținutul lor. De asemenea, vom pune condiții în cazul în care ar exista deja un proiect sau o compoziție în fișierul nostru After Effects.
// Crearea proiectului var currentProject = (app.project)? app.project: app.newProject (); // Crearea comp compSettings comp = cs = [1280, 720, 1, 10, 24]; var defaultCompName = "Demo"; Var curentComp = (actualProject.activeItem)? actualProject.activeItem: currentProject.items.addComp (implicitCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer ();
var
cuvântul cheie indică faptul că următoarea variabilă este o nouă variabilă. De aceea, pe linia 9, nu folosim
var
cuvântul cheie mai mult pentru că vrem să îl folosim
currentComp
(care este componenta pe care tocmai am creat-o).
Iată, pe rând, ceea ce am făcut în engleză:
Linia 3: Creați o nouă variabilă
proiectul actual
care va fi egal cu
app.project
dacă
app.project
nu este nedefinit și altfel va fi egal cu
app.newProject ()
.
Linia 6: Creați noi variabile
compSettings
și
cs
care este egal cu o nouă serie de valori.
Linia 7: Creați o nouă variabilă
defaultCompName
care conține numele pe care îl vom da comp.
currentComp
care va fi egal cu
activeItem
proprietatea noastră
proiectul actual
obiect. Dacă nu este nedefinit și altfel va fi egal cu rezultatul
addComp
metodă a
articole
sub-obiect al
proiectul actual
la care vom trimite o serie de argumente care conțin:
Linia 9: Utilizați
currentComp
metodă
openInViewer
care va deschide cronologia acestei compoziții.
Da, sunt multe metode și proprietăți. Din nou, va trebui să aruncați o privire la o dată sau alta în Adobe After Effects CS6 Scripting Guide pentru a afla mai multe despre obiectele și metodele și proprietățile lor disponibile. Ghidul este foarte bine scris și o căutare rapidă Obiectul proiectului vă va duce imediat la informațiile corecte.
var myVar = "Valoarea șirului";
var myVar = 2;
var myVar = array ("valoare1", "valoare2", 3);
var myVar = ["valoare1", "valoare2", 3];
funcția myFunction (argument) // Do ceva
myObject.myProperty = "Valoare"
myObject.myMethod (argument)
Din moment ce o mulțime de operațiuni se va întâmpla în timpul executării scenariului dvs., veți dori să decideți ce se va întâmpla când ați lovit
A???? + Z
/
CTRL + Z
Așa că este destul de ușor, ne-am împachetat codul între
beginUndoGroup ()
și
endUndoGroup ()
metode ale
aplicaţia
obiect. Această metodă are un argument care este numele care va fi afișat în After Effects
Editați> Istoric
meniul.
app.beginUndoGroup ("Script demo"); // Crearea proiectului var currentProject = (app.project)? app.project: app.newProject (); // Crearea comp compSettings comp = cs = [1280, 720, 1, 10, 24]; var implicitCompName = "Demo" var currentComp = (actualProject.activeItem)? actualProject.activeItem: currentProject.items.addComp (implicitCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer (); app.endUndoGroup ();
Pentru a crea stratul de fundal, vom folosi
straturi
sub-obiect al nostru
currentComp
. Suna
addSolid ()
și trimiteți aceste argumente:
app.beginUndoGroup ("Script demo"); // Crearea proiectului var currentProject = (app.project)? app.project: app.newProject (); // Crearea comp compSettings comp = cs = [1280, 720, 1, 10, 24]; var implicitCompName = "Demo" var currentComp = (actualProject.activeItem)? actualProject.activeItem: currentProject.items.addComp (implicitCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer (); // Crearea stratului de background var backgroundLayer = currentComp.layers.addSolid ([93, 5, 2], "Background", cs [0], cs [1], cs [2]); app.endUndoGroup ();
Cea mai bună modalitate de a crea o cruce centrat este folosirea efectului Grid pe stratul de fundal. Pentru a face asta, ne vom folosi pe noi
backgroundLayer
variabilă care se referă la
currentComp.layers.byName ( "backgroundLayer")
și o vom folosi
Efecte
proprietate.
// Adăugarea efectului grilei backgroundLayer.Effects.addProperty ("Grid"); backgroundLayer.property ( "Effects") proprietatea ( "Grid") proprietate ( "ancora") SetValue ([0,0])...; (= "Lățime / 2, înălțime / 2"); backgroundLayer.property ( "Effects") proprietatea ( "Grid") proprietate ( "Color") SetValue ([0,0,0])...; ("Grid"). proprietate ("Mod de amestecare") setValue (2);
Există câteva lucruri pe care ar trebui să le observați aici. În primul rând,
proprietate()
metoda este flexibilă, ceea ce înseamnă că o puteți numi de mai multe ori pentru a ajunge la sub-proprietatea pe care doriți să o obțineți.
backgroundLayer.property ( "Opacitate")
: Opacitatea stratului.
backgroundLayer.property ( "Effects"). proprietate ( "Grid"). proprietate ( "Opacitate")
Opacitatea efectului de rețea.
În al doilea rând, vom folosi metoda
SetValue ()
când vrem să stabilim o valoare, dar nu când vrem să stabilim o expresie.
Pentru a adăuga efectul de ștergere, vom crea un nou strat și vom folosi efectul Radial Wipe.
// Crearea stratului de ștergere var wipeLayer = actualComp.layers.addSolid ([0,1, 0,1, 0,1], "Ștergeți", cs [0], cs [1], cs [2]); wipeLayer.Effects.addProperty ("Radial Wipe"); wipeLayer.property ("Efecte") proprietate ("Radial Wipe") proprietate ("șterge") setValue (2); / / Opacitate "(counterclockwise) wipeLayer.property (" opacitate ") setValue (50); // Setarea ștergerii de tranziție animație wipeLayer.property ("Efecte"). Proprietate ("Radial Wipe") proprietate ("Terminare tranziție") setValueAtTime (0, 100); wipeLayer.property ("Efecte"), proprietate ("Radial Wipe") proprietate ("Transition Completion") setValueAtTime (1, 0); wipeLayer.property ("Efecte"), proprietatea ("Radial Wipe") proprietate ("Transition Completion").
Am folosit metoda
setValueAtTime ()
pentru a seta cadrele cheie și a
loopOut ( "ciclu")
pentru a face buclă de animație (are sens?).
Redarea cu text este puțin diferită, deoarece trebuie să modificați direct proprietățile valorii textului sursă.
// Adăugarea textului text var textLayer = actualComp.layers.addText ("Countdown"); var textProperty = textLayer.property ("Text sursă"); var textPropertyValue = textProperty.value; // Modificarea setărilor textului sursă textPropertyValue.resetCharStyle (); textPropertyValue.fontSize = 200; textPropertyValue.fillColor = [0, 0, 0]; textPropertyValue.justification = ParagraphJustification.CENTER_JUSTIFY; textProperty.setValue (textPropertyValue); // Adăugarea expresiei textului sursă textProperty.expression = "Math.floor (de 10 ori)"; // Ajustarea punctului de ancorare a stratului de text var textLayerHeight = textLayer.sourceRectAtTime (0, false); textLayer.property ("Punct de ancorare") setValue ([0, textLayerHeight.height / 2 * -1]);
Am schimbat proprietățile de valoare text și am folosit
SetValue ()
să o retrimitem în stratul nostru de text. De asemenea, am folosit o expresie simplă pentru a face numărătoarea inversă.
Math.floor ()
este o funcție Javascript care va elimina partea zecimală a unui număr. După aceea, centrarea punctului de ancorare cu ajutorul
sourceRectAtTime ()
metodă.
Pentru a adăuga elipsele vom folosi
addShape ()
și dați-i un grup vector și o formă de vector. De asemenea, vom face o mică funcție pentru a evita repetarea codului.
// Adăugarea stratului de formă pentru cercurile var shapeLayer = currentComp.layers.addShape (); // Adăugarea grupurilor de cercuri din grupul var shapeGroup = shapeLayer.property ("Contents"). AddProperty ("ADBE Vector Group"); // Adăugarea de forme ale cercurilor createEllipse (shapeGroup, 200); createEllipse (formaGrup, 400); // Adăugarea cursei neagră la formele var stroke = shapeGroup.property ("Contents") .addProperty ("ADBE Vector Graphic - Stroke") .property ("Color") setValue ([0, 0, 0]); funcția createEllipse (shapeGroup, dimensiune) var ellipse = shapeGroup.property ("Cuprins") addProperty ("ADBE Vector Shape - Ellipse"); var ellipseSize = elipse.property ("Dimensiune"). setValue ([size, size]);
Linia 5 este foarte importantă, deoarece nu veți putea găsi
Cuprins
proprietate în nici o documentație, nici în interfața dvs. After Effects pentru moment, datorită lui Dan Ebbert pentru ajutorul său (http://forums.creativecow.net/thread/227/22280).
Am folosit o functie personalizata in loc de a duplica crearea de elipsa. Puteți utiliza funcțiile după cum doriți.
Regula de bază: Dacă utilizați linii de copiere prin copiere, luați în considerare utilizarea unei funcții.
În rest, am modificat proprietățile formei. S-ar putea să vă referiți la Ghidul de scriptare Adobe After Effects CS6 pentru a le vedea în listă.
S-ar putea să fi observat
var accident vascular cerebral
line este diferit de ceea ce am scris încă. Javascript acceptă înlănțuirea pe mai multe linii. Rezultatul va fi același și nu există un mod bun sau rău, este o alegere personală de stil de codare pe care ați putea dori sau nu să o adoptați.
Posibilitățile de scripting sunt nesfârșite și pot deveni un instrument cu adevărat puternic odată stăpânit. Iată câteva documente despre scripting și Javascript: