1 vtkPoints
vtkObjectBase->vtkObject->vtkPoints->vtkPointsProjectedHull
对3D点的表示和操作
virtual void vtkPoints::DeepCopy(vtkPoints * ad)
深度拷贝 拷贝整个数据数组
virtual void vtkPoints::ShallowCopy(vtkPoints * ad)
浅拷贝分配指针和引用计数
SetPoint 和InsertPoint 在当前id的点已经存在时,会覆盖原来的点,重新插入一个新点
2 vtkSmoothPolyDataFilter
vtkObject->vtkProcessObject->vtkSource->vtkPolyDataSource->vtkPolyDataToPolyDataFilter->vtkSmoothPolyDataFilter
使用拉普拉斯算子对图像进行平滑操作
但是过度平滑会导致表面向质心收缩,启用
|
可以试着采用vtkWindowedSincPolyDataFilter代替vtkSmoothPolyDataFilter
vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkWindowedSincPolyDataFilter
使用窗口化的Sinc函数进行插值平滑(信号处理低通滤波器)
3.1 vtkFeatureEdges
vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkFeatureEdges
提取多边形中各种类型的边缘
边界边:如果在网格模型中,一条边只被一个单元包含,那么这条边就是边界边,边界边上的点为边界点。
virtual void vtkFeatureEdges::SetBoundaryEdges | ( | int | ) |
流行边&非流行边:只被两个单元包含的边为流行边,被三个或三个以上的单元包含的边为非流行边
virtual void vtkFeatureEdges::SetNonManifoldEdges | ( | int | ) |
|
特征边(尖锐边):设置一个特征角的阈值,当包含同一条边的两个三角形的法向量的夹角大于该阈值,即为一条特征边
virtual void vtkFeatureEdges::SetFeatureEdges | ( | int | ) |
virtual void vtkFeatureEdges::SetFeatureAngle | ( | double | ) |
vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkExtractEdges
从PolyData中提取边
(个人理解,这个是个简单功能的便捷的提取,没有vtkFeatureEdges功能强大)
4 vtkDecimatePro
vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkDecimatePro
减少网格中三角形数量,输入必须是三角形网格,如果是多边形,需要用vtkTriangleFilter进行处理
virtual void vtkDecimatePro::SetTargetReduction(double )
指定需要减少的多边形数量,如果为0.9,则滤波器会将其减少到原来的百分之10
virtual void vtkDecimatePro::SetPreserveTopology | ( | int | ) |
设置是否允许修改拓扑进行削减
virtual void vtkDecimatePro::SetFeatureAngle | ( | double | ) |
该方法用于定义边缘是什么,如果两个三角形之间的法向量夹角大于FeatureAngle,则存在边缘