アニメーション

【エクスプレッション】基本だけ覚えればOK!動きの自動制御の仕方。

超解読AE! |エクスプレッションの使い方
動きを自動制御できる「エクスプレッション」というのを使ってみたいんですが、初心者には難しいでしょうか?
A子さん
E太郎
大丈夫ですよ!エクスプレッションは難しく見えますが初心者でもすぐに使える機能なので、基本をしっかり覚えておきましょう。

アニメーションの基礎を先に学んでおくと、理解しやすいと思います

超解読AE! | キーを使いこなせ!アニメーションの基本。
【アニメーション】キーの打ち方と種類を解説。基本からしっかりマスター!

続きを見る

エクスプレッションって何?

文章を使ってAEに指示を出す仕組み

エクスプレッションは「Java Script」という言語を使って、AEに対して「これをこうやって動かして!」と指示を出す仕組みです。

言語がわかっていないとどうやって書けば良いかががわからないので難しいですが、基本的な「よく使う記述」だけ覚えておけばすぐに・簡単に使うことが出来ます。

E太郎
「AEを学んでプロ級に使えるようになりたいです!」と英語でどう言うの?と聞かれると英語がわからない場合ちょっと悩んでしまいますが、「おはよう!」が「Good morning!」というのはだいたい誰でもわかりますよね。それと同じく、「基本的なよく使うもの」だけ覚えておけば簡単な操作はすぐにマスターできますよ。

どんなことができるの?

エクスプレッションで出来る事として

  • 他のレイヤーやプロパティに動きをリンクさせられる
  • 動きを自動で繰り返しループさせたり、継続させたりできる
  • ランダムな動きを作ることが出来る

などここではごく一部の紹介となりますが、言語を覚えれば覚えるほど色々な制御が出来るようになります。

E太郎
作ったエクスプレッションはコピーして貼り付けることで、新しく書き直さず、使いまわしもできるので便利ですよ。

サポート的に使うだけならJava Scriptは覚えなくてOK

覚えている言葉は少なくても大丈夫

将来的にとても難しい制御を作りたい場合はJava Scriptをしっかりと学ばないといけませんが、アニメーションを自分で作った上でサポート的に取り入れる分には言語を覚えていなくても大丈夫です。

  • ちょっとの言語
  • 使い時

だけ覚えておけばOKなので、しっかり「基本の部分」を学習していきましょう。

AEには初めからよく使うエクスプレッションがメニューとして用意されているので、身構えずに気軽に使ってみてくださいね。

E太郎
自分が「こういうのはできるかな?」と興味を持てば、新しいエクスプレッションは自ずとその都度覚えていきますので大丈夫ですよ!

エクスプレッションの使い方

エクスプレッションを使う手順は

  1. エクスプレッションを使う準備
  2. エクスプレッションを書く

の2つで、エクスプレッションの書き方は

  1. 自分で記述する
  2. 言語メニューから選ぶ
  3. プロパティピックウイップを使う

の3つです。

E太郎
さっそくそれぞれ詳しく見ていきましょう!

使う準備

Alt(Option)を押しながらクリック

エクスプレッションを使うには、制御をしたい「プロパティ」の「ストップウォッチマーク」を

Windows : Alt

Mac : Option

を押しながらクリックします。

※「エクスプレッションの書き方」の「3.プロパティピックウイップを使う場合」はこの手順は必要ありません


赤文字になったらエクスプレッションで制御できる状態

クリックすると、プロパティの数値が青から赤に変化します。

これでエクスプレッションを使う準備はOKです。

もう一度同じようにAlt(Option)を押しながらクリックすると元に戻ります。

エクスプレッションを記述する方法

自分で記述する

コードを直接入力する

自分で言語がわかっている場合はタイムラインに表示されているエクスプレッションをクリックして記述をします。

後述する「メニュー」の中からエクスプレッションを選んで数値を調整する場合もここで直接記述します。

E太郎
一文字打つと予測でエクスプレッションの候補が出てくるので、よく使うエクスプレッションの「単語」だけ覚えておくだけでも素早く呼び出せます。
これだけは絶対覚えておかないといけない「数式」

エクスプレッションには数式が使われるので、これだけは覚えておくといいかと思います。

  • + :加算(足す)
  • - :減算(引く)
  • / :除算(割る)
  • * :乗算(かける)
  • *-1 :元のエクスプレッションと逆の動き
E太郎
基本的な「算数」の計算と同じです。最後の「*-1」だけちょっと特殊ですが「反対の動き」をさせたい時に使うと覚えておけばOKです。

言語メニューから選ぶ

言語メニューから選択する

エクスプレッションをONにすると赤い数値の下にいくつかボタンが出てきます。

を押すと言語メニューが出てきますので、その中からエクスプレッションを選びます。

カテゴリごとにまとまっているので、初めはこの中から選んであげると覚えやすいかもしれません。

選んだものが自動入力されます。

プロパティピックウイップを使う

プロパティの横についているプロパティピックウイップ(ぐるぐるのマーク)を別のプロパティに引っ張ると、その数値とリンクするようにエクスプレッションが記述されます。

プロパティピックウイップの使い方はこちらの記事を参考に!


超解読AE! | 親子付けって知ってる?ヌルも使いこなせばアニメーションマスターになれるかも
【親子付け・ヌルの基本】別のレイヤーの動きを真似させる方法

続きを見る

よく使うエクスプレッション

ここではよく使いそうなエクスプレッションをいくつか紹介します。実際に記述してみることで効果が覚えやすくなりますので是非AEでエクスプレッションを打ち込んで確認してみてください。

基本の3つ

ウィグル

wiggle(▲,★)

ランダムにガタガタさせる効果です。

▲と★にお好みで数値を入れます。

▲はガタガタの頻度:「1秒の間に何回揺れるか」の設定で小さいとゆったり、大きいと小刻みに揺れます。

★はガタガタの大きさ:大きいほど揺れ幅が大きくなります。

時間

時間を基に回転

time*★

ずっと同じ動きを続けさせたい場合に使う効果です。

回転や色相などぐるぐると巡るようなプロパティに使うと効果的です。

★に数値を入れると、指示した数値をもとにずっと動き続けます。

例)回転にかけて、★の部分に60と記述した場合 →1秒に60度回転します。

ループ

ループ

loopOut("cycle")

キーを2つ以上打ってこのエクスプレッションを適用すると、動きが繰り返されるようになります。

キーフレームをもとにループをさせるのでキーフレームがない場合はエラーになりますので注意しましょう。最後のキーの後に最初のキーフレームが来て動きが繰り返されます。

E太郎
タイムラインが終了するまで永遠にループしてくれるので、わざわざキーをコピペしなくてもよく、便利です。

ちょっと応用編

Adobe公式ヘルプサイトで紹介されているエクスプレッションの例ですが、結構使えるエクスプレッションだと思うのですが

英語から訳されて変な日本語になっていて、初めてだと少しわかりにくいので解説していきます。

レイヤーが円を描くように移動する制御

レイヤーを回転

このエクスプレッション制御を使うと、任意の位置を中心にレイヤーが自動でぐるぐると回るようになります。

var centerOfComp = [ ( thisComp.width / 2 ), ( thisComp.height / 2) ]; var circleOverTime = [ Math.sin( time ) * 50, -Math.cos( time ) * 50 ]; centerOfComp + circleOverTime;

このコードは「位置」プロパティに適用します。

解説

エクスプレッションの解説

前半の var centerOfComp = [ ( thisComp.width / 2 ), ( thisComp.height / 2) ] 

の部分でセンター位置を指定しています。 センター=「このコンポの幅÷2の位置」、「このコンポの高さ÷2の位置」の計算です。

後半の var circleOverTime = [ Math.sin( time ) * 50, -Math.cos( time ) * 50 ]; centerOfComp + circleOverTime; 

の部分で回る大きさを指定しています。[ Math.sin( time ) * ▲, -Math.cos( time ) * ★ ]の▲で横幅、★で縦幅を指定できます。同じ数値を入れることで正円、違う数値を入れることで楕円にすることが出来ます。

E太郎
惑星の軌道などに使うと面白そうですね。

「スライダーコントロール」を使用したウィグルの制御

スライダーで制御

このエクスプレッション制御を使うと、スライダーを使って振動の強さを調整することが出来ます。

temp = effect("スライダー制御")("スライダー");
wiggle( 10, temp );

※こちらのコードは公式ヘルプサイトで紹介されているコードとは少し変えています。

このコードを使うには、2つの手順が必要です。

  1. エフェクト(エクスプレッション制御のカテゴリ)の「スライダー制御」をレイヤーに適用します。
  2. 上記コードを位置プロパティに適用します。
E太郎
この手順をたどると、「スライダー制御」のスライダーを移動させることでガタガタ揺れる大きさを調整できるようになります。

スライダーの仕組み

エクスプレッションの解説

後半のウィグルのエクスプレッションは先ほど「基本の3つ」の項目の中で紹介しましたが、その中の「ガタガタの大きさ」をスライダーにリンクさせるエクスプレッションです。

temp = effect("スライダー制御")("スライダー");の部分でスライダーで数値を指定させることを宣言しています。

E太郎
エクスプレッション制御用のエフェクトは結構いろいろ応用出来て面白いので、遊びながら試してみてくださいね。

エフェクトのかけ方はこちらの記事を参考に

超解読AE! | エフェクトを使おう!
【エフェクト】13種類のカテゴリ紹介と使い方をバッチリ解説。

続きを見る

オーバーシュート

オーバーシュート

キーフレームの移動に自然なバウンドを自動で付けてくれるエクスプレッションです。

位置やスケールなど色々なプロパティに付けることが出来ます。ここでは「位置」プロパティで解説します。


var amp = 40; var freq = 30; var decay = 50;var nK = nearestKey(time); var n = (nK.time <= time) ?nK.index : --nK.index; var t = (n === 0) ?0 : time - key(n).time; if ( n > 0 && t < 1 ) { var v = velocityAtTime( key( n ).time - thisComp.frameDuration /10 ); value + v * amp * .001 * Math.sin(freq * .1 * t * 2 * Math.PI) / Math.exp(decay * .1 * t); } else { value; }

「位置」でアニメーションを作ってから上記のコードを貼り付けましょう。キーはいくつあっても大丈夫です。


バウンドの数値を変えてみる

var amp = 40; var freq = 30; var decay = 50;

最初のこのコードの部分でバウンドの具合を指定します。数値はお好みでいじって調整できますが、意外とこの数値がしっくり来たりします。色々数値を入れて確認してみましょう。

var nK = nearestKey(time); var n = (nK.time <= time) ?nK.index : --nK.index; var t = (n === 0) ?0 : time - key(n).time;

真ん中のこの部分は特にいじるものはありません。「アニメーションのキー」を見つけ出すためのコードです。

if ( n > 0 && t < 1 ) { var v = velocityAtTime( key( n ).time - thisComp.frameDuration /10 ); value + v * amp * .001 * Math.sin(freq * .1 * t * 2 * Math.PI) / Math.exp(decay * .1 * t); } else { value; }

この部分も特にいじるものはありません。オーバーシュートさせるための記述なので特にいじらなくて大丈夫です。

E太郎
基本的にいじるとしたら最初の数値指定だけで大丈夫です。他の難しい式は自分で1から書けなくても普通ですので、コピペで大丈夫ですよ。私も10年AEをやってますが、プログラマーではないので1からは絶対に書けません。笑

時間の経過に伴う回転(時計のような表現)

時計の動きを作る

時計のような動きを作りたい時に便利です。

この制御を作るには時・分・秒の3つのシェイプ(画像素材やテキストなどでも構いません)が必要です。

※この説明中のサンプル画像ではわかりやすいように針の動きを速めています。


時計作りの準備

下準備

時・分・秒の3つの素材のアンカーポイントはあらかじめ回転の中心に調整して、位置も合わせておきます。

ここではわかりやすく時間→A、分→B、秒→Cと説明していきます。

アンカーポイントはこちらの記事を参考にしてみてください。

超解読AE! |アンカーポイントと位置の使い分け。基点をマスター
【アンカーポイント】「基点」を理解したら、アニメーションに強くなれる!

続きを見る

秒針

まずは、C(秒)のレイヤーの「回転」プロパティに

time*6

を適用します。このエクスプレッションを入れることで、1秒に6度ずつ回転するようになります。

1秒に6度回転することで、1分で1周(360度)回転するようになります。


分針の作り方

次に、B(分)のレイヤーの「回転」を、プロパティピックウイップを使ってCの「回転」にリンクさせます。この時点で、Cと同じ回転をし始めます。

回転プロパティに

thisComp.layer("Cのレイヤーの名前").transform.rotation

のコードが記述されているはずなので、末尾に「/60」をつけ足して

thisComp.layer("Cのレイヤーの名前").transform.rotation/60

にしましょう。Cのレイヤーの回転の1/60の速度で回転するようになるのでCが1回転すると6度の位置(1分の位置)に来るようになります。


時間の針の作り方

最後に、A(時間)のレイヤーの「回転」を、プロパティピックウイップを使ってBの「回転」にリンクさせます。この時点で、Bと同じ回転をし始めます。

回転プロパティに

thisComp.layer("Bのレイヤーの名前").transform.rotation

のコードが記述されているはずなので、末尾に「/12」をつけ足して

thisComp.layer("Bのレイヤーの名前").transform.rotation/12

にしましょう。Bのレイヤーの回転の1/12の速度で回転するようになるのでBが1回転すると30度の位置(1時の位置)に来るようになります。

E太郎
実際にAEでリアルな時計を作る機会はあまり多くないと思いますが「時計風」な表現は覚えておくと結構便利です。

親レイヤーから少し遅れて動かす

親から遅れて動かす

親のレイヤーから少し遅れて子のレイヤーが動くようにするエクスプレッションです。


下準備

まずは親になるレイヤーと子になるレイヤーを用意します。

子はいくつあっても大丈夫です。

親に子を親子付けしておきましょう。プロパティのリンクではなく、単純なレイヤーの親子付けでOKです。

親子付けについてはこちらの記事を参考に!


超解読AE! | 親子付けって知ってる?ヌルも使いこなせばアニメーションマスターになれるかも
【親子付け・ヌルの基本】別のレイヤーの動きを真似させる方法

続きを見る

数値によって遅れる度合いが変わる

すべての子のレイヤーの「位置」プロパティに下記のコードを記述します。

var delay = ★;
parent.fromComp( toComp( anchorPoint, time - framesToTime( delay ) ) );

★の部分だけ、自分でお好みで数値を入れましょう。どれくらい遅らせるかの設定です。

親から離れた位置にいるものほど数値を上げてあげると、だんだん動きが伝わるような自然な動きになります。

後半のコードは遅れて動かすための計算式なので、覚えていなくても大丈夫です。コピペでOKですよ。

E太郎
これはモーショングラフィックスなどでも比較的多用できそうなコードです。コピペで★の部分だけ修正すればすぐに使えるので超便利ですよ。

まとめ:エクスプレッションで自動で動きをつけてみよう!

難しいことをしようとすると難しいですが、基礎的なことを覚えておけばとても便利ですぐに使えますね!
A子さん
E太郎
自分で自作するには初心者だとやっぱりちょっと敷居が高いですが、テンプレート化もされているし、よく使う物をテキストメモなどでコピペして保存しておけばすぐに呼び出せて便利ですよ。是非お気に入りのコードを探してみてくださいね。

エクスプレッションを深く理解するのにはこちらの記事もおすすめ!


超解読AE! | 親子付けって知ってる?ヌルも使いこなせばアニメーションマスターになれるかも
【親子付け・ヌルの基本】別のレイヤーの動きを真似させる方法

続きを見る

-アニメーション
-, , ,