After Effects: Strahleffekt über Ende/Anfang gehen lassen

Der Strahleffekt ist ein Plugin in AE, in dem ich grundsätzlich eine "Anfangs"- oder "Ende"-Koordinate festlegen kann und AE eine Linie zwischen diesen beiden Koordinaten zeichnet, die Linie kann angepasst werden, aber das ist jetzt irrelevant.

Der Strahleneffekt hat auch die Eigenschaft "Länge", die ein Prozentsatz ist, der entscheidet, wie lang die Linie ist. Nehmen wir an, die Länge beträgt 80 %, was bedeutet, dass die Länge auf jeder Seite 10 % kürzer ist. 100 % bedeutet, dass die Linie die Anfangs- und Endkoordinaten vollständig erreicht.

Mein Problem ist folgendes: Wie kann ich die Linie dazu bringen , die End-/Anfangskoordinaten zu verlängern ? Der Strahl wäre dann im Grunde eine Linie mit zwei Fixpunkten. Ich könnte etwas übersehen, aber ist das möglich? Ich habe jede mögliche Kombination von "Strahllinie in ae verlängern" oder "Linie mit Festpunkt" gegoogelt, konnte aber nichts Relevantes finden. Hilfe wird sehr geschätzt, danke!

Antworten (1)

Sie können es nicht mit dem Beam-Effekt machen, wie er ist. Aber…

Eine Problemumgehung wäre, Ihre Start- und Endpunkte entlang der Linie, die sie definieren, weiter nach außen zu verschieben. Ein bisschen Mathematik und ein Ausdruck erledigen das für Sie. Keine Sorge, springen Sie zum Abschnitt tl;dr unten, wenn Sie allergisch gegen Mathematik sind (obwohl wenn Sie dies tun, beachten Sie, dass dieser Ausdruck auf meinem Gesicht Mitleid ist, nicht Verachtung, sondern wirklich).

Die Mathematik

Zwei Punkte kann man sich als einen Vektor vorstellen , dh eine Linie mit Richtung und Betrag. Das Coole daran ist, dass Sie Vektoren sehr einfach mit Skalaren (normale Zahlen mit nur einer Magnitude) multiplizieren können. Was Sie also tun müssen, ist, den durch die beiden Punkte definierten Vektor zu nehmen und dann mit Größenordnungen kleiner als 0 % oder größer als 100 % zu multiplizieren, um den Vektor bis ins Unendliche und darüber hinaus zu erweitern .

Um den Vektor ohne den anfänglichen Offset zu erhalten, subtrahieren Sie einfach einen Punkt vom anderen. Dadurch bleibt uns ein einziger Wert, der die Größe und Richtung des Endpunkts vom Startpunkt aus gesehen enthält. Das ist im Grunde unsere Linie. Alle Punkte auf dieser Linie können durch Multiplizieren dieses Vektors gefunden werden.

Da dieser Vektor vom Startpunkt stammt, müssen wir, nachdem wir ihn multipliziert haben, die Position des Startpunkts wieder hinzufügen, sodass wir die Comp-Koordinaten verwenden. Jeder Punkt entlang der Linie wird also ausgedrückt alsstarting point + distance along the line * (end point - starting point)

Um zu zeigen, dass dies funktioniert, betrachten Sie, wenn die Länge entlang der Linie Null ist. Der Punkt ist starting point + 0 * (end point - starting point) = starting point, und wenn die Länge entlang der Linie 100 % beträgt, sind seine Koordinaten starting point + 100/100 * (end point - starting point) = end point. Jetzt verlängern alle Prozentsätze kleiner als 0 oder größer als 100 % die Linie weiter.

die Einrichtung

Um diesen Effekt zu steuern, benötigen wir einen Schieberegler, der für den Start- und Endpunkt des Strahls unter 0 und über 100 gehen kann. Da der Beam-Length-Schieberegler dies nicht zulässt, verwenden Sie einen Expression-Control-Schieberegler, um die Aufgabe zu erledigen. Wenden Sie also den Effekt „Effekte“ > „Expression Controls“ > „Slider“ an und benennen Sie den Effekt der eigenen Gesundheit halber in length um . Damit der Balken beim Einrichten des Ausdrucks zunächst sichtbar ist, stellen Sie den Schieberegler auf ungefähr 100 % ein.

Natürlich müssen Sie auch den Beam- Effekt anwenden. Richten Sie jetzt die Position des Start- und Endpunkts ein. Sobald wir die Expression angewendet haben, können Sie sie immer noch mit den Wertsteuerelementen bearbeiten, aber Sie müssen die Expression deaktivieren, um sie visuell im Comp-Fenster zu bearbeiten. Da wir den Ausdruck verwenden, um die Länge vorzutäuschen, setzen Sie die Eigenschaft Länge auf 100 %.

Geben Sie hier die Bildbeschreibung ein

der Ausdruck

Hier trifft also der Mathe-Gummi auf die Javascript-Straße. Zuerst machen wir den Ausdruck für den Startpunkt. alt-Klicken Sie auf die Stoppuhr des Strahlstartpunkts , um einen Ausdruck für diese Eigenschaft festzulegen.

Beginnen Sie mit dem Erstellen von Variablen, die mit den ursprünglichen Werten verknüpft sind (verwenden Sie den Pick Whip neben dem Ausdruckseditor, um die Eigenschaften Startpunkt und Endpunkt auszuwählen , um die richtige Syntax zu erhalten. Ihre Zeile sollte so aussehen (vergessen Sie nicht das ;am Ende jeder Ausdrücke funktionieren manchmal ohne sie, aber manchmal wird es schwierig, Fehler zu finden):

var startPt = effect("Beam")("Starting Point");
var endPt = effect("Beam")("Ending Point");

Wir brauchen auch eine Variable, die mit dem zuvor erstellten Längenschieber -Effekt verknüpft ist.

var percentage = 1 - effect("length")("Slider") / 100;
  • Wir teilen es durch 100, weil es ein Prozentsatz ist. Sie könnten dies weglassen und einfach einen Schiebereglerwert von 1 verwenden, um 100 % zu bedeuten, das macht es nur ein bisschen einfacher zu bedienen.
  • Wir ziehen den Prozentsatz von 1 ab, weil wir ihn auf den Startpunkt anwenden. Wenn die Länge 100 % beträgt, liegt der Startpunkt auf dem Vektor bei 0 (und der Endpunkt bei 1).
  • Beachten Sie, dass sich das "length"Bit auf den Namen bezieht, den Sie ihm gegeben haben. Wenn Sie faul waren, wird es nur sagen effect("Slider Control")("Slider").

Wir haben also den Anfang, das Ende und den Prozentsatz definiert. Nun, wie gesagt, wir subtrahieren den Anfang vom Ende, multiplizieren das mit dem Prozentsatz und addieren es wieder zum Anfang. In Javascript sieht das so aus:

percentage * (endPt - startPt) + startPt

Wow, das war einfach. Da Sie Vektoren zu anderen Vektoren hinzufügen und Vektoren mit Skalaren multiplizieren können, müssen wir die Komponenten nie in ihre individuellen Dimensionen erweitern (ich habe Jahre gebraucht, um das herauszufinden, es ist mir peinlich, das zu sagen). Beachten Sie, dass wir, da es die letzte Zeile ist, in der wir den Wert zurückgeben, kein =or varoder irgendetwas benötigen – Ausdrücke verwenden einfach die letzte Zeile, die als Wert für die Eigenschaft ausgewertet wird.

Jetzt wiederholen wir den Vorgang für den Endpunkt, aber wir subtrahieren den Schieberegler nicht von 1. Die Linie oben sieht also so aus

var percentage = effect("length")("Slider") / 100;

Ich lasse Sie den Rest des Codes dafür selbst ausarbeiten.

Oh, ok, hör auf zu schluchzen, hier ist der Ausdruck für beide, für dein Copy-Paste-Vergnügen:

tl;dr

Startpunkt-Eigenschaft

var startPt = effect("Beam")("Starting Point");
var endPt = effect("Beam")("Ending Point");
var percentage = 1 - effect("length")("Slider") / 100;
percentage * (endPt - startPt) + startPt

Endpunkt-Eigenschaft

var startPt = effect("Beam")("Starting Point");
var endPt = effect("Beam")("Ending Point");
var percentage = effect("length")("Slider") / 100;
percentage * (endPt - startPt) + startPt

Mit dem Schieberegler können Sie nun Ihre Länge beliebig einstellen, und der Balken erstreckt sich entlang der Linie, die durch die ursprünglichen Punkte beschrieben wird.

Wow, was für eine qualitativ hochwertige Antwort! Danke dir!