OpenCASCADE Visualization Performance
OpenCASCADE Visualization Performance
1 Introduction
OpenCASCADE的显示模块的功能性能如何,很多人都很关心。开源社区的FreeCAD目前的显示功能都没有使用OpenCASCADE的显示模块。早在2014年时,我在社区论坛提出过显示模块交互选择的性能问题:
https://dev.opencascade.org/content/selection-convert-2d-not-very-efficient
当时的版本应该是6.8.0。在6.7.1的发布信息中还提到了我很开心:
当时KGV也正在优化这部分的功能:
https://tracker.dev.opencascade.org/view.php?id=24623
通过引入BVH来更高效地处理选择,这个功能集成到6.9.0的版本中了。在6.8.0版本中已经在增强显示模块的性能,如引入culling机制:
https://tracker.dev.opencascade.org/view.php?id=24307
到7.4.0版本,culling基本完善,当模型超出视锥体范围就从显存中去除:
https://tracker.dev.opencascade.org/view.php?id=30223
到现在最新版本,显示模块的显示和交互功能的性能到底如何,下面给出我的一个测试,测试结果仅供参考。
2 硬件信息
测试电脑的配置信息如下表:
这台电脑已经是好几年之前的配置了,相对现在的主流配置已经落后了。
3 测试结果
这个测试模型是船的艏部模型,包括船体结构和舾装模型,总共的三角面片数量为5百万,帧数FPS为25.8,帧数大于12应该算流畅。交互选择性能很好,感觉不到延迟,鼠标移动到模型上就可以高亮。
这个测试模型是一个渡轮,包括船体结构和舾装的所有模型,总共的三角面片数量为1千2百万,帧数FPS为0.1,视图操作(对视图缩放、旋转、移动)已经有比较严重的延迟,但是交互选择性能还不错,没有延迟,鼠标移动到模型上也是实时高亮。
这个是海洋平台模型,包括结构和舾装模型。这个模型量最大,总共有1千7百万三角面片,帧数FPS为2.2,视图操作(对视图缩放、旋转、移动)已经有比较严重的延迟,但是交互选择性能还不错,没有延迟,鼠标移动到模型上也是实时高亮。这个最大的模型占用内存情况如下图所示:
软件总共占存3.4G内存,这其中还包含左边的设计导航树的数据。当将模型放大,超出视图范围外的模型已经被剔除culling,所以可以从上图可以看出三角面片数量变少了,为6百万。
4 Conclusion
通过以上的测试数据,大家可以结合自己行业模型的体量来选择是否使用OpenCASCADE的显示模块。对于接近2千万三角面片的模型来说,模型量已经比较大,在这个电脑配置情况下基本能满足一些大体量的模型显示及交互操作。因为对于大的设计模型,一般在设计过程中,也不是一个人设计,而是多人多专业协同设计,一个人涉及到的模型量一般不会达到2千万这个量级。而当设计完成,只需要浏览时(如模型评审),这时就有很多优化手段。