我有一個項目,我正在尋找在16平方英里的景觀上渲染大量網格。雖然網格並不全是唯一的,但它們中有很多(可能只有1000個網格,但有幾百萬個網格用)渲染大量的網格(物體)
我想知道是否有任何論文或(良好)資源涉及該主題。我發現了大量有關地形/景觀渲染的論文,但不知何故在大量網格渲染上找不到任何文章。
編輯 通過網我的意思是對景觀的對象,建築物等樹木
我有一個項目,我正在尋找在16平方英里的景觀上渲染大量網格。雖然網格並不全是唯一的,但它們中有很多(可能只有1000個網格,但有幾百萬個網格用)渲染大量的網格(物體)
我想知道是否有任何論文或(良好)資源涉及該主題。我發現了大量有關地形/景觀渲染的論文,但不知何故在大量網格渲染上找不到任何文章。
編輯 通過網我的意思是對景觀的對象,建築物等樹木
通過「網格」,你的意思是在景觀,例如對象建築物,車輛,樹木,灌木叢等?也就是說,你不是在談論構成地面的網格?
如果是這樣,我認爲您需要研究一般的可見性檢查,以便在您進行地形渲染時,您可以查詢給定的網格是否可見或隱藏在山丘/山谷牆後面。
此外,您當然需要查看「實例化」,因此您只需爲每個唯一網格保留一個數據集,然後通過將其轉換爲顯示的每個位置來重新使用該數據集,一旦確定了該位置當然可見。
看文件like this也可能是有啓發性的,如果你錯過了。
該解決方案被稱爲octree。 A Google image search將使你理解概念一目瞭然:)
基本上,八叉樹將允許您快速消除在渲染過程中無法看到的網格(無論是因爲它們在你後面還是太遠)。
對於距離較遠的網格,可以使用降低的分辨率預先計算一個類似的網格,以便仍然可以獲得一個水平線並將其附加到樹的節點。如果樹的一部分具有一定的距離,則只需使用簡化網格,而不是具有高細節的網格。
我不確定這是你的情況,但是騙子呢?據我所知,可以使用3D紋理或類似的東西來僞造大量的幾何數據。這可能就是你的情況。
它用於渲染森林和類似的東西。
有兩個重要的方面需要考慮高效渲染大量景物的對象。一種是通過僅畫出從當前相機角度可見的內容來最小化冗餘工作,另一種方法是最大化渲染可見內容的效率。
有兩種主要方法可以最大限度地減少冗餘渲染工作。首先,您要避免繪製任何超出相機視野範圍的圖像。這種可見性剔除可以使用各種數據結構加速:八叉樹,四叉樹,球形樹,bsp樹(通常更適合於開放程度較低的環境而不是景觀)等等。某些分層場景排列也可用於加速這種類型的撲殺。也可以使用相同的數據結構在屏幕上跳過低於特定大小閾值的對象的渲染。
其次,您希望避免呈現被近處物體遮擋的物體。有很多不同的遮擋剔除技術,一些使用通過遮擋查詢的GPU加速和其他完全在CPU上操作的技術。遮擋剔除的值將取決於您的典型相機角度,地形粗糙度和地形上物體的大小。一個相對平坦,開闊的地形,只有小物體或相機看起來大部分落在地面而不是朝向地平線,這將減少遮擋剔除的機會。場景的某些分層組織將再次幫助遮擋剔除,就像父對象被遮擋一樣,您可以跳過對其子項的測試。
一旦你最小化了需要渲染的對象集合,你可以將注意力轉向最大化可見對象的渲染效率。細節層次的技術在這裏很有用(對於遠處的物體,下層多邊形網格)。在另一個答案中提到的冒名頂尖技術是另一種可能有用的方法,用簡單的廣告牌取代複雜的幾何圖形。實現幾何圖形的各種方法也值得追求 - 現代圖形硬件可以通過一次調用圖形API來渲染具有不同位置和其他變體的相同幾何圖形的許多副本。最後,所有用於有效使用圖形硬件的標準技術都適用於此:用於最大渲染效率(基於某種硬件)的排序,最小化每幀冗餘工作,有效打包幾何結構,優化頂點和像素着色器等。
所提及的領域本身相當複雜,並且有許多論文,書籍和文章詳細闡述了細節。希望這裏提到的技術足以讓你指向一些谷歌研究的正確方向。