【www.arisingsemi.com--软件制图】

等值面
一、基本概念
二、算法简介
在3D中,由于每一立方体共有8个顶点,每个顶点共有2个状态(物体内和物体外),因此共有256种组合状态,分析立方体体素的2种对称性:

(1)顶点状态反转,等值三角面片的拓扑结构不变,也就是讲,大于等值面与小于等值面的点是可以相互替换的。


(2)旋转对称性,经过适当旋转,有许多状态是一致的。
这样,可归纳出15种模式(见图3a)。

对于模式0-7,其补充模式见图3b,而模式8-14,由于有4个顶点,本身就包括了自己的互补模式。
在实现时,可按照立方体顶点状态构造等值面连接模式的查找表,并可直接由立方体各顶点的状态检索出其中等值面的分布模式,确定该立方体体素内的等值面三角片连接方式。
三、算法歧义性及其解决

图4
把这个问题放到3D上就产生了Hole问题。先回头看图3中的Patten 3和它的补充模式3c。按上面的歧义面定义可知,Pattern 3的底面Direct类型,而Pattern 3c是Reverse类型。当我们把Pattern 3c倒过来以后放到Pattern 3下面就会产生下图最左边所示情况:

图5
图5还显示了Pattern 10在Pattern 6c上面(中间)和Pattern 6在Pattern 3c上面的情况。
这种歧义性导致的结果可见图6。


图6
从上面可知,产生歧义性的原因是我们把3c等这些补充模式等同于对应的基本模式,从而导致在歧义面上Direct类型和Reverse类型交错使用。为了解决这个问题,提出两种扩展的Marching Cubes算法。

第一种是把所有的歧义面都按Direct类型来连接。这样产生了23中模式(图7)。

图7
另一种刚好相反,所有歧义面都为Reverse类型,也有23中模式。
图8和图9分别显示了产用上面两种扩展算法后,对应于图5和图6的结果:

图8

图9
在一般情况下,等值面与体素边界面的交线是双曲线。
该双曲线的两支及其渐近线与体素的一个边界的相互位置关系可用图10来表示。在该图所列的4 种状态中,当双曲线的两支均与某边界面相交时,就产生了连接方式的二义性。此时,双曲线的两支将边界面划分为3个区域,可见,双曲线中两条渐近线的交点必然与边界面中位于对角线上的一对交点落在同一个区域内。

10:双曲线与体素边界的相互位置关系
设双曲线的两条渐近线的交点坐标为(x, y, z)。
当出现二义性时,需要计算f(x, y, z) 的值。
如果f(x, y, z) > c ,则渐近线的交点应与其函数值大于c的一对角点(立方体的顶点)落在同一区域内。如果f(x, y, z) < c ,则渐近线的交点应与其函数值小于c的一对角点落在同一区域内。这就是当出现二义性时,交点之间的连接准则,如图11所示。

11:二义性等值面判定
在15 种基本模式中,第0, 1, 2, 4, 5, 8, 9, 11, 14 等9 种不存在二义性面,因为它们只存在1种连接方式。第3,6两种模式,各存在一个二义性面,因此各有两种连接方式。第10,12两种模式,各存在两个二义性面,因而各有4种连接方式。第7种模式存在3个二义性面,因而各有8种连接方式。第13种模式存在6个二义性面,因而各有64种连接方式。
图12
Pattern 10有两个歧义面,可细化为4种情况:
图13
立方体中间那点是为了连接成三角面片而加上去的,位置依赖于8个顶点的情况。
四、Marching tetrahedrons(移动四面体)算法简介
图16展示了8个立方体中只有它们的共用点大于域值的等值面抽取情况(分别对应于图15的两种划分方法)。

图16
当然,我们也可以把立方体划分为6个四面体或更多。
图17展示了划分为6个的情况及其等值面的抽取结果(对应于图16)。

图17
这种算法产生的3D表面要比Marching Cubes光滑,而且解决了歧义性问题。
但同时产生了比Marching Cubes算法多得多的三角面片。

本文来源:http://www.arisingsemi.com/it/84455/