« Flashで逆光効果フィルター。一般公開 « » 【紹介】AAブログツール »

2007年02月08日

 Flashで逆光効果フィルター。一般公開 ― 細かい設定このエントリーを含むはてなブックマーク

しっぽのブログ: Flashで逆光効果フィルター。一般公開の補足記事です。
上のリンクがメインなので、先にそこから見てください。

ちょっと文章が硬くなります。

BacklitGlowとBacklitBlurの違い

BacklitGlowのほうが軽く、光の範囲を把握しやすいですが、BacklitBlurのほうが自然の表現に近くなります。
また半透明のMCに正確にエフェクトをかけることができるのはBacklitBlurのほうだけです。

基本設定

前の記事で

import sippo.effect.*;
var baklit:Backlit = new BacklitGlow([対象のMC], エフェクトを乗せるMC, サイズ, アルファ);

もしくは

import sippo.effect.*;
var baklit:Backlit = new BacklitBlur([対象のMC], エフェクトを乗せるMC, サイズ, アルファ);

と書きましたが、実はこの設定項目はもっとあります。

([対象の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です。

途中変更

幾つかの変数は、フィルターをかけている途中で変更ができます。
シーンによって明るさなどを変えることができます。

import sippo.effect.*;
var baklit:Backlit = new BacklitBlur([mainMc], effectMc, 16, 100);

このような指定をした場合

baklit.size = 10;

というようにフレームに書けば、そこからサイズが10になります。
設定できる値は

size(サイズ)
alpha(アルファ)
color(カラー)
captureOmission(キャプチャー省略値)
filterOmission(フィルター省略値)
strength(コントラスト)
quality(品質)

です。

特殊設定

最初の設定項目には無いが、上の途中設定のようにすることで変更できる値が幾つかあります。
フィルターをかけたのと同じフレームで設定しても問題ないです。

ランダムサイズ
baklit.randomSize = 6;

その名のとおり光のサイズをある程度ランダムにし、チカチカする効果を与えます。数字指定。
数字が大きくなるほどランダムの幅が増えます。
初期値は0

サイズの移動値と移動目標
baklit.vSizeRate= 1;
baklit.vSizeEnd= 3;

2つをセットで使います。数字指定。
vSizeEndの値に向かって、毎フレームvSizeRateだけサイズが動いていきます。
例えば最初にサイズを100に設定し、vSizeRateを1、vSizeEndを10にすると、強い光が徐々に弱まるような表現になります。
vSizeRateは小数で指定するとガクガクすることがあります。

アルファの移動値と移動目標
baklit.vAlphaRate= 1;
baklit.vAlphaEnd= 3;

サイズの移動値と移動目標と同じ使いかたです。
こちらは小数を指定してもガクガクしにくいです。

マージンをとる
baklit.useMargin= true;

画像の上下左右にマージンを取ります。
たまに画面端の光が変になることがありますが、これを指定すると直ることがあります。(悪化することもあります。その場合は画面外を黒く塗ると直ったりします。)
マージンの量はサイズに比例します。
当然指定すると重くなります。

スムース処理
baklit.captureSmooth = false;
baklit.filterSmooth = false;

falsと書くと、スムース処理が消え光がモザイク状になります。
それぞれ、キャプチャー省略値, フィルター省略値を設定してるときにしか意味がありません。
両方設定し、キャプチャー省略値とフィルター省略値が同じなら完全なモザイク状の光になります。
省略値とモザイクのサイズは連動します。
指定していないときはスムース処理が行われるようになっています。

フィルターを2つ以上かける

フィルターを2個以上かけたい場合は、イコールの前のbacklitというところを変えてやればOKです。

import sippo.effect.*;
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の明度を下げることで、逆光による影の効果を表現できます。