シンプルな「GoogleEarth」タイプのアプリを作成することに興味があります(Googleが持っている膨大な量のデータではなく、自分の情報をオーバーレイするため)。変位(地形)情報を使用して球をレイトレースする単純なX11アプリにしたいと思います。光線と球の交差は非常に単純ですが、表示マッピングがそこにスローされると、頭の中で泥だらけになり始めます。
基本的な光線と球の交点を拡張して変位データを含める簡単な手法があるかどうか疑問に思いました...
シンプルな「GoogleEarth」タイプのアプリを作成することに興味があります(Googleが持っている膨大な量のデータではなく、自分の情報をオーバーレイするため)。変位(地形)情報を使用して球をレイトレースする単純なX11アプリにしたいと思います。光線と球の交差は非常に単純ですが、表示マッピングがそこにスローされると、頭の中で泥だらけになり始めます。
基本的な光線と球の交点を拡張して変位データを含める簡単な手法があるかどうか疑問に思いました...
この論文を見つけました: http://www.cgl.uwaterloo.ca/~ecdfourq/GI2008/FourquetGI2008.pdf
私がやりたいことを正確にカバーしているように見えるので、共有したいと思いました、ありがとう!
ディスプレイスメント マッピングは非常に簡単です。球をテッセレーションし、マップからサンプリングされた高度に基づいて頂点位置にオフセットを追加し、すべてのピースをレイ トレーシングするだけです。
カメラは球体/地球からどのくらい離れていますか? 表面のすぐ近くにいる場合は、おそらく「球」全体を作成する価値はまったくなく、「高さフィールド」を作成するだけです。遠くにいる場合 (地球全体を一度に表示している場合)、最も高い山でさえ表面を視覚的に移動させるべきではないため、代わりに単純なバンプ マッピングを使用する必要があります。組み合わせを使用することも検討してください。つまり、実際に変位した粗いテッセレーションと、残りの高さの違いに対するバンプ マッピングです。
しかし、いずれにせよ、問題を説明したように、なぜレイトレースを行うのか想像できません。三角形に切り刻み、OpenGL を使用するだけです。おそらく、レイトレース効果は必要ありません。
レイトレーシングプロセスは、単純な 20 ポリゴンの球体であっても、複雑に変位した 2k ポリゴンの球体であっても同じです。シーンに何が含まれていても、レイはシーンを通過します。しかし、透明性、反射、屈折などの視覚効果を実現するために使用されます。質問であなたが言ったことから、プロジェクトにそれらがなくても大丈夫だと思います。ここでは、単純な低コストのレイキャスティングで済む可能性が非常に高いです。
そのため、レンダリング エンジンを配置したら、必要なすべてのディスプレイスメントをシーンに追加できます。ジオメトリを変更する最も一般的な 2 つの方法は次のとおりです。
ディスプレイスメント マッピングは既存のジオメトリに実際のポリゴンを追加しますが、バンプ マッピングはサーフェス法線を曲げてオブジェクトのシャドウイングに影響を与えることで視覚効果をシミュレートするだけです。また、法線を曲げることは、ジオメトリをテサレートして新しいポリゴンを追加するよりもはるかに迅速でコストの低い操作ですが、正確なシャドウイングの結果が得られないため、アプリケーションに懸念がある場合は注意してください。
また、適応型 の詳細レベルアルゴリズムとデータ構造を使用することを検討してください。これは、ジオメトリから離れているほど、必要な詳細が少なくなるためです。