[After Effects]エクスプレッションを使用し、レイヤー同士の距離によって、スケールを変化させる

▼概要
赤レイヤーと黄色レイヤーの間隔により、赤レイヤーのYスケールを変化させる。
赤と黄色レイヤーの間隔の割合と、赤レイヤーのYスケールの変化を反比例させる。

赤レイヤーと、黄色レイヤーの間隔は、それぞれの中心を基点とし、X軸上の位置を測る。
赤レイヤーのYスケールが変化する際の、赤レイヤーと黄色レイヤーの間隔の範囲は、0~150pxにする。
有効な範囲の最大値を150pxにしたので、赤と黄色レイヤーの間隔が最大値である150pxのとき、これを割合にすると100%になる。

赤と黄色レイヤーの間隔が、割合にして100%以上のとき、赤レイヤーのYスケールは0%になるようにする。
このとき、Yスケールが10%より低くなったときは、Yスケールが10%より低くならないようにする。
赤と黄色レイヤーの間隔が、割合にして0%のときは、赤レイヤーのYスケールは100%になるようにする。

▼二点間の距離を測るメソッド
length(赤レイヤーのX位置、黄色レイヤーのX位置)

▼割合について
割合=現在地÷最大値

▼赤レイヤーのスケールに追加したエクスプレッション
x = 100;
kyori=length(thisComp.layer("イエロー 平面 1").transform.position[0],  transform.position[0]);

wariai = kyori / 150;
wariai = 1 - wariai;
y = wariai * 100;

if (y<10){y=10};

[x,y]
▼エクスプレッションの解説
x = 100;
//↑変数xに100を入れる。Xスケールは変化させないので100%に固定する。

kyori=length(thisComp.layer("イエロー 平面 1").transform.position[0],  transform.position[0]);
//↑赤と黄色レイヤーのX軸上の距離を、変数kyoriに入れる。

wariai = kyori / 150;
//↑距離の割合を求める。

wariai = 1 - wariai;
//↑割合の差を求める。

y = wariai * 100;
//↑割合を%に変換して、変数Yに入れる。

if (y<10){y=10};
//↑Yスケールが10より低いときは、10に設定する。

[x,y]
//↑スケールを設定。

▼赤レイヤーを複製して、横一列に配置した例

複製したレイヤーは、それぞれが、黄色との距離によりスケールを変化させる。

コメントを残す

メールアドレスが公開されることはありません。


9 − 九 =


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>