カメラとの距離でエフェクトを調整したい
ニコニコ動画で見つけたチュートリアル。エクスプレッション基礎編ということで、さほど期待してなかったものの、凄く役に立つものだったので、すぐに試してみました。
元ネタはVIDEO COPILOTのチュートリアルらしいのですが、エクスプレッションはほんと仕事が捗るので、どんどん吸収していきたいです。
エクスプレッションによるカメラ制御(基礎編)
- ヌル『camControl』とテキストA・B・Cを作成し3Dレイヤーにする
- カメラを作成して、ヌルと関連付けをする
- テキストを回転も数値を入れて適当に配置
- ヌルにエフェクト>エクスプレッション制御>レイヤー制御を4点『Target-0』『Target-1』『Target-2』『Target-3』、スライダー制御『targetControl』、チェックボックス制御『ease』を追加する
- 前項で作成したエフェクトをそれぞれ関連付ける(Target-1=A、Target-2=B、Target-3=C、Target-4=ヌル1)
- ヌルにエクスプレッションを入力する
位置のエクスプレッション:
cc=effect("targetControl")("スライダ");
num=Math.floor(cc);
nxtNum=num+1;
start=effect("Target-"+num)("レイヤー").position;
end=effect("Target-"+nxtNum)("レイヤー").position;
if(effect("ease")("チェックボックス")==0){
linear(cc,num,nxtNum,start,end)}
else{
ease(cc,num,nxtNum,start,end);}X回転のエクスプレッション:
cc=effect("targetControl")("スライダ");
num=Math.floor(cc);
nxtNum=num+1;
start=effect("Target-"+num)("レイヤー").transform.xRotation;
end=effect("Target-"+nxtNum)("レイヤー").transform.xRotation;
if(effect("ease")("チェックボックス")==0){
linear(cc,num,nxtNum,start,end)}
else{
ease(cc,num,nxtNum,start,end);}Y回転のエクスプレッション:
cc=effect("targetControl")("スライダ");
num=Math.floor(cc);
nxtNum=num+1;
start=effect("Target-"+num)("レイヤー").transform.yRotation;
end=effect("Target-"+nxtNum)("レイヤー").transform.yRotation;
if(effect("ease")("チェックボックス")==0){
linear(cc,num,nxtNum,start,end)}
else{
ease(cc,num,nxtNum,start,end);}Z回転のエクスプレッション:
cc=effect("targetControl")("スライダ");
num=Math.floor(cc);
nxtNum=num+1;
start=effect("Target-"+num)("レイヤー").transform.zRotation;
end=effect("Target-"+nxtNum)("レイヤー").transform.zRotation;
if(effect("ease")("チェックボックス")==0){
linear(cc,num,nxtNum,start,end)}
else{
ease(cc,num,nxtNum,start,end);}- スライダー制御のキーを打つ(0~2)
動かすとそれぞれの文字の位置の正面までカメラが移動します。
ずれていたらアンカーポイントでオフセットします。これでエクスプレッションによって簡単にカメラ制御ができます。
2点間の距離の値によるエフェクト調整(応用編)
STEP1:準備
画像の差し替えと背景にグラデを敷きます。床画像を接地してモーションタイルでのテクスチャを足します。床画像の境目をぼかすために黒平面を作成し、境界にマスクをかけぼかして、最後にトラックマットにします。
STEP2:エフェクトの追加
奥のテキスト調整用にヌル『fadeControl』を作成し、スライダー制御のエフェクトを2つ追加します(『fadeAmount』『lumAmount』)。テキストに輝度&コントラストのエフェクトを追加します。
STEP3:エクスプレッションを追加
輝度のエクスプレッション:
x=transform.position[0];
y=transform.position[1];
z=transform.position[2];
Cx=thisComp.layer("camControl").transform.position[0];
Cy=thisComp.layer("camControl").transform.position[1];
Cz=thisComp.layer("camControl").transform.position[2];
howFar=Math.sqrt(Math.pow(x-Cx,2)+Math.pow(y-Cy,2)+Math.pow(z-Cz,2));
-.001*thisComp.layer("fadeControl").effect("lumAmount")("スライダ")*howFar;コントラストのエクスプレッション:
x=transform.position[0];
y=transform.position[1];
z=transform.position[2];
Cx=thisComp.layer("camControl").transform.position[0];
Cy=thisComp.layer("camControl").transform.position[1];
Cz=thisComp.layer("camControl").transform.position[2];
howFar=Math.sqrt(Math.pow(x-Cx,2)+Math.pow(y-Cy,2)+Math.pow(z-Cz,2));
-.001*thisComp.layer("fadeControl").effect("lumAmount")("スライダ")*howFar;不透明度のエクスプレッション:
x=transform.position[0];
y=transform.position[1];
z=transform.position[2];
Cx=thisComp.layer("camControl").transform.position[0];
Cy=thisComp.layer("camControl").transform.position[1];
Cz=thisComp.layer("camControl").transform.position[2];
howFar=Math.sqrt(Math.pow(x-Cx,2)+Math.pow(y-Cy,2)+Math.pow(z-Cz,2));
opacity-1*(thisComp.layer("fadeControl").effect("fadeAmount")("スライダ")
*.001*howFar)STEP4:仕上げ
スライダーを調整して、奥が薄くなるように調整します。
さらにカメラの被写体深度をONにし、フォーカス距離を調整します(カメラとフォーカスを当てたいレイヤーを選択して、レイヤー>カメラ>フォーカス距離をレイヤーに設定)。
テキストにモーションブラーもONにします。調整レイヤー『vignette』を作成し、楕円形マスク+トーンカーブで暗くして四隅を暗くします。
パーティクルを設置すると、より空間感が増します。
参考:http://toa-cinematograph.blogspot.jp/2009/12/after-effects_29.html
参考:http://toa-cinematograph.blogspot.jp/2010/01/after-effects.html
