After Effectsのエクスプレッションを使いこなそう!ランダム設定や関数の説明も

2022.09.09
After Effectsのエクスプレッションを使いこなそう!ランダム設定や関数の説明も

コンポジット、してますか?

映像界のPhotoshopsとよばれ、VFXやモーショングラフィックスの制作などに大活躍のAfter Effectsですが、もっと効率的に使いこなす方法があるのをご存知でしょうか。

それはずばり、スクリプト言語を用いたエクスプレッション制御です!




エクスプレッション制御とは

After Effectsに標準搭載されている機能です。

エクスプレッション制御をするには、レイヤーに直接ECMA Scriptを記述するか、ピックウィップ機能を使います。これにより、記述された構文に従った挙動をさせたり、特定のレイヤーとレイヤーを連動させたり、乱数を用いたアニメーション制作が可能になります。

レイヤーに記述するECMA Scriptは、After Effects特有の関数があったり、記述をある程度簡略化してもよいなど、ベースとなるJavaScriptといくつか違う部分があります。また、記述時には自動で入力候補を出してくれるなど、非エンジニアの方にも優しいつくりになっています。

ピックウィップ機能は、プロパティとプロパティを鞭のようなものでつなげることで、参照リンクを自動的に記述してくれる機能です。

エクスプレッション制御は、あらかじめ記述しておくのが大変だったり、せっかく書いた構文がエラーで動かなくなったりと、慣れないうちは時間がかかってしまい「エクスプレッションを使わずに手動でアニメーションを作ったほうが早いんじゃないか?」と不安になってしまうようなクセの強い機能です。しかし、使いどころを抑えてメリットを生かすことで有効に活用することができます。

エクスプレッション制御をつかうメリット

エクスプレッション制御のメリットは乱数生成連動、編集のしやすさです。

wiggleやrandomといった、乱数を生成する関数を用いることで、有機的な動きや不規則などの、人力での表現が難しいアニメーションを簡単に制作することができます。

また、特定のレイヤー同士の情報をリンクさせることで、連動したアニメーションを制作することが可能です。個別にアニメーションをさせる必要がないほか、変更が一度で済むなど、修正作業を短縮化させるという側面もあります。そのほか、あとから変更になりそうなプロパティを外に出しておくことで、修正作業を時短化することができます。

それでは、エクスプレッション制御を用いてサンプルアニメーションを作ってみたいと思います。

エクスプレッション制御を使ったサンプルアニメーションの制作

それではサンプルアニメーションとして、何かのシンクロ率を表す数値とグラフのアニメーションを作っていきましょう。

null

シンクロ率は常に変動し、それによってリアルタイムに数値も変動、下にあるグラフも連動して動くものとします。

このアニメーション制作工程を分解すると、以下の3工程となります。

1.ランダムに動く数字の値を決める
2. “番号”エフェクトを使い、数字のアニメーションをつくる
3.グラフが伸び縮みするアニメーションを作る



このアニメーションをそれぞれエクスプレッション制御あり、なしの2つで制作していきます。

エクスプレッションなし

50%付近をランダムに前後するようなアニメーションにしたいので、キーフレームを打って50前後の数字を行き来するアニメーションを制作します。
数字がランダムに変化しているようなアニメーションが制作できました。

null

ランダムっぽく変化してるように見える!

次に、数字に合わせて伸び縮みするグラフを制作します。

アンカーポイントをグラフの左端に設定します。これで、左端を基準にグラフが伸び縮みするようになります。グラフのスケールの鎖ボタンを押し、XYの同期をオフにします。

X(横幅)部分にキーフレームを打ちます。この時、数字のキーフレームと同じ位置に同じ数字を入力すると、数字とグラフが連動しているアニメーションになります。

null

上記のように、同じ位置にキーフレームを打ちましょう。
これで完成です。

null

こうして、シンクロ率が変動するアニメーションをつくることができました。
制作にかかった時間は5分くらいです。

エクスプレッションあり

数字が変化するアニメーションには関数を使用します。
”値/オフセット/最大乱数”プロパティでAltキーを押し、下記の文章を入力します。

wiggle(3,5)+50



これはwiggleとよばれるAfterEffects用の関数で、物を揺らしたりするときに使われる関数です。手ぶれ感を足したい時や、AE内のカメラを揺らす時などによく使われています。

wiggleには5つの引数があり、カンマ(,)で区切って指定します。
先述の通り省略して記述することができ、後半3つは省略してもOKです。

引数は(1秒間に揺れる回数,揺れる量,細かさ,大きさの倍率,時間)となっており、先程入力した関数は「1秒間に3回値が5変動する」というアニメーションです。

変動する5の値はマイナス方向にも動くので、1秒間に3回値がランダムに±5変化するアニメーションができました。このままだと小さな数字になってしまうので、関数の後ろに+50と記述します。

これで50を基準に1秒間に3回値がランダムに±5変化するアニメーションが制作できました。
整数表示なのでわかりづらいですが、手動よりもランダム性が高くなります。

null

グラフのアニメーションを制作

次にグラフのアニメーションを制作します。
アンカーポイントを左に設定し、スケールのXY同期を外します。

ピックウィップ機能をつかい、数字の値をグラフの長さと同期させましょう。
スケールプロパティ右側にあるぐるぐるボタンをクリックしっぱなしにすると、鞭のようなものが伸びてきます。鞭をぐぐっと伸ばし、”値/オフセット/最大乱数”につなげましょう。

ぐるぐるをひっぱって繋げます。

null

すると、スケールの部分に下記の関数が記入されます。

temp = thisComp.layer(“数字”).effect(“番号”)(“値/オフセット/最大乱数”);
[temp, temp]



tempは定数で、どういう文字列でもいいのですが、初期ではtempと入力されます。
定数がよくわからないという方は連立方程式とかに出てくるxやyの仲間だと思ってください。

ここに書いてある関数を日本語に訳すと以下のようになります。

私tempは = このコンポジションにある.“数字”という名前のレイヤーの.“番号”エフェクトの“値/オフセット/最大乱数”の値と同じ値になります。



つまり、数字に連動してグラフの大きさが変わるよ、という意味です。

本来であれば、スケールプロパティに自分で記述しないと情報を読みに行ってくれないのですが、ピックウィップ機能を使うことで、わずか3秒くらいで自動で書いてくれます。

ではこれで動画を書き出してみましょう。
すると…

null

数字に合わせてグラフが伸び縮みしていますが、縦の大きさも変化しています。
このままではよくないので、構文を修正します。

temp = thisComp.layer(“数字”).effect(“番号”)(“値/オフセット/最大乱数”);
[temp, 100]



null

2行目にある[temp,100]は、それぞれ[横の大きさ,縦の大きさ]ですので、縦の大きさに100と入力することで、縦の大きさは100%のまま変わらず、横の長さのみが連動してアニメーションするようになりました。

これにて制作完了です。かかった時間は約5分です。

修正が必要なとき

できあがったシンクロ率のアニメーションに以下の要望・修正が入ったとしましょう。

50%はシンクロ率高いから、もっと低くしたいな



確かに最初からシンクロ率が高いのはすこし違和感があります
ですので、20%前後で上下するようなアニメーションに修正しましょう。

エクスプレッションなし

数字の部分に入力してあるキーフレームをすべて20%前後に入力しなおします。
今回はキーフレームが10個あるので、10個すべてを修正します。

null

同時にスケールのアニメーションもすべてのキーフレームを修正します。
キーフレーム作業に関してはほとんどやり直しになるので、修正に3分ほどかかってしまいました。

エクスプレッションあり

”値/オフセット/最大乱数”に書いてある構文の「50」を「20」に修正します。

wiggle(3,5)+20



null

エクスプレッションの数字を変えるだけですので、修正は10秒で終わりました。

修正内容にも左右されますが、エクスプレッションありで制作した場合は、非常に少ない修正作業で対応できます。解説のために記述が長くなっていますが、実際にはどちらも同じくらいの時間で制作できました。

人力でランダム性を表現するのは難しいので、wiggleやrandomといった、乱数をあつかうエクスプレッションを使用すると、手早くランダム性を表現することができます。

並べて見比べてみると、手動で作ったアニメーション(左)よりも、エクスプレッションで作ったほうアニメーション(右)のほうがランダムな動きに見えると思います。

手動でつくったほう エクスプレッション制御でつくったほう
null null

※グラフの動きに注目するとわかりやすいです。

今回のようにランダム性が求められるものや、連動して動くもの、後から変更になりそうな部分などは、特にエクスプレッション制御と相性がよいので、あらかじめ仕込んでおくと表現の幅が広がったり、時短になります。

エクスプレッションを使いこなしてAfter Effectsをハックしよう

今回のサンプルデータ制作はこれにて完了ですが、シンクロ率100%を超えてもになってもグラフがはみ出ないようにしたり、if構文を使って、シンクロ率15%以下なら”出撃可”を”出撃不可”にしたり、シンクロ率400%になったら文字を真っ赤にするなど、様々なアニメーションを制作することができます。

わたしたちキャンバスは、お客様の要望に沿った映像制作が可能で、あなたからのお仕事を随時受け付けております。お仕事の依頼をご希望の場合は、お問い合わせフォームよりお気軽にご連絡ください。




CANVAS MAIL
SEARCH
SERVICE
弊社の営業資料や企画書、
販促チラシ、実績資料、
動画データ等を
ダウンロードできるサービスです。
東京オフィス
〒107-0052 東京都港区赤坂9-5-26
AKASAKA HEIGHTS 301
名古屋オフィス
〒464-0037 名古屋市千種区楠元町2-60-2
LOFT 3B
大阪オフィス
〒530-0001 大阪府大阪市北区梅田2-5-13
桜橋第1ビル304
金沢オフィス
〒920-0024 金沢市西念4-24-30
MGビル302
富山ヘッドオフィス
〒939-8204 富山県富山市根塚町1-1-4
ASNビル2F
ベトナムオフィス
Unit 615-617, 6 Floor, IMC Building, 62 Tran Quang Khai, Tan Dinh Ward, District 1, Ho Chi Minh City, VIETNAM