摘要:
体素化(voxelization)是一个将物体经由扫描转换成体素(voxels)的过程。几何体素化会改变它的基本型态的表现方式,如果要在由多边形所组成的模型上做体积方面的运算,例如型态学运算以及实体模型建立(constructive solid geometry)等,体素化将会是一个中间的桥梁。有许多应用程序比如建构实体几何模型、医学扫描(medical scanning)、碰撞检测(collision detection)、3D 空间分析(spatial analysis)以及模型修补等,均采用体积表示法或是将它当成中间型态。对于具有任意方向性的多边形而言,可能无法与拥有最大投影面积的投影面平行。藉由投影以及栅格化(rasterization)的体素化过程将会导致许多不同等分的多边形被取样出来,即使先对多边形进行分类,然后再将它们投影到各自最适合的平面上,也不能保证栅格化的正确性。而距离场(distance field) ,换句话说它是属于全方向性的(omni-directional),也就是对于投影平面是不敏感的。此外,藉由几何学对距离场的认知,我们可以很轻易的提高体素化的质量与容量。
本论文针对多边形模型而言,提出一个建构在几何上的体素化算法。首先,针对物体利用一格一格的方式,产生网格化的体积表示法。几何像素(geometrical primitive)被表示成一个特殊形式称为查询几何(query geometry),它是由绘图处理器(GPU)所绘制而成,主要是用来计算几何像素在线段或表面上的距离场。实体模型建立(solid modeling)对于图形模型建立(graphics modeling)来说相当重要,而且可以比传统模型传送更多的信息。在表面体素化的过程当中,我们提出一个实体填补流程(solid filling process)来达成实体体素化(solid voxelization)。此外,二位体素化过程(binary voxelizaiton)可以获得多边形模型的离散近似值,而反锯齿体素化过程(anti-aliasing voxelization)可以避免类似像细节遗失或图片支离破碎等锯齿化的问题产生。在此所提出的方法,使用了许多转换函数,使得在二位与反锯齿的体素化过程都有不错的效果。最后,藉由使用线段体素化,本论文提出的方法可被应用在针对3D 向量场(3D vector fields)上进行流线体素化(voxelize streamlines)的动作。本方法实作的环境如下:Intel CoreDuo 1.86 GHz laptop、内存为2G、显示卡为nVidia GeForce 7600 Go,采用高级着色器语言(High Level Shader Language)撰写的着色器模型3.0(shader model 3.0)程序进行方法的实作。此方法可以藉由计算从每个体素到一个场景中的几何像素之间的最短距离快速地将几何图形进行体素化的动作,而且根据给定的转换函数会输出不同的结果。实体体素化的过程在封闭且没有任何不协调的表面法线与凹洞的无瑕疵模型中,能够得到比较好的效果。由于距离的数值是由绘图处理器在连续空间上计算出来的,而且在数据来源中不存在插补点,所以本论文提出的算法的精确度能够得到加强。体素化的结果并不会被在栅格化中的插补点以及硬件上的投影的精准度所影响,只有深度值缓冲区的精准度与着色器的计算量有所改变。
在本论文中,针对多边形模型体素化过程,我们提出一个几何体素化的方法。首先,我们提出一个实体填补算法来帮助表面体素化的动作,以便达成实体体素化。此外,利用转换函数进行的二位与反锯齿体素化的过程是合适的。最后,本方法可应用在以流线为基础的流场可视化(flow visualization)。
本论文提出的方法,它主要的贡献整理如下:
a) 在表面体素化的过程当中,我们提出一个实体填补流程来达成实体体素化。
b) 利用本论文所提出的转换函数可达成对二位与反锯齿进行体素化的动作。
c) 本论文提出的方法可被应用在针对3D 向量场上进行流线体素化的动作。