helfen, ein unteres Drittel zu animieren, das durch Ausdrücke positioniert ist

Ich bin neu in der Verwendung von Ausdrücken in After Effects und habe Java zuvor kaum berührt. Mit einigen Online-Tutorials und gesundem Menschenverstand gelang es mir jedoch gestern, eine Titelgrafik für das untere Drittel zu erstellen. Java wird verwendet, um seine Position basierend darauf zu ändern, wie viel Text darin geschrieben ist. Die Titelgrafik wird auf der linken Seite des Bildschirms ausgeblendet, sodass sie beim Schreiben von Text nach links oder rechts verschoben wird, um der Textlänge zu entsprechen. Ich habe den Code unten eingefügt.

s =thisComp.layer("Header title");
x = s.sourceRectAtTime(time-s.inPoint,true).width;

subl =thisComp.layer("Sub title");
subt = subl.sourceRectAtTime(time-subl.inPoint,true).width;

text = Math.max(subt, x) -100;

max = 659.4;
m = Math.min(max, text);

[m, 871]

Also mit ein wenig Text:Grafikposition mit weniger Text

Mit mehr Text:Grafikposition mit mehr Text

Wo ich Probleme habe, ist, dass ich daraus eine animierte Bewegungsgrafik machen möchte, bei der die Grafik einfach zum richtigen Zeitpunkt hinein- und herausgleitet. Wenn jedoch weniger Text vorhanden ist, befindet er sich weiter außerhalb des Frames und es dauert länger, ihn einzuschieben – was bedeutet, dass er nicht mit anderen Teilen der Animation synchron ist. Ich mache mir keine Sorgen um eine konsistente Geschwindigkeit, ich möchte nur, dass sie zur gleichen Zeit erscheint, wie sie mit anderen Animationen übereinstimmen muss. Der einzige Weg, wie ich das genau sehen kann, ist durch weiteres Codieren, wo es ein wenig über mich hinausgeht!

Ich habe versucht, mit Ausdrücken zu animieren, ifdie von der Funktion abhängig timesind, aber dies hat keinen Übergang erzeugt, die Grafik ist sofort von Punkt zu Punkt gesprungen. Ich kann auch nichts zum Erstellen von Keyframes in Java finden, also bin ich mir nicht sicher, wie ich das am besten mache.

Schätze wirklich jede Hilfe, um mich auf den richtigen Weg zu bringen.

Antworten (1)

Es gibt einige eingebaute Funktionen nur für diesen Zweck. Sie finden sie im Interpolationsordner in der Ausdrucks-Dropdown-Liste. Am einfachsten ist die linear()Funktion:

linear(t, value1, value2)

Diese Funktion interpoliert linear zwischen value1 und value2 basierend auf dem Wert von t, wobei 0 ≤ t ≤ 1. Also, wenn t=0die Funktion zurückkehrt value1und wenn t=1sie zurückkehrt value2. Es kann auch fünf Parameter in der Form annehmen

linear(t, tMin, tMax, value1, value2)

In dieser Form wird anstelle des Bereichs 0-1 tder Bereich tMinbis verwendet tMax.

Zusammen mit linear()gibt es auch ease(), easeIn()und easeOut(). Diese interpolieren mit Easing – was bedeutet, dass die Animation am Anfang oder am Ende oder beidem langsamer wird.

In Ihrem Beispiel könnten Sie dies also vor der letzten Zeile hinzufügen:

startTime = inPoint; //if you want the animation to start at the start of the layer
m = ease(time-startTime, 0, animationLength, 0, m)

Dadurch wird die Animation vom In-Point der Ebene für animationLengthSekunden bis zur berechneten Position fließend.

Oh, übrigens, es ist Java- Skript , nicht Java. Das sind völlig unterschiedliche Sprachen. Wie sie sagen, sind Java und Javascript ähnlich wie "Auto" und "Teppich".

Ich nehme an, jeder verwendet diesen Ausdruck seit Jahren ... aber ich denke, das ist FANTASTISCH! Ich glaube, ich habe mich gerade in AE-Ausdrücke verliebt :) Vielen Dank, ich habe mein ursprüngliches Beispiel noch nicht ausprobiert, aber ich habe gerade einen kurzen Test durchgeführt, um sicherzustellen, dass ich verstehe, wie es funktioniert, und ich glaube, ich weiß, wie es funktioniert meine Bewegungsgrafik jetzt! Danke noch einmal!
Expressions sind meiner Meinung nach der mächtigste Teil von After Effects