このゲームでアルゴリズムがどのように機能するか知りたい:http : //www.gametrailers.com/user-movie/cloud-the-game/45068
特に、ゲームがどのようにリアルタイムクラウドを生成し、他のクラウドと動的にマージできるか。
いくつかの情報をグーグルで検索しようとしましたが、有用な情報を見つけることができませんでした。おそらく間違ったキーワードに慣れていたからでしょう
このゲームでアルゴリズムがどのように機能するか知りたい:http : //www.gametrailers.com/user-movie/cloud-the-game/45068
特に、ゲームがどのようにリアルタイムクラウドを生成し、他のクラウドと動的にマージできるか。
いくつかの情報をグーグルで検索しようとしましたが、有用な情報を見つけることができませんでした。おそらく間違ったキーワードに慣れていたからでしょう
回答:
クラウドレンダリングは難しい作業です。しかし、ビデオ内のこれらの雲は、「曇った」粒子のほんの一部です。それはいいことだとは思いません:)
素敵な雲の問題は雲のシミュレーションではなく、雲のレンダリングです。動的な照明のあるシーンでリアルタイムに写真をリアルに処理することは不可能です。クラウドのような参加メディアで何が起こるか:
発光は、参加しているメディアが(高温ガスや火のように)発光する場合、またはそれらが点灯する場合(通常のレンダリングと同様の部分)にのみ存在します。吸収とは、光が吸収されることを意味し、散乱が最大の計算上の問題です。ボリューム内で光が散乱します。次に、セルフシャドウと、地面および不透明なシーンへのシャドウエミッティングを行います。どうやってするの?
クラウドはどこで入手できますか? 雲はパーリンノイズによってシミュレートできます。それは非常に一般的で見栄えが良いです。パーリンノイズは4Dになる可能性があり、4次元目は素晴らしいダイナミックな雲を作成する時間です。雲の形を指定したい場合:目的の形をボリューム化して密度3Dグリッドとして保存し、パーリンで乗算する必要があります。
粒子をレンダリングすることによって?。粒子雲が可能です。最も簡単な方法です。ただし、粒子間の光の伝播のシミュレーションはかなり困難です。パーティクルをカメラのビュー方向に(または、camera-dirとlight-dirの間のいわゆる半軸に)ソートする必要があるのは非常に一般的です。ターゲットプラットフォームがシェーダーモデル4以上のシェーダーモデル5およびgpgpuコンピューティング(cuda、openClまたはdirect computeなど)をサポートしていない限り、これはリアルタイムアプリケーションでは不可能です。リアルタイムになります)。並べ替えは、アルファブレンディングとスマートシャドウマッピングにも必要です。
いくつかの記事をご紹介します。
ボリュームレイキャスティング。ボリュームレイキャスティングとは、流体シミュレーションを行った場所にグリッドがあることを意味します(通常はNavier-Strokesですが、ボクセル化された雲の形状でもかまいません)。そして、ボリュームを介してすべてのピクセルの光線を発射し、光線全体の輝度を統合します。これは驚くべきことに、リアルタイムアプリケーションでは問題ありません。ウィキ上のレイキャスティング。gpgpuコンピューティングを使用する必要はありません。ボリュームレイキャスティングは、スレッド(レイ)間の同期を必要としないため、ピクセルシェーダーで実行できます。3Dテクスチャにグリッドがあると、グラフィックスハードウェアに最適です。これは、テクスチャユニットのネイティブの3線形補間を利用できるためです。セルフシャドウイングは、すべてのサンプルからライトに光線を発射し、ライトシャドウイングボリュームの密度をカウントすることで実行できます。これは遅いです。トランジションでいくつかのシャドウマッピングを使用できます(ディープシャドウマップなど)。光散乱もリアルタイムでは不可能です(gpgpuでは可能です)。
ボリュームレイキャスティングは高速で、パーティクルソーティングよりも実装が簡単で、古いハードウェアでも高速に動作します。
勉強すること:
クラウドの詳細について話すことはできませんが、クラウドは通常、3次元のパーリンノイズを使用して実装されます。ビデオと私の思い出から、クラウドは単にクラウドを大きくして、もう一方を削除することで、クラウドを「マージ」します。