三维模型的网格细化是基于网格离散曲面的一种表示方法,它可以从任意拓扑网格构造光滑曲面。细化方法的基本思想是:定义一个网格序列的极限,网格序列是采用一定的细分规则(一般是加权平均),在给定的初始网格中插入新的顶点,从而不断细化出新的网格,重复运用细分规则,在极限时,该网格即收敛于一个光滑的曲线或者曲面。三维模型网格的细化是图形学算法以及游戏领域中一个较为常用且有代价值的算法。
网络细分是由细分规则作用在初始网格得到的。细分规则可以分为两个部分:一是拓扑分裂规则,主要用来描述网格每次细分之后所有顶点之间的连接关系,该过程也称为分裂;另一个是几何规则,用来计算新顶点的几何位置信息,这一过程也称为平均。通常有两种基本的分裂方法:顶点分裂和面分裂,其区别主要在于所作用的基本几何体元。顶点分裂是对于给定度为n的顶点i(顶点的度表示顶点所关联的边的个数),将其分裂成n个新顶点,每个顶点对应着它的一个邻面,使用该方式的细分方法称为对偶型。如果i为内部顶点,则把这些复制顶点依次相边开成一个新的n边形,称此n边形为新网格的V-面;对于内部边两个端点分裂构成的新网格称为E-面,旧网格多边形每个顶点分裂构成的新网格面与原来的网格具有相同的拓扑结构,称之为F-面。面分裂是在网格边和面上插入新的顶点,然后对每个面进行剖分,从而得到新的网格。使用此方法的细分方法称为基本型。
图1. 顶点分裂
图2. 面分裂
在实践中经常使用的三种细分模式主要有三种:Loop细分模式,Butterfly细分模式,√3细分模式,这三种方法的主要区别即在于它们的细分规则不同。
1. Loop细分模式
Loop细分模式采用1-4三角形分裂,只生成E-顶点和V-顶点。顶点的计算如下:
a. 若内部边有两个顶点v0和v1,共享此边的两个三角形为(v0,v1,v2)和(v0,v1,v3),则新生成的E-顶点为:
若内部顶点v的1-邻域顶点为vi(i = 0, 1, 2, … , n-1), 则新生的V-顶点为: