選択したレイヤーに複数のエフェクトをかける

AfterEffects 6.5にはIllustratorやPhotoshopにある「アクション」機能がありません。このため、同じような処理を行いたい場合でも手作業で行う必要があります。例えば1つのレイヤーに複数のエフェクトをかけたい場合にはレイヤーを選択して何度もエフェクトを設定しなければなりません。同じようなエフェクトを複数のレイヤーにかけるような場合には面倒です。
1つのレイヤーまたは選択した複数のレイヤーに対して特定のエフェクトをかけるという処理はJavaScriptで行うことができます。
まずは、タイムライン上で選択された1つのレイヤーにエフェクトをかけてみましょう。以下のスクリプトは、選択したレイヤーにリニアワイプエフェクトをかけます。

layObj = app.project.activeItem.selectedLayers[0];
layObj("Effects").addProperty("リニアワイプ");

実行するとリニアワイプが適用されます。しかし、これでは手作業でやっても同じです。今度は複数のエフェクトをかけてみます。以下のスクリプトはリニアワイプと基本3Dのエフェクトをまとめてかけるものです。

layObj = app.project.activeItem.selectedLayers[0];
layObj("Effects").addProperty("リニアワイプ");
layObj("Effects").addProperty("基本3D");

レイヤーにかけるエフェクトの数だけ

layObj("Effects").addProperty("エフェクトの名前");

を追加すればできあがりです。エフェクトの名前はエフェクトメニューで表示される項目(文字)を、そのまま指定します。
このようにすると複数のエフェクトを簡単に設定できますが、多くの場合はパラメータも同時に指定したいはずです。このような場合には、そのエフェクトで設定できる項目名を指定し、setValueAtTime()を使って指定します。以下のスクリプトはリニアワイプを指定した後に、そのパラメータである変換終了の値を50%に設定するものです。

layObj = app.project.activeItem.selectedLayers[0];
layObj("Effects").addProperty("リニアワイプ");
layObj("Effects")("リニアワイプ")["変換終了"].setValueAtTime(0,50);

setValueAtTime()のカッコの中の最初の値は時間です。キーを打つわけではない場合にはゼロを指定しておきましょう。次の値が、そのエフェクトのパラメータで設定できる値になります。リニアワイプの変換終了は0〜100%なので、その範囲内の値を指定します。
同様に基本3Dの場合は以下のようになります。

layObj = app.project.activeItem.selectedLayers[0];
layObj("Effects").addProperty("基本3D");
layObj("Effects")("基本3D")["スウィベル"].setValueAtTime(0,30);

スウィベルは回転角度なので0〜360の値もしくは、それ以上の値を指定することができます。エフェクトのパラメータを設定するには以下のように指定します。必要な数だけ並べればできあがりです。

layObj("Effects")("エフェクトの名前")["パラメータの名前"].setValueAtTime(0,設定する値);

ここまでは選択されたレイヤー1つだけでしたが、選択された複数のレイヤーに対してエフェクトをかける場合には以下のようになります。選択された数だけ繰り返すための命令for()が追加されています。これを実行すると選択したレイヤーの数だけ基本3Dエフェクトがかかり、スウィベルのパラメータの値が30度に設定されます。

lay = app.project.activeItem.selectedLayers;
for (i=0; i<lay.length; i++)
{
layObj = lay[i];
layObj("Effects").addProperty("基本3D");
layObj("Effects")("基本3D")["スウィベル"].setValueAtTime(0,30);
}

このようにすると、決まったエフェクトを設定することができて便利です。業務内容に応じて書き換えて使ってみてください。




[サンプルをダウンロード]