Expression Tactics
【1】
エクスプレッション・はじめの一歩

 エクスプレッションはレンダーオートメーションと違い、レイヤーの中でのみ有効なスクリプトです。つまり、After Effects全体に作用するスクリプトは実行不可能ですが、レイヤーの動作に関する要素はエクスプレッションにて制御可能です。

 「レイヤー限定のエクスプレッションって、本当に役に立つのか?」と疑う人も多いのではないでしょうか。たしかに何でもかんでもエクスプレッションが便利と言う訳ではありません。エクスプレッションの得意分野は以下のような事例です。

  • 規則性のあるモーション
  • 反復性のあるモーション
  • 計算で処理可能なモーション(言い換えれば、計算が面倒臭いモーション)

 アニメのコンポジットはどうでしょうか。上記3つにあてはまるレイヤー制御(セルワーク)は結構多いのではないでしょうか。

 例えば、時計の秒針の止めセル(1枚だけの静止画素材)を使って、1秒に6°、カタ・カタ…と回転するモーションを考えてみましょう。

 手作業による制御だと、例えば以下のようになります。


6秒後の角度をレイヤーアウトポイントに設定して‥‥


1秒ごとにキーフレームを打って‥‥


キーフレームを「停止」モードに切り替えて、完成


 これ以外にも方法はありますが、大体こんなところでしょう。

 1秒ごとにキーフレームを打つのは地道で大変です。今回はたまたま6秒だから良いものの、これが12秒だったら手間は2倍です。

 ではエクスプレッションではどうでしょうか。いくつか方法がありますので、2つ作って見ます。まず最初の作例です。



「回転」に対し、エクスプレッションを有効にした後、1行スクリプトを書き込んで完成

Math.floor(time)*6;


 これでおしまいです。すごく簡単。

 文を説明しますと、「秒の小数点を切り捨てた後に、6を掛ける」です。1.0001秒だろうが、1.9999秒だろうが、1 x 6 = 6 で、秒針の6°が得られる訳です。0秒目は0*6で0°、1秒目は1*6で6°、2秒目は2*6で12°、3秒目は3*6で18°‥‥と言う感じで、時間進行を角度に変換するエクプレッションを作っています。

 続いて、2つ目の作例です。


posterizeTime(1);time*6;


 2つ目もこれでおしまいです。超簡単。時間進行を角度に変換する方法は1つ目のエクスプレッションと同じですが、0,6,12,18,24,30...と言う6°ずつの角度の作り方が違います。

 まず、1秒につき1モーションの時間解像度に設定(posterizeTime)した後、秒数に6を掛けています。1秒に1モーションですから、1秒に1回だけ秒針がカタ‥‥と動く訳です。

 どちらもたった1行、しかも文字数は20文字ちょっとです。

 今回の事例のミソは、何と言っても「規則的な秒針のモーション」です。これが不規則で気まぐれなハエの動きなら、手作業の方が良いかも知れませんが、今事例は「不規則では困る、針の動き」です。‥‥もうこれは、どう考えてもエクプレッションの出番としか言い様がありません。手作業でモーションを付ける理由が見当たりません。

 このように、エクスプレッションを使うのは、ちゃんと理由があります。「効率的」であると同時に「映像の表現内容にも適している」からです。エクスプレッションを覚える事で、今までは「手作業と言う選択肢」しか無かったのが、「手作業と自動制御の2つの選択肢」を持つ事となります。


*サンプルプロジェクト: ExpressionTactics1-1.aep.zip (AE Ver.7)

注意1)この解説ページに掲載してあるGIFアニメ画像の再生時間軸は厳正ではありません。GIFアニメはファイルフォーマット自体が厳正な時間軸を保証していないので、再生する環境により再生速度が変わります。

注意2)ここで紹介したスクリプトを実際に使用する際は、使用者の責任において使用してください。


【2】

INDEX


IntegerQ INDEX
h.ezura / afx / ezqnet