网格

来源:互联网 发布:云计算tongwii 编辑:程序博客网 时间:2024/04/30 00:57



网络细分是由细分规则作用在初始网格得到的。细分规则可以分为两个部分:一是拓扑分裂规则,主要用来描述网格每次细分之后所有顶点之间的连接关系,该过程也称为分裂;另一个是几何规则,用来计算新顶点的几何位置信息,这一过程也称为平均。通常有两种基本的分裂方法:顶点分裂和面分裂,其区别主要在于所作用的基本几何体元。顶点分裂是对于给定度为n的顶点i(顶点的度表示顶点所关联的边的个数),将其分裂成n个新顶点,每个顶点对应着它的一个邻面,使用该方式的细分方法称为对偶型。如果i为内部顶点,则把这些复制顶点依次相边开成一个新的n边形,称此n边形为新网格的V-面;对于内部边两个端点分裂构成的新网格称为E-面,旧网格多边形每个顶点分裂构成的新网格面与原来的网格具有相同的拓扑结构,称之为F-面。面分裂是在网格边和面上插入新的顶点,然后对每个面进行剖分,从而得到新的网格。使用此方法的细分方法称为基本型。


三维模型的网格细化是基于网格离散曲面的一种表示方法,它可以从任意拓扑网格构造光滑曲面。细化方法的基本思想是:定义一个网格序列的极限,网格序列是采用一定的细分规则(一般是加权平均),在给定的初始网格中插入新的顶点,从而不断细化出新的网格,重复运用细分规则,在极限时,该网格即收敛于一个光滑的曲线或者曲面。三维模型网格的细化是图形学算法以及游戏领域中一个较为常用且有代价值的算法


图1. 顶点分裂

2

图2. 面分裂

在实践中经常使用的三种细分模式主要有三种:Loop细分模式,Butterfly细分模式,√3细分模式,这三种方法的主要区别即在于它们的细分规则不同。

1. Loop细分模式

Loop细分模式采用1-4三角形分裂,只生成E-顶点和V-顶点。顶点的计算如下:

a. 若内部边有两个顶点v0和v1,共享此边的两个三角形为(v0,v1,v2)和(v0,v1,v3),则新生成的E-顶点为:

clip_image006[4]

若内部顶点v的1-邻域顶点为vi(i = 0, 1, 2, … , n-1), 则新生的V-顶点为:

clip_image008[4]

即是顶点本身与其所有相邻顶点的加权和,它本身的权值为clip_image010[4],而邻点权值为:

clip_image012[4]

b. 若边界边的两个顶点为 v0和v1,则新生成的E-顶点为:

clip_image014[4]

c. 若边界顶点v在边界上的两相邻顶点为v0和v1,则新生成的V-顶点为:

clip_image016[4]

3 45 6

图3.                内部E顶点                             内部V顶点                         边界E顶点                            边界V顶点

2. Butterfly细分模式

Dyn等人在其论文中提取了一种三角形网格上的插值的面分裂型细分方法,由于其插值顶点的形状类似于蝴蝶,因而此种方法被称为蝶形细分法。该方法的缺点在于规则网格上生成的曲面是C1连续的,但在奇异顶点处只能达到C0连续, 对此Zorin等人提出了改进的解决方法,能够在任意三角形网格上生成C1连续的曲面,其主要改进方法是增加了对奇异顶点的特殊处理。这种方法细分的拓扑规则 与Loop细分方法规则相同,几何规则却有所区别。B方法对于要处理的E-顶点主要可以分为三种类型:

a. 内部边且其两个端点的度数均为6,此时的顶点计算由下图所示。

7

b. 内部边且其至少有一个端点度数不等于6,此时的顶点计算由下图所示。其中的S为顶各顶点的权重贡献因子,其主要特点是S仅依赖于初始网格中顶点的连接关系,而不依赖于顶点的位置信息,因而能够找到适当的邻接顶点集,就可以构造出与细分格式对应的局部细分参数。

1. 如果clip_image028[4]

clip_image030[4]

2. 如果clip_image032[4]

clip_image034[4]

3. 如果clip_image036[4]

clip_image038[4]

c. 边界边的E-顶点的计算使用4点插值方法来进行计算,如下图所示。

8

3. √3细分模式

√3细分模式是另外一种新近提出的C2连续的三角网格细分方法,该方法是一种适用于任意三角网格的逼近模式。它可以在奇异点得到C1连续,而在其它位置得到C2连续的网格曲面。√3细分曲面是通过在每个三角面片中插入面点,然后连接该点与所在三角面征的顶点,再执行边翻转操作而得到。初始网格经过一次√3细分后,生成新顶点度数为6而原顶点度数保持不变的半规则网格;两次细分后,每个初始三角面片都分裂成九个新的三角面片,即执行了一次三元分裂操作(tri-adic split),这种形象化的描述也是该方法名称的来由。

9

图4. √3细分模式示意图

采用√3细分模式,F-顶点和V-顶点的计算规则如下:

a. F-顶点:设三角形的三个顶点为v0,v1,v2,则新插入的F-顶点VF为:

clip_image044[4]

b. V-顶点:设顶点v的相邻顶点为v0,v1,...,vn-1,则新插入的V-顶点vV为:

clip_image046[4]

其中,

clip_image048[4]

使用上述算法进行模型细分的一些示例图:

10

11

12 

注意到上述对于人脸模型进行细分后会出现不正常的控制点,这是由于模型数据源的问题,因在程序中直接使用了PSB模型检索测试库中的.off格式人脸模型。

0 0
原创粉丝点击