Abstrakte Motion Graphics: Part 1 – Expressions


Ziel dieses Tutorial ist nicht meine damalige Vorgehensweise Schritt für Schritt nachzuvollziehen sondern das Video zu analysieren und dann überlegen, wie es möglich ist, dies nachzubauen. Dies ist eine wichtige Sache, die sich nicht nur auf dieses Video anwenden lässt, sondern allgemein nützlich ist. Gucken wir uns das Video nun etwas genauer an. Oben ist es einmal als Video eingebettet. Jetzt möchte ich aber einzelne Frames betrachten um zu gucken, wie dies gemacht werden könnte.

Wir empfehlen:
3D-Projekte in After Effects

In diesem Tutorial kümmern wir uns hauptsächlich um das mittlere Element. Die große Frage nun, was ist das? :D Es sind wie man an diesem Frame hier erkennen kann Stäbchen:

…. genau! Radialer Weichzeichner^^ Also scheinen das nur leuchtende Stäbchen zu sein, die im 3D Raum hintereinander hängen und sich willkürlich bewegen. Dabei wurde diesen ein Radialer Weichzeichner verpasst um sie in diese gebogene Form zu bringen.

Wir erstellen also mal eine weiße Farbfläche mit den Maßen 3 Pixel Breite und 200 Höhe. Diese konvertieren wir in eine 3D Ebene über das 3D Ebene Symbol: 

Nun duplizieren wir diese um wenigstens einen „Anhängling“ zu haben. Zusätzlich dazu erstellen wir eine neue Einstellungsebene, die wir mit Enter „Control“ nennen. Auf diese Ebene werden wir so einige Einstellungen für Expressions hinzufügen, mit denen wir später alle Stäbchen kontrollieren werden. Als erstes muss eingestellt werden, dass der 2. Stab um eine bestimmte Anzahl Pixel hinter dem ersten ist. Diese Anzahl an Pixeln soll später noch verändert werden ohne jede Ebene einzeln zu bearbeiten. Also erstellen wir über „Effekt > Einstellungen für Expressions > Einstellungen für Schieberegler“ einen neuen Schieberegler, den wir „Abstand“ nennen. Jetzt muss das ganze aber so geregelt werden, dass immer die z-Position der Ebene direkt über der ausgewählten genommen werden und der Abstand addiert wird. Das erste was wir machen ist eine Variable für die Ebene jeweils eine über die ausgewählten. Die Variable nenne ich „Oben“.

Oben = thisComp.layer(index – 1);

Der Index einer Ebene ist die Ebenennummer, die ihr hier seht:

Index – 1 ist also der Index der Ebene über der aktuellen. Um nun die Positionen für x und y bei den aktuellen Werten zu belassen braucht es nur die „value“ Eigenschaft.

Oben = thisComp.layer(index – 1);x = value[0];

y = value[1];

Von meinem letzten Tutorial her ist klar was das bedeutet. Jetzt muss nur noch geregelt werden, dass die z-Position immer der, der darüberlegenden Ebene entspricht jedoch plus des in dem Schieberegler festgelegten Abstands. Der Abstandsparameter wird, wie in meinem vorherigen Tutorial erklärt, mit dem „PickWhip“ oder anders: dem ExpressionAuswahlWerkzeug in die Expression eingefügt:

Oben = thisComp.layer(index – 1);Abstand = thisComp.layer(„Control“).effect(„Abstand“)(„Schieberegler“);

x = value[0];

y = value[1];

z = Oben.transform.position[2] + Abstand;

Das letzte was nun noch getan werden muss ist die Variablen den Argumenten des Positionsparameters zuzuweisen.

Oben = thisComp.layer(index – 1);Abstand = thisComp.layer(„Control“).effect(„Abstand“)(„Schieberegler“);

x = value[0];

y = value[1];

z = Oben.transform.position[2] + Abstand;[x,y,z]

Jetzt ist unser erstes Ziel erreicht. Wenn man zum Test nun die Ebene mit der neuen Expression ca. 20 mal dupliziert, dann eine Kamera über: Ebene > Neu > Kamera erstellt und den Abstand-Schieberegler animiert sieht das schon so aus:

Jetzt möchten wir aber auch noch die Position des letzten Stabes verändern, jedoch auf so eine Art, dass der vordere auf seiner Position bleibt und sich die anderen zwischen ersten und letztem verteilen. Als eine Art Treppe:

Um dies nun zu erreichen erstellen wir erst einmal auf unserer Control Ebene „Einstellungen für Punkte“ und nennen diesen Effekt „Position“. Um den nun auch seine Wirkung zu Teil werden zu lassen, löschen wir erst einmal alle duplizierten Ebenen aus dem vorherigen Schritt, bis auf 2: Die eine mit und die 2. Ohne Expressions. Auf der zweiten werden wir nun die Expression für den Positionsparameter noch ein wenig verändern. Als erstes wird der Punktcontroller in die Expression eingefügt:

Oben = thisComp.layer(index – 1);Abstand = thisComp.layer(„Control“).effect(„Abstand“)(„Schieberegler“);

Punkt = thisComp.layer(„Control“).effect(„Position“)(„Punkt“);x = value[0];

y = value[1];

z = Oben.transform.position[2] + Abstand;

[x,y,z]

Jetzt werden X und Y Positionen so verändert, dass sie die X bzw. Y Position der jeweils überlegenden Ebne nimmt und den X bzw. Y Wert des Punktes dazu addiert:

Oben = thisComp.layer(index – 1);Abstand = thisComp.layer(„Control“).effect(„Abstand“)(„Schieberegler“);

Punkt = thisComp.layer(„Control“).effect(„Position“)(„Punkt“);x = Oben.transform.position[0] + Punkt[0];

y = Oben.transform.position[1] + Punkt[1];

z = Oben.transform.position[2] + Abstand;

[x,y,z]

Und an dieser Expression wird weiter auch nichts mehr verändert. Deswegen hier noch einmal die Zusammenfassung:

Als nächstes kommt die Größe. Die Stäbe sollen langsam nach hinten hin kleiner oder größer werden. Auch dies soll über einen Schieberegler kontrolliert werden, den wir jetzt erstellen. Dies muss ich nicht unbedingt noch einmal erklären, denn mittlerweile dürftet ihr das können^^. Auf jeden Fall sollte dieser Schieberegler „Größe“ genannt werden. Außerdem wird dem Stab mit der Positionsexpression eine Expression beim Skalierungsparammeter hinzugefügt. Wir brauchen wieder: a. Die jeweils obere Ebene, b. Den Schieberegler, den wir gerade festgelegt haben.

Oben = thisComp.layer(index – 1);Größe = thisComp.layer(„Control“).effect(„Größe“)(„Schieberegler“);

Jetzt soll die x- und z-Skalierung zwar gleich bleiben aber die y-Skalierung verändert werden:

Oben = thisComp.layer(index – 1);Größe = thisComp.layer(„Control“).effect(„Größe“)(„Schieberegler“);x = value[0];

y =

z = value[2];

Jetzt müssen wir noch das y-Argument bearbeiten. Es soll wieder die y-Skalierung der jeweils oberen Ebene genommen werden und der Größen Wert diesmal jedoch subtrahiert werden, denn die Stäbe sollen ja kleiner werden:

Oben = thisComp.layer(index – 1);Größe = thisComp.layer(„Control“).effect(„Größe“)(„Schieberegler“);x = value[0];

y = Oben.transform.scale[1] – Größe;

z = value[2];

[x,y,z]

Ich habe hier schon die Variablen den Argumenten zugeordnet, denn das ist mittlerweile schon Standard^^. Wenn wir jedoch nun den Größenwert zu hoch steigern passiert folgendes:

Das soll aber nicht so sein. Dies passiert jedoch, sobald der Wert auf der „y“ Variable unter 0 gerät. Um dies zu prüfen brauchen wir ein „if“-Statement, dass viele von euch bestimmt schon aus irgendwelchen Programmier- oder Scriptsprachen kennen werden. Ich nächsten Schritt habe ich „y“ auf „y_vorher“ umbenannt und erst später die Variable y benutzt:

Oben = thisComp.layer(index – 1);Größe = thisComp.layer(„Control“).effect(„Größe“)(„Schieberegler“);x = value[0];

y_vorher = Oben.transform.scale[1] – Größe;

z = value[2];

if ( y_vorher <= 0) {

y = 0;

} else {

y = y_vorher;

};

[x,y,z]

Da das die fertige Expression ist kommt hier noch einmal die Zusammenfassung:

Als letzter Parameter fehlt nun noch die z-Drehung. Diese ist jedoch unkompliziert und schnell gemacht. Als erstes fügen wir bei unserer „Control“-Ebene einmal „Einstellungen für Expressions > Einstellungen für Winkel“ hinzu und nennen diese „Drehung“. Der Rest der Expression kommt uns irgendwoher schon bekannt vor:

Oben = thisComp.layer(index – 1);Drehung = thisComp.layer(„Control“).effect(„Drehung“)(„Winkel“);zRot = Oben.transform.zRotation + Drehung;

Ich denke, wenn man allein dieses Tutorial bis hierhin gelesen hat, versteht man diese Expression ohne weitere Erklärung und Zusammenfassung^^.

Damit wäre jetzt auch schon unser Controller geschaffen. Jetzt müssen wir nur noch die zufällige Bewegung hinzufügen. Dazu nehmen wir noch 2 Effekte in unsere „Control“-Ebene auf: Einmal einen Schieberegler, einen Winkel und ein Kontrollkästchen. Der Schieberegler heißt „Geschwindigkeit“, der Winkel „Zufall“ und das Kontrollkästchen „Expressions verwenden“. Diese drei Controller packe ich nun einmal an die oberste Stelle bei unserer „Control“-Ebene. Damit ist die „Control“-Ebene mit allem ausgestattet was wir brauchen. Sie sollte nun genau so aussehen:

Als nächstes müssen nun diese 3 neuen Controller auch ihre Bedeutung bekommen. Deswegen fügen wir jetzt den vorhin zugefügten Controllern der „Control“-Ebene Expressions hinzu. Damit wir die Auswirkungen auch gut sehen duplizieren wir die Stab-Ebene mit den Expression so oft, dass wir am Ende insgesamt 30 Stäbe haben. Meine Komposition sieht nun also so aus:

Jetzt kommen die Expressions die für die zufällige Bewegung der „Stäbchenschlange“^^ verantwortlich sind. Fangen wir mal mit der Position an. Es sollen zu erst die 3 neuen Controller eingefügt werden. Nebenbei: CB steht für CheckBox also Kontrollkästchen.

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“);Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);

Dann soll eine zufällige Bewegung generiert werden. Das kennen wir ja schon aus dem letzten Tutorial:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“);Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);Stärke = 50;

wiggle(Geschwindigkeit, Stärke);

Jetzt wird aber bei geringen Geschwindigkeiten das „wigglen“ schon ziemlich schnell. Deswegen teile ich die Geschwindigkeit vorher durch zehn. Als nächstes bringen wir das Kontrollkästchen ins Spiel. Zur Vorinformation: Ein Kontrollkästchen gibt im aktiven Zustand den Wert „1“ und im inaktiven „0“. Also kann man dies mit einem „if“-Statement lösen:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“)/10;Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);Stärke = 50;

Expr = wiggle(Geschwindigkeit, Stärke);

if (CB == 1) {

Expr;

} else {

value;

};

Im nächsten Schritt kommt noch der Zufallsparameter hinzu. Dazu lernt ihr mal eine neue Expression:

seedRandom(Wert);

Diese erzeugt bei jedem neuen Wert eine neue Möglichkeit der Wiggle-Expression.  Der Wert ist in dem Fall der „Zufall“-Wert:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“)/10;Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);seedRandom(Zufall);

Stärke = 50;

Expr = wiggle(Geschwindigkeit, Stärke);

if (CB == 1) {

Expr;

} else {

value;

};

Das ist dann die fertige Expression für die Position. Und was kommt jetzt?^^ Die Zusammenfassung:

Jetzt kann man den Geschwindigkeitswert schon einmal auf einen Wert wie „5“ stellen und das Ergebnis bewundern. Auch den Zufallsparameter und das Kontrollkästchen kann man ausprobieren. Jetzt kommt aber auch noch die Drehung. Die Expression der Drehung entscheidet sich aber nicht allzu sehr von der mit der Position:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“)/20;Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);seedRandom(Zufall);

Stärke = 20;

Expr = wiggle(Geschwindigkeit, Stärke);

if (CB == 1) {

Expr;

} else {

value;

};

Das einzige was ich verändert habe ist die Stärke und die Geschwindigkeit:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“)/20;…

Stärke = 20;

Das letzte was nun noch mit zufälligen Werten versehen werden muss ist die Größe:

Geschwindigkeit = effect(„Geschwindigkeit“)(„Schieberegler“)/20;Zufall = effect(„Zufall“)(„Winkel“);

CB = effect(„Expressions verwenden“)(„Kontrollkästchen“);seedRandom(Zufall);

Stärke = 10;

Expr = wiggle(Geschwindigkeit, Stärke);

if (CB == 1) {

Expr;

} else {

value;

};

Hier wurde auch wieder nur die Stärke verändert und der Standardwert der Größe auf 5 gesetzt. Nun möchte ich noch, dass der erste Stab sich kontinuierlich dreht. Um  das auch ohne Keyframes zu schaffen füge ich diese Expression bei der z-Rotation des ersten Stabes ein:

time * 50

„time“ ist ein Parameter der die aktuelle Zeitposition in Sekunden angibt. Wenn man also nur „time“ einfügen würde, wäre die Drehung bei einer Sekunde „1“ bei zwei Sekunden „2“ usw… aber ich möchte das sich das ganze etwas schneller dreht als ein Grad pro Seunde^^. Deswegen multipliziere ich „time“ mit 50, sodass wir bei einer Sekunde eine Umdrehung um 50° haben und bei 2 schon um 100°.

Hier das Endergebnis dieses Tutorials:

Ich hoffe euch dann mal in dem zweiten Teil dieses Tutorials wieder zu sehen, wo wir uns um den Rest des Designs kümmern.

Abstrakte Motion Graphics: Part 2 – Design

Bis dann

MfG

PhSn

Wir empfehlen:
Animation in After Effects

Unsere Empfehlung für dich

Animation in After Effects

Animation in After Effects

Es gibt Animationen und es gibt schöne Animationen. Bei dem einen sehen wir bewegte Elemente, bei dem anderen bewegende Momente. Lerne in diesem 8-stündigen Training, wie Animation in After Effects funktioniert und was eine gute Animation ausmacht.

  • Hocheffektiv: Direkt lernen am Praxisprojekt
  • Disney Rules vorgestellt - die Regeln guter Animation verstehen
  • Animationswerkzeuge in AE und Tipps & Tricks zum Workflow
  • Zum optimalen Verständnis inkl. aller Projektdateien

Dieses Training animiert zu schöneren Animationen. Lass uns was zusammen bewegen!

Zum Training