在OpenCASCADE显示模块AIS中的MeshVS_Mesh和AIS_Triangulation

概述
在OpenCASCADE库中,模型的显示、隐藏以及与模型的交互是其中非常重要的部分。OpenCASCADE自带的显示交互模块AIS (Application Interactive Services) 使我们可以充分利用OpenCASCADE本身的功能,同时在OpenCASCADE源码和帮助文档的帮助下也可以更迅速的理解并掌握相关功能。
在使用AIS进行显示时,主要使用到了AIS_InteractiveContext这个类,参考AIS_InteractiveContext头文件,发现它的显示功能主要是接收AIS_InteractiveObject类的对象。而"MeshVS_Mesh" "AIS_Triangulation" "AIS_Shape"三个类都是AIS_InteractiveObject类的子类。
OpenCASCADE版本:OpenCASCADE-7.4.0-vc14-64;
Visual Studio版本:Visual Studio Community 2017

AIS_Shape
AIS_Shape是显示模块中使用最多的交互式对象,并且有可用的标准函数,允许在开放的局部环境中对形状的组成元素(顶点、边、面等)进行选择操作,同时还可以设置显示效果(颜色,线型,透明度等)。以下是示例代码:

AIS_Triangulation
AIS_Triangulation是从三角剖分的数据得到的交互式对象,可以设定颜色和透明度等,但是暂时无法进行选择交互等功能。另外,暂时没有发现可以直接显示三角形的开关以及其他与网格相关的显示设定。

MeshVS_Mesh
根据OpenCASCADE帮助文档,MeshVS_Mesh类提供了一个显示整体网格的接口,但没有更多其他说明。根据Sergey先生的OpenCASCADE视频教程,在使用 BVH 层次包围盒(Bounding Volume Hierarchy)思想解决 PMC 问题(Point Membership Classification)的代码中,按照如下方式使用MeshVS_Mesh类。
当然,这里还有更多其他的显示选项,以下是在MeshVS_Mesh类的构造函数中初始化的默认值:

总结
根据New Bing的回答,在OpenCASCADE中,triangulation主要表示三角剖分的过程,而mesh则表示网格划分的结果。从两者在显示模块中的应用来看,还是非常有道理的。所以,可以借助Poly_CoherentTriangulation来存储三角剖分的结果,并将由Poly_CoherentTriangulation生成的Poly_Triangulation对象作为数据源传入到MeshVS_Mesh中,来进行三角剖分的显示并查看三角剖分的效果。
参考
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