クラウド生成は楽しいです!オフラインメソッドとランタイムメソッドの両方について説明します。
事前にレンダリングされた雲
クラウドテクスチャをオフラインで事前にレンダリングする場合は、Photoshop(または必要に応じてGimp)を使用してください。どちらのプログラムもクラウドパターンを簡単に生成できます。メニュー項目はリリース間で移動する傾向がありますが、Gimp 2.8.2の時点で探しているコアコマンドはですFilters -> Render -> Clouds -> Solid Noise
。コマンドを有効にする前に、新しい空白のイメージを作成する必要があります。ノイズパラメータを試してみることをお勧めしますが、一例として、「ランダムシード」を1、「詳細」を4、「Xサイズ」を4.0、「Yサイズ」を8.0、無効に設定するとどうなりますか「ランダム化」と「乱流」、および「ティラブル」を有効にします。
私が絶対にお勧めするもう1つのステップは、画像のレベルを編集することです(Colors -> Levels...
Gimpで)。エンドポイントをドラッグすることで、雲量を「完全に曇り」から「空の雲ではない」に効果的に変更できます。
他の興味深い可能性:
- 「覆い焼き」および「焼き込み」ツールを使用して、画像の一部を手動で明るく/暗くします。
- 雲の画像をゆがめて、風のパターンを提案します。Gimpの
Filters -> Distorts -> Whirl and Pinch...
コマンドを試すか、Filters -> Distorts -> IWarp...
「変形モード」を「渦巻き」に設定して制御を強化してください。ただし、微妙に抑えてください。歪みが大きすぎると、画像の高周波ディテールがぼやけてしまいます。
- 複数の独立したクラウドレイヤーを追加して、薄くてかすかなものから大きくて太いものまで、さまざまな種類のクラウドをシミュレートします(適切な学名があると確信していますが、私はプログラマーであり、気象学者ではありません!)この場合、実行時に独立してアニメーション化できるように、各レイヤーを個別の画像として保存することをお勧めします。
それは本当にあなたの芸術的ビジョンに依存します。怒る!終了したら、テクスチャをシングルチャネルグレースケールイメージとしてエクスポートすることを忘れないでください。これにより、実行時にカラーとアルファチャネルに同じクラウドデータを使用できます。
ランタイムクラウド生成
実行時に無制限のクラウドパターンを生成することはもう少し複雑ですが、それでも完全に実行可能です。これは大きなトピックであり、これは広範なストロークのみをカバーします。
基本的に、シェーダーコードでGimpの「Solid Noise」コマンドを複製し、正規のPerlin Noiseのようなノイズ関数を使用して、無限の滑らかで決定的な(オプション)周期的なノイズボリュームを生成します。あなたの質問は、あなたがどのレンダリングAPIをターゲットにしているのかを特定していなかったので、ここではあまり具体的になりません。「GPU Gems 2」の第26章では、HLSLおよびCgFXの(多少古い)Perlinノイズのバリアントについて説明しています。または、このドロップインGLSLノイズ関数を使用できます。3Dノイズボリュームの2Dスライスをサンプリングすると、Detail = 0のGimp「Solid Noise」コマンドのようなものが得られます。ノイズボリュームサンプル間の距離が短いほど、ノイズは低周波数(「スムーザー」)になります。高周波の詳細レベルを上げるには、基本的な低周波ノイズパターンから始めて、ノイズの高周波「オクターブ」を追加します。各「オクターブ」は、サンプリング距離が大きい3Dノイズボリュームの異なるスライスです。より低い振幅。このプロセスの視覚的な例(Googlingが「複数オクターブパーリンノイズ」で見つけた)は、ここにあります。
さらに大きなボーナスとして、この方法で生成されたクラウドテクスチャは非常に簡単にアニメーション化できます!3Dノイズ関数のサンプル座標に時間ベースのオフセットを追加すると、非常に説得力のある雲の動きが得られます(たとえば、このビデオをご覧ください)。これは、ノイズ関数が3次元すべてで滑らかであるためです。テクスチャをU / V方向にスクロールすると、雲が惑星の周りを動きますが、W(垂直)方向にスクロールすると、雲がゆっくりと「進化」します。
ハリケーンのような効果のために、実行時にクラウドをワープすることも可能です。実際には、結果はナイーブなGimpワープフィルターよりもはるかに高品質になる可能性があり、(前述のように)テクスチャが過度にぼやけてしまう可能性があります。絶対に調べたいテクニックの1つは、バルブのAlex Vlachos(SIGGRAPH 2010のスライド)またはNaughty DogのCarlos Gonzalez(GDC 2012のスライド)で説明されている「フローマップ」です。基本的な考え方は、ベクトルフィールド(「フローマップ」)をペイントし、それを使用して実行時にクラウドテクスチャを歪ませてスクロールする一方で、歪み距離が大きくなりすぎると2つの異なるクラウドテクスチャ間で定期的にクロスフェードすることです。
使用する方法は?
Gimp / Photoshopでのクラウドテクスチャの事前レンダリングは非常に簡単です。あなたがそれのこつを得たら、数秒で新しいテクスチャを生成することができます。ランタイムコードは簡単で、非常に高速です。ただし、よりユニークなクラウドテクスチャは、より高いディスクスペース要件(また、より大きな/より遅いダウンロード)と実行時のVRAM使用量の増加を意味します。
ランタイムクラウドの生成は、最初ははるかに困難ですが、一度動作させると、事前にレンダリングされたクラウドテクスチャよりも明確な利点がいくつかあります。追加のディスクスペースやVRAMを使用せずに、無限のさまざまなリアルなアニメーションクラウドパターンを生成できます。ただし、ピクセルごとに複数の3Dノイズ関数を評価するランタイムコストは非常に高くなります。クラウドピクセルシェーダーは、事前にレンダリングされた場合よりもはるかに遅くなります。
TL; DR:事前にレンダリングされたクラウドを使用することから間違いなく開始し、さらに多様性が必要な場合(またはプログラミングの課題が必要な場合)は、ランタイムプロシージャルクラウドに切り替えます。