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 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. Vi vil starte med å bruke den metoden i objekt og pakke det mellom klammeparenteser product: {//Oppretter prosjektet app.newProject ();}. 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 objektets underobjekter som inneholder prosjekt som er opprettet i den første linjen og 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);} 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 ();} nøkkelord indikerer at følgende variabelen er en ny variabel. Det er derfor, på linje 9, vi bruker ikke ordet lenger fordi vi ønsker å bruke '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 som vil være lik for bedriften app.project hvis er ikke definert, og vil ellers lik for bedriften app.newProject () . Line 6: Opprette nye variabler og Selge cs som begge tilsvarer en ny matrise med verdier Linje 7: Opprett ny variabel som inneholder navnet vi vil gi vår comp som vil tilsvare til Home activeItem tilhører vår objekt. Hvis det ikke er udefinert og vil ellers lik resultatet av metoden sub-objekt av hvem vi sender en rekke argumenter som inneholder: Linje 9: Bruk metode 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 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 / Hvis du gjør det er ganske enkelt, vi må bare pakke inn vår kode mellom og Selge endUndoGroup () metoder den objekt. Denne metoden tar ett argument som er navnet som vil bli vist i After Effects 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 ();} For å lage vår bakgrunnslaget, vil vi bruke under gjenstand for vår metode og sende det disse argumentene: 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 variabel som refererer til og vi vil bruke sin eiendom. Det er noen ting du bør legge merke til her. Først den metoden er chainable som betyr at du kan kalle det flere ganger for å nå den sub-egenskapen du ønsker å få. . Layer er opacity . Grid effektens opasitet i tillegg benytter vi metoden når vi ønsker å sette en verdi, men ikke når vi ønsker å sette et uttrykk. For å legge til tørk effekt, vil vi lage et nytt lag, og bruk Radial viskereffekt. Vi brukte metoden for å gjøre animasjonen sløyfe (fornuftig rett?). spille med teksten er litt annerledes siden du må endre kildeteksten verdi egenskaper direkte Vi endret våre tekstverdiegenskaper og brukes for å sende den til vår tekst lag. Også, vi brukte et enkelt uttrykk for å gjøre vår nedtelling. er en Javascript-funksjon som vil fjerne desimal del av et nummer. Etter at midt vi ankerpunkt ved hjelp av metoden. Hvis du vil legge ellipsene vi vil bruke fremgangsmåte og gi den en vektor gruppe og en vektor form. Vi vil også gjøre en liten funksjon for å unngå kode repetisjon. Linje 5 er veldig viktig siden du ikke vil være i stand til å finne de 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 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. 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:
, Illustrator
, og InDesign
. Extend er en god og effektiv måte å oppnå alt du vil i After Effects.
Opprette Vår første Sammensetning
newProject ()
app
app
app
prosjekt
elementer
Rengjøring Våre etiske
Var
Var
currentComp
currentProject
app.project
compSettings
<. li>
defaultCompName
Linje 8:. Opprett ny variablecurrentComp
currentProject
addComp
elementene
currentProject
Navn på sammensetning
Bredde på sammensetningen
Høyde på sammensetningen
Pixel forholdet mellom komposisjon
Tid (i sekunder) av sammensetningen
Frame rate av sammensetningen
currentComp
openInViewer
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;
Var myVar = array ( "verdi1", "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
CTRL + Z
beginUndoGroup ()
app
Rediger & gt; Historie
Lage bakgrunnslaget
lag
currentComp < p>. Ring
addSolid ()
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
backgroundLayer
currentComp.layers.byName ( "backgroundLayer")
Effects
//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),...
eiendom ()
backgroundLayer.property (" Effects ") eiendom (." Grid ") eiendom (." opacity ")
SetValue ()
Opprette Tørk Layer
//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')";...
setValueAtTime () < p> å sette keyframes og en
loopOut ( "Cycle")
Legge tekstlaget
//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]);
SetValue ()
Math.floor ()
sourceRectAtTime ()
Legge til ellipser
addShape ()
//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]);.}
Innhold
Var hjerneslag
Konklusjon
Adobe After Effects guide CS6 Scripting
MotionScript
Javascript på Codeacademy
Introduksjon til å skrive skript