爲什麼當我加載一個4900個節點到場景時,性能會下降?如果有一個125可以,200仍然可以,但是如果有更多的渲染幀速率會降低dramaticaly?根節點包含孩子,其中包含(模型(在3ds)+紋理+一些科學計算),並且都創建在從0到4899的環境中。我嘗試在所有孩子的地方使用osgUtil :: Optimizer,但仍然沒有改進。試圖把所有的節點放在一個geode中,但它也沒有幫助。我如何在性能和節點數量之間取得平衡?OpenSceneGraph渲染了很多節點
回答
4900個節點似乎是一個非常多的節點!
您應該開始閱讀關於LOD
和PagedLOD
。 PageLOD
將提高性能。我們的想法是這樣的(想象一下第一個圖像是很多更遠):
既然你很遠很遠,你不想要很多的細節。但是當你放大時,你想看到這些細節。您必須指定每個LOD
級別的模型以及您想要如何激活它們。這是棘手的部分。
此外,請檢查您是否可以共享節點。例如,而不是有4個不同的車輪,你只需創建一個車輪。然後,添加4 PositionAttitudeTransform/MatrixTransform並將輪子節點添加到它們中的每一個。 StateAttributes
也是如此,儘可能分享!
最後,如果您有很多重複幾何,請參閱幾何實例。
非常感謝!看起來性能得到了巨大的提升,但是當我將所有節點添加到場景攝像機的行爲變得很奇怪。例如,在我在場景中添加大量節點之前,如果我獲得攝像機邊界球半徑的半徑,它等於12.5f左右,但是當場景中的所有節點都會達到18000.0f。其次,有什麼方法可以將視角設置得更遠一點(縮小一點)。 – 2015-04-05 15:40:25
對於相機,看看[這裏](http://stackoverflow.com/questions/21180092/openscenegraph-set-the-camera-at-an-initial-position);被接受的答案在相機上有非常有用的評論。 關於您的其他問題:相機半徑變化時的不良行爲是什麼?我不太明白:) – 2015-04-06 08:05:29
我會盡力解釋它。我有一個軌跡球操縱器,當場景是空的時候,攝像機的移動是可以的,我可以用鼠標的中間按鈕來移動它,但是當我添加節點到場景時,點擊中間的按鈕會使所有的東西都從攝像機中消失。只有當我注意到相機半徑發生瘋狂的18k值時纔會發生這種情況。我可以提出一個建議,即軌跡球機械手的運動與相機的半徑有一定的關係,但無法得到實際所在的位置。其他東西,如右按鈕和左按鈕正常工作。 – 2015-04-07 08:18:48
- 1. JTree多節點渲染器問題
- 2. MVCSitemap節點不渲染
- 3. 渲染HTMLImageElement DOM節點Preact
- 4. dojo.dnd.move節點渲染問題
- 5. 渲染網絡頂部的節點
- 6. CheckBox節點渲染器和編輯器
- 7. 節點JS Express鍋爐板和渲染
- 8. 節點乳膠圖像渲染
- 9. JTree節點渲染器和節點編輯器中的多個組件
- 10. ModelSim波浪渲染很慢
- 11. 了Canvas.Top不渲染
- 12. 瞭解React渲染
- 13. 使用多種不同字體在JTree中渲染節點
- 14. 用VBO渲染多邊形似乎失去了一些頂點
- 15. libGDX渲染TextureRegion渲染得太多
- 16. XNA 4.0點頂點渲染
- 17. 瞭解渲染封鎖CSS
- 18. React |多個渲染
- 19. 渲染多頁PDF
- 20. Drupal的觀點 - 不要渲染某些領域某些節點
- 21. ASP.net渲染HTML很好(美化)
- 22. ASP.NET MVC渲染看起來很慢
- 23. Gephi節點渲染器可以保留原始節點不透明度嗎?
- 24. django,渲染響應花費很多時間
- 25. 使用JOGL渲染很多紋理vbo使用JOGL
- 26. 有很多渲染部分功能不好?
- 27. 渲染部分點擊
- 28. 渲染錯誤的觀點
- 29. 點雲渲染,交錯VBO
- 30. OpenCV cvblob - 渲染斑點
真的,爲了提出最好的建議,我們必須知道它們是什麼類型的節點以及它們代表什麼。不同的策略(實例化等)被用於不同的情況。 – XenonofArcticus 2015-04-06 16:49:12