レイヤーに設定したExpressionが不要になる場合があります。Expressionは削除する以外に一時的に使用しないようにすることができます。Expressionが適用されているレイヤーのプロパティ名の下にエクスプレッションと文字が書かれています。その右側に「=」ボタンがあります。この「=」ボタンをクリックします。これで、Expressionが適用されなくなります。再度適用したい場合には「=」ボタンをクリックします。

「=」ボタンをクリックすると

一時的に適用されなくなる

Expressionを削除する場合には、削除したいExpressionが適用されているレイヤーのプロパティ名を選択します。Expressionの入力欄を全て消去して[Enter]キーを押すか、他の場所をクリックします。

Expressionを削除する場合には入力欄を全て消す

また、削除したいExpressionが適用されているレイヤーのプロパティ名を選択し、「アニメーション」メニューから「エクスプレッションを削除」を選択します。

アニメーションメニューのエクスプレッションを削除で削除

Expressionを使って位置を変える

次に、Expressionを使ってレイヤーの位置を変更してみましょう。レイヤーの位置は回転と異なり、X, Y座標またはX, Y, Z座標の値を返す必要があります。複数の値を返す場合には配列を使います。配列は [と] を使い、値を,(カンマ)で区切って列記します。Expressionの場合、After Effectsが要求している数とExpressionで計算した結果が一致していないとエラーになります。返す値は多くても少なくてもいけません。レイヤーは2Dレイヤー(平面)と3Dレイヤー(立体)がありますが、ここでは2Dレイヤーで説明します。2Dレイヤーの場合にはX, Y座標の2つが必要です。例えば、X座標が200でY座標が150の場合には以下のようになります。

    [50, 120]

位置を変えるには

[50, 120]のように座標を用いる

レイヤーの位置を変化させた

もし、3Dレイヤーであればレイヤー位置X, Y, Z座標の3つになるので以下のように3つの値を返すことになります(*4)。 [50, 120, 40]

レイヤーの位置が固定されていては面白くありませんので、レイヤーをランダムに震わせるExpressionを書いてみましょう。Expressionでは乱数に関する命令(メソッド)が多数用意されています。ここではrandom()を使い、指定した範囲の乱数値を求め、それをレイヤーの位置と加算してみます。これは、特定の位置を基準にして、レイヤーが決められた範囲内で振動する動きになります。random()は、与えるパラメータの数によって動作がことなります。最小値と最大値の2つを指定すると、その範囲内の乱数が返されます。例えば10~20までの乱数値を求める場合にはrandom(10, 20)とします。基準位置を[320, 220]として、random(10, 20)で得られた値を加算するには以下のようになります。

    [320+random(10, 20), 220+random(10,20)]

乱数を設定すると

レイヤーがランダムに震える

タイムラインマーカーを移動させると、レイヤーが震えるのが確認できます。なお、random()が返す乱数値は、毎回同じものになります。本当に乱数値にしてしまうと、毎回レンダリング結果が異なってしまい期待する映像にならなくなってしまうためです。乱数は発生基準となるシード(種)値があります。ExpressionではseedRandom()によって発生させる乱数値のシードを変更することができます。例えば以下のようにすると乱数のシードは1になり、乱数値は時間(time)の影響を受けて生成されます。

    seedRandom(1, false)

時間の影響を受けずに乱数を発生させる場合にはtrueを指定します。

    seedRandom(1, true)

動きに納得できない場合には、乱数のシードを変えてみるのも1つの方法です。

*42Dレイヤーの場合に3つの値を返すとエラーになります。ちなみに返す値が1つの場合、[45]のように配列形式で指定しても正しく動作します。また、"45.6"のように文字列で返しても数値に変換され、正しく処理されます。ただし、"12+34"のように計算式を文字列として指定するとエラーとなります。これはJavaScriptのparseFloat()で変換できる文字列のみ受け付けるということになります。"3e+2"のような指数形式でも問題なく変換され結果として反映されます。