三种经典网格细分算法的研究与分析
- 格式:docx
- 大小:28.22 KB
- 文档页数:3
典型三角网格细分算法
江焯林;黎绍发;贾西平;祝红丽
【期刊名称】《计算机工程》
【年(卷),期】2009(35)6
【摘要】介绍7种典型的三角网格细分算法,对各种细分算法在连续性、具备优点及应用状况等几个方面进行比较和归类.为提高三角网格细分效果的可视化程度,将基于功能类机制的状态机模型作为软件运行模式,利用MFC和OpenGL实现交互式显示控制,并在此基础上对最具典型意义的Loop算法进行原型实现,给出优化方法.
【总页数】4页(P7-10)
【作者】江焯林;黎绍发;贾西平;祝红丽
【作者单位】华南理工大学计算机科学与工程学院,广州,510640;华南理工大学计算机科学与工程学院,广州,510640;华南理工大学计算机科学与工程学院,广
州,510640;华南理工大学资源科学与造纸工程学院,广州,510640
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.基于型面曲率的三角网格快速自适应细分算法 [J], 孙殿柱;朱昌志;李延瑞
2.基于三角形细分的三角网格模型表面体素化算法 [J], 赵芳垒;敬石开;李向前;邢昊;刘晨燕;宋国华
3.三角网格顶点重要度的自适应Loop细分算法 [J], 王艳艳;惠丽峰;罗晓锋;张荣国
4.基于二次误差的三角网格自适应细分算法研究 [J], 孙翰英;乔秀春;范强
5.面向移动终端的三角网格逆细分压缩算法 [J], 马建平;罗笑南;陈渤;李峥
因版权原因,仅展示原文概要,查看原文内容请购买。
网格细化方案概述网格细化是指在数值计算中将初始网格进行进一步细分,以提高数值模拟的准确性和精度的一种方法。
通过合理地细化网格,可以更好地捕捉复杂的几何形状和物理过程。
本文将介绍几种常见的网格细化方案,并探讨它们的优缺点和适用场景。
1. 均匀网格细化均匀网格细化是最简单的网格细化策略之一。
它按照固定的步长将初始网格划分为更小的网格单元。
这种方法的优点是简单易实现,且计算效率较高。
然而,它存在的问题是无法适应复杂的几何形状和物理过程,对于一些细节变化较大的区域,无法提供足够的分辨率。
因此,均匀网格细化主要适用于处理简单的几何形状和物理过程。
2. 自适应网格细化自适应网格细化是一种根据问题需要动态调整网格的方法。
它根据初始网格上的解的特点,通过一定的误差估计准则来判断是否需要进行网格细化。
这种方法的优点是可以根据问题的要求精确地捕捉局部细节,提高计算的准确性。
然而,自适应网格细化也存在一些问题,如在复杂的区域和物理过程中,调整网格的复杂度较高,计算时间较长。
因此,自适应网格细化主要适用于需要高精度解或处理复杂几何形状和物理过程的问题。
3. 多重网格细化多重网格细化是一种层次结构的网格细化方法。
它将问题划分为多个层次的网格,通过在不同层次的网格上进行迭代计算来逐渐提高解的精度。
多重网格细化的优点是可以在保持计算效率的同时提高解的精度。
然而,多重网格细化的实现较为复杂,需要进行网格层次间的数据交换和差值操作。
因此,多重网格细化主要适用于需要高精度解且计算时间要求较高的问题。
4. 网格细化方案的选择选择合适的网格细化方案取决于具体问题的特点和要求。
在实际应用中,需要根据问题的复杂程度、几何形状的复杂度、精度要求和计算效率等因素综合考虑。
对于简单的几何形状和物理过程,均匀网格细化是一种简单而有效的选择。
对于需要高精度解或处理复杂几何形状和物理过程的问题,自适应网格细化和多重网格细化是更合适的选择。
结论网格细化是提高数值模拟准确性和精度的重要方法之一。
表面细分算法
表面细分算法是一种用于生成高精度、高质量几何模型的方法。
它可
以将简单的三角形网络逐步细分为更复杂的几何形状,提高模型的准确性
和细节。
常见的表面细分算法包括:
1. Catmull-Clark细分算法:该算法是一种基于网格的方法,通过
对三角面片进行逐层细分,生成平滑的模型表面。
该算法适用于几何体、
动画和游戏等领域。
2. Loop细分算法:该算法是一种适用于细分高精度模型表面的方法,能够生成更细腻、更真实的表面细节。
该算法通过连接顶点和面片,生成
具有更高阶曲率的曲面。
3. Doo-Sabin细分算法:该算法可以将四边形及其子孙面细分为另
外四个四边形,从而生成更复杂的几何形状。
该算法可以产生类似于细胞、泡沫等复杂几何形状。
网格划分的方法1.矩形网格差分网格的划分方法划分网格的原则:1)水域边界的补偿。
舍去面积与扩增面积相互抵消。
2)边界上的变步长处理。
3)水、岸边界的处理。
4)根据地形条件的自动划分。
5)根据轮廓自动划分。
2.有限元三角网格的划分方法1)最近点和稳定结构原则。
2)均布结点的网格自动划分。
3)逐渐加密方法。
353025201510505101520253035距离(m)距离(m)3. 有限体积网格的划分方法1) 突变原则。
2) 主要通道边界。
3) 区域逐步加密。
距离(100m)离距(100m)距离(100m)离距(100m )4. 边界拟合网格的划分方法1) 变换函数:在区域内渐变,满足拉普拉斯方程的边值问题。
),(ηξξξP yy xx =+),(ηξηηQ yy xx =+2) 导数变化原则。
⎪⎪⎪⎪⎭⎫⎝⎛∂∂∂∂=⎪⎪⎪⎪⎭⎫ ⎝⎛∂∂∂∂-ηξ1J y x ,⎪⎪⎭⎫ ⎝⎛=ηηξξy x y x J 为雅可比矩阵,⎪⎪⎭⎫ ⎝⎛--=-ηηξξy x y x J J 11, ξηηξy x y x J -=)22(1222233ηηξηξηηξηξξηηηηηξξηηξξξηξy y x y y y x y y x x y y x y y x y J xx +-+-+-= 同理可得yy ξ,xx η,yy η。
变换方程为020222=+++-=+++-)()(ηξηηξηξξηξηηξηξξγβαγβαQy Py J y y y Qx Px J x x x 其中2222,,ξξηξξηηηγβαy x y y x x y x +=+=+=。
几种经典网格细分算法的比较
王金生;韩臻;施寅;尹直诺
【期刊名称】《计算机应用研究》
【年(卷),期】2004(21)6
【摘要】曲面造型方法由于其局部性好、计算量小、算法简单、响应速度高等优点,已经广泛应用于计算机图形学、CAGD、计算机动画以及虚拟现实等领域.网格细分是一种离散造型方法,可以从数字化仪等设备直接获得数据.介绍了近年来提出的一些细分算法,对其中几种比较经典的算法进行了简单的分类和比较,并论述了各自的适用范围.
【总页数】3页(P139-141)
【作者】王金生;韩臻;施寅;尹直诺
【作者单位】北京交通大学,计算机与信息技术学院,北京,100044;北京交通大学,计算机与信息技术学院,北京,100044;北京交通大学,计算机与信息技术学院,北
京,100044;青岛市城阳区国家税务局,山东,青岛,266109
【正文语种】中文
【中图分类】TP391
【相关文献】
1.几种经典插值算法的放大结果比较 [J], 马书红
2.几种经典快速块匹配运动估计算法的比较研究 [J], 肖敏连
3.三种经典网格细分算法的研究与分析 [J], 王世江
4.约瑟夫环经典问题的几种算法比较 [J], 王永红
5.几种经典的最短路径算法比较分析 [J], 赵卫绩;巩占宇;王雯;樊守芳
因版权原因,仅展示原文概要,查看原文内容请购买。
基于三角网格的任意尺度细分方法模板细分方法是现代最重要的曲线曲面生成技术之一,现已被广泛应用于曲线曲面设计、造型等工程领域.细分方法按一定的细分规则多尺度地逼近一个光滑曲面,在进行局部特征调控的同时,能够保证曲面整体的光滑性,能够处理任意拓扑的控制网格,是联系连续模型和离散表示的桥梁.与其它造型方法相比,细分方法具有明显的优势,其算法简单,容易实现,具有广泛的应用前景和很强的生命力.目前,大多细分方法都是二尺度细分或三尺度细分,对于任意尺度细分研究还不是十分深入和完善.本文给出了基于三角形网格空间S42(△)的任意尺度细分掩模的一般表达式.在此基础上,得出了求规则点的任意尺度细分模板的具体方法,对于细分方法的理论研究和实际应用具有重要意义.同主题文章[1].李燕琴. 一种生态旅游者的识别与细分方法——以北京市百花山自然保护区为例' [J]. 北京大学学报(自然科学版). 2005.(06)[2].冯兵,罗新星,周永生. 非契约型客户关系演变模型及其运用研究' [J]. 预测. 2006.(06)[3].张智丰,张亚荣. 细分曲线参数化与累加弦长参数化的数值比较' [J]. 湘潭师范学院学报(自然科学版). 2009.(04)[4].蒋玉明. 均匀B样条曲线(段)曲面(片)的非均匀细分算法' [J]. 四川大学学报(工程科学版). 1991.(05)[5].王建卫,张泽银,黄达人. 四边形网格的削角细分' [J]. 浙江大学学报(理学版). 2004.(02)[6].崔柳,张书练. 双频氦氖激光回馈位移测量系统的实验与应用研究' [J]. 应用光学. 2007.(03)[7].楚兴春,吕海宝,杜列波,周卫红. 任意相位差条纹信号细分方法的研究' [J]. 光学学报. 2005.(04)[8].郭俊鹏,刘西林. 基于ID3算法的进一步客户细分方法' [J]. 工业工程. 2006.(02)[9].Said ,M.Easa,余又生. 地块细分的直接计算法' [J]. 测绘科学. 1990.(Z1)[10].刘晓芬,潘日晶. 基于Loop细分方法的曲线插值' [J]. 福建师范大学学报(自然科学版). 2006.(01)【关键词相关文档搜索】:计算数学; Box样条; 细分模板; Loop细分; 细分曲面【作者相关信息搜索】:吉林大学;计算数学;李强;战扬;。
三维⽹格细分算法(Catmull-ClarksubdivisionLoopsubdivis。
转载:下图描述了细分的基本思想,每次细分都是在每条边上插⼊⼀个新的顶点,可以看到随着细分次数的增加,折线逐渐变成⼀条光滑的曲线。
曲⾯细分需要有⼏何规则和拓扑规则,⼏何规则⽤于计算新顶点的位置,拓扑规则⽤于确定新顶点的连接关系。
下⾯介绍两种⽹格细分⽅法:Catmull-Clark细分和Loop细分。
Catmull-Clark subdivision: Catmull-Clark细分是⼀种四边形⽹格的细分法则,每个⾯计算⽣成⼀个新的顶点,每条边计算⽣成⼀个新的顶点,同时每个原始顶点更新位置。
下图为Catmull-Clark细分格式的细分掩膜,对于新增加的顶点位置以及原始顶点位置更新规则如下:1.⽹格内部F-顶点位置: 设四边形的四个顶点为v0、v1、v2、v3,则新增加的顶点位置为v = 1/4*(v0 + v1 + v2 + v3)。
2.⽹格内部V-顶点位置: 设内部顶点v0的相邻点为v1、v2,…,v2n,则该顶点更新后位置为,其中α、β、γ分别为α = 1 - β -γ。
3.⽹格边界V-顶点位置: 设边界顶点v0的两个相邻点为v1、v2,则该顶点更新后位置为v = 3/4*v0 + 1/8*(v1 + v2)。
4.⽹格内部E-顶点位置: 设内部边的两个端点为v0、v1,与该边相邻的两个四边形顶点分别为v0、v1、v2、v3和v0、v1、v4、v5,则新增加的顶点位置为v = 1/4* (v0 + v1 + v f1 + v f2) = 3/8*(v0 + v1) + 1/16*(v2 + v3 + v4 + v5)。
5.⽹格边界E-顶点位置: 设边界边的两个端点为v0、v1,则新增加的顶点位置为v = 1/2*(v0 + v1)。
效果:function [VV, FF, S] = CC_subdivision(V, F, iter)% Catmull_Clark subdivisionif ~exist('iter','var')iter = 1;endVV = V;FF = F;for i = 1:iternv = size(VV,1);nf = size(FF,1);O = outline(FF);original = 1:nv;boundary = O(:,1)';interior = original(~ismember(original, boundary));no = length(original);nb = length(boundary);ni = length(interior);%% SvEtmp = sort([FF(:,1) FF(:,2);FF(:,2) FF(:,3);FF(:,3) FF(:,4);FF(:,4) FF(:,1)],2);[E, ~, idx] = unique(Etmp, 'rows');Aeven = sparse([E(:,1) E(:,2)], [E(:,2) E(:,1)], 1, no, no);Aodd = sparse([FF(:,1) FF(:,2)], [FF(:,3) FF(:,4)], 1, no, no);Aodd = Aodd + Aodd';val_even = sum(Aeven,2);beta = 3./(2*val_even);val_odd = sum(Aodd,2);gamma = 1./(4*val_odd);alpha = 1 - beta - gamma;Sv = sparse(no,no);Sv(interior,:) = ...sparse(1:ni, interior, alpha(interior), ni, no) + ...bsxfun(@times, Aeven(interior,:), beta(interior)./val_even(interior)) + ...bsxfun(@times, Aodd(interior,:), gamma(interior)./val_odd(interior));Sboundary = ...sparse([O(:,1);O(:,2)],[O(:,2);O(:,1)],1/8,no,no) + ...sparse([O(:,1);O(:,2)],[O(:,1);O(:,2)],3/8,no,no);Sv(boundary,:) = Sboundary(boundary,:);%% SfSf = 1/4 .* sparse(repmat((1:nf)',1 ,4), FF, 1);i0 = no + (1:nf)';%% Seflaps = sparse([idx;idx], ...[FF(:,3) FF(:,4);FF(:,4) FF(:,1);FF(:,1) FF(:,2);FF(:,2) FF(:,3)], ...1);onboundary = (sum(flaps,2) == 2);flaps(onboundary,:) = 0;ne = size(E,1);Se = sparse( ...[1:ne 1:ne]', ...[E(:,1); E(:,2)], ...[onboundary;onboundary].*1/2 + ~[onboundary;onboundary].*3/8, ...ne, ...no) + ...flaps*1/16;%% new faces & new verticesi1 = no + nf + (1:nf)';i2 = no + 2*nf + (1:nf)';i3 = no + 3*nf + (1:nf)';i4 = no + 4*nf + (1:nf)';FFtmp = [i0 i4 FF(:,1) i1; ...i0 i1 FF(:,2) i2; ...i0 i2 FF(:,3) i3; ...i0 i3 FF(:,4) i4];reidx = [(1:no)'; no+(1:nf)'; no+nf+idx];FF = reidx(FFtmp);S = [Sv; Sf; Se];VV = S*VV;endendLoop subdivision: Loop细分是⼀种三⾓形⽹格的细分法则,它按照1-4三⾓形分裂,每条边计算⽣成⼀个新的顶点,同时每个原始顶点更新位置。
在中国CAE论坛上看到这个,挺不错的壳体单元网格划分时,如果能了解一些网格划分的技巧和策略,将会事半功倍。
壳体网格划分可以从3个方面入手:几何模型、划分方法和解决策略。
1 几何模型可以从以下几个方面了解和处理几何模型问题(1)了解部件的形状,主要集中在尺寸小的部分。
(2)什么样的特征可以被忽略,例如小的倒角和圆孔。
(3)何种特征对分析是关键的特征,这些特征对确保好的单元质量是需要的。
2 划分方法(自动+手工)可以采用如下方法(1)将部件分割为不同的区域。
(2)每个区域必须有可能只使用一种三维网格模式。
(3)寻找下述特点区域:大量生成区域、对称性区域、产生困难的区域。
(4)寻找大量不同区域和方法。
(5)注意什么样的二维网格模式被要求。
(6)观察周围区域:什么功能可以在那里使用。
(7)二维网格模式是否可以延伸到相邻区域中。
(8)寻找对网格模式不能处理位置进行网格划分的方法:如果这样做了,寻找网格可以触及的曲面;注意周围网格将与此模式相融合。
(9)小特征融入大特征中;大特征划分网格时必须考虑到小特征。
(10)注意网格模式。
3 解决策略壳体网格划分的主要策略如下(1)内部特征衔接外部特征:l 不能变成被限制的。
l 网格模式需要一个面流入以便它们可以停止l 从内到外划分网格可以避免此问题。
(2)小特征融入到大特征中:注意模式、大特征划分网格时必须考虑到小特征。
(3)硬特征应当先处理,否则它们会变得难于处理。
(4)通常情况下首先进行大量的生成,后面的编辑是比较容易的。
某些区域比较重要的网格划分的质量要求高些,如力的作用区域,边界条件所在的区域。
一些设计区域和离设计区域比较远的地方可以适当放宽要求,但是最好是一些网格性能指标要满足。
三角形网格生成算法的研究与应用一、引言三角网格是计算机图形学领域中最常见的图形表示方式之一。
三角形网格生成算法的出现为图形学在各个领域的应用提供了强有力的支持,如计算机辅助设计、数字娱乐、医学图像处理等等。
然而目前三角形网格的生成算法依然存在许多难点,本文将针对这些难点进行研究和分析,探讨三角形网格生成算法的研究与应用。
二、先进的三角形网格生成算法三角形网格生成算法主要分为离散型和连续型两种。
离散型算法主要是针对离散数据点进行分析和处理,是传统算法的核心。
而连续型算法则主要考虑通过合理的数值方法对连续函数进行求解得到三角形网格。
2.1 离散型算法离散型算法主要方法包括 Delaunay 三角剖分、Voronoi 图、alpha 参数、最小生成树等等。
Delaunay 三角剖分是三角形网格分割中最常见的算法之一。
该算法的核心思想是保持尽量少的单纯形边长相交。
Voronoi 图是一种基于点的分割方法,可以将平面分割成一系列多边形。
Alpha 参数是控制 Delaunay 三角剖分质量的措施之一,通过调整 alpha 参数,可以在不同场景下获得合适的 Delaunay 三角剖分。
最小生成树算法则是对点集进行聚类的一种方法,通常用于优化 Delaunay三角剖分的质量。
2.2 连续型算法连续型算法主要包括渐近线、等值线、样条曲面拟合、卷积核方法等等。
渐近线的求解方法主要是对三角形网格表面进行采样后,通过函数空间中的拟合逼近来求解渐近线。
等值线方法则是在网格表面中寻找等值线,从而实现扫描三角形网格的目的。
样条曲面拟合是利用拟合优化方法,对离散的三角形网格点进行拟合,得到连续的三角形网格。
卷积核方法则通过对三角形表面求导以及在线性空间中构建卷积核,从而求得三角形网格表面的连续性信息。
三、三角形网格生成算法在计算机图形学领域的应用三角形网格生成算法在计算机图形学领域的应用十分广泛,主要包括三维重构、曲面拟合、形状建模、虚拟现实等等。
第3章网格划分技术及技巧-图文创建几何模型后,必须生成有限元模型才能分析计算,生成有限元模型的方法就是对几何模型进行网格划分,网格划分主要过程包括三个步骤:⑴定义单元属性单元属性包括单元类型、实常数、材料特性、单元坐标系和截面号等。
⑵定义网格控制选项★对几何图素边界划分网格的大小和数目进行设置;★没有固定的网格密度可供参考;★可通过评估结果来评价网格的密度是否合理。
⑶生成网格★执行网格划分,生成有限元模型;★可清除已经生成的网格并重新划分;★局部进行细化。
3.1定义单元属性3.1.1单元类型1.定义单元类型命令:ET,ITYPE,Ename,KOP1,KOP2,KOP3,KOP4,KOP5,KOP6,INOPRITYPE---用户定义的单元类型的参考号。
KOP1~KOP6---单元描述选项,此值在单元库中有明确的定义,可参考单元手册。
也可通过命令KEYOPT进行设置。
INOPR---如果此值为1则不输出该类单元的所有结果。
例如:et,1,link8!定义LINK8单元,其参考号为1;也可用ET,1,8定义et,3,beam4!定义BEAM4单元,其参考号为3;也可用ET,3,4定义2.单元类型的KEYOPT命令:KEYOPT,ITYPE,KNUM,VALUEITYPE---由ET命令定义的单元类型参考号。
KNUM---要定义的KEYOPT顺序号。
VALUE---KEYOPT值。
该命令可在定义单元类型后,分别设置各类单元的KEYOPT参数。
例如:et,1,beam4!定义BEAM4单元的参考号为1et,3,beam189!定义BEAM189单元的参考号为3keyopt,1,2,1!BEAM4单元考虑应力刚度时关闭一致切线刚度矩阵keyopt,3,1,1!考虑BEAM189的第7个自由度,即翘曲自由度!当然这些参数也可在ET命令中一并定义,如上述四条命令与下列两条命令等效:et,1,beam4,,1et,3,beam189,13.自由度集命令:DOF,Lab1,Lab2,Lab3,Lab4,Lab5,Lab6,Lab7,Lab8,Lab9,Lab104.改变单元类型命令:ETCHG,Cnv5.单元类型的删除与列表删除命令:ETDELE,ITYP1,ITYP2,INC列表命令:ETLIST,ITYP1,ITYP2,INC3.1.2实常数1.定义实常数命令:R,NSET,R1,R2,R3,R4,R5,R6续:RMORE,R7,R8,R9,R10,R11,R12NSET---实常数组号(任意),如果与既有组号相同,则覆盖既有组号定义的实常数。
三种经典网格细分算法的研究与分析
摘要:曲面造型方法由于其局部性好、计算量小、算法简中、响应速度高等优点.
已经广泛应用于计算机图形学、CAGD、计算机动画以及虚拟现实领域。
网格细分是一种离散造型方法.可以从数字化仪等设备直接获得数据。
介绍了近年来提出的
一些细分算法.对其中几种比较经典的算法进行了简中的分类和比较,论述了各自
的适用范围。
关键词:细分逼近插值
中图法分类号:TP391 文献标识码:A
0 引言
细分思想的产生可以追溯到二十世纪40年代末50年代初,当时G. de Rham
使用“砍角算法”描述光滑曲线的生成。
细分曲线中常用的许多算法均是砍角算法。
1974年,Chaikin在研究曲线的快速绘制时把离散细分的概念引入到图形学
界:1978年Catmnll和Clark[1]以及Doo和Sabin[2]分别发表了一篇在图形学领域具有里程碑意义的论文,也就是图形学界推崇的Catmul- Clark算法和Doo -Sabin算法,标志着网格细分方法研究的真正开始:1987年,Loop在他的硕士论文中提出
了Loop[3]细分策略,细分造型方法的实质是通过对初始控制点或者初始网格进行一系列的细化过程,细化的极限生成所需要的曲线或者曲面。
细分造型方法与传
统样条、代数方法、变分造型等方法相比,在执行效率、任意拓扑结构、细分曲
面特征以及复杂几何形状等方面都有其独特的优势。
1 网格细分算法的分类及比较
1.1 概念与术语定义1 对于四边形网格M中的任一顶点v,如果v为内部顶
点且价不等于4或v为边界顶点且价不等于3 或2,则称v为奇异顶点。
非奇异
顶点称为正则顶点。
定义2 权图(Masks)表示旧控制点计算新控制点规则的映射,其中新控制点在
映射中用黑点表示,在每个旧控制点旁边的数字代表细分系数。
定义3 奇点(Odd Vertices)是在每一级细分中,按照某种细分规则所有新生成
的点.在三角网格中,奇点也就是边点,实际上是将每条边的中点作为一个新点重
新计算新的位置所得到的点.
定义4 偶点是在每一级细分中,所有从上一级控制点继承得到的点.
定义5 某顶点的价(Valence)是指与该顶点通过公共边相连的顶点个数.
定义6 在一个网格中,如果的一条边只属于一个面,称这条边为边界边(boundary edge):如果一个顶点属于边界边则称此顶点为边界顶点(或边界点,boundary vertex):至少包含一个边界顶点的面称为边界面(boundary face)。
非边界
的边、顶点和面分别称为内部边(internal edge)、内部顶点(internal vertex)和内部
面(internal face)
1.2 细分算法的分类一般情况卜,对几何网格细分算法的分类包括以下四个标
准:①生成网格的类型(三角网格和四角网格);②细分规则的类型(面分裂和点分裂);③算法是逼近型还是插值型;④规则曲面的极限曲面光滑性(C1,C2等)。
在现有的典型细分算法中,面分裂的细分方法,实际上就是一种1- 4的细分
策略,对于三角网格,在每一次细分过程中,保留每个三角网格中所有旧控制点
的同时,在网格的每条边上插入新点并两两相连,然后与旧控制点一起得到四个
新的三角网格;对于四角网格,除了在网格的每条边上插入新点外,还需要在网
格中间另外插入一个新点并与另外四条边上的新点相连,从而得到四个新的四角
网格。
点分裂细分方法则是一种1-N的细分策略,N为该点的Valence,每个顶点将分裂为N个新顶点,然后按照一定的规则将新顶点重新连接组成新的网格。
1.3 几种经典细分算法的介绍与比较在细分算法中比较具有代表性的包括
Loop算法、Doo- Sabin算法以及Catmull- Clark算法下面对这几种细分算法分别介
绍并进行比较。
1.3.1 Loop算法 Loop细分算法是Loop于1987年在其硕士论文中提出的一种
逼近型三角形面分裂细分算法。
它是基于B样条的一种策略,应用于规则网格时
可以产生C2连续的曲面,在非正规点处则可达到C1连续。
Loop细分策略的权图如图1所示,其中图1(a)为内部的奇点,图1 (b)为内部的偶点,图1(c)为边界或
褶皱上的奇点,图1(d)为边界或褶皱上的偶点。
显然对边界与褶皱采用特殊的规
则实际上产生的是一条三次样条曲线。
1.3.2 Catmull-Clark(C-C)算法 C-C算法是一种基于张量积双三次样条的逼近型四边形面分裂细分策略,该策略除了在非正规点处仅C1连续外可以达到处处C2连续,其细分规则源于双三次B样条的细分权图
利用权A可以得到和旧控制网格中每个点相对应的新控制点;权B则生成对
应于每条边的新点;而权C生成的新点与控制网格中的每个面相对应。
这三种新
生成的点分别称为V(Vertex)型点,E(Edge)型点和F(Face)型点。
显然,V型点是Odd点,E型点和F型点是Even点,F型点为其控制多边形的质心;E型点则取
该边端点以及两个相邻多边形质心的平均值;V型点的计算相对复杂,它取决于
该点的Valence,而边界与褶皱上的细分规则与Loop格式相同,图3是Catmull-Clark算法的权图。
1.3.3 Doo-Sabin算法该算法从概念与原理上在几种细分算法中最简单,它是
一种基于四边形的点分裂细分策略,仅使用一个权图就可以定义该策略.Doo-Sabin算法实际上是从Chaikin快速曲线生成算法的思想推广而来的一种生成光滑
曲面的方法,生成的曲面可以达到C1 连续. 从细分规则可以看出,细分后顶点的
度均为4,非四边形而的个数是细分前非四边形的个数加定点度不为4的顶点数,且在细分过程中,始终保持不变。
此外,细分在极限情形时,某个原始多边形的
细分极限趋向于该原始多边形的中心,所以极限曲面插值于多边形的中心,利用
这个性质可以在产品设计中用来控制细分的极限曲面。
2 结束语
上面介绍了三种经典细分算法的概念、光滑性以及细分规则,它们都是基于
常规格式的细分算法,其中Loop格式是基于几何三角网格的,Catmnll-Clark和Doo-Sabin算法是基于四角网格的细分方法,对于Loop格式、以及Catmnll-Clark
两种面分裂细分算法,在算法的实现过程中需要以某个面为单位进行递归细分,
其关键是根据算法的细分规则为每个面上各个点建立有序邻接表,但是有序邻接
表的构造比较复杂,而且在细分的实现过程中会出现重复绘制的情况,因此这种
通过有序邻接表来实现递归细分的方法效率不高,Doo-Sabin细分算法是一种点
分裂细分策略,能够有效地将逼近算法和插值算法结合起来发挥两者的优势是一
个不错的选择,这也将是我们今后的一个研究重点。
参考文献:
[1]Catmull E, Clark J. Recursively Generated B-Spline Surfaces on Arbitrary Topological Meshes [J].Computer Aided Design, 1978,10(6):350-355.
[2]Doo D, Sabin M. Analysis of the Behaviour of Recursive Division Surfaces Near Extraordinary [J].ComputerAidedDesign,1978, 10(6):356-360.
[3]Loop C.Smooth Subdivision Surfaces Based on Triangles [D].University of Utah, Department of Mathematics,1987.33-54.。