2010-12-15 11 views
5

パーティクルシミュレーションに基づいてOpenGLで火災エフェクトをレンダリングしたい。私は位置と温度(したがって色)を持つ何百もの粒子を持ち、他のすべての性質を持っています。パーティクルが広すぎると、glutを使用してsolidSphereをレンダリングするだけでは現実的ではありません。パーティクル情報に基づいてどのように火をつけることができますか?OpenGLのレンダリング

+0

補間する必要がありますか、これを行う方法がありますか? – ccook

+0

はい、私はまだそれに精通していないので、私はOpenGLでこの補間を行う方法を探しています。固体の動的モデルのいくつかの並べ替え...透明性は、端に現実的な火を作ることも重要です – Etan

答えて

5

あなただけのリアルな火災の効果を作成しようとしている場合は、私はいくつかの種類を使用します他の回答で推奨されているように、既存の図書館のしかし、それはあなたがシミュレーションの表示後になっているようです。

試してみる価値のある解決策は、現在の球体を、真ん中が白で、端に向かって透明になるように看板(すなわち、常にカメラに向かっているグラフィックイメージ)で置き換えることができます。あなたのパーティクルに。

より良い解決策は、グリッド上の各頂点の透明度と色を制御できる2Dグリッドのセットとしてフレームに近づけることです。 OpenGLでは、クワッドからプレーンを作成し、パーティクルシステムを使って各頂点の色と透明度を計算します(最も近いパーティクルからの補間によって)。 OpenGLは頂点間の各ピクセルを補間し、「領域内の平均粒子」を滑らかに見せます。

+0

ニース!後者はプロシージャルテクスチャとして実装できます。うーん...いいえ、理にかなっていません。それぞれのフラグメントシェーダのインスタンスには多すぎることが多分あります。そのため、フレームを作成する前に、フレームごとにそのテクスチャを作成する必要があります。 – Kos

+0

ありがとうございます。それらの2次元グリッドに関する情報を追加してください。 – Etan

+0

あなたが達成したいものを正確に知っていれば、本当に役に立ちます:シミュレーションをリアルタイムで描くか、特定のスチルをレンダリングしようとしていますか?あなたはそれが忠実にシミュレーションを表現したいのですか、それとも目に見えるはずですか? – Elemental

5

あなたはおそらく火の効果をレンダリングするためにパーティクルシステムを使用したい、ここにちょうどそれを行う方法について訥河のチュートリアルがあります:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=19

+0

私は彼らがどのように動作するかを知りたいので、既存のパーティクルシステムを使用したくない;-) – Etan

関連する問題