欢迎大家加入社区,雪易VTK社区-CSDN社区云
前言:此博文主要分享VTK中关于细分网格的相关Filter,同时希望能给其他小伙伴一些帮助。
小结:VTK中关于网格细分的Filter包括vtkSubdivisionFilter和vtkAdaptiveSubdivisionFilter。其中vtkSubdivisionFilter又有几个子类,见下图。
现以正方形为例展示各个细分Filter的不同之处(所有的numberOfSubdivision设为2),原始模型为下图:
1. vtkAdaptiveSubdivisionFilter
描述:vtkAdaptiveSubdivisionFilter是基于三角形的最长边或面积进行细分的Filter。新增的点只能插入到边缘上,根据细分的边的数量,插入不同数量的三角形,范围从两个(即两个三角形取代原来的一个)到四个。
2. vtkLoopSubdivisionFilter
描述:vtkLoopSubdivisionFilter是一个近似细分的子类,它为网格中的每个三角形创建四个新的三角形。
算法实现原理:
1) GenerateSubdivisionPoints:生成细分的点
for (针对输入PolyData的所有Point)
{
a. 获取当前点关联的其它点,并确认关联点的比重;
b. 根据关联点的坐标和各自的比重计算当前点的新的坐标;
c. 将新的点集更新至输出PolyData。
}
2)将细分出的新增点连接生成Cell
3. vtkButterflySubdivisionFilter
描述:vtkButterflySubdivisionFilter是一个插值细分的子类,它采用蝴蝶细分的方法为网格中的每个三角形创建四个新的三角形。
4. vtkLinearSubdivisionFilter
描述:vtkLinearSubdivisionFilter是一个插值细分的子类,同样为网格中的每个三角形创建四个新的三角形。