球面上で手続き型ノイズを生成するにはどうすればよいですか?


15

球体の表面に手続き型ノイズを生成したい(例:惑星または大理石のテクスチャボールを手続き的に生成する)。もちろん、標準のノイズアルゴリズムを使用してそれを球体にマッピングすることもできますが、これには、極または他の場所の歪みなど、球体に平面を投影するというすべての問題があります。

ボリュームノイズを生成し、球体を「切り取る」ことができると思いますが、これは不必要に効率が悪いようです。ノイズにグリッドベースのアーティファクトがある場合、これらは球体上に均一に表示されません。さらに、少なくともシンプレックスノイズの場合、3Dノイズから2Dスライスを切り取ることは、2Dノイズをすぐに生成することとは一般的に異なります。

これらの問題を回避する方法はありますか?例えば、球体にネイティブにノイズを生成することにより?ノイズは、少なくともパーリンノイズの品質、理想的にはシンプレックスノイズの品質を持つ必要があります


GPU Gems 3で見られるように、おそらく3面投影ですか?問題は、ノイズが異なる投影間で混ざっているときにノイズがぼやけているか、そうでなければ望ましくないかどうかです。
ネイサンリード

投稿に別の方法を追加しました。より詳細な要件で質問を明確にする価値があるかもしれません。すなわち、3Dノイズの2Dスライスが視覚要件を満たさないのはなぜですか?パフォーマンス要件は何ですか?
ジョンカルスビーク

@JohnCalsbeek正直なところ、厳しい要件はありません。これは、プライベートベータ版を試してみたいと思った好奇心question盛な質問でした。もちろん、3Dノイズから2Dスライスを切り取るだけで多くのアプリケーションに対応できますが、パフォーマンスへの影響と異方性(顕著な場合とそうでない場合があります)があるはずです。「3Dノイズから球体を切り取るのが最良の選択肢です。なぜなら...」は間違いなく有効な答えです。
マーティンエンダー

球でノイズを発生させるこのシェードトイをチェックアウトするかもしれません:shadertoy.com/view/4sfGzS
アランウルフ

回答:


15

3Dノイズを使用して、球の表面で評価することを検討します。

球体の表面の領域に自然に存在する勾配ノイズの場合、各セルの面積がほぼ等しい自然な接続情報を持つ表面上のサンプルポイントの規則的なパターンが必要なので、隣接する値を補間または合計できます。フィボナッチグリッドのようなものが機能するのではないかと思います。

球の表面上のフィボナッチグリッド

4つの隣人の指標と距離を計算するのにどれだけの作業が必要かを判断するために数学をかじりませんでした(すべての場合で明確に定義された4人の隣人がいるかどうかさえわかりません)、そして、単に3Dノイズを使用するよりも効率が悪いのではないかと思います。

編集:他の誰かが数学を噛んでいます!球面フィボナッチマッピングに関するこの新しい論文を参照してください。球体ノイズに適応させるのは簡単だと思われます。


球体の表面のノイズを評価するだけでなく、球体をノイズラティスの解像度にテッセレーションすることに問題がない場合、球体をレンダリングする場合は、球体の表面に測地線グリッドを作成できます(細分割された二十面体、通常):

測地球

球体の各頂点には、勾配ノイズ用にランダムに生成された勾配を設定できます。(あなたが値ノイズのような簡単な補間をしない限り)、ピクセルシェーダに、この情報を取得するには、この記事のような技術が必要な場合があり重心座標とワイヤーフレームのレンダリングを:三角形のその頂点の重心座標を含む各頂点に、インデックス付けされていないレンダリングを行います。次にSV_PrimitiveID、ピクセルシェーダーから(またはOpenGLに相当するもの)を読み取り、現在の三角形に基づいて頂点から3つのノイズグラデーションを読み取り、補間された重心座標を使用して好きなノイズ計算を使用できます。

この方法の最も難しい部分は、各頂点のノイズ値を検索するために、三角形IDを3つのサンプルにマッピングするスキームを考え出すことだと思います。

複数のオクターブのノイズまたは球体モデルよりも細かい解像度のノイズが必要な場合は、頂点を使用して粗い測地線グリッドを作成し、ピクセルシェーダーでいくつかのレベルの細分化を実行できる場合があります。すなわち、重心座標から、メッシュがさらにテッセレーションされた場合にどの細分割三角形になるかを特定し、その三角形のプリミティブIDと重心座標が何であるかを特定します。


2
フィボナッチグリッドについて聞いたことがありません。それはいいね!
ネイサンリード

それは魅力的な論文です。パラメータを調整して、正方形グリッドまたは六角形グリッドに近づけることができるようです。これにより、ノイズ生成へのさまざまなアプローチが可能になります。
-trichoplax

タイルのエッジ付近で補間を行うと、悪くない結果がいくつかあります(エッジラップ)が、達成しようとしている効果と正確なノイズパラメーターによって異なります。ややぼやけたノイズに最適ですが、スパイク/細かいノイズにはあまり適していません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.