お使いのブラウザは、バージョンが古すぎます。

このサイトは、Internet Explore8・Internet Explore9には対応しておりません。
恐れ入りますが、お使いのブラウザをバージョンアップしていただきますよう宜しくお願いいたします。

AE初心者の方でも有料プラグインを購入しないで済むかも?!簡単に自作できるレンズフレアのチュートリアル③

自作レンズフレアのチュートリアルというこのコラムも今回で最終回となります。これが最後だと理解しないを理解した。とテンションMAXのokokです!今回はエクスプレッションのことがメインなんですが、そんなんでいいの?!い〜んですっ!ってくらい簡単なので
ぜひブヒッ見てってネッ!!

top3

エクスプレッションの活用

前回作成したレイヤーを全て表示すると、全てがコンポジションの中心に配置されていますよね。これを感じよい位置に配置しながら操作も出来るようにエクスプレッションを追加しましょう。この行程がうまくいけば『light』を動かすだけで、関連づけた全てのレイヤーが連動してリアクションしてくれるようになるはずです。
036

シェイプレイヤーのアンカーポイント

では、エクスプレッションをどこに入れ込むかを考えてみましょう。すでに[位置]には『light』にリンクさせた(だけ)のエクスプレッションが記入されていて、それを活かすためにせっかくコピペしてきたのに、ここに追記していくのはなんか手間ですね。
では、[位置]と同じくモーションを制御する[アンカーポイント]を利用してみましょう。しかも、シェイプレイヤーの[アンカーポイント]の項目を見てみると[0.0 , 0.0]と表記されていますね。これが今回のポイントです。この座標は、[位置]のグローバル座標基準とも違うところですし、通常レイヤーの[アンカーポイント]の値とも違っているところなので、今回はこのシェイプレイヤーの[アンカーポイント]の特性を利用してエクスプレッションを設定してみましょう。
037

ここでちょっとやりたいことを整理しておきましょう。初期の段階で仕様をかためておくのは良い行いです。

  • 「親」に対して「子」はほどよく配置したい。
  • 「親」の位置によって「子」は一定ではなく、微妙に変わってほしい。
  • 「親」の大きさによっても「子」の位置は変化してほしい。

なるほど。今回に当てはめると「親」は『light』ですね。ということで、第1子である『flare TypeA』から設定していきましょう。

【AEべんり機能紹介】こんなのあるよ!「シャイ」機能

突然ですが、「シャイ」機能の説明をさせてください。ご存知の方は次の「2次元のエクスプレッション」へどうぞ。
さて、作業を解りやすく進めていく為には、今はそっとしておきたいレイヤーは隠したいって時があります。そんな時は「シャイ」機能を使いましょう。やり方は、隠したいレイヤー(ここでは『light』と『flare TypeA』以外のレイヤー)を選択。(図の中の①)今回はより見やすくするためにコンポジションパネル上でも非表示としたいと思ったので「目玉」アイコンをクリックしときました。んで、「スイッチ」機能の中の一番左端の「ぴょこん」アイコンをクリックして「ぺこん」アイコンにしてください。(図の中の②)そしたら、あなたの目線をちょっと右方向へ。そこに「デカぴょこん」アイコンが見えると思います。それをクリックしてください。(図の中の③)すると『light』と『flare TypeA』以外のレイヤーは見えなくなりましたよね。つまり「目玉」アイコンはコンポジションパネル上の表示/非表示を切り替えるのに対して「シャイ」機能はタイムラインパネル上のレイヤーの表示/非表示を切り替えるという機能になります。表示/非表示を切り替えるだけの機能が2つもあるので、「目玉」アイコンと併用したりしなかったりこっちの都合に合わせて切り替えがおこなえます。私がこの「シャイ」機能を使うタイミングは、クライアントから修正指示が入ったけど、修正前のも念のためなんて時に「シャイ」機能でそのレイヤーを隠しておきます。こうすると万が一の時もすぐに対応出来るし、タイムラインのごちゃごちゃも解決しますしね。もう一度「デカぴょこん」アイコンをクリックすればレイヤーは表示されます。もちろん「ぴょこん」とか「ぺこん」は正式名称ではないですよ。
038

2次元のエクスプレッション

では、『flare TypeA』の[アンカーポイント]にエクスプレッションを追加しましょう。
エクスプレッションを追加するショートカットは、Macならoptionキー、WindowsならAltキーを押しながら「ストップウォッチアイコン」をクリックしてください。
今回は「ピックウイップ」を『light』の[位置]のX座標に紐付けしてください。
039

すると『flare TypeA』の[アンカーポイント]のタイムライン上に

temp = thisComp.layer("light").transform.position[0];
[temp, temp]

と表示されたと思います。
040

前回、エクスプレッションを設定した時は単純に[位置]を元にしただけなので「thisComp.layer(“light”).transform.position」と表示されていますよね。(図の紫枠)今回の[アンカーポイント]をよく見てみると、position(位置)のうしろに「[0]」が追加されていますね。(図のピンク枠
この「[0]」とは「X(横方向)の値」という意味になります。もしこの部分が「[1]」ならば「Y(縦方向)の値」となり、「[2]」なら「Z(奥行き)の値」を参照しているよという意味になります。これにより、細かくX値とY値やZ値に対しての設定が行えるので、代入式が自動的に挿入されたということです。

では、これを元に『flare TypeA』を配置していきしましょう。

数式を利用したエクスプレッション 〜まずは試してから〜

さて、まずは簡単な数式を入れてみてどうなるのか試してみましょう。

pX = thisComp.layer("light").transform.position[0]/-2;
pY = thisComp.layer("light").transform.position[1]/-2;
[pX,pY]

『light』の[位置]の数値を『flare TypeA』の[アンカーポイント]に反映するだけではなく「/-2」しているだけですが、負の数にしてみているところがポイントとなります。つまり「pX」は『light』の[位置(x)]の数値=1920に対して-2を除算しているので答えは-960になりますね。同じく「pY」は『light』の[位置(y)]の数値=1080に対して-2を除算しているので答えは-540になります。
ちなみに「+」は加算、「-」は減算、「*」は乗算、「/」は除算となります。
この状態でなんでこの位置になるのかは説明が長くなりそうなので図にまとめてみました。

041

スミマセン、画像では「pX = thisComp.layer(“light”).transform.position[0]*-0.5;」になってますが、同じ結果になると思いますのでスルーしといちゃいます。

色々試してみよう① 〜ふーん編〜

では、計算式から「/-2」を消してエクスプレッションを実行してみてください。すると、グローバル座標の基準点[0.0,0.0]であるはずの左上に位置したかと思います。
つまり[アンカーポイント]にとっては、[1920.0 , 1080.0]という数値ががグローバル座標の基準点である場所「左上」ということになるのか!ということになりますよね・・・。とにかく、この座標のズレというかそういったものを利用して配置をしよう!ということになります。
042_色々試してみよう①

色々試してみよう② 〜あれ?篇〜

ここでさらなる問題が発生します。『light』を動かしていくと、『light』の[位置]の数値が[0.0,0.0]である時『flare TypeA』の[位置]も[アンカーポイント]も[0.0,0.0]なります。なのに『light』と『flare TypeA』は[位置]のグローバル座標の基準点である左上で重なっています。あれ?[アンカーポイント]の基準点[0.0,0.0]って、コンポジションの中心じゃなかったっけ?・・・動き方も左上を中心に動いているように感じるかと思います。ここで、なんで?と思われた方もいるかもしれませんね。
043_色々試してみよう②

色々試してみよう③ 〜なるほど編〜

じつはってほどではないですが、[アンカーポイント]はその名の通り、オブジェクトをどの位置にピン留めしておくかという機能なのです。他のソフトウェアでいうアンカーポイントというと、だいたいオブジェクト内なんですがAEは侮れません。どこにでも設定できてしまうため逆にわかりづらいんですが、ちゃんとアンカーポイントなんです。これは[回転]をいじってみるとわかりやすいと思います。[アンカーポイント]のエクスプレッションをオフにした時とオンにした時では[回転]の中心位置がちがうと思います。エクスプレッションのオン/オフの切り替えかたは、エクスプレッションエディター内にあるアイコンの一番左端に位置するエクスプレッション使用可能スイッチ(=)アイコンをクリックすることで切り替えられます。エクスプレッションが無効の場合は(=)にスラッシュがつきます。
044_色々試してみよう③

コンポジションの中心を基準点とするエクスプレッション

色々試した結果、オブジェクトが何処にあろうがそのオブジェクトの中心が[アンカーポイント]の基準点[0.0,0.0]になるので、[位置]のグローバル座標に引きずられてしまうということがわかりました。この動き方をどうにかコンポジションの中心からとしたいので

pX = thisComp.layer("light").transform.position[0]/-2;
pY = thisComp.layer("light").transform.position[1]/-2;

uX = 960;
uY = 540;

posiX = (pX+uX);
posiY = (pY+uY);

[posiX,posiY]

としました。はい、もとに戻りましたね。これ必要か?と思われたかもしれませんね。
045

では、ちょっと『light』を動かしてみてください。なんかさっきと違う動き方になりましたよね。これは「pX」は-960なので「uX」に960を代入、「pY」は-540なので「uY」に540を代入して加算しているところがポイントです。仕組みというほどでもありませんが解説をすると『light』を動かすと変数である「pX」と「pY」が変化し、定数である「uX」と「uY」との間に差が生じてなんかいい感じにズレてるんじゃないかと思っています。
046

スケールの数値をポジションに関連づけるエクスプレッション

ここでもうひとつ、『light』と『flare TypeA』の位置関係を、『light』のスケールが大きなるほど『flare TypeA』は離れていって、『light』のスケールが小さくなるほど『flare TypeA』は近づいてくるというようなことをしたいので、thisComp.layer(“light”).transform.position[0]」を複製して「position(位置)」を「scale(スケール)」にしたら・・・

scalX = thisComp.layer("light").transform.scale[0]/50;
scalY = thisComp.layer("light").transform.scale[1]/50;

X = (posiX*scalX);
Y = (posiY*scalY);

という式を追加してみましょう。これで『light』の[スケール]の数値も利用して配置ができるようになります。私は算数も危うい脳みそなので、なるべく解りやすい小さな数値にしたくて「÷50」としました。つまり、『light』のスケール値が100%の時は100(単純に数値だけを代入してくれます。)÷50で答えは「2」となり、「posi〜」に対して「scal〜」を乗算する式を追加して配置するという具合です。
これをまとめると

pX = thisComp.layer("light").transform.position[0]/-2;
pY = thisComp.layer("light").transform.position[1]/-2;

uX = 960;
uY = 540;

posiX = (pX+uX);
posiY = (pY+uY);

scalX = thisComp.layer("light").transform.scale[0]/50;
scalY = thisComp.layer("light").transform.scale[1]/50;

X = (posiX*scalX);
Y = (posiY*scalY);

[X, Y]

となりました。図で確認していただけると違いがわかるかと思います。
047

『flare TypeA』の仕上げ

では、[アンカーポイント]の基本となるエクスプレッションが完成したところで『light』のトランスフォームの横にある「リセット」ボタンを押して数値を全てリセットしたら「uX」と「uY」の値をテキトーに変えて、ほどよい位置に配置しましょう。
048

その他にも[透明度]や[スケール]を変えたりすることもオススメします。このように、1つを変えれば全てが変わる様なエクスプレッションではありませんが、任意の数値を入れたりして、その時の用途に合わせて使い分けてみるのも良いかもしれませんね。全てをオートメーション化することも可能だと思うのですが、私自身はこのカスタム性がハンドメイドの醍醐味だと感じているので、このような仕様になっています。『flare TypeA』の不透明度を『light』と同期していますが、そのスクリプトの後に「-50」と書き込んでみましょう。これだけで『flare TypeA』の不透明度が変化したのがわかるかと思います。
049

とりあえず、『flare TypeA』に追加したエクスプレッションをまとめておきますね。
・『flare TypeA』に追加したエクスプレッション:
[アンカーポイント]

pX = thisComp.layer("light").transform.position[0]/-2;
pY = thisComp.layer("light").transform.position[1]/-2;

uX = 960-240;//ココを変えるだけ
uY = 540-216;//ココを変えるだけ

posiX = (pX+uX);
posiY = (pY+uY);

scalX = thisComp.layer("light").transform.scale[0]/50;
scalY = thisComp.layer("light").transform.scale[1]/50;

X = (posiX*scalX);
Y = (posiY*scalY);

[X, Y]

[不透明度]

thisComp.layer("light").transform.opacity-50

これで『flare TypeA』の設定は終わりました。『flare TypeA』、『flare TypeB』、『flare TypeC』を複製&変更して、いよいよ仕上げに入ります。

仕上げ

ということであとはとにかくひたすらレイアウトしてゆくだけです。必要であればレイヤーを複製したりして[アンカーポイント]のエクスプレッションの中の「uX」と「uY」の値をテキトーに変えたり[不透明度]や[スケール]とかも、色々と個別に設定を変更したりなんてことを繰り返して、仕上げていきましょう。とりあえずエクスプレッションを変更した箇所のみを書き出しておきますが、どんどん自由なレイアウトに挑戦してみてください。


・『flare TypeA 2』(『flare TypeA』を複製したもの)
[アンカーポイント]

uX = 960+430;//ココを変えるだけ
uY = 540+100;//ココを変えるだけ

[スケール]

thisComp.layer("light").transform.scale*2

[不透明度]

thisComp.layer("light").transform.opacity-45



・『flare TypeB』

[アンカーポイント]
uX = 960-768;//ココを変えるだけ
uY = 540+324;//ココを変えるだけ

[不透明度]

thisComp.layer("light").transform.opacity-60



・『flare TypeB 2』(『flare TypeB』を複製したもの)
[アンカーポイント]

uX = 960-420;//ココを変えるだけ
uY = 540-240;//ココを変えるだけ

[スケール]

thisComp.layer("light").transform.scale*1.6

[不透明度]

thisComp.layer("light").transform.opacity-40+wiggle(2, 100)



・『flare TypeB 3』(『flare TypeB 2』を複製したもの)
[アンカーポイント]

uX = 960-1724;//ココを変えるだけ
uY = 540-244;//ココを変えるだけ

[スケール]

thisComp.layer("light").transform.scale/1.8

[不透明度]

thisComp.layer("light").transform.opacity-50



・『flare TypeC』
[アンカーポイント]

uX = 960+524;//ココを変えるだけ
uY = 540-136;//ココを変えるだけ

[不透明度]

thisComp.layer("light").transform.opacity-20



・『flare TypeC 2』(『flare TypeC』を複製したもの)
[アンカーポイント]

uX = 960-1346;//ココを変えるだけ
uY = 540+452;//ココを変えるだけ

[スケール]

thisComp.layer("light").transform.scale/1.4

[不透明度]

thisComp.layer("light").transform.opacity-20



・『flare TypeC 3』(『flare TypeC 2』を複製したもの)
[アンカーポイント]

uX = 960-354;//ココを変えるだけ
uY = 540-326;//ココを変えるだけ

[スケール]

thisComp.layer("light").transform.scale*1.4

[不透明度]

thisComp.layer("light").transform.opacity-20

以上、基本として作成した「フレア」3種を5レイヤー分増やして、8レイヤーとしました。
051

仕上げのおまけ

その他、『light』と『ray』は画像のルミナンス信号をマスクとして利用して奥行きをだしてみたり、「エフェクト/描画/4色グラデーション」をうまく合成してハレーション気味の色味にしたり『light』の位置に「time」を利用したり、『flare TypeC』の「楕円形パス」の不透明度には「wigle」を追加したりしなかったりでほのかにキラキラさせたりしてみるのもいいかもしれませんね。
050

ちなみに「トランスフォーム:楕円形 1」の[不透明度]に入れてみた「wigle」のエクスプレッションをひとつの例として書いておきますね。


・コンテンツ/楕円形 1/トランスフォーム:楕円形 1:
[不透明度]

num = random(1);
wiggle(10-num, 20)

「wigle」だけだと当然のことですが、ずっとチカチカしてしまうので、たま〜にキラッとする程度にしたくて「random」も使ってみました。が、なんでこんな感じになるのかはよくわかりません。でもいい感じなので「いっか♪」というスタンスです。
052

あっ!あとこんな写真素材も使ったりしてます。
これはiPhoneでPCモニタを撮影したものです。フラッシュを使用して、あえて反射させてフレアを撮影しました。こういったリアルなものも合成するとより画が引き締まりますね。
top2
top1
top3
とにかくどれも難しい作業は一切ありませんので色々試しながらオリジナルのレンズフレアを作ってみてください。


コレで今回の「AE初心者の方でもサードパーティ製の有料プラグインを購入しないで済むかも?!簡単に自作できる「レンズフレア」の作りかた」は終わります。
次回はいつになるかはわかりませんが、この他にも色々とチュートリアルや応用篇をどんどん紹介出来ればなと思っています。
長い間お付き合い頂きありがとうございました。

コメントをどうぞ

メールアドレスは公開されません。* が付いている欄は必須項目です。


お気軽にお問い合わせください。

日本VTR実験室では、お仕事のご依頼、ブログ・コラムのご感想などを受け付けております。
アプリ開発・コンテンツ制作でお困りでしたら、お気軽にご相談ください。
ご連絡お待ちしております。

お問い合わせはこちらから

03-3541-1230

info@nvtrlab.jp

電話受付対応時間:平日AM9:30〜PM6:00