osg专业名词:LOD、数据分页、动态调度
OD(level of detail):是指根據物體模型的結點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數和細節度,從而獲得高效率的渲染運算。在OSG的場景結點組織結構中,專門提供了場景結點osg::LOD來表達不同的細節層次模型。其中,osg::LOD結點作為父節點,每個子節點作為一個細節層次,設置不同的視域,在不同的視域下顯示相應的子節點。
數據分頁:也即osg的DatabasePager類。在城市三維場景中可以采用數據分頁的方式進行動態調度。這里“分頁”的意思是隨著視口范圍的變化,場景只加載和渲染當前視口范圍內數據,并將離開視口范圍內的數據清除內存(可以設定不同的數據卸載策略),不再渲染。保證內存中只有有限的數據量,場景的每一幀也只有有限的數據被送到圖形渲染管道,從而提高渲染性能。也就是常說的數據庫分頁技術,簡單來說,就是在進行數據庫查找時,有可能滿足條件的數據很多,為了提高相應速度我們進行數據查找時進行分頁查找與顯示,當點擊下一頁時才會進行下一次的查找動作。Osg就是把這個原理應用在了三維大場景中,當我們需要加載一個城市級數據時,因為數據量非常大,而我們感興趣的范圍在某一時刻一般都是很小的一部分,所以我們也可以應用數據分頁的技術,對大數據進行”分頁”查找并顯示。
在osg中DatabasePager執行的動作只有一步,就是在每一幀的更新循環中使用updateSceneGraph函數,把過期的數據卸載掉。并將新加入的數據載入到當前scene中。這些數據都是在用戶視野中顯示的。所以我們就把用戶的視野比作”頁面”。我們都知道數據的加載都是非常耗時的操作,更何況是三維模型這種大體量的數據,所以osg把DatabasePager的操作放到了另一個獨立于渲染線程之外的線程上進行。
動態調度:OSG源代碼中提供PagedLOD來進行模型的動態調度。在不同的視域下,PagedLOD動態讀取不同細節層次的結點模型,實現了分頁LOD顯示。OSG內部采用osgDB::DatabasePager類來管理場景結點的動態調度,場景循環每一幀的時候,會將一段時間內不在當前視圖范圍內的場景子樹卸載掉,并加載新進入到當前視圖范圍的新場景子樹。OSG采用了多線程的方式來完成上述工作。
總結
以上是生活随笔為你收集整理的osg专业名词:LOD、数据分页、动态调度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《暗黑3》彩虹关物品合成方法详细介绍
- 下一篇: 看完这个你还不理解右值引用和移动构造 你