After Effects - EG Template: Von 2 Keyframes will ich nur den 2. in EG ändern, Hilfe!

Ich versuche, eine neue Essential Graphics-Vorlage in After Effects zu erstellen.

Ich habe eine Animation (im einfachsten Fall handelt es sich um ein Rechteck, das sich von einer festgelegten, kleinen Größe auf - hoffentlich! - eine benutzerdefinierte Größe ausdehnt), die durch Bewegen von 4 Schiebereglern gesteuert werden kann (es war etwas Fummelei erforderlich, aber ich habe eine obere linke Null und eine untere rechte Null und die 4 Schieberegler steuern ihre Positionen (TL X & Y und BR X & Y), die wiederum die Positionen für die vier Ecken des Rechtecks ​​bestimmen).

Nachdem ich jedoch begonnen habe, die Vorlage einzurichten, mache ich mir etwas Sorgen, dass dies nicht funktionieren wird. Das Bewegen des Schiebereglers innerhalb des Vorlagenfensters setzt nur neue Keyframes (so dass die Animation überall ist) und wenn Sie jetzt darüber nachdenken, selbst wenn die Verwendung der Vorlage in PP keine neuen Keyframes erstellt, woher weiß das EG-Bedienfeld? Welcher Keyframe (falls vorhanden) soll beeinflusst werden?

Ich denke, was ich mich wirklich frage, ist, ob wir mit einem Ausdruck bewirken können, dass die Schieberegler nur den LETZTEN Keyframe einer Animation beeinflussen (ich bin kein Ausdrucksgenie, aber ich kann so etwas nicht finden, nachdem ich einigen gefolgt bin ausgiebiges Googeln und ich finde keine Möglichkeit, dies selbst zu schreiben).

Wenn Sie der Meinung sind, dass es einen einfacheren Weg gibt, dies zu tun, lassen Sie es mich bitte wissen!

Antworten (1)

Um den Keyframe-Wert einer Eigenschaft in einem Ausdruck zu verwenden, gibt es ein valueAttribut. Und Eigenschaften haben auch die key()Methode, um auf ihre Schlüssel zuzugreifen, sowie das numKeysAttribut, um herauszufinden, wie viele Schlüssel die Eigenschaft hat. Schließlich gibt es noch das globale timeAttribut.

So, jetzt haben wir die Liste der Zutaten zusammengestellt, hier ist, wie Sie alles zusammenstellen könnten. Dieser Ausdruck verwendet den Keyframe-Wert bis zum letzten Keyframe und übergibt dann die Zügel an das Ergebnis eines Ausdrucks, in diesem Fall den Wert des Schiebereglers:

// link to your slider, or any calculated value:
var sliderVal = effect("Slider Control")("Slider"); 
var lastKey = key(numKeys);
if (time <= lastKey.time){ // before the last keyframe
  // use the keyframe value before the last keyframe
  value;
} else {  // after the last keyframe
  // control using the sliders, or any expression
  sliderVal;
}

Natürlich springt dies beim letzten Keyframe sofort vom Keyframe-Wert zum Ausdruckswert. Sie können zwischen den Werten interpolieren, indem Sie eine der Interpolationsfunktionen verwenden. Um also zwischen dem Keyframe-Wert und dem Ausdruckswert zwischen dem vorletzten Keyframe und dem letzten Keyframe zu interpolieren, könnten Sie Folgendes verwenden:

var sliderVal = effect("Slider Control")("Slider"); 
var k2 = key(numKeys); //last key
var k1 = key(numKeys - 1); //second last key    
// linear can take 5 arguments: 
// time, start time, end time, start val, end val
// and interpolates between start val and end val
linear(time, k1.time, k2.time, value, sliderVal)

Sie können auch die ease(), easeIn()oder easeOut()Interpolationsfunktionen nutzen, die Sie einfach durch ersetzen können linear().

Wow - das ist toll, vielen Dank! Ich bin im Moment nicht in der Lage, das auszuprobieren, aber wenn ich es tue, werde ich Sie auf jeden Fall wissen lassen, wie es läuft. Danke noch einmal!