AfterEffectsのエクスプレッションの中には
- 色、アルファのの情報を取得
するものがあります。それを使うとこんな感じのことが可能です。
テキストの発生とともにCC Particle Systems IIで発生させています。これはレンズフレアでも同じことができます。
sampleImage
こういう場合はsampleImageを使います。これを使うと指定したポイントの色やアルファ値を取得できます。
sampleImage(point, radius = [.5, .5], postEffect = true, t = time)
構文としてはこんな感じです要素(引数)は4つあります。重要なのはpointのところを変数にするところですかね
レンズフレア編
今回はレンズフレアをテキスト上にだけ発生させる方法で説明します
point = effect("レンズフレア")("光源の位置");
s = thisComp.layer("Lens flare").sampleImage(point, radius = [10, 10], postEffect = true, t = time);
linear(s[3],0,1,0,100)
テキストを作成して新規平面にレンズフレアを適用
レンズフレアのレイヤーはスクリーンの合成モードに変更しておきます。
フレアの明るさにエクスプレッション
レンズフレアの明るさのプロパティをエクスプレッションに切り替えます。samleImageはエクスプレッション言語のLayerのGeneralの中に入っています。
レンズフレアの明るさをpoint(変数)に入れる
point = effect("レンズフレア")("光源の位置");
今入った式(メソッド)はそのままにして、上に1行追加してpointにレンズフレアの光源の位置をいれます。行の終わりはセミコロンつけてくださいね。
取得するテキストレイヤーを指定する
s = thisComp.layer("Lens flare").sampleImage(point, radius = [10, 10], postEffect = true, t = time);
次はテキストレイヤーの指定をしたいのでsampleImageの前にテキストレイヤーを記入します。ドットでつなげる事に注意してください。そしてこれも長いのでsという変数に入れるために s=でつなげましょう。
当たり判定をつけるためにlinearを使う
linear(s[3],0,1,0,100)
そして最後は当たり判定ですね。この場合はlinearを使いましたがeaseでも構いません。注意点は対象にする値をアルファにしたいのでs[3]としています。これはRGBAの成分になるのでこうなります。
- s[0] = R
- s[1] = G
- s[2] = B
- s[3] = A(アルファ)
今回はアルファで判定したいのでs[3]を数値として持ってきました。アルファは0~1の間なのでそれに合わせて明るさが0~100で上がるように0,1,0,100としています。おーーわかりにくい。笑
完成
これを知ってもしかしてOptical Flaresこれ使ってるんじゃないかな?とおもいました(個人の感想です)是非みなさんも応用してみてください。
パーティキュラー系だと面白い動きになりそうですね^^
エクスプレッションを使って快適なAE生活を^^