基于矢量的随机粒子动画生成方法

文档序号:6443726阅读:281来源:国知局
专利名称:基于矢量的随机粒子动画生成方法
技术领域
本发明涉及数字化卡通技术领域,具体是一种基于矢量的随机粒子动画生成方法。
背景技术
粒子动画主要指的是动画场景中单个独立的零散物体在动作变化,如大风场景下的漫天沙石、秋风落叶等。粒子动画是衬托背景环境,反映剧情氛围,进而表达导演意图的主要方法和手段,也是动画技术发展过程中的难点问题之一。目前,对于粒子动画的处理,传统的手绘动画依然是原画逐个绘制零散物体,然后给出其飞舞或飘落的路线,最后由动画人员逐帧绘制完成动画效果,该方法不但工作量较大,费时费力,而且一旦出错,修改的工作量将成倍增长。因此为了减少工作量,在实际动画制作中,往往减少粒子动画的场景或者减少粒子动画中的零散物体数量,但这样就导致整个动画片质量的下降,难以很好的表达导演意图。现在,随着计算机技术的发展,计算机辅助动画制作越来越得到广大动画专业人员的青睐,粒子动画也开始采用计算机辅助制作的方法进行制作,实现了制作过程的所见即所得,且减少了出错后修改的工作量,但因为受技术手段的限制,目前计算机辅助制作粒子动画采用的还是传统动画制作流程,其工作量并没有明显改善,同样不能达到效率和质量的有机统一,从而难以满足全数字动画卡通制作的需求。目前,进行粒子动画的制作主要有两种方案,一是采用完全人工手绘的传统动画制作方案;二是采用Flash和ToonBoom的计算机辅助动画制作方案。其中,人工手绘的动画制作方案基本上没有什么技术可言,主要依靠的是原画和动画绘制人员的经验和技巧, 不同的绘制人员绘制的结果往往不一样。Flash和ToonBoom的计算机辅助动画制作方案主要依靠计算机图形技术,采用计算机辅助的方式,帮助原画和动画绘制人员完成粒子动画的制作过程。从技术方案上来看,Flash和ToonBoom两者之间并没有什么大的不同,主要的差别在于Flash的基本图形对象称之为“部件”,即可以把一系列的图形组合成一个整体的部件,从而便于相同对象之间的重复使用;ToonBoom采用的则是计算机辅助绘图的方式,即用鼠标或手绘笔代替手绘动画中的绘图笔,制作过程基本和传统手绘过程一致。因此,在粒子动画的制作上,Flash的效率更高,但部件的组合降低了动画动作的可调整性,动画质量较差,ToonBoom的效率较低,但依靠计算机的手绘动画能最大限度的体现柔性动作, 动画质量更好。Flash和"ToonBoom的粒子动画制作流程如图1所示Flash和ToonBoom两个软件是目前国内主流的计算机辅助动画制作软件,通过对两者制作粒子动画的技术方案进行比较,我们认为目前粒子动画制作技术方案的缺陷主要在于以下几点1、人工描绘零散物体的数字化模式,工作量大,出错几率高。因为一般的粒子动画动辄数十个乃至上百个零散物体,特别是需要制作飞沙走石的场景时,石头和沙砾的形体小、数量大,且形状大都不尽相同,使得原画和动画的工作量巨大。因此在实际的动画制作过程中,为了节约人力和物力,往往采用减少粒子动画场景或减少场景中的粒子数量,这就在很大程度上限制了所制作的动画片的故事质量,也限制了动画导演创作的思路,这对于提高动画产品的质量和可看性是非常不利的。2、根据原画绘制的动作路线逐帧调整原画的动画制作方式,效率较低,且难以体现粒子动画的曲线运动轨迹。因为粒子动画中的零散物体一般都是曲线飞舞或飘落,采用逐帧原画的方式只能在曲线的拐点处设置内插节点,并采用直线内插的方法内插原画之间的动画帧,这就导致粒子的动作不能呈曲线运动,而呈折线运动。虽然可以通过增加原画节点的方式来尽量拟合曲线的运动轨迹,但这又势必造成工作量的增加,导致效率降低,成本增加,且拟合效果也不是很好。

发明内容
本发明提供的基于矢量的随机粒子动画生成方法主要是针对目前粒子动画制作过程中存在的诸多缺陷,采用矢量跟踪等数字图像处理技术,解决人工描绘和逐帧原画设定并内插所带来的粒子动画工作量大、效率低、且效果不佳的问题,通过一系列自动化处理技术,自动生成粒子动画,实现粒子动画制作过程中效率和质量的有机统一。本发明提供的完整技术方案如下一种基于矢量的随机粒子动画生成方法,包括以下步骤1)线条细化处理对扫描或拍摄的数字原画稿中的零散物体通过细化算法进行处理,将零散物体的栅格线条从多像素宽度减少到单位像素宽度,并为自动提取提供初始数据;2)自动跟踪矢量化采用自动跟踪矢量化技术,从栅格图像上提取零散物体的轮廓线条;3)节点抽稀;通过对零散物体矢量轮廓数据的节点抽稀,并拟合轮廓曲线;4)动画内插利用随机函数,随机确定其运动路线,并根据零散物体的重量确定其运动速度,从而进行内插得到中间动画帧;5)完成粒子动画的制作。所述对扫描或拍摄的数字原画稿中的零散物体通过细化算法进行处理,将零散物体的栅格线条从多像素宽度减少到单位像素宽度,并为自动提取提供初始数据,包括如下步骤1)图像预处理;2)设定细化条件;(a) 2 ^ A(P) ( 6 ;(b)B(P) = 1 ; (C)P2 · P4 · P6 = 0 ;(d)P4 · P6 · P8 = 0 ; (e)P2 · P4 · P8 = 0 ; (f)P2 · P6 · P8 = 0 ;3)细化初始化,设定扫描次数η = 0,Sn为原图像G中所有黑像素集合,删除点集 E = 0;4)如果2 Φ 0,则转向第5步,否则,执行= En U {P (P e Sn) Λ P满足条件(a), (b),(c),(d)},转向第 6 步;5)执行 En = En U {P | (P e Sn) Λ P 满足条件(a),(b),(e), (f)};6)如果£— = C或者算法满足条件(g),转向第7步;否则执行& = Sn-En,η = η+1,二=A转向第4步;
.i, i'.. 二 ; ; ■ P. — - ‘ ι." r—7)执行二 C ’ En = En U {P | (P e Sn) Λ P 满足条件⑴,(j)},如果+:: O ’转向第8步,否则执行& = Sn-En,重复第7步;⑴(P6· P8 = 1)八(P8 = 0);(j) (P4 · P6 = 1) Λ (P9 = 0);8)输出Sn,算法结束。所述采用自动跟踪矢量化技术,从栅格图像上提取零散物体的轮廓线条,包括如下步骤 1)确定起始点,并标记为Ptl ;2)得到Ptl的第一目标领域点;3)从刚找到点的第一目标领域点的下一领域点开始搜索,寻找下一目标领域点;4)重复第3步,跟踪图像轮廓点串数据;5)标记第4步得到的点串数据;6)重复第1到第4步,依次得到图像中所有对象的轮廓数据。所述通过对零散物体矢量轮廓数据的节点抽稀,并拟合轮廓曲线,包括如下步骤1)以第一点为起点,计算第二点至第一点和第三点连线的距离;2)设定阈值ε,判断第1步计算的距离和ε的大小,根据比较情况进行相应处理;3)重复第2步,直至曲线上最后一点;4)对相邻抽取点间采用曲线拟合逼近得到零散物体的轮廓曲线。所述利用随机函数,随机确定其运动路线,并根据零散物体的重量确定其运动速度,从而进行内插得到中间动画帧,包括如下步骤1)计算零散物体的面积值;2)得到最大的零散物体面积Smax,计算面积的比例因子δ = 1/Smax ;3)计算每个零散物体的飞行速度;4)确定飞行路线;5)计算内插帧数;6)完成内插计算。本发明技术方案带来的有益效果如下我们应用以上技术做了一系列对比试验,对比的对象是Flash和ToonBoom两个国内主流的计算及辅助动画制作软件,在实际应用过程中,我们得出了下面一些令人鼓舞的数据和结论(1)有效节约了粒子动画制作的时间。实际动画制作中,在采用相同的原画稿,同一个动画制作人员进行制作的前提下,利用本发明中的自动生成粒子动画制作方法,在一分钟的时间可以完成;采用Flash软件,耗时一小时三十五分;而采用ToonBoom软件,耗时两小时零五分钟。数据说明采用本发明进行粒子动画的制作可以大大节约制作的时间,提高制作效率。(2)有效减少出错几率。在对比试验中我们发现采用Flash和ToonBoom所耗费的制作时间中,50%的时间都是因为修改和调整内插帧而产生的,特别是因为描线错误或运动路径指定错误而导致的修改和调整,更是消耗了作业人员大量的时间。而本发明采用全自动的方法确定粒子的运动方向和内插节点,以及中间帧数,基本上不需要采用人工进行干预和修改,有效的减少了修改和调整的时间。(3)有效保证动画质量。Flash和ToonBoom通过人工描绘的方法得到粒子轮廓线,不同的人往往得到不同的结果,极易导致不同场景中粒子的形状发生变化;人工确定运动轨迹的方法,也使得粒子的运动动画过程出现跳帧,难以达到随机的动画效果。在我们进行的对比试验中,采用本发明制作的粒子动画效果明显优于Flash和ToonBoom软件制作出来的效果。这些数据表明,基于矢量的随机粒子动画技术有效融合了自动识别、自动内插等图像处理领域的自动化技术,在目前卡通动漫领域的粒子动画制作方面实现了全自动化的生产流程,具有较强的应用前景。通过手工绘制和人机交互的计算及辅助制图方式可以实现粒子动画的制作过程, 但两者都需要制作人员具有一定的经验和基础,且需要耗费更多的时间,不论是从效率还是成本上都不能与本发明相提并论,人工参与的方案在实用性方面也与本技术方案也存在较大差距。


图1是现有技术中的Flash和"ToonBoom的粒子动画制作流程图。
图2是本发明的基于矢量的随机粒子动画生成方法的制作流程图。
图3是本发明的P点的8领域示意图。
图4是本发明的像素P的交叉数示意图。
图5是粒子动画的原画稿。
图6是本发明的经细化后粒子动画原画稿。
图7是本发明的目标点及其8领域点的示意图。
图8是本发明的螺旋曲线三维坐标定义示意图。
图9是本发明的内插方法得到的中间帧的示意图。
具体实施例方式下面结合附图对本发明作进一步描述本发明的技术方案主要是基于数字图像处理等技术处理手段,实现对原画稿上散乱物体的自动提取和识别,然后根据物体的质量(实际计算时以面积代替),计算其随机运动速度,结合不同的运动轨迹对散乱物体进行运动内插,生成粒子动画。具体过程包括四个步骤线条细化处理、自动跟踪矢量化、节点抽稀以及动画内插。其中线条细化处理主要对矢量化前的栅格数据进行细化,即将零散物体的栅格线条从多像素宽度减少到单位像素宽度过程;自动跟踪矢量化主要把栅格格式扫描原画稿中的零散物体矢量化为矢量格式,即从栅格图像上提取出零散物体的矢量数据;节点抽稀的过程主要是按照一个合理的距离保
7留矢量化后得到的线条节点,以去除冗余数据,压缩数据量,从而便于内插计算;动画内插就是根据选定的运动路径,按照与物体质量相关的随机速度,自动内插中间帧的过程。基于矢量的粒子动画制作过程如图2所示本发明中,所说的线条细化处理,是指利用图像处理技术中的细化算法,将零散物体的栅格线条从多像素宽度减少到单位像素宽度的过程,其过程主要包括以下几个步骤1)图像预处理,具体过程如下①移除所有少于3个相邻黑色像素的黑色像素,使图像更加光滑;②为了图像中的锐角更好的被细化,采用模板进行像素删除操作,即遍历图像中每一个像素,当找到和模板相匹配的像素时,对其周围的像素有选择性的进行删除操作。2)设定细化条件。(a) 2 ^ A(P) ( 6 ;(b)B(P) = 1 ; (C)P2 · P4 · P6 = 0(d)P4 · P6 · P8 = 0 ; (e)P2 · P4 · P8 = 0 ; (f)P2 · P6 · P8 = 0其中,A⑵为像素P的连接数;B(P)为像素P的交叉数,其定义如下对于二值图像G,设P为图像任意一个像素,当P为黑色像素时值为1,为白色像素时值为0。像素P上、下、左、右4个像素点及对角线4个像素点组成的集合Np= {P2,P3,..., P9I称为像素P的8邻域,见图3。像素P的8邻域中黑色像素的个数=P = 则为像素 P的连接数。像素P的8邻域中的点按顺(或逆)时针方向一周从白色像素变为黑色像素的次数5 P ? - P— - ? - P ’ λ则为像素P的交叉数见图4 3)初始化当前扫描次数η = 0,Sn为原图像G中所有黑像素集合,删除点集 Εψ: — Q *4)如果2乒0,则转向第5步,否贝丨」,执行4 = 4 U {P| (P e Sn) Λ P满足条件(a), (b),(c),(d)},转向第 6 步;5)执行 En = En U {P | (P e Sn) Λ P 满足条件(a),(b),(e), (f)};6)如果f.=;或者算法满足条件(g),转向第7步;否则执行& = Sn-En,η = η+1, = A转向第4步;7)执行i 8步,否则执行
-En = EnU {PI (P e Sn) Λ P满足条件⑴,(j)},如果E = C.’转向第
Sn = Sn-En,重复第7步;(i) (P6 · P8 = 1) Λ (P2 = 0)(j) (P4 · P6 = 1) Λ (P9 = 0)8)输出Sn,算法结束。图5和图6分别显示的是粒子动画的原画稿和经过细化处理后的原画稿。本发明中,所说的跟踪矢量化,是指利用图像处理技术中的矢量跟踪算法,将从栅格图像上提取零散物体的轮廓线条,其过程主要包括以下几个步骤1)确定起始点。按照图像的光栅进行扫描,发现第一个像素值为1的点位起始点, 存储其坐标,并标记为Ρ『2)从Ptl点的0领域点开始(Ptl点及其八领域点关系如图7所示),逆时针方向研究其8领域点的值,找到第一个像素值为1的点,存储其坐标值并记为Pi。则PtlSP1的的第一目标领域点;3)之后,都从刚找到点的第一目标领域点的下一领域点开始搜索,寻找下一目标领域点;4)重复第3步,直到Pn的第一目标领域点为Ptl,且Pn+1的第一目标领域点为P1,则跟踪结束,记录得到的点串数据;5)将第4步得到的点串数据设定为已跟踪数据,避免下次跟踪过程重复对其进行操作;6)重复第1到第4步,依次得到图像中所有对象的轮廓数据。本发明中,所说的节点抽稀,主要是对跟踪得到零散物体矢量轮廓数据进行抽稀处理,减少数据量,其过程包括如下步骤1)设多边形 A1A2A3…An,其坐标分别为(X1, Y1)、(X2, Y2)、(X3, Y3)、…、(Xn, U,以第一点为起点,计算第二点至第一点和第三点连线的距离,其计算公式如下 (2)C. A A ι = X - XY (1)
\ ‘2)设定阈值ε,判断Cl(AyAj)和ε的大小若Cl(ApAj) > ε,则保留第二点,并将其作为新起点,计算第三点至第二点和第四点连线的距离;若d(Ai,Aj) < ε,则去除第二点,计算第三点至第一点和第四点连线距离;3)重复第2步,直至曲线上最后一点,即完成抽稀过程;4)相邻抽取点间采用曲线拟合逼近得到零散物体的轮廓曲线,拟合过程如下①设物体轮廓线的点列为A1 (X1,Y1)、A2 (X2,Y2)、A3 (X3,Y3)、...、An (Xn, Yn),将点列进行规范化,设(.,、‘;(3)
· - _ -其中,ClSA1(XpY1)点至An(XnJn)的距离,采用式(2)进行计算,M矩阵如下X = I .. i .. 二—(4)②对Q点列进行对小二乘拟合,拟合函数如下Y = 1。X2+12X2+12X+13其中,1。,I1, I2, I3为拟合参数。③将拟合结果转化为Bezier曲线段的表述,转换公式如下B0 = (13,0)M_1+A0
5-, = .二—三二‘―- ~ .4. (6)
(5)
.:.UB2 = (lo+li+^+lg, d)M_1+A0其中,Btl,B3为Bezier曲线的端点,B1,化为曲线的控制点,M—1为M的逆矩阵(
④闭合调整。通过计算相邻两线段交点的方法来调整线段端点的位置,以保证整个轮廓线是闭合的。本发明中,所说的随机动画内插,是指利用随机函数,根据零散物体的重量,随机计算物体的飞行速度和飞行方向,然后根据给定秒数计算内插帧数,内插得到中间动画帧, 其过程主要包括以下几个步骤1)计算零散物体的面积值,计算过程如下设多边形A1A2AfAn (顺或逆时针都可以),设平面上有任意的一点P (x, y),则有S(A1, A2, A3,…,An) = abs (S(P,A1, A2)+S(P,A2, A3)+...+S(P,An,A1)) (7)其中,S(A1;A2,A3,-,An)代表多边形面积,S(P,Ai, Aj)代表由 P、A” Aj (0 < i,j <=n)三点组成的三角形的面积,若当三点为逆时针时S(P,Ai, Aj)值为正,否则为负。再设Ai的坐标为(Xl,Y1), Aj的坐标为U2,y2),则S(P,Ai, Aj)的计算公式如下 i P : -ι 二· *; γ —、-: · ν 1 ~~ ν: — ";I —。: - ;‘■ — “(β)设零散物体的密度为1,则其重量和面积成正比,即可以用面积值代替质量值进行后面的计算。2)得到最大的零散物体面积Smax,计算面积的比例因子δ = 1/Smax ;3)计算每个零散物体的飞行速度。设动画秒数为T,也即最重质量的零散物体的动画时间,则不同的物体其对应的秒数可以通过下面的计算式得到;Tk = Τ* δ *Sk(9)其中,k代表是第k个零散物体。则由式(4)可以得到第K个物体的飞行速度Vk = L/Tk,L代表飞行的距离。4)确定飞行路线。设定一个随机函数,随机计算每一个物体的飞行路线。飞行路线包括直线飞行和螺旋形飞行两种,其确定过程如下直线飞行路线直线飞行路线是指零散物体沿直线方向进行飞行,设给定飞行方向角为θ,则物体的飞行路线角度设定于[θ-30°,θ+30° ]之间的某一个随机值,设该值为ek,则飞行路线由下式确定X = r*cos θ k(10)Y = r*sin θ k螺旋曲线飞行路线螺旋曲线飞行路线是指零散物体按照螺旋曲线的形式飞行,如图8所示。设给定螺旋圆心P (X0, Y0),半径R,最重物体的飞行角速度为Wmin,其他物体的飞
行角速度与物体质量成反比,即w = l+:t,则零散物体的飞行角速度可以设定于[ -5°,
w+5° ]之间的某一个随机值,设该值为wk,则飞行路线的三维坐标由下式确定X' = R*et*coswk(11)Y' =I^KeSsinwkZ = Wet其中,H表示螺旋曲线的高度。然后将三维坐标投影到计算机屏幕的二维坐标中, 即将三维坐标投影到X、Z平面,则投影后的飞行路线由下式确定
X = I^Ket=KcoswkY = H^et其中,X,Y代表计算机屏幕坐标。5)计算内插帧数,设每秒帧数为24,内插帧数F = T*M,每两帧之间的时间差为 秒6)内插计算。因为不同的物体飞行速度不同,因此相同时间间隔内的飞行距离也 不同,也就是说在每ー帧的动画中,每个物体的位置并不相同,不同的飞行路线,其计算方 法也不尽相同。直线飞行路线第k个物体在第η帧(O < η < F)中的位置根据下式计算
其中,、,Y0代表物体的起始位置。螺旋曲线飞行路线第k个物体在第η帧(0 < η < F)中的位置根据下式计算X = R*en*1/24*coswkY = H*en*1/24图9显示的是经过随机动画内插后得到的部分中间帧。上面所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的构 思和范围进行限定,在不脱离本发明设计构思前提下,本领域中普通工程技术人员对本发 明的技术方案作出的各种变型和改进,均应落入本发明的保护范围,本发明请求保护的技 术内容已经全部记载在权利要求书中。
权利要求
1.一种基于矢量的随机粒子动画生成方法,其特征是包括以下步骤1)线条细化处理对扫描或拍摄的数字原画稿中的零散物体通过细化算法进行处理, 将零散物体的栅格线条从多像素宽度减少到单位像素宽度,并为自动提取提供初始数据;2)自动跟踪矢量化采用自动跟踪矢量化技术,从栅格图像上提取零散物体的轮廓线条;3)节点抽稀;通过对零散物体矢量轮廓数据的节点抽稀,并拟合轮廓曲线;4)动画内插利用随机函数,随机确定其运动路线,并根据零散物体的重量确定其运动速度,从而进行内插得到中间动画帧;5)完成粒子动画的制作。
2.根据权利要求1所述的基于矢量的随机粒子动画生成方法,其特征是所述对扫描或拍摄的数字原画稿中的零散物体通过细化算法进行处理,将零散物体的栅格线条从多像素宽度减少到单位像素宽度,并为自动提取提供初始数据,包括如下步骤1)图像预处理;2)设定细化条件;(a)2 SA(P) ^ 6 ;(b)B(P) = 1 ; (c)P2 · P4 · P6 = 0 ; (d)P4 · P6 · P8 = 0 ; (e)P2 · P4 · P8 = 0 ; (f)P2 · P6 · P8 = 0 ;3)细化初始化,设定扫描次数n= 0,Sn为原图像G中所有黑像素集合,删除点集二 =;4)如果2乒0,则转向第5步,否则,执行En= En U {P | (P e Sn) Λ P满足条件(a), (b),(c),(d)},转向第 6 步;5)执行4 = En U {P I (P e Sn) Λ P 满足条件(a), (b),(e), (f)};6)如果^s= θ或者算法满足条件(g),转向第7步;否则执行& = Sn-En, n = n+1, if — λ, 转向第4步;7)执行孓=C-En= En U {P I (P e Sn) Λ P满足条件⑴,(j)},如果二. = C ’转向第8 步,否则执行Sn = Sn-En,重复第7步;⑴(P6 · P8 = 1) Λ (P8 = 0); ⑴(P4 · P6 = 1) Λ (P9 = 0);8)输出Sn,算法结束。
3.根据权利要求1所述的基于矢量的随机粒子动画生成方法,其特征是所述采用自动跟踪矢量化技术,从栅格图像上提取零散物体的轮廓线条,包括如下步骤1)确定起始点,并标记为Ptl;2)得到Ptl的第一目标领域点;3)从刚找到点的第一目标领域点的下一领域点开始搜索,寻找下一目标领域点;4)重复第3步,跟踪图像轮廓点串数据;5)标记第4步得到的点串数据;6)重复第1到第4步,依次得到图像中所有对象的轮廓数据。
4.根据权利要求1所述的基于矢量的随机粒子动画生成方法,其特征是所述通过对零散物体矢量轮廓数据的节点抽稀,并拟合轮廓曲线,包括如下步骤1)以第一点为起点,计算第二点至第一点和第三点连线的距离;2)设定阈值ε,判断第1步计算的距离和ε的大小,根据比较情况进行相应处理;3)重复第2步,直至曲线上最后一点;4)对相邻抽取点间采用曲线拟合逼近得到零散物体的轮廓曲线。
5.根据权利要求1所述的基于矢量的随机粒子动画生成方法,其特征是利用随机函数,随机确定其运动路线,并根据零散物体的重量确定其运动速度,从而进行内插得到中间动画帧,包括如下步骤1)计算零散物体的面积值;2)得到最大的零散物体面积Smax,计算面积的比例因子δ= 1/Smax ;3)计算每个零散物体的飞行速度;4)确定飞行路线;5)计算内插帧数;6)完成内插计算。
全文摘要
本发明的基于矢量的随机粒子动画生成方法具体过程包括四个步骤线条细化处理、自动跟踪矢量化、节点抽稀以及动画内插。本发明具有有效节约了粒子动画制作的时间、有效减少出错几率。在对比试验中我们发现采用Flash和ToonBoom所耗费的制作时间中,50%的时间都是因为修改和调、有效保证动画质量等优点,在进行的对比试验中,采用本发明制作的粒子动画效果明显优于Flash和ToonBoom软件制作出来的效果。
文档编号G06T13/00GK102542594SQ20111044763
公开日2012年7月4日 申请日期2011年12月28日 优先权日2011年12月28日
发明者张宝印, 沈学如 申请人:江苏如意通动漫产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1