1.多分辨率处理策略
模型抽取(Decimation)和细化(Subdivision)是两个相反的操作,是三角形网格模型多分辨处理中的两个重要操作。使用这两个操作可以在保持模型拓扑结构的同时,得到不同分辨率的网格模型。模型抽取的作用是减少模型中的点数据和单元数据,便于模型的后续处理与交互渲染,这类似于图像数据的降采样。而网格细化则是利用一定的细化规则,在给定的初始网格中插入新的点,从而不断细化出新的网格单元,在极限细化情况下,该网格能够收敛一个光华的曲面。
2.网格抽取(Decimation)
2.1 vtkDecimatePro
VTK中主要有三种网格抽取类:vtkDecimatePro、vtkQuadricDecimation、vtkQuadricClustering。vtkDecimatePro是最常用的,该处理方法的原理参考文献[1],是用一种边塌陷的方法来删除点和单元,处理速度比较快,而且可以方便的控制网格抽取的幅度,得到不同级别的模型数据。
该类的使用方法,如下:vtkDecimatePro接收一个单元为三角网格的vtkPolyData数据,其中函数SetTargetReduction()用于设置变量TargetReduction的大小,将网格面片抽取的比例控制在0~1.这里设置为0.6,说明有60%的三角面片单元将被移除。使用这个函数可以得到不同程度的简化网格模型,不过,为确保函数效果,一般需要满足下面四个条件:vtkSmartPoint<vtkDecimatePro> decimate = vtkSmartPointer<vtkDecimatePro>::New(); decimate->SetInput(input); decimate->SetTargetReduction(0.6); decimate->update();