Introduksjon til grunnleggende After Effects Scripting

Introduction til grunnleggende After Effects Scripting
Å gå sammen med vår siste tutorial om manusutvikling arbeidsflyt, vil vi gå over de grunnleggende begreper og god praksis er nødvendig for å begynne å skrive After Effects skript. Vi vil gå over vanlig After Effects handlinger som for eksempel: å lage et prosjekt, og skaper en komposisjon, og skaper et lag, lage figurer, legge til effekter, endrede verdier og uttrykk, ved hjelp av tekst og fonter, og legger til nøkkelbilder, ved hjelp av funksjoner, etc.
After Effects Scripts på VideoHive

Hvis du leter etter en rask løsning med en After Effects script, det er en stor samling over på VideoHive. Eller, kan du vurdere å søke til å sende inn dine egne skript som forfatter!



Skrive din første Script

Som nevnt i After Effects Sublime Text bygge pakken installasjon og bruk opplæringen, skript er filer som bruker Adobe Extend språk. Extend er en utvidet form for Javascript som brukes av flere Adobe-programmer, for eksempel Photoshop
, Illustrator
, og InDesign
. Extend er en god og effektiv måte å oppnå alt du vil i After Effects.

Scripts bruke Adobe Extend språket, som er en utvidet form for Javascript som brukes av flere Adobe-programmer som Photoshop, Illustrator og InDesign

Denne opplæringen vil gå over grunnleggende begreper og god praksis er nødvendig for å begynne å skrive After Effects skript.



Opprette Vår første Sammensetning

Vi vil starte med å bruke den
newProject ()

metoden i
app

objekt og pakke det mellom klammeparenteser product: {//Oppretter prosjektet app.newProject ();}.


app

Hensikten er roten til nesten alt som sett på dette skjemaet:


dette skjemaet finner du i Adobe After Effects CS6 Scripting guide som de fleste av hva jeg vil forklare i denne opplæringen.

Vi skaper nå vår komposisjon ved hjelp av
app

objektets underobjekter
prosjekt

som inneholder prosjekt som er opprettet i den første linjen og
elementer

sub-objekt som gir deg tilgang til mappene og komposisjoner som du ser i prosjektvinduet i After Effects. product: {//Oppretter prosjektet app.newProject (); //Opprette comp app.project.items.addComp ( "Demo", 1280, 720, 1, 10, 24);}



Rengjøring Våre etiske

Skrive ren og vedlikeholds kode er virkelig viktig. Vi er ikke å skrive raske og skitne uttrykk lenger. Siden vi ønsker at våre skript for å være lett skalerbar, må vi omfavne Javascript samfunnets konvensjoner.

Så vil vi isolere viktige data til variabler og navngi dem deretter til deres innhold. Dessuten vil vi legge forholdene i tilfelle ville det allerede være et prosjekt eller en sammensetning i vår After Effects fil. Product: {//Oppretter prosjektet Var currentProject = (app.project)? app.project: app.newProject (); //Oppretter komp Var compSettings = cs = [1280, 720, 1, 10, 24]; Var defaultCompName = "Demo"; Var currentComp = (currentProject.activeItem)? currentProject.activeItem: currentProject.items.addComp (defaultCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer ();}


Var

nøkkelord indikerer at følgende variabelen er en ny variabel. Det er derfor, på linje 9, vi bruker ikke
Var

ordet lenger fordi vi ønsker å bruke
currentComp

's verdi (som er komp vi har nettopp opprettet).

Her er, linje for linje, hva vi gjorde i vanlig engelsk:

linje 3: Opprett ny variabel
currentProject

som vil være lik for bedriften app.project

hvis
app.project

er ikke definert, og vil ellers lik for bedriften app.newProject ()

.

Line 6: Opprette nye variabler
compSettings

og Selge cs

som begge tilsvarer en ny matrise med verdier
<. li>

Linje 7: Opprett ny variabel
defaultCompName

som inneholder navnet vi vil gi vår comp

Linje 8:. Opprett ny variablecurrentComp

som vil tilsvare til Home activeItem

tilhører vår
currentProject

objekt. Hvis det ikke er udefinert og vil ellers lik resultatet av
addComp

metoden
elementene

sub-objekt av
currentProject

hvem vi sender en rekke argumenter som inneholder:

Navn på sammensetning

Bredde på sammensetningen

Høyde på sammensetningen

Pixel forholdet mellom komposisjon

Tid (i sekunder) av sammensetningen

Frame rate av sammensetningen

Linje 9: Bruk
currentComp

metode
openInViewer

som vil åpne tidslinjen for denne komposisjonen.

Ja, det er mange metoder og egenskaper. Igjen, må du ta en titt på et eller annet tidspunkt i Adobe After Effects guide CS6 Scripting å lære mer om objektene og deres tilgjengelige metoder og egenskaper. Guiden er veldig godt skrevet og et raskt søk etter Prosjekt objekt
vil umiddelbart ta deg til riktig informasjon.



Hurtigjavascript Concepts

Variable : Kan lagre en verdi, en matrise med verdier eller et objekt

Var myVar = "String verdi";

Var myVar = 2;
Array: inneholder flere verdier. Arrays kan bli erklært på to måter

Var myVar = array ( "verdi1", "value2", 3);.
  • Var myVar = [ "value1", "value2", 3];

    funksjon:. en del av kode designet for å utføre en bestemt oppgave

    funksjon myFunction (argument) {//Gjør noe}


    objekt: objektet er litt mer komplisert, men for nå, må du vet det har egenskaper og metoder

    eiendom:. ligner på en variablemyObject.myProperty = "Value"

    Metode: Ligner på en funksjon callmyObject.myMethod (argument)


    Legge Angre grupper

    Siden en rekke operasjoner vil skje i løpet av skriptet gjennomføring, vil du ønsker å bestemme hva som skal skje når du treffer, En ???? + Z

    /
    CTRL + Z

    Hvis du gjør det er ganske enkelt, vi må bare pakke inn vår kode mellom
    beginUndoGroup ()

    og Selge endUndoGroup ()

    metoder den
    app

    objekt. Denne metoden tar ett argument som er navnet som vil bli vist i After Effects
    Rediger & gt; Historie

    menyen product: {app.beginUndoGroup ( "Demo Script."); //Opprette prosjekt Var currentProject = (app.project)? app.project: app.newProject (); //Oppretter komp Var compSettings = cs = [1280, 720, 1, 10, 24]; Var defaultCompName = "Demo" var currentComp = (currentProject.activeItem)? currentProject.activeItem: currentProject.items.addComp (defaultCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer (); app.endUndoGroup ();}



    Lage bakgrunnslaget

    For å lage vår bakgrunnslaget, vil vi bruke
    lag

    under gjenstand for vår
    currentComp < p>. Ring
    addSolid ()

    metode og sende det disse argumentene:

    Layer farge

    Array av flytende tall (mellom 0 og 1). For å få denne verdien du må dele hver av RGB-verdier ved 255 eller bruke denne jsFiddle jeg gjort: http://jsfiddle.net/seblavoie/mezGe/43/embedded/result/

    Lagnavn

    Layer bredde

    Layer høyde

    Layer pixel ratio product: {app.beginUndoGroup ( "Demo Manus"); //Opprette prosjekt Var currentProject = (app.project)? app.project: app.newProject (); //Oppretter komp Var compSettings = cs = [1280, 720, 1, 10, 24]; Var defaultCompName = "Demo" var currentComp = (currentProject.activeItem)? currentProject.activeItem: currentProject.items.addComp (defaultCompName, cs [0], cs [1], cs [2], cs [3], cs [4]); currentComp.openInViewer (); //Lage bakgrunnslaget Var backgroundLayer = currentComp.layers.addSolid ([93, 5, 2], "Bakgrunn", cs [0], cs [1], cs [2]); app.endUndoGroup ();}



    Legge Grid Effect

    Den beste måten å skape vår sentrert korset er ved hjelp av Grid effekt på vår bakgrunnslaget. For å gjøre det, vil vi bruke vår
    backgroundLayer

    variabel som refererer til
    currentComp.layers.byName ( "backgroundLayer")

    og vi vil bruke sin
    Effects

    eiendom.
    //Legge rutenettet effekt backgroundLayer.Effects.addProperty ( "Grid"); backgroundLayer.property ( "Effects") eiendom ( "grid") eiendom ( "anker") SetValue ([0,0])...; ... backgroundLayer.property ( "Effects") eiendom ( "grid") eiendom ( "Corner") uttrykk = "[bredde /2, høyde /2]"; backgroundLayer.property ( "Effects") eiendom ( "grid") eiendom ( "farge") SetValue ([0,0,0])...; backgroundLayer.property ( "Effects") eiendom ( "Grid") eiendom ( "Blending Mode") SetValue (2),...

    Det er noen ting du bør legge merke til her. Først den
    eiendom ()

    metoden er chainable som betyr at du kan kalle det flere ganger for å nå den sub-egenskapen du ønsker å få.

  • backgroundLayer.property ( "Opacity ")

    . Layer er opacity

    backgroundLayer.property (" Effects ") eiendom (." Grid ") eiendom (." opacity ")

    . Grid effektens opasitet

    i tillegg benytter vi metoden
    SetValue ()

    når vi ønsker å sette en verdi, men ikke når vi ønsker å sette et uttrykk.



    Opprette Tørk Layer

    For å legge til tørk effekt, vil vi lage et nytt lag, og bruk Radial viskereffekt.
    //Opprette tørke lag Var wipeLayer = currentComp.layers.addSolid ([0,1, 0,1, 0,1], "Wipe", cs [0], cs [1], cs [2]); wipeLayer.Effects.addProperty ( "Radial Tørk"); wipeLayer.property ( "Effects") eiendom ( "Radial Tørk") eiendom ( "Tørk") SetValue (2)...; //Mot wipeLayer.property ( "Opacity") SetValue (50).; //Innstilling tørke overgang animasjon wipeLayer.property ( "Effects") eiendom ( "Radial tørk") eiendom ( "Transition Completion») setValueAtTime (0, 100)...; wipeLayer.property ( "Effects") eiendom ( "Radial tørk") eiendom ( «Transition Ferdigstillelse") setValueAtTime (1, 0)...; wipeLayer.property ( "Effects") eiendom ( "Radial tørk") eiendom ( «Transition Ferdigstillelse") uttrykk = "loopOut ( 'Cycle')";...

    Vi brukte metoden
    setValueAtTime () < p> å sette keyframes og en
    loopOut ( "Cycle")

    for å gjøre animasjonen sløyfe (fornuftig rett?).



    Legge tekstlaget

    spille med teksten er litt annerledes siden du må endre kildeteksten verdi egenskaper direkte
    //Legge til tekst layervar textLayer = currentComp.layers.addText ( "Countdown");. Var textProperty = textLayer.property ( "kilde~~POS=TRUNC tekst~~POS=HEADCOMP "); Var textPropertyValue = textProperty.value; //Endre kildeteksten settingstextPropertyValue.resetCharStyle (); textPropertyValue.fontSize = 200; textPropertyValue.fillColor = [0, 0, 0]; textPropertyValue.justification = ParagraphJustification.CENTER_JUSTIFY; textProperty.setValue (textPropertyValue); //Legge uttrykk til kilden texttextProperty.expression = "Math.floor (10-tiden)"; //Justere tekstlaget anker pointvar textLayerHeight = textLayer.sourceRectAtTime (0, false); textLayer.property ( "Anchor Point ") .setValue ([0, textLayerHeight.height /2 * -1]);

    Vi endret våre tekstverdiegenskaper og brukes
    SetValue ()

    for å sende den til vår tekst lag. Også, vi brukte et enkelt uttrykk for å gjøre vår nedtelling.
    Math.floor ()

    er en Javascript-funksjon som vil fjerne desimal del av et nummer. Etter at midt vi ankerpunkt ved hjelp av
    sourceRectAtTime ()

    metoden.



    Legge til ellipser

    Hvis du vil legge ellipsene vi vil bruke
    addShape ()

    fremgangsmåte og gi den en vektor gruppe og en vektor form. Vi vil også gjøre en liten funksjon for å unngå kode repetisjon.
    //Legge formlag for circlesvar shapeLayer = currentComp.layers.addShape (); //Legge sirkel figurer groupvar shapeGroup = shapeLayer.property ( "Innhold") addProperty ( "ADBE Vector Group");. //Legge sirkel shapescreateEllipse (shapeGroup, 200); createEllipse (shapeGroup, 400); //Legge svart strek til den shapesvar slag = shapeGroup.property ( "Innhold") .addProperty ( "ADBE Vector Graphic - Stroke") .property ( "Farge") SetValue ([0, 0, 0]);. funksjonen createEllipse (shapeGroup, størrelse) { Var ellipse = shapeGroup.property ( "Innhold") addProperty ( "ADBE Vector Shape - ellipse."); Var ellipseSize = ellipse.property ( "Size") SetValue ([size, størrelse]);.}

    Linje 5 er veldig viktig siden du ikke vil være i stand til å finne de
    Innhold

    eiendom i verken dokumentasjonen eller i After Effects grensesnitt for øyeblikket, takket være Dan Ebbert for hans hjelp (http://forums.creativecow.net/thread/227/22280).

    Vi brukte en tilpasset liten funksjon i stedet for å kopiere ellipsen skapelsen. Du kan bruke funksjoner som du ønsker.

    Basic tommelfingerregel. Hvis du er kopi-lime linjer med kode, vurdere å bruke en funksjon

    For resten vi bare endret form egenskaper. Det kan være lurt å henvise til Adobe After Effects guide CS6 Scripting å se dem oppført.

    Du har kanskje lagt merke til
    Var hjerneslag

    linjen ser litt annerledes enn hva vi har skrevet ennå. Javascript støtter kjeding over flere linjer. Resultatet vil bli det samme, og det er ikke en god eller dårlig måte, det er en forhåndsbetaling koding stil valg du kanskje eller kanskje ikke ønsker å adoptere.



    Konklusjon

    Mulighetene av scripting er uendelige, og kan gjøre en virkelig kraftig verktøy når de mestrer. Her er litt mer dokumentasjon om scripting og Java:

    Adobe After Effects guide CS6 Scripting

    MotionScript

    Javascript på Codeacademy

    Introduksjon til å skrive skript