后处理可视化是CAx软件的重要组成模块。开源代码VTK以其跨平台、丰富的数据结构与算法、可扩展性、易用性等特点而逐渐成为了CAx软件后处理首选的技术方案。
虽然VTK提供了相对完备的后处理功能,但要用好这些后处理代码,却需要对相关后处理算法有一定研究和理解。
另外,随着问题规模激增与软硬件发展,大数据集问题与大规模计算逐渐成为了可视化研究的热点,涌现出了一系列全新的后处理可视化算法,非常有必要对这些新的研究成果予以分析总结。
因此,本文拟从应用角度总结了常用的相关算法。希望对从事国产CAx软件研发的朋友们有所帮助。
注1:限于笔者研究水平,难免有不当指出,欢迎批评指正。
注2:博文内容会不定期更新,欢迎关注与讨论。
一、等值线(面)生成算法
MarchingCube、FlyingEdges是常用的等值线(面)数值求解算法。
1.1 MarchingCube算法
MarchingCube算法是是W.Lorensen等人于1987年提出来的曲面重建技术,原理简单且容易实现,因此,得到了广泛的应用。
不失一般性,这里以六面体网格来说明MarchingCube算法的实现步骤:
根据一定的规则遍历所有的单元;
对于每一个单元,设Fi为顶点i处的场变量,q为等值线目标值,构造如下的符号函数
针对不同的情况,在六面体单元内通过插值构造三角形面片。
对于二维问题,MarchingCube算法退化为MarchingSquare算法,算法相应地可以得到简化。
FlyingEdges算法是Kitware公司Schroeder W 等2015年公开的一套高效的等值面、等值线生成算法。
FlyingEdges算法流程为:
沿着x方向生成顶点符号值,确定有效范围;
根据单元顶点符号值,查找MarchignCube分类表格,确定切割类型;
根据切割分类,配置存储空间等;
生成切割点、切割面等数据;
二、流线生成算法
参考文献
Lorensen W E . Marching cubes : A hign resolution 3D surface construction algorithm[J]. Computer Graphics (Proceedings of SIGGRAPH'87), 1987, 21.
Schroeder W , Maynard R , Geveci B . Flying edges: A high-performance scalable isocontouring algorithm[C]. 2015 IEEE 5th Symposium on Large Data Analysis and Visualization (LDAV). IEEE, 2015.
Cabral B , Leedom L C . Imaging vector fields using line integral convolution[C]. Proceedings of the 20st Annual Conference on Computer Graphics and Interactive Techniques, SIGGRAPH 1993. DBLP, 1993:263-270.
————————————————