(个人理解)
Marching Cubes(MC)
MC算法是三位数据长等值面生成的经典算法。MC算法的基本思想是逐个处理数据场中的体素,分类初与等值面相交的体素,采用插值计算初等值面与体素棱边的交点。根据体素中没一顶点与等值面的相对位置,将等值面与立方体边的交点按一定方式生成等值面,作为等值面在立方体内的一个逼近表示。计算出关于体数据场内等值面的有关参数后用面绘制方法绘制出等值面。
根据我的理解,绘制过程分为几个步骤:
(1)把读入的大量数据分为按立方体元分为一个个小曲面
(2)计算这些小曲面与立方体元的交点
(3)将交点按一定规则逼近处理,生成新的逼近小曲面,这些小曲面的类型是有限的,对称处理后只有15种,比初始成千上万不同的曲面少了很多,易于处理和绘制
(4)计算小曲面的三角面片顶点,面的处理变成了三角面片顶点的处理
(5)最后根据顶点采用面绘制方法绘制出图像
Volume Rendering
如果说MC算法绘制的是一个空心球,那么Volume Rendering算法绘制出的就是一个实心球。Volume Rendering算法绘制时,读入的是体数据。将一个立体图像分割成由近至远的若干层,并赋予每一个像素点以不透明度。不同层同一个位置的像素点不透明度之和为1。层层叠加绘制出体图像,能表达图像内部的细节。
矢量场
类比二位图像,如果说之前的两种算法属于点阵图,那么基于流线的矢量场可视化算法就属于矢量图。如果说我们要体现一张风景图,那么我们应该用点阵来表示;如果我们要体现一些规则图形,那么我会选择矢量图。三维图像也是一样,可以通过一些临界点和分界线来简单地表达,基于流线的矢量场可视化算法就是这样。流场里的积分曲线在大部分位置都是走向相似的,这些位置是比较流畅、圆润的位置;但也有小部分位置,是尖锐、突变的,积分曲线在这些位置走向会比较大的不同。我们只需记录这些突变的点以及周围记分曲线的走向,其余位置可以用相同走向的曲线近似表示。就这样,用将数据很大程度地约简后进行绘制。