Einführung in die Grundlagen von After Effects Scripting

In unserem aktuellen Tutorial zum Workflow für die Skriptentwicklung werden die grundlegenden Konzepte und bewährten Methoden beschrieben, die zum Schreiben von After Effects-Skripts erforderlich sind. Wir werden die üblichen After Effects-Aktionen durchgehen, zum Beispiel: Erstellen eines Projekts, Erstellen einer Komposition, Erstellen einer Ebene, Erstellen von Effekten, Hinzufügen von Werten und Ausdrücken, Verwenden von Text und Schriftarten, Hinzufügen von Keyframes, Verwenden von Funktionen usw..

After Effects-Skripts auf VideoHive

Wenn Sie nach einer schnellen Lösung mit einem After Effects-Skript suchen, gibt es auf VideoHive eine großartige Sammlung. Sie können auch beantragen, Ihre eigenen Skripts als Autor einzureichen!


Schreiben Sie Ihr erstes Skript

Wie im Tutorial für die Installation und Verwendung des After Effects Sublime Text-Buildpakets beschrieben, handelt es sich bei Skripts um Dateien, die die Sprache Adobe ExtendScript verwenden. ExtendScript ist eine erweiterte Form von JavaScript, die von verschiedenen Adobe-Anwendungen verwendet wird, z Photoshop, Illustrator, und InDesign. ExtendScript ist eine gute und effiziente Methode, um alles zu erreichen, was Sie in After Effects wünschen.

Skripts verwenden die Sprache Adobe ExtendScript, eine erweiterte Form von JavaScript, die von verschiedenen Adobe-Anwendungen wie Photoshop, Illustrator und InDesign verwendet wird

In diesem Lernprogramm werden die grundlegenden Konzepte und bewährten Methoden erläutert, die zum Schreiben von After Effects-Skripts erforderlich sind.


Unsere erste Komposition erstellen

Wir beginnen mit der Verwendung von

neues Projekt()

Methode der

App

Objekt und wickeln Sie es zwischen geschweiften Klammern.

// Projekt erstellen app.newProject (); 

Das

App

Objekt ist die Wurzel von fast allem, was in diesem Schema zu sehen ist:

Dieses Schema ist im Adobe After Effects CS6 Scripting-Handbuch enthalten, wie die meisten in diesem Lernprogramm erklärten.

Wir erstellen jetzt unsere Komposition mit der

App

Unterobjekte des Objekts

Projekt

welches das in der ersten Zeile erstellte Projekt und das

Artikel

Unterobjekt, mit dem Sie auf die Ordner und Kompositionen zugreifen können, die Sie in After Effects in Ihrem Projektfenster sehen.

// Projekt erstellen app.newProject (); // comp erstellen app.project.items.addComp ("Demo", 1280, 720, 1, 10, 24); 

Reinigung unseres Kodex

Das Schreiben von sauberem und wartungsfähigem Code ist sehr wichtig. Wir schreiben keine schnellen und schmutzigen Ausdrücke mehr. Da wir möchten, dass unsere Skripts leicht skalierbar sind, müssen wir die Konventionen der Javascript-Community berücksichtigen.

Wir isolieren daher Schlüsseldaten in Variablen und benennen sie entsprechend ihrem Inhalt. Außerdem werden Bedingungen für den Fall festgelegt, dass in unserer After Effects-Datei bereits ein Projekt oder eine Komposition vorhanden ist.

// Projekt erstellen var currentProject = (app.project)? app.project: app.newProject (); // comp var erstellen 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 (); 

Das

var

Schlüsselwort zeigt an, dass die folgende Variable eine neue Variable ist. Deshalb verwenden wir in Zeile 9 nicht die

var

Keyword mehr, weil wir verwenden wollen

currentComp

's Wert (was ist der Comp, den wir gerade erstellt haben).

Das haben wir Zeile für Zeile in Klartext gemacht:

  • Zeile 3: Neue Variable erstellen

    derzeitiges Projekt

    was gleich ist

    app.project

    ob

    app.project

    ist nicht undefiniert und wird sonst gleich

    app.newProject ()

    .

  • Zeile 6: Neue Variablen erstellen

    compSettings

    und

    cs

    was beides gleich einem neuen Array von Werten ist.

  • Zeile 7: Neue Variable erstellen

    defaultCompName

    welches den Namen enthält, den wir unserem Comp geben werden.

  • Zeile 8: Neue Variable erstellen
    currentComp

    das wird gleich der

    activeItem

    Eigentum unserer

    derzeitiges Projekt

    Objekt. Wenn es nicht undefiniert ist und sonst dem Ergebnis des entspricht

    addComp

    Methode der

    Artikel

    Unterobjekt von

    derzeitiges Projekt

    an wen senden wir eine Reihe von Argumenten mit:

    • Name der Komposition
    • Breite der Komposition
    • Höhe der Komposition
    • Pixelverhältnis der Komposition
    • Zeit (in Sekunden) der Komposition
    • Bildrate der Komposition
  • Zeile 9: Verwenden Sie die

    currentComp

    Methode

    openInViewer

    Dadurch wird die Timeline für diese Komposition geöffnet.

Ja, das sind viele Methoden und Eigenschaften. Sie müssen sich auch im Adobe After Effects CS6 Skripting-Handbuch einmal oder anders umsehen, um mehr über die Objekte und ihre verfügbaren Methoden und Eigenschaften zu erfahren. Der Leitfaden ist wirklich gut geschrieben und eine schnelle Suche nach Projektobjekt bringt Sie sofort zu den richtigen Informationen.


Schnelle Javascript-Konzepte

  • Variable: Kann einen Wert, ein Array von Werten oder ein Objekt speichern.
    • var myVar = "Zeichenfolgewert";
    • var myVar = 2;
  • Array: Enthält mehrere Werte. Arrays können auf zwei Arten deklariert werden.
    • var myVar = array ("value1", "value2", 3);
    • var myVar = ["value1", "value2", 3];
  • Funktion: Ein Teil des Codes, der zur Ausführung einer bestimmten Aufgabe entwickelt wurde.
    • Funktion myFunction (Argument) // etwas tun
  • Objekt: Das Objekt ist etwas komplexer, aber für den Moment müssen Sie wissen, dass es Eigenschaften und Methoden besitzt.
    • Eigenschaft: Ähnlich einer Variablen
      myObject.myProperty = "Wert"
    • Methode: Ähnlich einem Funktionsaufruf
      myObject.myMethod (Argument)

Rückgängigmachen von Gruppen

Da während der Ausführung des Skripts viele Operationen ausgeführt werden, sollten Sie entscheiden, was passiert, wenn Sie einen Treffer treffen

ein???? + Z

/

STRG + Z

Das macht es ziemlich einfach, wir müssen nur den Code zwischen

beginUndoGroup ()

und

endUndoGroup ()

Methoden der

App

Objekt. Für diese Methode wird ein Argument verwendet. Dies ist der Name, der in After Effects angezeigt wird

Bearbeiten> Verlauf

Speisekarte.

app.beginUndoGroup ("Demo Script"); // Projekt erstellen var currentProject = (app.project)? app.project: app.newProject (); // comp var erstellen 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 (); 

Erstellen der Hintergrundebene

Um unsere Hintergrundebene zu erstellen, verwenden wir die

Schichten

Unterobjekt unserer

currentComp

. Ruf den

addSolid ()

Methode und senden Sie diese Argumente:

app.beginUndoGroup ("Demo Script"); // Projekt erstellen var currentProject = (app.project)? app.project: app.newProject (); // comp var erstellen 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 (); // Hintergrundebene erstellen var backgroundLayer = currentComp.layers.addSolid ([93, 5, 2], "Background", cs [0], cs [1], cs [2]); app.endUndoGroup (); 

Hinzufügen des Gittereffekts

Am besten erstellen Sie ein zentriertes Kreuz, indem Sie den Gittereffekt auf unserer Hintergrundebene verwenden. Um dies zu tun, werden wir unsere verwenden

backgroundLayer

Variable, auf die sich bezieht

currentComp.layers.byName ("backgroundLayer")

und wir werden es benutzen

Auswirkungen

Eigentum.

 // Hinzufügen des Rastereffekts backgroundLayer.Effects.addProperty ("Grid"); backgroundLayer.property ("Effects"). property ("Grid"). property ("Anchor"). setValue ([0,0]); backgroundLayer.property ("Effects"). property ("Grid"). property ("Corner"). expression = "[width / 2, height / 2]"; backgroundLayer.property ("Effects"). property ("Grid"). property ("Color"). setValue ([0,0,0]); backgroundLayer.property ("Effects"). property ("Grid"). property ("Blending Mode"). setValue (2);

Es gibt einige Dinge, die Sie hier beachten sollten. Zuerst die

Eigentum()

Die Methode ist verkettbar, dh Sie können sie mehrmals aufrufen, um die gewünschte Untereigenschaft zu erreichen.

  • backgroundLayer.property ("Deckkraft")

    : Deckkraft der Ebene.

  • backgroundLayer.property ("Effects"). property ("Grid"). property ("Opacity")

    : Deckkraft des Gittereffekts.

Zweitens verwenden wir die Methode

setValue ()

wenn wir einen Wert setzen wollen, aber nicht, wenn wir einen Ausdruck setzen wollen.


Erstellen der Wipe-Ebene

Um den Wipe-Effekt hinzuzufügen, erstellen wir eine neue Ebene und verwenden den Radial-Wipe-Effekt.

 // Erstellen der Wischebene var wipeLayer = currentComp.layers.addSolid ([0.1, 0.1, 0.1], "Wipe", cs [0], cs [1], cs [2]); wipeLayer.Effects.addProperty ("Radial Wipe"); wipeLayer.property ("Effekte"). property ("Radial Wipe"). property ("Wipe"). setValue (2); // Gegen den Uhrzeigersinn wipeLayer.property ("Opacity"). SetValue (50); // Festlegen der Animation für den Wipe-Übergang wipeLayer.property ("Effekte"). Property ("Radial Wipe"). Property ("Transition Completion"). SetValueAtTime (0, 100); wipeLayer.property ("Effekte"). property ("Radial Wipe"). property ("Transition Completion"). setValueAtTime (1, 0); wipeLayer.property ("Effects"). property ("Radial Wipe"). property ("Transition Completion"). expression = "loopOut ('Cycle')";

Wir haben die Methode angewendet

setValueAtTime ()

Keyframes einstellen und a

loopOut ("Zyklus")

die Animationsschleife machen (macht Sinn, richtig?).


Textebene hinzufügen

Das Spielen mit Text ist etwas anders, da Sie die Eigenschaften des Quelltextwerts direkt ändern müssen.

// Hinzufügen einer Textebene var textLayer = currentComp.layers.addText ("Countdown"); var textProperty = textLayer.property ("Quelltext"); var textPropertyValue = textProperty.value; // Quelltexteinstellungen ändern textPropertyValue.resetCharStyle (); textPropertyValue.fontSize = 200; textPropertyValue.fillColor = [0, 0, 0]; textPropertyValue.justification = ParagraphJustification.CENTER_JUSTIFY; textProperty.setValue (textPropertyValue); // Ausdruck zum Quelltext hinzufügen textProperty.expression = "Math.floor (10-fach)"; // Anpassen des Ankerpunkts für die Textebene var textLayerHeight = textLayer.sourceRectAtTime (0, false); textLayer.property ("Ankerpunkt"). setValue ([0, textLayerHeight.height / 2 * -1]);

Wir haben unsere Textwerteigenschaften geändert und verwendet

setValue ()

um es erneut an unsere Textebene zu senden. Wir haben auch einen einfachen Ausdruck verwendet, um unseren Countdown durchzuführen.

Math.floor ()

ist eine Javascript-Funktion, die den Dezimalteil einer Zahl entfernt. Danach zentrieren wir den Ankerpunkt mit dem

sourceRectAtTime ()

Methode.


Ellipsen hinzufügen

Um die Ellipsen hinzuzufügen, verwenden wir die

addShape ()

Methode und geben Sie eine Vektorgruppe und eine Vektorform. Wir werden auch eine kleine Funktion erstellen, um Code-Wiederholung zu vermeiden.

// Formebene für die Kreise hinzufügen var shapeLayer = currentComp.layers.addShape (); // Hinzufügen einer Kreisformgruppe var shapeGroup = shapeLayer.property ("Contents"). AddProperty ("ADBE Vector Group"); // Kreisformen hinzufügen createEllipse (shapeGroup, 200); createEllipse (shapeGroup, 400); // Hinzufügen eines schwarzen Strichs zu den Formen var stroke = shapeGroup.property ("Contents") .addProperty ("ADBE Vector Graphic - Stroke") .property ("Color"). SetValue ([0, 0, 0]); Funktion createEllipse (ShapeGroup, Größe) var ellipse = shapeGroup.property ("Contents"). addProperty ("ADBE Vector Shape - Ellipse"); var ellipseSize = ellipse.property ("Size"). setValue ([size, size]); 

Linie 5 ist sehr wichtig, da Sie das nicht finden können

Inhalt

Dieses Dokument ist weder in der Dokumentation noch in Ihrer After Effects-Benutzeroberfläche enthalten. Vielen Dank an Dan Ebbert für seine Hilfe (http://forums.creativecow.net/thread/227/22280).

Wir haben eine benutzerdefinierte kleine Funktion verwendet, anstatt die Ellipsenerstellung zu duplizieren. Sie können Funktionen beliebig nutzen.

Faustregel: Wenn Sie Codezeilen einfügen, sollten Sie eine Funktion in Betracht ziehen.

Für den Rest haben wir nur die Eigenschaften der Form geändert. Sie können im Adobe After Effects CS6 Scripting-Handbuch nachschlagen, um sie aufgelistet anzuzeigen.

Sie haben vielleicht das bemerkt

var Strich

Die Linie sieht ein wenig anders aus als das, was wir bisher geschrieben haben. Javascript unterstützt die Verkettung über mehrere Zeilen hinweg. Das Ergebnis ist das gleiche und es gibt keinen guten oder schlechten Weg. Es ist eine persönliche Kodierungsstil-Wahl, die Sie vielleicht nicht übernehmen möchten.


Fazit

Die Möglichkeiten der Skripterstellung sind endlos und können, sobald sie beherrscht werden, zu einem wirklich leistungsfähigen Werkzeug werden. Hier finden Sie weitere Dokumentation zu Scripting und Javascript:

  • Adobe After Effects CS6-Skripthandbuch
  • MotionScript
  • Javascript auf Codeacademy
  • Einführung in das Schreiben von Skripten