前言:本博文主要研究Tessellator 的Subdivision,对vtk中的所有相关接口进行研究,并找出最优的解决方法。
GeometricObjects中vtkTessellatorFilter的应用实例
待研究对当前的Subdivision进行优化。
vtkTessellatorFilter
位置:..\Filter\General
描述:对vtkUnstructuredGrid数据集进行简单的非线性近似为有限元分析单元。
该过滤器遍历输入vtkDataSet中的所有单元格。它对每个单元格进行细分,并使用vtkStreamingTessellator和vtkDataSetEdgeSubdivisionCriterion类来生成使用某种近似度量(编码在特定的vtkDataSetEdgeSubdivisionCriterion::EvaluateLocationAndFields实现中)近似非线性网格的简化。通过向三角测量器注册的回调例程AddATetrahedron、AddATriangle和AddALine,将简化放入过滤器的输出vtkDataSet对象中。
输出网格将具有几何图形和在输入网格的点数据中指定为属性的任何字段。属性的复制标志将被保留,除了法线。
实现过程:
过滤器的主要成员函数是RequestData()。这个函数首先调用SetupOutput(),它为原语回调分配数组和一些临时变量(分别由addattriangle和AddALine调用的OutputTriangle和OutputLine)。每个单元格都被赋予一个初始的镶嵌,这将导致一次或多次调用OutputTetrahedron、OutputTriangle或OutputLine来向OutputMesh添加元素。最后,调用Teardown()来释放过滤器的工作空间。
关联接口
vtkDataSetToUnstructuredGridFilter vtkDataSet vtkStreamingTessellator
vtkDataSetEdgeSubdivisionCriterion
vtkEdgeSubdivisonCriterion
描述:该接口用于判定一个线性近似的非线性几何或范围如何进行细分。该接口的所有子类用于决定分段线性近似(三角形,直线,…)对某些非线性几何应进行细分。这一决定可能基于绝对误差度量(和弦误差)或一些依赖于视图的度量(与设备分辨率相比的和弦误差)或一些抽象度量(颜色误差)。通过实现EvaluateLocationAndFields来完成。