为什么当我加载一个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