TOP

ABOUT

PROGRAM

DIALY







エフェクト(10) 疑似ボリュームパーティクル

 1.はじめに…
 年末年始に西川善司さんの3Dゲームファンのためのグラフィックス講座を読み漁っていたら,2005年12月7日の記事の3Dゲームファンのための「ワンダと巨像」グラフィックス講座の中に疑似ボリュームパーティクルというのがあったので,ちょっとやってみました。




 2.疑似ボリュームパーティクル
 普通パーティクルでエフェクトを描画するときは,ビルボードにテクスチャを張り付けて煙や炎といったエフェクトを描画したりするのですが,これだとあくまでも平面に張り付けているだけなので立体感はありません。
 ボリュームレンダリング使えばいいのかもしれませんが,それだと計算コストがかかりすぎます。
そこで,ワンダと巨像の制作チームの人が考えたのが疑似ボリュームパーティクルという手法だそうです。
 西川さんのページに書いてありますが,この手法は視線と光源との位置関係に配慮した光源処理をパーティクルに対して行い,そのパーティクルテクスチャ内にハイライトが出るような表現を行うらしいです。
 「視線と光源との位置関係に配慮した光源処理」という言葉から鏡面反射光(Specular)がどうやら関係しそうです。今回プログラムではDiffuse LightとSpecular Lightをライティングとして与えるようにしてみました。
 あとは「光源処理そのものはパーティクルの頂点単位の大雑把なものになるが…」という言葉から,頂点法線を使いそうなので,ビルボードを構成する4つの頂点に法線ベクトルを与えるようにしてみました。
 で,気になる違いなんですが, ライティングを与える場合と与えない場合で,比較してみると下のようになります。



1枚目の方がライティングをしない場合です。かなりのっぺりしてみえます。
2枚目の方がライティングをしている場合です。1枚目と比べると立体感があるように見えますね。
今回のプログラムは以前つくった煙のエフェクトのプログラムの使い回しで,頂点法線をつけたのと,ライティングを入れた以外は基本的に全く同じプログラムです。
記事を読んで適当に実装してみた『なんちゃんって疑似パーティクル』ですが,おそらく本物の方はもっと奇麗に見えるように色々と細かい工夫をしているはずですので,注意してください。


 Download
本ソースコードおよびプログラムを使用したことによる如何なる損害も製作者は責任を負いません。
本ソースコードおよびプログラムは自己責任でご使用ください。
プログラムの作成にはMicrosoft Visual Studio 2005 SP1を用いています。