4

非常に大きなシーンの表示に適した 3D エンジンに取り組んでいます。レンダリング自体の一部 (フラスタム カリング、オクルージョン カリングなど)、シーン管理に最適なソリューションは何かを考えています。

データは 3D メッシュの巨大なリストとして与えられ、それらの間に関係はありません。そのため、ポータルを生成できないと思います...

主な目標は、RAM の少ないシステム (500MB ~ 1GB) でこのエンジンを実行できるようにすることです。このエンジンにロードされるシーンは非常に大きく、何百万ものトライアングルを含むことができるため、メモリの使用量が非常に集中します。私は実際に現在、ロード時に構築された緩やかな octree を使用しています。これは小規模および中規模のシーンでうまく機能しますが、多くのシーンは大きすぎて完全にメモリに収まらないため、ここに私の質問があります:

チャンクを動的に (そして理想的にはシームレスに) ロードおよびアンロードするシーンをどのように処理しますか? また、チャンクをロード/アンロードする必要があるかどうかを判断するために何に基づいていますか? シーンは既知の 3D オーサリング ツールでカスタム エクスポーターを使用してエクスポートされるため、必要に応じてカスタム ファイル形式を作成できます。

重要な情報: 多くのシーンは、構造上、効果的に遮ることができません。例: 非常に巨大なパイプ ネットワークのため、オクルージョンはそれほど多くありませんが、要素の数が非常に多くなっています。

4

2 に答える 2

0

大量の RAM がテクスチャで使用される場合、仮想テクスチャ キャッシュを使用してシームレスな LOD ベースのテクスチャ ストリーミングを提供する GraniteSDK などの商用パッケージが利用可能です。http://graphinesoftware.com/graniteを参照してください。または、http://ir-ltd.net/を参照してください。

実際、シェーダーのテクスチャ データからオンザフライでポリゴンを構築するために同じ手法を使用できますが、もう少し複雑になります。

ボクセルの場合、GPU メモリ内に完全に oct-tree を構築し、本当に必要な部分をページイン/ページアウトする手法があります。その後、レイキャスティングを使用してレンダリングを行うことができます。この投稿を参照してください: GPUでoctree を使用して 3D ボリューム データを整理するhttp://www.icare3d.org/research/GTC2012_Voxelization_public.pdfおよびhttp://www.cse.chalmers.se/~kampe/highResolutionSparseVoxelDAGs.pdf

結局のところ、シーンがどの程度静的になるか、そしてそれに基づいて、ビジュアライゼーションのニーズに応じてデータをどれだけうまくプリベイクできるかということになります。事前に可視性の制約 (Google の潜在的な可視性セットなど) を決定し、要求に応じてストリーミングできるように整理できれば、それはすでに役に立ちます。ビジュアライザーには制限があるため、常に、データのセクションをできるだけ迅速かつ正確に GPU メモリに収めるという戦略になります。

于 2014-09-19T09:40:45.923 に答える