イトウ先生のTipsnote AfterEffects CC 2019 : トレイル(オニオンスキン)

デジタルスケープ 短期集中クリエイティブ講座

デジタルスケープ・AfterEffects・Photoshop・HTML・CSS・JavaScript・1日トレーニング

Web・動画・映像・ゲーム・DTP・CG・Adobe Creative Cloud・キャリア・就活に

イトウ先生のTipsnote:目次

【 AfterEffects CC 2019 :トレイル(オニオンスキン) 】

こんにちは、イマジカデジタルスケープの伊藤和博です。
今回は、AfterEffects CC 2019から、エクスプレッションを使用した「トレイル(オニオンスキン)」をご紹介します。
可視化可能なレイヤーの何らかの動きに対して、視覚的な残像(軌跡)をつける動きのことをトレイルと呼んで説明いたしますが、今回は何らかのキーフレーム運動に、軌跡を残すように見せるエクスプレッションの使い方をご紹介します。
トレイルというよりも、オニオンスキンといったほうがわかりやすい方もいらっしゃるかと思いますが、オニオンスキンはAdobe Animate(旧Flash)のタイムラインにある機能で、トゥイーンの途中の動きをステージ上で視覚的に見る機能になります。今回のエクスプレッションは、見た目としてはAnimateのトゥイーンと同じような見え方になります。
いくつかのメソッドを組み合わせて行いますので、それぞれのメソッドについて解説しながら作り方をご紹介していきます。完成形は以下のように残像が残るアニメーションになります(約5秒。音はなりません)。


さっそくやってみよう!

まずは、Illustratorが使える環境にある方は、モーション用のパスを作成しておきます。Illustratorで新規ドキュメントを1920*1080で作成し、セーフティエリア内にスパイラルを1つ作成し、コピーしておきます。なお、今回はスパイラル運動したかったため、スパイラルを作成するのにIllustratorが便利であるためにIllustratorを使用しているだけで、このパスはAfterEffectsのペンツールなどで作成してももちろんかまいません。

Aecc19_trail001

Illustratorで作成したパスはマスクパスとして使用することももちろん可能ですが、アンカーポイントとポジションに対しては、そのままペーストしてモーションパスとして使用することが可能です。ペーストしたパスの途中のアンカーポイントは自動でロービングキーに変換され、デフォルトで2秒間のアニメーションが作成されます。
AfterEffectsでシェイプレイヤーを作成し、位置トランスフォームを選択して、そのままペーストします。このとき、スパイラルはシェイプレイヤーのアンカーポイントがある場所にペーストされるため、シェイプレイヤーそのものとアンカーポイントの両方を、コンポジションの中心に合わせておいた状態でスパイラルをペーストすると、IIllustrartorのアートボード上に作成したスパイラルの位置と同じ位置でアニメートするようになります。コンポジションの適当な位置にシェイプを作成してしまうと、スパイラルのペースト後に手動で位置合わせを行う必要がでてきます。 。

Aecc19_trail003

Illustratorでスパイラルを作成した際、スパイラルの一番外側で描画を終えているため、AfterEffects上でのいわゆる最初の頂点は、スパイラルの一番外側のアンカーポイントになり、最後はスパイラルの中心になります。ペーストしたままだと、スパイラルの外側から中心方向に対してアニメーションするため、時間反転でキーフレームをリバースした後、終了側のキーを3秒の位置に合わせ、アニメーションの尺を3秒間にしてレンダリングしたものが以下のものになります(約5秒。音はなりません)。



frameDurationとvalueAtTimeメソッド

残像のように見えるようにするには、【現在のレイヤーと同じレイヤーが、少し遅れてアニメーションして現在のレイヤーと同じ動きをし、かつ、残像が増えれば増えるほど、徐々に透明感が高くなる(不透明度の数値が低くなる)】、というように作成するとそれっぽく見えるようになります。
そこで、このシェイプレイヤーを複製し、元のレイヤーの下の階層に移動した後、位置トランスフォームに以下のエクスプレションを書きます。

x = 5;
y = x*thisComp.frameDuration*(index - 1);
thisComp.layer(1).position.valueAtTime(time - y)


Aecc19_trail006

1行づつ見ていきます。

x = 5;

xは変数で、今回は仮に5という数字を持たせていますが、この5は「遅れてスタートするためのフレーム数」になります。5という数字に特に意味はなく、10フレーム遅らせたい場合は10といれておきます。xは変数宣言となりますので、JavaScriptの心得がある方はvar xと書いても、予約語以外であればもちろん問題ありません。

y = x*thisComp.frameDuration*(index - 1);

次に2行目は、変数x(この場合は5)に、このコンポジションにある(thisComp)、自身のレイヤー番号から1を引いた数(index-1)に、フレームデュレーション(frameDuration)を掛け算した値を、変数yに代入する、になります。
この式をそれぞれのレイヤーに書くと取得できる値は・・

一番上の階層にあるレイヤー:5*(1-1)=0
上から二番目のレイヤー:5*(2-1)=5
上から三番目のレイヤー:5*(3-1)=10

となり、下の階層のレイヤーになればなるほど、5づつ増えていきます。なお、frameDurationは、エクスプレッション言語メニューではCompの下層にあります。

Aecc19_trail009


thisComp.layer(1).position.valueAtTime(time - y)

最終行が、この位置トランスフォームに返す値になりますが、これは、このコンポジションの(thisComp)、一番上にあるレイヤー(レイヤー1番)の(layer(1))、ポジションの(position)、現在の時間から変数yの値を引いた値(valueAtTime(time-y))を返す、という意味になります。
xに5を入れているため、このエクスプレッションで取得できる値は6フレーム目から、ということになり、再生ヘッドが6フレームに到達すると、レイヤー1番の6フレーム前の値を返すことで順次動き出す、ということになります。
ここまでを書き出すと以下のようになります(約5秒。音はなりません)。



なお、valueAtTimeは、エクスプレッション言語メニューではPropertyの下層にあります。

Aecc19_trail011

Math.powメソッド

次に、不透明度を設定します。レイヤー1番よりも少しだけ薄くしたいため、複製したシェイプレイヤーの不透明度のトランスフォームに以下のようにエクスプレッションを書きます。

z = 0.75;
Math.pow(z,index - 1)*100


Aecc19_trail007

1行づつ見ていきます。

z = 0.75;

zは、これまでのxやyと同じ変数になり、変数zに0.75という数字を持たせています。この0.75は、ゼロをとって.75と書いても問題ありません。この0.75の意味は、参照するレイヤーの75%相当、を意味しています。参照先レイヤーの不透明度が100%の場合、このエクスプレッションを書いたレイヤーの不透明度は75%になる、という意味です。不透明度75%のレイヤーを参照した場合は75の75%のため、およそ56%となります。

Math.pow(z,index-1)*100

Math.powメソッドは、例えばMath.pow(A,B)の場合、AのB乗を返す、というメソッドです。今回はMath.pow(z,index-1)のため、zに入っている0.75に、自身のレイヤー番号から1を引いた数(index-1)だけ累乗する、になります。このレイヤーは上から二番目にあるため、Math.pow(0.75,(2-1=1))となり、0.75の1乗で0.75になります。上から三番目のレイヤーに書いた場合はMath.pow(0.75,(3-1=2))となり、0.75の2乗になるため、0.75×0.75=0.5625、という数値が得られます。この数字に最後に100をかけているため、0.75は75に、0.56は56、という数値になります。

ここまでを書き出すと以下のようになります(約5秒。音はなりません)。後ろからついてくる星の不透明度が75%になります。



Math.powは、エクスプレッション言語メニューではJavaScript Mathの下層にあります。

Aecc19_trail010

あとは、このエクスプレッションを設定したレイヤーを好きなだけ複製すれば、複製したすべてのレイヤーが、常にひとつ上のレイヤーより5フレーム遅れてアニメーションがスタートし、また、ひとつ上のレイヤーの75%相当の不透明度になることで、複製したレイヤー全てが残像となって見えるようになります。

Aecc19_trail008

最初の複製したレイヤー含め全部で12の複製したレイヤーを設定してレンダリングしたものが最初にご紹介した以下のものになります(約5秒。音はなりません)。



シェイプレイヤーの場合は、リピータープロパティを使用することでこれと同じようなことが可能ではありますが、このエクスプレッションを使うと、シェイプレイヤー以外のレイヤーでもこのような効果を使えること、またエクスプレッションのため、保存して何かの時に再利用が容易になります。いくつかのバリエーションを作成しておき、必要な時にプリセットから呼び出す、というようにすると便利ですので、ぜひ試してみてください。

関連講座

↑ページTOPへ