3

私は、16 平方マイルの風景に多数のメッシュをレンダリングしようとしているプロジェクトを持っています。メッシュはすべてがユニークというわけではありませんが、たくさんあります (おそらく 1000 メッシュだけですが、数百万回使用されています)。

このトピックをカバーする論文や (良い) リソースがあるかどうか疑問に思っていました。地形/風景のレンダリングに関する多くの論文を見つけましたが、どういうわけか大量のメッシュのレンダリングに関する論文を見つけることができませんでした。

編集 メッシュとは、風景、建物、樹木などのオブジェクトを意味します

4

4 に答える 4

5

多数のオブジェクトを含む大きなランドスケープを効率的にレンダリングするには、考慮すべき重要な領域が 2 つあります。1 つは、現在のカメラ アングルから見えるものだけを描画することで冗長な作業を最小限に抑えることであり、もう 1 つは、見えるもののレンダリングの効率を最大化することです。

冗長なレンダリング作業を最小限に抑えるには、主に 2 つの方法があります。まず、カメラの視野の外にあるものを描画しないようにします。このビジビリティ カリングは、さまざまなデータ構造を使用して高速化できます: オクツリー、クワッドツリー、スフィア ツリー、BSP ツリー (一般に、ランドスケープではなく開放性の低い環境に適しています)。ある種の階層的なシーン配置も、この種の高速化に役立ちます。カリングの。同じデータ構造を使用して、画面上の特定のサイズのしきい値を下回るオブジェクトのレンダリングをスキップすることもできます。

2 つ目は、近くにあるオブジェクトによって遮られるオブジェクトのレンダリングを避けたい場合です。オクルージョン カリングにはさまざまな手法があり、オクルージョン クエリを通じて GPU アクセラレーションを使用するものもあれば、完全に CPU 上で動作するものもあります。オクルージョン カリングの値は、一般的なカメラ アングル、地形の粗さ、および地形上のオブジェクトのサイズによって多少異なります。小さなオブジェクトしかない比較的平坦で開けた地形や、カメラが地平線に向かって外に出るのではなく、ほとんど地面を見下ろしている場合、オクルージョン カリングの機会が減ります。親オブジェクトがオクルードされているかのように、シーンの階層構造はオクルージョン カリングに役立ちます。その子のテストをスキップできます。

レンダリングが必要なオブジェクトのセットを最小化したら、表示されるオブジェクトのレンダリング効率を最大化することに注意を向けることができます。ここでは、詳細レベルのテクニックが役立ちます (遠くのオブジェクトの低ポリ メッシュ)。別の回答で言及されている詐欺師の手法は、複雑なジオメトリを単純なビルボードに置き換える、役立つ別のアプローチです。ジオメトリをインスタンス化するためのさまざまなアプローチも、追求する価値があります。最新のグラフィックス ハードウェアは、グラフィックス API を 1 回呼び出すだけで、位置やその他のバリエーションが異なる同じジオメトリの多数のコピーをレンダリングできます。最後に、グラフィックス ハードウェアを効率的に使用するためのすべての標準的な手法がここに適用されます。レンダリング効率を最大にするための並べ替え (多少ハードウェアに依存)、フレームごとの冗長作業の最小化、ジオメトリの効率的なパッキング、

言及された各領域は、それ自体が非常に複雑であり、詳細について詳しく説明している多くの論文、書籍、および記事があります。うまくいけば、ここで説明したテクニックが、いくつかの Google 調査の正しい方向性を示すのに十分です。

于 2009-09-22T21:30:06.370 に答える
1

ソリューションはoctreeと呼ばれます。Googleの画像検索で概念が一目でわかります:)

基本的に、octree を使用すると、レンダリング中に表示できないメッシュをすばやく削除できます (背後にある、または遠すぎるため)。

遠くにあるメッシュの場合、解像度を下げた同様のメッシュを事前に計算して、水平線を維持し、それをツリーのノードにアタッチすることができます。木の部分に一定の距離がある場合は、詳細度の高いメッシュではなく縮小されたメッシュを使用します。

于 2009-09-22T08:48:07.037 に答える
1

これがあなたのケースかどうかはわかりませんが、詐欺師はどうですか? 私が覚えている限りでは、3D テクスチャなどを使用して非常に大量のジオメトリ データを偽造することができます。これはあなたの場合だけかもしれません。
森などのレンダリングに使用されます。

于 2009-09-22T09:16:00.083 に答える
0

「メッシュ」とは、建物、乗り物、木、茂みなど、ランドスケープ内のオブジェクトを意味しますか? つまり、地面自体を構成するメッシュについて話しているのではありませんか?

もしそうなら、一般的な可視性チェックを検討する必要があると思います。そうすれば、地形をレンダリングするときに、特定のメッシュが見えるかどうか、または丘/谷の壁の後ろに隠れるかどうかを照会できます。

さらに、もちろん「インスタンス化」を検討する必要があるため、一意のメッシュごとに 1 つのデータセットのみを保持し、それが表示される各位置に変換することでそれを再利用します。

見逃した場合は、このような論文を見ることも有益です。

于 2009-09-22T08:47:41.263 に答える