しっぽのブログ: Flashで逆光効果フィルター。一般公開の補足記事です。
上のリンクがメインなので、先にそこから見てください。
ちょっと文章が硬くなります。
BacklitGlowとBacklitBlurの違い
BacklitGlowのほうが軽く、光の範囲を把握しやすいですが、BacklitBlurのほうが自然の表現に近くなります。
また半透明のMCに正確にエフェクトをかけることができるのはBacklitBlurのほうだけです。
基本設定
前の記事で
var baklit:Backlit = new BacklitGlow([対象のMC], エフェクトを乗せるMC, サイズ, アルファ);
もしくは
var baklit:Backlit = new BacklitBlur([対象のMC], エフェクトを乗せるMC, サイズ, アルファ);
と書きましたが、実はこの設定項目はもっとあります。
このうち、サイズ以降は書かなくても、デフォルトで設定されるようになっています。
それぞれの項目について詳しく書いていきましょう。
[対象のMC]
ムービークリップの名前(パス)が入ります。
両側の[ ]は必ずつけてください。
複数入力したい場合は
[対象のMC1, 対象のMC2, 対象のMC3]
という感じになります。
この数は多いほど重くなるため注意してください。
エフェクトを乗せるMC
エフェクトが実際に描画されるMCです。
中身が空のMCを指定してください。
実はここに_rootと書くことで、エフェクトを乗せるMCの設置を省略できます。
ただし、_rootにした場合、同時に使えるBacklitエフェクトの数が1つ、必ず最も手前に表示される、という制限がつきます。
サイズ
エフェクトの光のサイズです。数字指定。
大きいほうが重いですが、2、4、8、16、32なと、2の指数を指定すると少しだけ軽くなるようです。
1に指定するとジャギーが出るので注意。
アルファ
透明度です。数字指定。
Flashのアルファと同じ使い方をしてください。
光を弱くするときに使えます。
省略すると100になります。
カラー
光の色です。
指定の方法は頭に「0x」(ゼロエックス)をつけて、白なら「0xFFFFFF」赤なら「0xFF0000」のように指定してください。
Flashのカラーパレットからコピーしてくると便利です。(#までコピーしないよう注意)
明るい色で指定してください。
黒を指定すると光が消えます。
また、光が強い部分はどちらにせよ白くなります。
省略すると白です。
キャプチャー省略値
1以上の値を指定してやると対象MCの透明部分を検査するときに手を抜きます。数字指定。
数字が大きくなるほど軽くなり、画質は悪くなります。
軽量化に劇的な効果があるので、重いときはとても有効です。
画質を悪くしていくと細かい部分に光が入り込まなくなり、モザイクのようになっていきます。
省略すると2です。
フィルター省略値
1以上の値を指定してやるとフィルターをかけるときに手を抜きます。数字指定。
キャプチャー省略値より高い数字は指定できません。(指定しても同じ値にされます)
数字が大きくなるほど軽くなり、画質は悪くなります。
軽量化にそこそこの効果があるので、重いときは有効です。
画質を悪くしていくと光がモザイク状になります。
省略すると1です。
コントラスト
コントラストを調節します。数字指定。
基本は2で、1でコントラストが弱く、3以上でコントラストが強くなっていきます。
あまり強くすると白飛びしますし、重くなります。
省略すると2です。
品質
Flashのフィルタ処理の品質です。数字指定。
1が低品質、3が高品質。3以上はありません。
基本的に1を指定しておいて問題ないです
省略すると1です。
途中変更
幾つかの変数は、フィルターをかけている途中で変更ができます。
シーンによって明るさなどを変えることができます。
var baklit:Backlit = new BacklitBlur([mainMc], effectMc, 16, 100);
このような指定をした場合
というようにフレームに書けば、そこからサイズが10になります。
設定できる値は
size(サイズ)
alpha(アルファ)
color(カラー)
captureOmission(キャプチャー省略値)
filterOmission(フィルター省略値)
strength(コントラスト)
quality(品質)
です。
特殊設定
最初の設定項目には無いが、上の途中設定のようにすることで変更できる値が幾つかあります。
フィルターをかけたのと同じフレームで設定しても問題ないです。
ランダムサイズ
その名のとおり光のサイズをある程度ランダムにし、チカチカする効果を与えます。数字指定。
数字が大きくなるほどランダムの幅が増えます。
初期値は0
サイズの移動値と移動目標
baklit.vSizeEnd= 3;
2つをセットで使います。数字指定。
vSizeEndの値に向かって、毎フレームvSizeRateだけサイズが動いていきます。
例えば最初にサイズを100に設定し、vSizeRateを1、vSizeEndを10にすると、強い光が徐々に弱まるような表現になります。
vSizeRateは小数で指定するとガクガクすることがあります。
アルファの移動値と移動目標
baklit.vAlphaEnd= 3;
サイズの移動値と移動目標と同じ使いかたです。
こちらは小数を指定してもガクガクしにくいです。
マージンをとる
画像の上下左右にマージンを取ります。
たまに画面端の光が変になることがありますが、これを指定すると直ることがあります。(悪化することもあります。その場合は画面外を黒く塗ると直ったりします。)
マージンの量はサイズに比例します。
当然指定すると重くなります。
スムース処理
baklit.filterSmooth = false;
falsと書くと、スムース処理が消え光がモザイク状になります。
それぞれ、キャプチャー省略値, フィルター省略値を設定してるときにしか意味がありません。
両方設定し、キャプチャー省略値とフィルター省略値が同じなら完全なモザイク状の光になります。
省略値とモザイクのサイズは連動します。
指定していないときはスムース処理が行われるようになっています。
フィルターを2つ以上かける
フィルターを2個以上かけたい場合は、イコールの前のbacklitというところを変えてやればOKです。
例
var baklit1:Backlit = new BacklitGlow([targetMc], effectMc1, 10, 20);
var baklit2:Backlit = new BacklitGlow([targetMc], effectMc2, 16, 10);
エフェクトを乗せるMCは違うMCを指定してください。
del()指定や、上の変数指定のときも、baklitの部分に注意して指定してください。
背景が白く飛びすぎる
単純に、背景の明度を下げることでエフェクトを打ち消すことができます。
このときFlash8のカラー調整フィルターを使わないでください。
著しく重くなります。
プロパティーパネルのカラーの部分で調節するか、絵の色を直接変えてください。
コツ
Backlitの効果は空気感を出します。
強い光を使うのも良いですが、弱くさり気なくかけるのも面白いです。
他に、対象のMCの明度を下げることで、逆光による影の効果を表現できます。