3

ノードにオブジェクトを配置することで細分化できる QuadTree があります。また、クアッド スフィアの形で OpenGL で作成された惑星もあります。問題は、それらを組み合わせる方法がわからないことです。QuadTree は地球に関する情報をどのように保存しますか? 葉の Quad Tree ノードに頂点を保存しますか? もしそうなら、テクスチャリングと法線を損なうことなく、頂点データを 4 つのセットに分割するにはどうすればよいですか。この場合、代わりにインデックスを使用しますか?

要するに、私の質問は本当に次のとおりです。

頂点データをクアッド ツリーに保存して、惑星の地形を分割して、惑星が近距離でより詳細になるようにするにはどうすればよいですか。これは、ノードを分割するオブジェクトとしてカメラを使用することによって行われると想定しています。

私は多くの記事を読みましたが、それらのほとんどはこれをカバーしていません。Quadtree は、多くの惑星を同時にレンダリングできると同時に、陸上でも良好な解像度を得ることができるため、私のアプリケーションにとって最も重要なものの 1 つです。私の惑星のきれいな写真とそれは HD 太陽です: 私の惑星のきれいな写真とそれは HD 太陽です!

惑星のビデオもここで見つけることができます

平らな面に単純な四分木を実装することができましたが、位置が間違っていると思うので、大きな穴ができ続けています。ここでの最後の投稿です - http://www.gamedev.net/topic/637956-opengl-procedural-planet-generation-quadtrees-and-geomipmapping/で、src も取得できます。それを修正する方法はありますか?

4

2 に答える 2

1

探しているのは、カメラの距離に基づいてモデルの精度を増減できるROAM (Real-time Optimally Adapting Mesh) のようなアルゴリズムです。アルゴリズムはあなたの四分木を利用します。

Real-time Procedural Universeをレンダリングする方法については、gamasutra のこのシリーズをご覧ください。

編集:これらの方法で四分木を使用する理由は、詳細が必要ない領域 (平坦な地形など) の頂点の数を最小限に抑えるためです。ウィキペディアの四分木の定義はかなり良いので、それを出発点として使用する必要があります。目標は、定義済みの深さに達するまで、「高さ」が変化するクワッドツリーに子ノードを作成することです (高さマップを使用して立方体の側面を生成できます)。おそらく、最初のパスとして、四分木を避けて単純なグリッドを使用する必要があります。それが機能するようになったら、四分木を追加してプロセスを「最適化」します。

于 2013-01-27T23:32:29.637 に答える
0

Quadtree と地形データがどのように連携して LOD ベースのレンダリングを実現するかを理解するにはこのペーパーをお読みください。実例付きでわかりやすい。

球体に LOD を実装したことがあります。アイデアは、単純な双ピラミッドから始めることです。上部のピラミッドは北の球体を表し、下部のピラミッドは南球を表します。ピラミッドの底面は赤道に沿っており、先端は極の上にあります。次に、三角形の辺の中点を結んで、各三角形を必要なだけ 4 つの小さな三角形に分割します。カメラまでの距離とオブジェクトの配置は、サブディビジョンのトリガーになる可能性があります

于 2013-01-30T07:34:37.447 に答える