APP下载

三种经典网格细分算法的研究与分析

2009-06-21王世江

中小企业管理与科技·下旬刊 2009年12期
关键词:细分顶点控制点

王世江

摘要:曲面造型方法由于其局部性好、计算量小、算法简中、响应速度高等优点已经广泛应用于计算机图形学、CAGD、计算机动画以及虚拟现实领域。网格细分是一种离散造型方法.可以从数字化仪等设备直接获得数据。介绍了近年来提出的一些细分算法对其中几种比较经典的算法进行了简中的分类和比较,论述了各自的适用范围。

关键词:细分逼近插值

中图法分类号:TP391

文献标识码:A

0引言

细分思想的产生可以追溯到二十世纪40年代末50年代初,当时G.de Rham使用“砍角算法”描述光滑曲线的生成。细分曲线中常用的许多算法均是砍角算法。1974年,Chaikin在研究曲线的快速绘制时把离散细分的概念引入到图形学界:1978年Catmnll和Clark…以及Doo和Sabinl21分别发表了一篇在图形学领域具有里程碑意义的论文,也就是图形学界推崇的Catmul—Clark算法和Doo—Sabin算法,标志着网格细分方法研究的真正开始:1987年,Loop在他的硕士论文中提出了Loop细分策略,细分造型方法的实质是通过对初始控制点或者初始网格进行一系列的细化过程,细化的极限生成所需要的曲线或者曲面。细分造型方法与传统样条、代数方法、变分造型等方法相比,在执行效率、任意拓扑结构、细分曲面特征以及复杂几何形状等方面都有其独特的优势。

1网格细分算法的分类及比较

1.1概念与术语定义1对于四边形网格M中的任一顶点v,如果v为内部顶点且价不等于4或v为边界顶点且价不等于3或2,则称v为奇异顶点。非奇异顶点称为正则顶点。

定义2权图(Masks)表示旧控制点计算新控制点规则的映射,其中新控制点在映射中用黑点表示,在每个旧控制点旁边的数字代表细分系数。

定义3奇点(0da Vertices)是在每一级细分中,按照某种细分规则所有新生成的点.在三角网格中,奇点也就是边点,实际上是将每条边的中点作为一个新点重新计算新的位置所得到的点.

定义4偶点是在每一级细分中,所有从上一级控制点继承得到的点.

定义5某项点的价(Valence)是指与该项点通过公共边相连的顶点个数.

定义6在一个网格中,如果的一条边只属于一个面,称这条边为边界边(boundary edge):如果一个顶点属于边界边则称此顶点为边界顶点(或边界点,boundary vertex):至少包含一个边界顶点的面称为边界面(boundary face)。非边界的边、顶点和面分别称为内部边(internal edge)、内部顶点(interna[vertex)和内部面(internaI face)

1.2细分算法的分类一般情况卜,对几何网格细分算法的分类包括以下四个标准:①生成网格的类型(三角网格和四角网格);②细分规则的类型(面分裂和点分裂):③算法是逼近型还是插值型;④规则曲面的极限曲面光滑性(C1,C2等)。

在现有的典型细分算法中,面分裂的细分方法,实际上就是一种1—4的细分策略,对于三角网格,在每一次细分过程中,保留每个三角网格中所有旧控制点的同时,在网格的每条边上插入新点并两两相连,然后与旧控制点一起得到四个新的三角网格;对于四角网格,除了在网格的每条边上插入新点外,还需要在网格中间另外插入一个新点并与另外四条边上的新点相连,从而得到四个新的四角网格。点分裂细分方法则是一种1 N的细分策略,N为该点的Valence,每个顶点将分裂为N个新顶点,然后按照一定的规则将新顶点重新连接组成新的网格。

1.3几种经典细分算法的介绍与比较在细分算法中比较具有代表性的包括Loop算法、Doo-Sabin算法以及Catmull-CIark算法下面对这几种细分算法分别介绍并进行比较。

1.3.1Loop算法Loop细分算法是Loop于1987年在其硕士论文中提出的一种逼近型三角形面分裂细分算法。它是基于B样条的一种策略,应用于规则网格时可以产生C2连续的曲面,在非正规点处则可达到C连续。Loop细分策略的权图如图1所示,其中图1(a)为内部的奇点,图1(b)为内部的偶点,图1(c)为边界或褶皱上的奇点,图l(d)为边界或褶皱上的偶点。显然对边界与褶皱采用特殊的规则实际上产生的是一条三次样条曲线。

1.3.2Catmull-Clark(C—C)算法C-C算法是一种基于张量积双三次样条的逼近型四边形面分裂细分策略,该策略除了在非正规点处仅C1连续外可以达到处处C2连续,其细分规则源于双三次B样条的细分权图

如图2所示

图2中,利用权A可以得到和旧控制网格中每个点相对应的新控制点:权B则生成对应于每条边的新点:而权C生成的新点与控制网格中的每个面相对应。这三种新生成的点分别称为V(Ver-tex)型点,E(Edge)型点和F(Face)型点。显然,V型点是Odd点,E型点和F型点是Even点,F型点为其控制多边形的质心;E型点则取该边端点以及两个相邻多边形质心的平均值;V型点的计算相对复杂,它取决于该点的Valence,而边界与褶皱上的细分规则与Loop格式相同,图3是Catmull—CIark算法的权图。

1.3.3Doo-Sabin算法该算法从概念与原理上在几种细分算法中最简单,它是一种基于四边形的点分裂细分策略,仅使用一个权图就可以定义该策略.Doo-Sabin算法实际上是从Chaikin快速曲线生成算法的思想推广而来的一种生成光滑曲面的方法,生成的曲面可以达到C1连续,从细分规则可以看出,细分后顶点的度均为4,非四边形而的个数是细分前非四边形的个数加定点度不为4的顶点数,且在细分过程中,始终保持不变。此外,细分在极限情形时,某个原始多边形的细分极限趋向于该原始多边形的中心,所以极限曲面插值于多边形的中心,利用这个性质可以在产品设计中用来控制细分的极限曲面。

2结束语

上面介绍了三种经典细分算法的概念、光滑性以及细分规则,它们都是基于常规格式的细分算法,其中Loop格式是基于几何三角网格的,CatmnlI-Clark和Doo-Sabin算法是基于四角网格的细分方法,对于Loop格式、以及Catmnll-Clark两种面分裂细分算法,在算法的实现过程中需要以某个面为单位进行递归细分,其关键是根据算法的细分规则为每个面上各个点建立有序邻接表,但是有序邻接表的构造比较复杂,而且在细分的实现过程中会出现重复绘制的情况,因此这种通过有序邻接表来实现递归细分的方法效率不高,Doo-Sabin细分算法是一种点分裂细分策略,能够有效地将逼近算法和插值算法结合起来发挥两者的优势是一个不错的选择,这也将是我们今后的一个研究重点。

猜你喜欢

细分顶点控制点
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
深耕环保细分领域,维尔利为环保注入新动力
关于顶点染色的一个猜想
NFFD控制点分布对气动外形优化的影响
基于风险管理下的项目建设内部控制点思考
1~7月,我国货车各细分市场均有增长
相似材料模型中控制点像点坐标定位研究
整体低迷难掩细分市场亮点
SDCORS在基础地理信息控制点补测中的应用