新 3D クラス開発日記(9) ~ 頂点を使った 3D 表現<2> FogEffect 編 ~
2007/02/10 21:23 - AS3.0
頂点を使った最もプリミティブな 3D 表現に FogEffect を追加したサンプルです。
以下、直径 75 の環状編隊の例で、それぞれの場合の模式図と Swf を使って説明します。
模式図は Swf を上から見たもので、横軸が X 軸、縦軸が Z 軸に相当します。 下が Swf 画面手前、上が Swf 画面奥になります。
そして、模式図の黄色で囲まれた領域がアルファ値変動の範囲です。
模式図上、黄色い領域の上の方ほどアルファ値は小さくなり、下の方ほどアルファ値は大きくなります。
なお、模式図上の黄色い領域の最上部がアルファ値 0 の場所なので、それよりも上の部分(Swf では奥の部分)は、当然、アルファ値 0 未満となり、表示オブジェクトの表示はありません。
ここで示しているサンプルは、以下のソースに入っている WorldVertex.as のクラスプロパティ部分で記述している FogEffect のコメントアウト切り替えで、全種試すことができます。
- ソース( fog.zip 17.9 KB )
WorldVertex.as と Aq3D.util フォルダおよび FogEffect.as 以外は、前回のソースと同じものです。
marker : 0 , range : 100 , flg : 1
最も一般的な使い方になるであろう事例のサンプルです。
環の直径は 75 に設定していますので、各頂点は最も奥まったときでも、その Z 座標値は 75 を超えることはありません。
ここでは marker を Swf ステージの中央である 0 とし、range は Z 座標最大値よりも大きく設定しています。 それゆえ頂点が最も奥まったときでも、その表示オブジェクトが消えることはありません。
次にアルファ値変動の開始位置である marker を動かした場合の説明に入ります。
分かりやすくするために、まず marker は 0 で変動範囲 range を環の直径と同じ 75 にしたものを示ます。
その後、range の値は環の直径と同じまま、marker だけ手前と奥に動かしたサンプルを示します。
marker : 0 , range : 75 , flg : 1
まず marker が 0 のサンプルです。 このように、一番奥まった頂点は消えることになります。
marker : -25 , range : 75 , flg : 1
これは marker を手前側に 25 移動したサンプルです。
range 範囲もそのまま手前に移動するので、模式図上では上部にある 3 つの頂点が消えることになります。
marker : 25 , range : 75 , flg : 1
次は marker を奥側に 25 移動したサンプルです。
range 範囲もそのまま奥に移動するので、全頂点が消えずに表示されることになります。
marker : 0 , range : 100 , flg : -1
これは一番初めに示した、最も一般的な使い方になるであろうサンプルの、flg を反転させたサンプルです。
画面上手前になる程、頂点のアルファ値が小さくなります。
自分で作っておいて何ですが、このパターンに使い道があるのかどうかちょっと分かりません。