在OpenCASCADE顯示模塊AIS中的MeshVS_Mesh和AIS_Triangulation

概述
在OpenCASCADE庫中,模型的顯示、隱藏以及與模型的交互是其中非常重要的部分。OpenCASCADE自帶的顯示交互模塊AIS (Application Interactive Services) 使我們可以充分利用OpenCASCADE本身的功能,同時(shí)在OpenCASCADE源碼和幫助文檔的幫助下也可以更迅速的理解并掌握相關(guān)功能。
在使用AIS進(jìn)行顯示時(shí),主要使用到了AIS_InteractiveContext這個(gè)類,參考AIS_InteractiveContext頭文件,發(fā)現(xiàn)它的顯示功能主要是接收AIS_InteractiveObject類的對象。而"MeshVS_Mesh" "AIS_Triangulation" "AIS_Shape"三個(gè)類都是AIS_InteractiveObject類的子類。
OpenCASCADE版本:OpenCASCADE-7.4.0-vc14-64;
Visual Studio版本:Visual Studio Community 2017

AIS_Shape
AIS_Shape是顯示模塊中使用最多的交互式對象,并且有可用的標(biāo)準(zhǔn)函數(shù),允許在開放的局部環(huán)境中對形狀的組成元素(頂點(diǎn)、邊、面等)進(jìn)行選擇操作,同時(shí)還可以設(shè)置顯示效果(顏色,線型,透明度等)。以下是示例代碼:

AIS_Triangulation
AIS_Triangulation是從三角剖分的數(shù)據(jù)得到的交互式對象,可以設(shè)定顏色和透明度等,但是暫時(shí)無法進(jìn)行選擇交互等功能。另外,暫時(shí)沒有發(fā)現(xiàn)可以直接顯示三角形的開關(guān)以及其他與網(wǎng)格相關(guān)的顯示設(shè)定。

MeshVS_Mesh
根據(jù)OpenCASCADE幫助文檔,MeshVS_Mesh類提供了一個(gè)顯示整體網(wǎng)格的接口,但沒有更多其他說明。根據(jù)Sergey先生的OpenCASCADE視頻教程,在使用 BVH 層次包圍盒(Bounding Volume Hierarchy)思想解決?PMC 問題(Point Membership Classification)的代碼中,按照如下方式使用MeshVS_Mesh類。
當(dāng)然,這里還有更多其他的顯示選項(xiàng),以下是在MeshVS_Mesh類的構(gòu)造函數(shù)中初始化的默認(rèn)值:

總結(jié)
根據(jù)New Bing的回答,在OpenCASCADE中,triangulation主要表示三角剖分的過程,而mesh則表示網(wǎng)格劃分的結(jié)果。從兩者在顯示模塊中的應(yīng)用來看,還是非常有道理的。所以,可以借助Poly_CoherentTriangulation來存儲三角剖分的結(jié)果,并將由Poly_CoherentTriangulation生成的Poly_Triangulation對象作為數(shù)據(jù)源傳入到MeshVS_Mesh中,來進(jìn)行三角剖分的顯示并查看三角剖分的效果。
參考
http://www.cppblog.com/eryar/archive/2014/03/27/206371.aspx
https://www.youtube.com/playlist?list=PL_WFkJrQIY2iVVchOPhl77xl432jeNYfQ
Lesson 17.2 Point Membership Classification with OpenCascade. Fast discrete PMC classifier
https://gitlab.com/ssv/lessons/Lesson17_pmc