OpenSceneGraph 渲染大量节点

OpenSceneGraph render a lot of nodes

为什么当我将 4900 个节点加载到场景时性能会下降?如果有 125 没问题,200 还可以,但是如果有更多渲染帧率会急剧下降吗?根节点包含包含(模型(在 3ds 中)+ 纹理 + 一些科学计算)的子节点,并且所有子节点都在从 0 到 4899 的循环中创建。我尝试在所有子节点到位后在根节点上使用 osgUtil::Optimizer 但仍然没有改进。试图将所有节点放在一个 geode 中,但它也没有帮助。如何在性能和节点数量之间取得平衡?

4900个节点,节点多得要死!

您应该开始阅读有关 LODPagedLOD 的内容。 PageLOD 将提高性能。思路是这样的(假设第一张图片远很多):

因为路途遥远,不想知道太多细节。但是当你放大时,你想看到那些细节。您必须指定每个 LOD 级别的模型以及您希望如何激活它们。这是棘手的部分。

另外,检查是否可以共享节点。例如,您无需创建 4 个不同的轮子,而只需创建一个轮子。然后,添加 4 PositionAttitudeTransform/MatrixTransform 并为每个节点添加轮子节点。 StateAttributes也是如此,尽可能分享!

最后,如果你有很多重复的geom,看看geometry instancing