OpenCASCADE Visualization Performance
eryar@163.com
1 Introduction
OpenCASCADE的顯示模塊的功能性能如何,很多人都很關(guān)心。開源社區(qū)的FreeCAD目前的顯示功能都沒有使用OpenCASCADE的顯示模塊。早在2014年時(shí),我在社區(qū)論壇提出過顯示模塊交互選擇的性能問題:
https://dev.opencascade.org/content/selection-convert-2d-not-very-efficient
當(dāng)時(shí)的版本應(yīng)該是6.8.0。在6.7.1的發(fā)布信息中還提到了我很開心:

當(dāng)時(shí)KGV也正在優(yōu)化這部分的功能:
https://tracker.dev.opencascade.org/view.php?id=24623
通過引入BVH來更高效地處理選擇,這個(gè)功能集成到6.9.0的版本中了。在6.8.0版本中已經(jīng)在增強(qiáng)顯示模塊的性能,如引入culling機(jī)制:
https://tracker.dev.opencascade.org/view.php?id=24307
到7.4.0版本,culling基本完善,當(dāng)模型超出視錐體范圍就從顯存中去除:
https://tracker.dev.opencascade.org/view.php?id=30223
到現(xiàn)在最新版本,顯示模塊的顯示和交互功能的性能到底如何,下面給出我的一個(gè)測(cè)試,測(cè)試結(jié)果僅供參考。
2 硬件信息
測(cè)試電腦的配置信息如下表:

這臺(tái)電腦已經(jīng)是好幾年之前的配置了,相對(duì)現(xiàn)在的主流配置已經(jīng)落后了。
3 測(cè)試結(jié)果

這個(gè)測(cè)試模型是船的艏部模型,包括船體結(jié)構(gòu)和舾裝模型,總共的三角面片數(shù)量為5百萬,幀數(shù)FPS為25.8,幀數(shù)大于12應(yīng)該算流暢。交互選擇性能很好,感覺不到延遲,鼠標(biāo)移動(dòng)到模型上就可以高亮。

這個(gè)測(cè)試模型是一個(gè)渡輪,包括船體結(jié)構(gòu)和舾裝的所有模型,總共的三角面片數(shù)量為1千2百萬,幀數(shù)FPS為0.1,視圖操作(對(duì)視圖縮放、旋轉(zhuǎn)、移動(dòng))已經(jīng)有比較嚴(yán)重的延遲,但是交互選擇性能還不錯(cuò),沒有延遲,鼠標(biāo)移動(dòng)到模型上也是實(shí)時(shí)高亮。

這個(gè)是海洋平臺(tái)模型,包括結(jié)構(gòu)和舾裝模型。這個(gè)模型量最大,總共有1千7百萬三角面片,幀數(shù)FPS為2.2,視圖操作(對(duì)視圖縮放、旋轉(zhuǎn)、移動(dòng))已經(jīng)有比較嚴(yán)重的延遲,但是交互選擇性能還不錯(cuò),沒有延遲,鼠標(biāo)移動(dòng)到模型上也是實(shí)時(shí)高亮。這個(gè)最大的模型占用內(nèi)存情況如下圖所示:

軟件總共占存3.4G內(nèi)存,這其中還包含左邊的設(shè)計(jì)導(dǎo)航樹的數(shù)據(jù)。當(dāng)將模型放大,超出視圖范圍外的模型已經(jīng)被剔除culling,所以可以從上圖可以看出三角面片數(shù)量變少了,為6百萬。
4 Conclusion
通過以上的測(cè)試數(shù)據(jù),大家可以結(jié)合自己行業(yè)模型的體量來選擇是否使用OpenCASCADE的顯示模塊。對(duì)于接近2千萬三角面片的模型來說,模型量已經(jīng)比較大,在這個(gè)電腦配置情況下基本能滿足一些大體量的模型顯示及交互操作。因?yàn)閷?duì)于大的設(shè)計(jì)模型,一般在設(shè)計(jì)過程中,也不是一個(gè)人設(shè)計(jì),而是多人多專業(yè)協(xié)同設(shè)計(jì),一個(gè)人涉及到的模型量一般不會(huì)達(dá)到2千萬這個(gè)量級(jí)。而當(dāng)設(shè)計(jì)完成,只需要瀏覽時(shí)(如模型評(píng)審),這時(shí)就有很多優(yōu)化手段。