一种快速分割三角形的光滑自由变形算法的制作方法

文档序号:11708597阅读:448来源:国知局
一种快速分割三角形的光滑自由变形算法的制作方法与工艺

本发明涉及计算机图像处理技术领域,具体地说,涉及一种快速分割三角形的光滑自由变形算法。



背景技术:

在几何建模和计算机动画中,空间变形是几何外形编辑和柔性体动画生成的关键技术之一,其中,最具代表性的是自由变形技术(ffd),已发展出多个变种,如精确自由变形方法、光滑自由变形方法等,由于其简单易用、功能强大,已经被集成到3dsmax、maya、softimagexsi等商业软件中。

由于传统自由变形方法的变形是作用到待编辑模型的采样点上,再由采样点变形后的位置还原出模型的变形结果,导致其在变形过程中存在因采样点密度太小而出现走样的问题。

为解决走样问题,通常是增加采样点的密度,但会造成性能上较大的开销;更进一步的方法是根据面片大小和曲面曲率,自适应确定采样密度,虽然降低了性能开销,但自适应算法实现相对复杂,且无法很好地处理一些奇异情况。

精确自由变形作为解决ffd中走样问题的方法,其是通过沿节点盒切割初始三角面片,计算三角面片上足够数目采样点变形后的位置,再用采样点插值计算出原始三角面片变形后的精确结果。

光滑自由变形方法通过以下七个步骤对精确自由变形方法进行改进:

(1)定义变形空间步骤

选用b样条体作为变形空间,记作r(u,v,w):

其中,表示mu×mv×mw个控制顶点。是b样条基函数。

然后用该变形空间包裹住待变形模型。

(2)三角剖分步骤

通过b样条体上的节点盒分割初始三角面片。

(3)模型嵌入步骤

在本步骤中,嵌入过程为计算待变形模型在变形空间中参数坐标的过程,具体通过嵌入函数u=e(x)将采样点从世界坐标系映射到变形空间,其中,x为采样点在世界坐标系中的坐标,u为采样点在变形空间的参数坐标。

嵌入函数e由变形空间决定,在光滑自由变形中,通常是通过的一定的方法构造b样条体,使嵌入变形空间点的参数坐标与该点在世界坐标系中的坐标相等,即e(x)=x,以简化嵌入过程中的计算。

并通常选用三次贝塞尔曲面片来拟合精确的变形结果,由于每一个切割产生的三角形,都会在变形后得到一个三角贝赛尔曲面片,所以要在每一个切割产生的三角形上进行采样,共需要3×3个约束点及m(m由变形空间的次数决定)个拟合点,即光滑自由变形共需要9+m个采样点。

然后用e(x)=x计算出采样点在变形空间中的参数坐标,同时通过重心坐标插值计算采样点的法向。

(4)几何变形步骤

几何变形过程为改变变形空间并将该变形传递至待变形模型的过程,具体为将采样点嵌入b样条体中,以通过这些采样点将变形空间的变形传递至待变形模型中的。当用户改变b样条体控制顶点的位置后,先将采样点的参数坐标和控制顶点位置代入到定义变形空间所用的公式中,以求得采样点变形后的位置;再以这些新的位置为输入,通过带约束的拟合方法,求出作为变形结果的三角贝塞尔曲面的控制顶点。

(5)法向变形步骤

为了解决精确自由变形中结果不够光滑自然的问题,通过重心坐标插值估算得采样点的法向,然后计算出采样点的法向量变形以后的值;接着,用与几何变形步骤中相同的方法,以采样点变形后的法向量为输入,用三次贝塞尔曲面片拟合出变形后的三角曲面片法向量场。在细分阶段同时细分法向量场,并以此作为细分三角形的法向,从而可得到在光滑边两侧视觉上g1连续的几何和g0连续的法向量场;在尖锐边两侧g0连续的几何和g-1连续的法向量场。

(6)几何微调步骤

为了得到视觉上更加细腻的变形结果,还需根据法向信息对表示几何的三角贝塞尔曲面片的控制顶点进行微调。

(7)细分绘制步骤

将法向变形步骤和几何微调步骤的结果进行细分后绘制。

经过上述七个步骤的处理后,通过将cuda应用到了精确自由变形中,不仅可实现比精确自由变形方法快50倍左右的计算速度,而且改进了变形结果的视觉美观度。

另一方面,ffd构架下的算法大多是计算密集型的,且这些算法能较好地适用于单指令流多数据流计算模型,随着通用计算的兴起,很多学者利用gpu加速各类ffd,从而使这些算法能对大型三维模型进行实时编辑。gpu从一个仅负责图形绘制的专用硬件渐渐演变为一个多线程、高带宽的通用计算硬件。cuda、opencl等通用计算框架的出现,更加方便了人们用gpu对各类算法进行加速。

然而,在gpu平台上实现光滑自由变形方法中的剖分三角形步骤存有两个问题:(1)在gpu中进行并行计算时,其三角均匀剖分步骤中的时间取决于剖分时间最长的初始三角面片;(2)gpu不适合针对“剖分三角形”这种复杂的算法进行加速;所以现有三角剖分步骤均在cpu中进行,导致在载入模型时需要较长的初始化时间。

以上所述是光滑自由变形的一个问题,另一方面,光滑自由变形中,其它步骤均用cuda实现,无法跨平台计算。



技术实现要素:

本发明的目的为提供一种快速分割三角形的光滑自由变形算法,使其能在gpu中进行三角均匀剖分,提高光滑自由变形速度,且克服了原有光滑自由变形只能在nvdia硬件中运行的平台局限性。

为了实现上述目的,本发明提供的光滑自由变形算法包括三角均匀剖分步骤,三角均匀剖分步骤包括:依据等分段长度控制参数,计算初始三角面片三边的等分段数;从查找表中获取与三边等分段数相对应的剖分方案对初始三角面片进行三角剖分,查找表为以三角面片三边的等分段数为索引的剖分方案集合。

由于在生成查找表步骤中,各基准三角面片的剖分方案已制成以其三边等分段数为索引的集合,所以在对模型上的初始三角面片进行均匀剖分时,只需依据等分段长度控制参数计算其三边的等分段数,就可直接调用对应剖分方案对该初始三角面片进行剖分,不仅加快了该步骤的运行速度,且缩短各类初始三角面片的剖分时间差,从而使三角均匀剖分步骤适合于在gpu进行加速。

一个具体的方案为等分段数是初始三角面片的边长度与等分段长度控制参数之商的向上取整值。算法简单。

另一个具体的方案为还包括:接收对等分段长度控制参数的设定。

通过接收用户对等分段长度控制参数的设置,便于用户对分割产生子三角形的大小进行控制,以根据需求和硬件的性能,对变形误差进行控制。

另一个具体的方案为剖分方案包括各等分点的重心坐标及剖分后各子三角形顶点的连接关系。该存储方式简单且易于查找。

进一步的具体方案为从查找表中获取与三边等分段数相对应的剖分方案对初始三角面片进行三角剖分的步骤包括:从查找表中获取对应剖分方案中等分点的重心坐标与子三角形顶点的连接关系;根据初始三角面片三个顶点在当前坐标系中的坐标与对应分割方案中各等分点的重心坐标,用公式pa=u*p1+v*p2+w*p3计算出各等分点在当前坐标系中的坐标,其中,(u,v,w)为等分点重心坐标,p1,p2,p3为初始三角形的顶点坐标。pa为计算所得的等分点的坐标;根据连接关系连接各等分点对初始三角面片进行三角剖分。

一个优选的方案为生成查找表的步骤包括:计算一系列基准三角面片三边的长度;依据基准等分段长度控制参数,计算各基准三角面片三边的等分段数;对基准三角面片进行三角剖分,并从剖分结果中提取剖分方案,并将剖分方案以三边等分段数为索引存储到查找表中。将一系列基准三角面片的剖分结果提取成剖分方案并以该基准三角面片的三边等分段数为索引储存到查找表中,以便随时调用该剖分方案,节省了大量的时间。

更优选的方案为基准三角面片三边的等分段数为各边的长度与基准等分段长度控制参数之商的向上取整值。算法简单。

另一个更优选的方案为将剖分结果生成剖分方案的步骤包括:提取剖分方案中的中各子三角形顶点的重心坐标及各顶点的连接关系;重心坐标为以基准三角面片顶点坐标为参照的坐标;依序对基准三角面片中各剖分点进行编号,连接关系为由子三角形顶点编号组成的数组构成的集合。

另一个更优选的方案为对基准三角面片进行三角剖分的步骤包括:

步骤1,依据基准等分段长度控制参数,对基准三角面片最小内角的两边进行等分;

步骤2,连接邻近最小内角顶点的两个等分点,形成顶三角形与待剖分四边形;

步骤3,以待剖分四边形与顶三角形共有的端点为起点,对应连接待剖分四边形上的等分点,剖分成若干个类梯形;

步骤4,依据基准等分段长度控制参数,对类梯形上底与下底进行等分,并连接等分点对类梯形进行三角剖分;若最小内角两边上的等分点数不等,则重复步骤3与步骤4,以距离最小内角顶点最远的类梯形为待剖分四边形进行三角剖分,且以位于最小内角等分点数较少的边上的顶点为起点。

利用等分段长度控制参数,使分割产生的子三角形的边长接近等分段长度控制参数,即分割产生的子三角形较接近正三角形,有效避免了狭长三角形或蜕化三角形的产生,使光滑自由变形过程更加鲁棒高效。

进一步的方案为连接等分点对类梯形进行三角剖分的步骤包括:沿同一连接方向,连接类梯形上底与下底上对应等分点,形成若干四边形,并连接短对角线对四边形进行剖分。

与现有的方法相比,本发明的有益效果在于:

(1)提高可在gpu中实现的步骤数,有效地提高了程序效率;

(2)以上在gpu中进行的步骤都可用opengl实现,使算法具有良好的跨平台通用性。

附图说明

图1为本发明实施例的工作流程图;

图2为本发明实施例中生成查找表步骤的工作流程图;

图3为本发明实施例中对基准三角面片进行三角剖分的工作流程图;

图4为本发明实施例中对基准三角面片进行均匀剖分的部分过程示意图,其中(a)为基准三角面片,(b)为查找出基准三角面片的最小内角,(c)为对最小内角两边进行等分,(d)为剖分出的顶三角形,(e)为第一个待剖分的类梯形,(f)为对第一个类梯形上下底进行等分;

图5为本发明实施例中对基准三角面片进行均匀剖分的其他部分过程示意图,(a)为对第一个类梯形进行三角剖分,(b)为对第二个类梯形进行三角剖分,(c)为最后一个待剖分的类梯形,(d)为对最后一个类梯形进行部分三角剖分,(e)为三角剖分结果,(f)为对剖分结果进行cvt优化;

图6为本发明实施例中生成查找表步骤中提取剖分方案的示意图。

具体实施方式

以下结合实施例及其附图对本发明作进一步说明。

实施例

参见图1,本发明快速分割三角形的光滑自由变形算法包括生成查找表步骤s1、定义变形空间步骤s2、三角均匀剖分步骤s3、模型嵌入步骤s4、几何变形步骤s5、法向变形步骤s6、几何微调步骤s7和细分绘制步骤s8。

生成查找表步骤s1,预计算一系列不同形状基准三角面片的剖分方案并进行存储,形成一张查找表。

参见图2,生成查找表步骤s1包括计算等分段数步骤s11、三角剖分步骤s12、生成剖分方案步骤s13和存储剖分方案步骤s14。

计算等分段数步骤s11,在本实施例中将以下剖分中所使用的基准等分段长度控制参数l设置为1,按照经验,对于一条边等分成30段以上并不会显著提高其计算精度,反而会使计算开销提高,并影响程序性能,因此,在本实施例中将各边的长度设置在30以内,对所有边长为1<=leni<=30,len0+len1>len2,|len0-len1|<len2的三角形进行分割。其中len0、len1、len2分别为三角形三边的长度。对于具体的如图4(a)所示的基准三角面片1,首先根据其顶点坐标计算其三边长度,然后依据基准等分段长度控制参数l计算基准三角面片1三边的等分段数,等分段数为其边长度与基准等分段长度控制参数l之商的向上取整值,边11、边12及边13的等分段数分别为其中为边11的长度,为边12的长度,为边13的长度。

三角剖分步骤s12,对基准三角面片进行三角剖分。

参见图3,三角剖分步骤s12包括等分步骤s121、连接等分点步骤s122、剖分四边形步骤s123、剖分类梯形步骤s124和优化步骤s125。

等分步骤s121,如图4(b)所示,根据初始基准三角面片1的顶点坐标,计算其边11、边12及边13的长度,然后采用排序法对三边长度进行升序排列,其中位于第一位的边13所对的角α为初始基准三角面片1的最小内角。

依据边11与边12的端点坐标,计算它们的等分点坐标,对于最小内角具体的一边,例如边11,计算其等分点坐标时,设其两个端点的坐标为p1,p2,则为该边上的各个等分点的坐标,其中,n为等分段数,t的取值为0到n。对初始三角面片1的最小内角的两边11、12进行等分,结果如图4(c)所示。

连接等分点步骤s122,参见图4(d),连接邻近最小内角顶点的两个等分点,形成顶三角形2与待剖分四边形3。

剖分四边形步骤s123,如图4(d)所示,以待剖分四边形3与顶三角形2共有的端点为起点,对应连接待剖分四边形3上的等分点,剖分成若干个类梯形,如图4(e)的实线部分为第一个类梯形31。

剖分类梯形步骤s124,以如图4(e)所示的第一个类梯形31为例,依据基准等分段长度控制参数l,对第一个类梯形31的上底与下底进行等分,结果如图4(f)所示;沿同一连接方向,比如由图中的左向右,将对应连接上底与下底等分点形成的四边形用其短对角线进行剖分,结果如图5(a)所示。

从上至下,依序对各个类梯形进行三角剖分,在剖分过程中,如图5(b)所示,第二个类梯形32上底与下底的等分段数相等,连接其上底与下底上对应等分点,形成若干四边形,根据四边形的四个顶点计算其两条对角线的长度,沿着较短的那条对角线分割四边形,最终使每个四边形分割成两个三角形。

如图5(c)所示,第三个类梯形33的上底分割段数比下底少1,对上底和下底的均分点进行编号,上底的编号从左到右为1到k,下底的编号从左到右为1到k+1,在第三个类梯形33上,先连接上下底编号相同的点。除此之外,对于上底中的每个点,若其编号为j,则使将其与下底中编号为j+1的点相连,最终将第三个类梯形33分割成多个锯齿状的三角形。

若最小内角两边上的等分点数不等,如图5(c)、图5(d)所示,重复剖分四边形步骤s123与剖分类梯形步骤s124,以距离最小内角顶点最远的类梯形为待剖分四边形进行三角剖分,且以位于最小内角等分点数较少的边上的顶点为起点。将距离最小内角顶点最远的类梯形逆时针旋转90度,使该类梯形和待剖分四边形类似,延长该类梯形的上底和下底,相交后与最小内角的另一条边的剩余部分构成一个三角形,把该三角形当作如图4(a)所示的基准三角面片,并对其执行等分步骤s121至剖分类梯形步骤s124,在剖分过程,初始基准三角面片1被分割成如图5(d)所示,直至初始基准三角面片1剖分成如图5(e)所示。

优化步骤s125,如图5(f)所示,采用cvt优化方法对基准三角面片1剖分结果进行优化,并对该结果进行5次cvt优化,使子三角形更加均匀。cvt优化方法为duq,faberv,gunzburgerm.centroidalvoronoitessellations:applicationsandalgorithms[j].siamreview,1999,41(4):637–676中介绍的方法。

生成剖分方案步骤s13,将剖分结果生成剖分方案。

提取剖分结果中的中各子三角形顶点的重心坐标及各顶点的连接关系,重心坐标为以基准三角面片顶点坐标为参照的坐标,如图6所示如图5(f)中顶三角形与第一类梯形的剖分结果示意图的,依序对其各剖分点进行编号为a、b、c、d、e、f,首先计算各剖分点的重心坐标,以点a为例,不防设基准三角形的三个顶点为位置为p1,p2,p3,点a的位置为pa。我们对方程pa=u*p1+v*p2+w*p3进行求解,求得的(u,v,w)就是点a的重心坐标,即相对三个顶点的参照坐标。连接关系为由子三角形顶点编号组成的数组构成的集合:(a,f,d)、(b,d,e)、(e,d,f)、(e,f,c)。将各子三角形顶点的重心坐标及各顶点的连接关系存储到查找表中,并以三边的等分段数为查找表的索引。

定义变形空间步骤s2,定义一个b样条体作为包裹待变形模型的变形空间。

三角均匀剖分步骤s3,用三角均匀剖分算法将待变形模型中的初始三角面片分割成若干个子三角形,以减小变形后的误差。

从文件中读取待变形模型并对待变形模型进行三角化;

接收对等分段长度控制参数l′的设定,用户根据初始三角面片尺寸及其对精度的要求,通过输入界面对控制参数l′进行设定,使用户能够更好地控制变形误差;

依据等分段长度控制参数l′,计算初始三角面片三边的等分段数,等分段数为初始三角面片的边长度与等分段长度控制参数l′之商的向上取整值;

以三边的等分段数为索引从查找表中获取对应剖分方案中等分点的重心坐标与子三角形顶点的连接关系;

根据初始三角面片三个顶点在当前坐标系中的坐标与对应分割方案中的等分点重心坐标,用公式pa=u*p1+v*p2+w*p3计算出各等分点在当前坐标系中的坐标,其中,(u,v,w)为等分点重心坐标,p1,p2,p3为初始三角形的顶点坐标。pa为计算所得的等分点的坐标;

根据连接关系连接各等分点对初始三角面片进行三角剖分。

模型嵌入步骤s4,将模型嵌入变形空间,计算剖分后产生的每个三角面片的采样点在变形空间中的参数坐标和法向。

几何变形步骤s5,用户改变变形空间的控制顶点,对变形空间进行变形。保持采样点在变形空间中参数坐标不变,计算采样点在世界坐标系下的新的位置,根据得到变形后的采样点,用带约束的拟合方法计算出每个三角面片变形后的结果,该结果用三角贝塞尔曲面片表示。

法向变形步骤s6,计算采样点在世界坐标系下的新的法向,根据得到变形后的采样点的法向,用带约束的拟合方法计算出每个三角面片变形后的法向量场,该结果用三角贝塞尔曲面片表示。

几何微调步骤s7,调整几何变形步骤s5得到的三角贝塞尔曲面片的控制顶点,使变形结果更加光滑自然。

细分绘制步骤s8,将法向变形步骤s6和几何微调步骤s7中的结果进行细分后绘制。

上述实施例过程简单,适合在gpu中实现。

最后,将该算法用opengl4.3实现,不仅具有良好的跨平台通用性,且可以在所有支持opengl4.3及以上版本的平台中运行。并对一个具有46742个面片的模型进行变形分析,本发明方法在三角均匀剖分步骤中只需26.093ms,而现有光滑自由变形的三角剖分步骤则需5131.883ms,即比现有技术快了近200倍。此外,本发明算法可分别在笔记本电脑和手机上运行,体现了该算法的跨平台通用性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1