(杭州电子科技大学计算机学院,浙江 杭州310018)
在自然界以及工业产品设计中,大量的物体表面几何(包括常用的二次曲面等)皆为旋转曲面,因此研究快速高效且利于分析的旋转曲面的几何造型方法在CAD/CAM 中具有十分重要的意义。从初始多边形或网格按照一定的规则不断细分逼近光滑曲线或曲面的造型技术,这一技术在20世纪末得到了很好的发展和应用,日渐成为几何造型的一个重要研究方向[1-3]。由于细分模型具有概念简单易于修改,能从一般拓扑的控制网格高效、分层递进地定义光滑形体等优点成为三维动画造型的首选方法,目前应用最广的三维动画制作软件MAYA系统也是以细分曲面为造型工具的。关于细分造型技术的主要方法与分析详见文献4。常用的二次曲面属于旋转曲面,可以用NURBS 曲面精确表示,但其有理形式给计算和分析带来不便,另外,NRUBS 也不具有分层细分的性质,因此包含二次曲面在内的旋转曲面的精确表示及细分方法成为一项重要的研究课题。文献5 中提出了动态的Do-Sabin 细分推广方法,其极限曲面为双二次的三角B样条曲面,从而可细分生成包括圆柱面、球面和椭球面的双二次旋转曲面,文献6 中提出了基于CB样条的双三次的细分方法,其极限曲面为双二次的三角B样条曲面,可细分生成包括圆柱面、球面和椭球面及圆环面的双三次旋转曲面,文献7 中进一步提出了基于双三次三角B样条及双曲B样条的细分方法,在文献5,6的基础上,又增加了包括双曲面在内的双三次三角及双曲B样条旋转曲面的细分生成能力。但已有方法能细分生成旋转曲面在两个方向上只限于均次数和均参数的情况,因此能生成的旋转曲面的类型和形状调整方式都十分受限。文献8 中提出了一种基于推广B样条的曲线细分方法,它能细分生成所有二次曲线、三角及双曲函数曲线、螺旋线、悬链线等,其极限曲线为任意次带张力参数的推广B样条曲线,本文将这种细分方法推广到旋转曲面的细分生成方法,可细分生成比已有方法丰富得多的旋转曲面,同时可从两个方向调整曲面形状。
非齐次旋转曲面细分方法实际上是文献8 中提出的曲线细分向旋转曲面的推广,将简要介绍这种曲线细分算法向张量积曲面的推广,在此基础上给出旋转曲面细分初始控制网格的详细构造方法。
文献8 中提出的基于推广B样条的曲线细分规则可描述如下:令为第k层细分时的控制顶点序列,那么对于d次细分而言,第k层细分新的控制顶点序列通过两大步骤产生,即线性细分和d-2次平均细分,如:
式中,参数uk随细分次数而变化,因此该细分方法为动态细分,其初始值u0预先给定,uk随细分次数变化的迭代公式为当k→∞时,该细分方法收敛到d次带张力参数u0的推广B样条光滑曲线(Cd-1阶连续),证明详见文献8。进一步将其推广到张量积曲面,得到基于推广B样条的张量积曲面细分算法。
(1)初始化k=1,给定细分最大次数K;
(2)对当前细分控制网格Mk-1逐行实施du次带张力参数uk-1的推广B样条曲线细分得到中间控制网格Qk;
(3)对中间控制网格Qk逐列实施dv次带张力参数vk-1的推广B样条曲线细分,得到新控制网格Mk;
(5)若k≤K,转k至第2步,否则细分结束,控制网格MK为最终细分结果,与曲线情形同理,当K 足够大时,该细分方法逼近极限曲面,即du×dv次的推广B样条张量积曲面,且处处保持Cmin(du,dv)-1阶连续。
旋转曲面可看作张量积曲面的一种,典型的旋转曲面是母线绕轴线旋转一周形成,因此它们在其中一个参数方向上形状为一个整圆,而整圆可用推广B样条精确表示,并可细分生成,最低采用二次推广B样条即可,具体方法详见文献8。若旋转曲面的母线可用基于推广B样条细分方法生成,为保证另一方向为圆,按以下方法可构造出细分初始控制网格,从而可运用算法1 细分生成该旋转曲面。
算法2 (旋转曲面细分初始控制网格构造)令Cg为母线,可用推广B样条曲线表示,其控制多边形为Pg,该母线绕轴线(不失一般性假设为z轴)旋转而成的旋转曲面为Sr,则可由算法1 细分生成,初始控制网格Mr按如下方法构造:
(1)若Cg是常用的解析曲线段(二次曲线、三角函数及双曲函数曲线、螺旋线、悬链线等),其对应的推广B样条次数dg、细分控制多边形Pg及张力参数vg需根据文献8的方法确定,若Cg是一般的推广B样条曲线,则这3 项均为已知,直接进入下一步;
(2)在旋转方向采用2次的推广B样条表示圆,因此整圆用4 段曲线表示,控制多边形为正方形,张力参数为cos(详见文献8),计首末两段重复的两个顶点共6个控制顶点,因此首先将扩展为6列形成一个初始网格
(3)修改初始网格使得旋转方向上的每一排控制顶点恰好定义一个圆,修改后的控制网格为Mr=,其中(:,:,3)=(Pg)z;
(4)以Mr为细分初始控制网格,母线方向的次数和张力参数分别取dg、vg,旋转方向的次数和张力参数分别取2、cos运用算法1 即可细分生成旋转曲面Sr。
旋转曲面构造实例,并与已有方法进行比较分析。由前所述,只要母线能用基于推广B样条细分曲线表示,则其绕轴线旋转产生的旋转曲面皆可由算法2 构造出初始网格,由算法1 细分生成。3组不同旋转曲面生成图如图1-3所示:
图1 基于推广B样条旋转曲面细分生成示意图
图2 以常用曲线为母线的旋转曲面细分造型
图3 张力参数对4-2次花瓶造型旋转曲面形状的影响
图1给出了以双曲线为母线的旋转曲面细分生成的示意图,旋转曲面为双二次,由图1(a)中初始网格细分5次即可得到图1(c)所示的非常光滑的细分曲面结果。由于两方向的张力参数分别为非均参,因此已有方法无法实现。
图2给出了更多利用本文方法细分造型以常用曲线为母线的旋转曲面的例子,其中图2(a)中为双二次圆锥曲面,图2(b)中为双二次圆环面,图2(c)中为3-2次以正弦曲线为母线的旋转曲面,由于该旋转曲面是非齐次的,已有方法无法表示。
图3为张力参数对4-2次的花瓶旋转曲面造型,图3(a)中vg=0.1,图3(b)中vg=2,图3(c)中vg=5。v方向次数高于3次,两方向的张力参数也不相同,已有方法无法实现,可以保持初始控制网格及u方向参数不变,通过改变v方向参数精细地调整旋转曲面的形状,可以看到,v方向参数越大,结果曲面越靠近初始控制网格。
本文提出的旋转曲面的细分生成方法一方面继承了细分方法的造型优势,另一方面又继承了推广B样条能精确表示常用的二次曲面以及一些经典的有理曲线或三角双曲曲线为母线的旋转曲面的优点。常见的曲面细分方法有基于双三次B-样条的Catmull-Clark 细分、基于双二次均匀B-样条的Doo-Sabin 细分等。与已有方法相比,由于本文方法具有任意次、非齐次、非均参的优势,而已有方法仅限于双二次或双三次,且两个方向参数必须相同,因此本文方法能造型比已有方法丰富得多的旋转曲面,并能方便直观地调整旋转曲面形状。
[1]Chaikin G.An algorithm for high-speed curve generation[J].Comput Graph Image Process,1974,4(3):346-349.
[2]Doo D,Sabin M.Behaviour of recursive subdivision surfaces near extraordinary points[J].Computer-Aided Design,1978,10(6):356-360.
[3]Catmull E,Clark J.Recursively generated B-spline surfaces on arbitrary topological meshes[J].Computer-Aided Design,1978,10(6):350-355.
[4]Andersson L-E,Stewart N F.Introduction to the Mathematics of Subdivision Surfaces[M].Philadelphia:Society for Industrial and Applied Mathematics,2010:112-149.
[5]徐岗,汪国昭.Doo-Sabin 细分算法在动态模式下的推广[J].计算机辅助设计与图形学学报,2006,18(3):341-346.
[6]曾庭俊,王卫民,张纪文.C-B样条旋转曲面造型研究[J].工程图学学报,2004,25(2):104-108.
[7]Morin G,Warren J,Weimer H.A subdivision scheme for surfaces of revolution[J].Computer Aided Geometric Design,2001,18(5):483-502.
[8]Fang M E,Ma W Y,Wang G Z.A generalized curve subdivision scheme of arbitrary order with a tension parameter[J].Computer Aided Geometric Design,2010,27(9):720-733.