この記事はAEアドベントカレンダーの1日目の記事です
1.はじめに
レイヤーにモテモテになりたいAE使いのみなさん、こんにちは。最近1コンポあたり50枚ぐらいのレイヤーにモテモテで泣きそうなむらしんです。
今回紹介するカメラテクニックの話ですが、結論からいうと以下のエクスプレッションとなります。
(1)位置用エクスプレッション
comp("コンポ").layer("カメラ").toWorld([0, 0, 0])
(2)方向用エクスプレッションlayer = comp("コンポ").layer("カメラ");
u = normalize( layer.toWorldVec([1,0,0]) );
v = normalize( layer.toWorldVec([0,1,0]) );
w = normalize( layer.toWorldVec([0,0,1]) );
sinb = w[0];
b = Math.asin(sinb);
if (Math.abs(Math.cos(b)) > .0005)
{
c = -Math.atan2(v[0],u[0]);
a = -Math.atan2(w[1],w[2]);
}
else
{
a = ( (sinb < 0) ? -1 : 1 )*Math.atan2(u[1],v[1]);
c = 0;
}
[radiansToDegrees(a), radiansToDegrees(b), radiansToDegrees(c)];
いきなりエクスプレッションがでてきてなんのこっちゃって話ですが、これは記述内のコンポとカメラを任意のコンポ名とカメラ名に変更することで、指定したカメラの絶対位置と絶対角度を求めてくれるエクスプレッションになります。これを新たに作ったカメラの位置パラメータと方向パラメータ(角度パラメータじゃないので注意)に仕込むことで、異なるコンポ間で動きがリンクするカメラを簡単に作成できます。
これが何かと色んな場面で非常に便利で、カットの作り込みやカメラワークの修正作業で威力を発揮してくれます。
あ、なんか普通に真面目な記事になりそう。
いくつか実例を紹介しましょう。
2.カメラをベイクしてエクスポートしC4Dへ
2ノードカメラ(目標点パラメータがあるカメラ)を使う方はヌルと親子関係を作ってカメラを制御する方も多いと思います。しかし、親子を使ったカメラはCinema4D(以下:C4D)上に持っていくと動きが破綻することがあります。
下記のようなカメラワークを作ってみました。カメラとピクトグラムをヌルの子にしてモーションつけています。
これをC4Dにもってくと
カメラがAEの時より大きく回転し動きが破綻しています。
先に紹介したエクスプレッションを使い、カメラの位置と角度パラメータをベイクすることで正しいカメラモーションをC4Dに持っていくことができます。
2.1カメラのベイク方法
新たに1ノードカメラを作成し、位置パラメータと方向パラメータに上記エクスプレッションをコピーしコンポとカメラの記述を書き換えます。後はパラメータを選択してメニューのアニメーション→キーフレーム補助→エクスプレッションをキーフレームに変換を選ぶことでモーションをベイクできます。
またズームなど位置、方向、角度以外のパラメータは元のカメラと同じ値に揃えておきましょう。アニメーションがついてる場合はキーフレームをベイクしたカメラにコピペすればOKです。
新たに作ったカメラをC4D上にもっていくと、AE上と同じ動きになっています。
3.階層の異なるコンポ間のカメラ連携
最近私はある宗教にはまっています。プリコンポイヤイヤ教です。プリコンポイヤイヤ教は本当に必要な時以外はプリコンポを避けなくてはなりません。しかし、マスクやマップ用素材の作成、複数レイヤーの同じエフェクトを一括管理して楽をするためにどうしてもプリコンポが必要になる本能が働きます。
教えに背き、しかたなくプリコンポするのですが、そんな時もこのエクスプレッションはとても役立ちます。
3.1 Element3Dの屈折表現
Element3D(以下:E3D)において屈折表現を擬似的に行う方法の一つとして、E3Dの法線情報とディスプレイスメントマップを用いる方法があります。まずはディスプレスメントマップで指定するマップ用素材のために、E3Dのレイヤーを複製してプリコンポします。プリコンポの中にはエクスプレッションで元コンポのカメラとリンクしたカメラも作成していれておきしょう。
プリコンポ内のE3Dで法線を描画すれば準備OKです。
作成した法線マップ。
あとは元コンポ上でE3Dのレイヤーの下に、この法線マップを指定したディスプレイスメントマップの調整レイヤーを置けば屈折の完成です。
一番上のコンポでカメラワークを変えてもちゃんと描画されます。
3.2 Depth mapの作成
Depth mapは被写界深度ぼけ、霧の表現、3Dエフェクトのオクルージョンなど様々なものに利用できます。同じようにカメラがリンクしたDepth map用のプリコンポを作成してみましょう。
AE上でDepth mapを作成するにはポイントライトを使う手段がありますが、ここではあかつきみさきさんが公開しているAEスクリプト”Z Depth Gradient“を少し改造したものを用意しました(文末にてダウンロードできます)のでそれを使って作ってみます。
このスクリプトは3Dレイヤーを選択して実行するとカメラの距離に応じた濃淡を描画するエフェクトを作成してくれます。
デプスマップは複製したコンポ上のすべての3Dレイヤーにこのスクリプトを適用し、他のいらない2Dレイヤーや調整レイヤーなどを削除すればできあがりです。
作成したデプスマップのプリコンポ。カメラはもちろんリンクしたものを作成しておく。
Depth mapを使ってエフェクト処理をしてみたもの。リンクしたカメラのおかげでカメラワークを修正しても結果がすぐ反映されるため、プリコンポ先でいちいち編集する必要がなく楽ちんです。
4.Elementaryの紹介
AEスクリプトのElementaryを使うことで上記エクスプレッションが適用されたカメラをカメラやオブジェクトを選択した状態でCopyボタンを押し、続けてPasteボタンを押すことで、
各種パラメータをリンクしたコピーオブジェクトを作成できます。
この方法でカメラを複製した場合に注意点があります。対象カメラの角度パラメータにキーフレームや0°以外の値がある場合、
それも自体もコピーしてしまうためコピーしたカメラの向きが元のカメラと異なることがあります。
その場合はコピーされた角度パラメータのキーフレームをすべて削除し、値を0°にしておくことで正しい向きになります。
実例AEPと改造したZ Depth Gradientスクリプトのダウンロードはこちらからどうぞ
(AEVersion:CC、E3Dv2、Lenscareを使用)
この記事に対する 1 の反応があります
コメントをどうぞ!