VTK学习(三)

来源:互联网 发布:阿里云ecs打开80端口 编辑:程序博客网 时间:2024/05/16 10:11

1 vtkElevationFilter

vtkObject->vtkAlgorithm->vtkDataSetAlgorithm->vtkElevationFilter

从数据集生成标量值(在用户指定范围内),通过计算每个点到一条线上的投影来完成,该线可以任意定方向,计算完成后,每个点都含有一个标量值

例如,可以基于高度(设置线为z轴)进行计算,这样,z坐标相等的点具有相同的标量值(vtk将结果渲染为不同的颜色)

virtual void vtkElevationFilter::SetLowPoint(double,double,double)

virtual void vtkElevationFilter::SetHighPoint(double,double,double)

这两个函数用于设置线的两个端点,LowPoint显示为冷色,HighPoint显示为暖色

2 vtkDeformPointSet

vtkObject->vtkAlgorithm->vtkPointSetAlgorithm->vtkDeformSet

利用控制多面体网格来变形输入的vtkPointSet,控制多面体网格必须是封闭的表面

每当控制网格变形(网格中点的位置发生改变),就会使相对应的vtkPointSet也产生相同的变形

void vtkDeformPointSet::SetControlMeshData(vtkPolyData* controlMesh)

设置控制网格

3 vtkQuadricDecimation&vtkQuadricClustering

vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkQuadricDecimation

                                                                            ->vtkQuadricDecimation

用于减少三角形网格中三角形的数量,只接受三角形网格,如果是多边形网格,需要先进行三角形划分(vtkTriangeFilter)

最好用的是vtkDecimatePro

vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkDecimatePro

SetTargetReduction 用于设置TargetReduction的大小(0~1)

4 vtkLinearSubdivisionFilter & vtkLoopsubdivisionFilter & vtkButterflySubdivisionFilter

vtkObject->vtkAlgorithm->vtkPolyDataAlgorithm->vtkSubdivisionFilter->vtkInterpolatingSubdivisionFilter->vtkLinearSubdivisionFilter

                                                                                                                                                                     ->vtkButterflySubdivisionFilter

                                                                                                               ->vtkApproximatingSubdivisionFilter->vtkLoopSubdivisionFilter

实现网格模型细化操作,vtkSubdivisionFilter内部提供了

virtual void vtkSubdivisionFilter::SetNumberOfSubdivisions(int) 

来控制细化的次数,每次细化之后三角形的个数变为原来的四倍,所以经过n次细化之后,三角形的个数变为4^n