一种2.5维走马灯动画生成方法与流程

文档序号:18923068发布日期:2019-10-19 03:45阅读:1088来源:国知局
一种2.5维走马灯动画生成方法与流程

本发明公开一种2.5维走马灯动画生成方法,属于计算机动画技术领域。



背景技术:

在计算机动画领域,按照动画制作技巧以及呈现效果的差异可以将动画分为以下三种:平面动画、三维动画以及2.5维动画。

中国专利CN103065348A、名称“基于骨骼动作库的二维动画自动生成方法”,该类技术是先将创建的骨骼与骨骼动作保存在骨骼动画库中;然后根据造型的外观要求,绘制造型图形;其次从骨骼动作库中调用骨骼动作,并将骨骼动作与造型图形进行绑定;最后根据动画要求内插骨骼动作帧,得到动画序列。该方法虽然能够生成复杂的二维动画,但在实现过程中需要不断更新骨骼动作数据,且更新速度较慢。此外,画面的质量也有待提升。

《一种基于样条线变化生成的2.5维卡通动画》(Rivers等,2.5D Cartoon Models,Transactions on Graphics,2010,29(4):19-66),该方法用样条曲线表示卡通对象的三视图数据,并建立三视图中每条曲线之间的对应关系。然后通过视角变化,制作出卡通形象的任意视图,从而实现卡通形象的3D效果旋转。但是该方法在绘制过程中对特定绘画程序有较多的依赖,并且中间视图的质量有待提升。

中国专利CN101958007A、名称“一种采用草绘的三维动画姿态建模方法”,该技术首先解析用户输入的组件化人体轮廓草图,提取出人体骨架结构、骨架姿态和骨架轮廓等参数,并生成三维人体姿态模型;其次,将三维人体姿态模型组件化投影到二维平面,通过二维草绘交互,实现对三维人体姿态模型的骨架空间位置、骨架长度和骨架轮廓进行编辑;最后,采用基于核规约的运动插值方法插值姿态关键帧生成三维人体动画。该技术与传统三维人体姿态建模方法相比,能有效地支持动画师以二维草绘的方法对动画进行姿态设计和编辑,但是三维动画渲染时涉及大量的数据计算,且耗时较长。



技术实现要素:

针对以上现有技术中存在的缺陷,本发明的目的是提供一种2.5维走马灯动画的生成方法,该方法计算量小,且生成的动画质量好。

2.5维动画是指利用二维绘制手段产生三维动画绘制效果的动画生成技术。本发明绘制的走马灯,具有灯罩和内胆两部分,其中内胆位于灯罩内,灯罩与内胆均能围绕竖直旋转轴进行正反向转动。具体采用的技术方案如下:

一种2.5维走马灯动画生成方法,包括如下步骤:

A.设定走马灯灯罩与内胆的显示区域以及动画控制参数:分别设定走马灯动画的灯罩显示区域Ωout与内胆显示区域Ωin,区域Ωout和区域Ωin均为二维平面直角坐标系中面积有限的区域,且区域Ωout覆盖区域Ωin;确定走马灯动画的灯罩纹理图像Iout与内胆纹理图像Iin;设定动画显示分辨率的控制参数N、走马灯灯罩与内胆转动速度的控制参数Δout与Δin,以及灯罩透明度控制参数ρ;

B.计算走马灯灯罩与内胆显示区域Ωout和Ωin的包围盒Γout与Γin:根据走马灯动画中灯罩与内胆的显示区域Ωout与Ωin在平面上的范围,得到分别覆盖区域Ωout和Ωin的平面矩形包围盒Γout和Γin;其中,矩形包围盒Γout与矩形包围盒Γin的各边平行于平面直角坐标系的坐标轴;

C.分割包围盒Γout与包围盒Γin,得到两个包围盒的子区域:将包围盒Γout与包围盒Γin分别分割为一组子区域,即:得到包围盒Γout的子区域以及包围盒Γin的子区域

D.分割走马灯的灯罩纹理图像Iout与内胆纹理图像Iin:将灯罩纹理图像Iout分割为子图像将内胆纹理图像分割为子图像设定灯罩纹理图像Iout和内胆纹理图像Iin的当前子图像分别为和其中i,j∈{0,1,2,…,N-1};

E.生成走马灯灯罩包围盒Γout和内胆包围盒Γin的纹理贴图Tout和Tin:生成灯罩纹理贴图Tout和内胆纹理贴图Tin的方法相同:取ξ为out或in,由纹理图像Iξ的子图像得到包围盒Γξ的纹理贴图Tξ的方法是,设纹理图像Iξ的当前子图像为分别将纹理图像Iξ的N个子图像依次贴至包围盒Γξ的N个子区域上,形成包围盒Γξ的纹理贴图Tξ,其中,%表示求模运算;记得到的包围盒Γout与包围盒Γin的纹理贴图分别为Tout和Tin;

F.混合纹理贴图Tout和Tin,绘制单个动画帧:从纹理贴图Tout中裁剪出位于灯罩显示区域Ωout内的部分,仍记为Tout;从纹理贴图Tin中裁剪出位于内胆显示区域Ωin内的部分,仍记为Tin;根据灯罩透明度控制参数ρ,确定纹理贴图Tout的透明程度,再将设置了透明度的纹理贴图Tout与纹理贴图Tin进行混合,得到合成纹理贴图Tb;绘制合成纹理贴图Tb生成单个动画帧;

G.生成2.5维走马灯动画帧序列:根据动画控制参数Δout与Δin重新定义灯罩纹理图像Iout的当前子图像和内胆纹理图像Iin的当前子图像重复执行步骤E和步骤F以及重新定义的子图像和产生所需的动画帧序列,形成2.5维走马灯动画。

本发明相对于现有的技术,具有如下优点:

(1)本发明生成2.5维走马灯动画的过程中,用户仅需要设定灯罩和内胆纹理图像与相应的动画控制参数,系统就会自动地生成2.5维走马灯动画,且本方法设计的计算量小,更新速度快。

(2)支持动态地变化走马灯灯罩、内胆的形状以及各自的转动速度,能够实现丰富多彩的走马灯转动效果。

(3)通过在灯罩、内胆显示区域中构建特定的子区域结构,并建立显示区域与纹理图像的坐标映射关系,可有效地减少走马灯转动时失真现象,提升走马灯的三维立体感,达到较好的2.5维绘制效果。

(4)本发明方法原理简单,易于实现,且动画生成效果较好,适应性广。

附图说明

图1本发明的数据变换与主要处理流程图,其中:矩形框表示数据,实线箭头表示数据变换,无框文字及虚线箭头表示数据加工处理操作及所作用的数据变换,小圆圈中的字母表示相应数据加工操作在发明中所属的步骤;

图2走马灯灯罩显示区域Ωout与内胆显示区域Ωin示意图,其中:(a)为由自由曲线定义的灯罩显示区域Ωout与与内胆显示区域Ωin;(b)中灯罩显示区域Ωout为圆形区域,内胆显示区域Ωin为矩形区域;

图3灯罩显示区域与内胆显示区域的包围盒示意图,其中:(a)为图2(a)中灯罩显示区域Ωout与内胆显示区域Ωin的包围盒Γout和Γin;(b)给出图2(b)中灯罩显示区域Ωout的包围盒Γout为覆盖区域Ωout的矩形,内胆显示区域Ωin包围盒Γin为区域Ωin自身;

图4生成区间非均匀分割的示意图,图中函数是幅值为的正弦函数,其中x0,x1,…,xN在区间上均匀取值,生成的不均匀区间分割点为y0,y1,…,yN;

图5包围盒分割示意图,其中:c0,c1,...,cN表示包围盒平行于x轴的边上的分割点,S0,S1,......,SN-1为分割包围盒后所生成的包围盒子区域;

图6均匀分割纹理图像示意图,其中I0,I1,…,IN-1为分割纹理图像I后所生成的子图像;

图7实施例1采用的走马灯灯罩显示区域Ωout与内胆显示区域Ωin,Ωout与Ωin为两个半径不等的同心圆;

图8实施例1中灯罩显示区域Ωout的包围盒Γout与内胆显示区域Ωin的包围盒Γin示意图;

图9实施例1中生成两个非均匀区间分割的示意图,其中yout=1.2·sinx为控制包围盒Γout非均匀分割的正弦函数,yin=1.0·sinx为控制包围盒Γin非均匀分割的正弦函数;

图10实施例1中灯罩显示区域包围盒Γout与内胆显示区域包围盒Γin的子区域分割示意图,其中:为包围盒Γout平行于x轴边的分割点,为分割包围盒Γout后所生成的包围盒子区域;为包围盒Γin平行于x轴边的分割点,为分割包围盒Γin后所生成的包围盒子区域;

图11实施例1中均匀分割灯罩纹理图像Iout的示意图,其中:为分割纹理图像Iout后所生成的纹理图像Iout的子图像;

图12实施例2中走马灯灯罩显示区域Ωout与内胆显示区域Ωin示意图,其中:灯罩显示区域Ωout为圆形区域,内胆显示区域Ωin为矩形区域;

图13实施例2中灯罩显示区域Ωout的包围盒Γout与内胆显示区域Ωin的包围盒Γin示意图,其中:包围盒Γout为覆盖灯罩显示区域Ωout的矩形,包围盒Γin为内胆显示区域Ωin自身。

具体实施方式

本发明的一种2.5维走马灯动画生成方法具体流程参见图1。

在步骤C中,不失一般性,标记当前将要分割的包围盒为Γ,计算包围盒Γout与包围盒Γin的子区域的方法步骤具体如下:

(1)设包围盒Γ平行于平面直角坐标系x轴的边的长度为L,定义函数

(2)参见附图4,将平面坐标系x轴上的区间划分为N等份,得到N+1个等分点,即由函数计算出相应的函数值分别为

(3)参见附图5,按照y0,y1,…,yN之间的距离关系对包围盒Γ平行于x轴的边进行分割,得到分割点c0,c1,...,cN;其中,ci与ci+1之间的距离与yi与yi+1之间的距离相等(i=0,1,…,N-1);

(4)过各个分割点c0,c1,...,cN做x轴的垂线,将包围盒Γ分割为一组宽度不等的条状矩形,称这组条状矩形为包围盒Γ的子区域,记为S0,S1,......,SN-1(参见附图5);

记由上述步骤(1)至(4)得到的包围盒Γout的子区域分别为得到的包围盒Γin的子区域分别为

在步骤D中,不失一般性,设当前将要分割的纹理图像为I,分割走马灯灯罩纹理图像Iout与内胆纹理图像Iin的方法步骤具体为:

(5)对纹理图像I进行缩放处理,使缩放后的新纹理图像中每行的像素数为N的整数倍数,将缩放后的新图纹理仍记为I,并设新图像I的宽和高分别为W和H;

(6)将纹理图像I按列数分为N等份,其中每一部分的大小均为像素,将各个部分称为纹理图像I的一个子图像,分别标记为I0,I1,…,IN-1(参见附图6);

记由上述步骤(5)(6)得到的灯罩纹理图像Iout的子图像分别为得到的内胆纹理图像Iin的子图像分别为

在步骤G中,重新定义灯罩纹理图像Iout的当前子图像和内胆纹理图像Iin的当前子图像的方法为:确定新的当前子图像为确定新的当前子图像为其中,%表示求模运算;

为了更清楚地阐述本发明的技术方案,下面结合附图和实例1与实例2,对本发明相关步骤做详细说明。

实施例1:

一种2.5维走马灯动画生成方法(参见附图1),其具体实施步骤为:

A.设定走马灯灯罩与内胆的显示区域Ωout和Ωin以及动画控制参数

分别设定走马灯动画中灯罩与内胆在平面上的显示区域Ωout和Ωin,本实施例中,灯罩显示区域Ωout和内胆显示区域Ωin均为平面上圆心位于(0,0)点的圆形区域,其中区域Ωout的半径为1.2,区域Ωin半径为1.0,区域Ωout覆盖区域Ωin(参见附图7);确定走马灯动画的灯罩纹理图像Iout与内胆纹理图像Iin,本实施例采用的纹理图像Iout和Iin均为位图图像;设定动画显示分辨率的控制参数N、走马灯灯罩与内胆转动速度的控制参数Δout与Δin,以及灯罩透明度控制参数ρ,本实施例中,取N为8,Δout为1,Δin为-1,ρ为0.5。

B.计算走马灯灯罩与内胆显示区域Ωout和Ωin的包围盒Γout与Γin

根据设定的走马灯动画中灯罩与内胆的显示区域Ωout与Ωin各自在平面上的范围,得到分别覆盖区域Ωout和Ωin的两个矩形Γout和Γin,称矩形Γout与矩形Γin分别为区域Ωout和Ωin的包围盒,矩形Γout与矩形Γin的各边均平行于平面直角坐标系的坐标轴;本实施例中,得到的包围盒Γout的四个顶点分别为A(-1.2,-1.2),B(1.2,-1.2),C(1.2,1.2),D(-1.2,1.2),包围盒Γin的四个顶点分别为E(-1.0,-1.0),F(1.0,-1.0),G(1.0,1.0),H(-1.0,1.0)(参见附图8)。

C.分割包围盒Γout与包围盒Γin,得到两个包围盒的子区域

计算包围盒Γout的子区域与包围盒Γin的子区域,具体步骤如下:

(1)由包围盒Γout和包围盒Γin平行于平面直角坐标系x轴的边的长度分别为Lout=2.4和Lin=2.0,定义函数和

(2)将平面直角坐标系x轴上的区间划分为N等份,本实施例中取N=8,得到9个等分点,即得到的等分点分别为将这9个等分点分别代入函数和得到相应的函数值分别为以及参见附图9;

(3)参见附图10,分别按照以及各相邻点之间在坐标系y轴上的距离关系对包围盒Γout和包围盒Γin平行于x轴的边分别进行分割,分别得到分割点与其中:i=0,1,...,7;

(4)过分割点做平面直角坐标系x轴的垂线,将包围盒Γout分割为一组宽度不等的条状矩形,称这组条状矩形为包围盒Γout的子区域,记为过分割点做平面直角坐标系x轴的垂线,将包围盒Γin也分割为一组宽度不等的条状矩形,称这组条状矩形为包围盒Γin的子区域,记为(参见附图10);

D.分割走马灯的灯罩纹理图像Iout与内胆纹理图像Iin

分割灯罩纹理图像Iout与内胆纹理图像Iin的方法相同,具体步骤为:

(5)对灯罩纹理图像Iout与内胆纹理图像Iin分别进行缩放处理,使缩放后的新纹理图像中每行的像素数为8的整数倍数,缩放后的新图纹理仍分别记为Iout和Iin,本实施例中,图像缩放处理采用双线性插值法进行操作,缩放后的新图像Iout和Iin均为256×256像素大小;

(6)将缩放后的纹理图像Iout和纹理图像Iin分别按列数分为8等份,每份的大小均为32×256像素大小;将纹理图像Iout分割后的各个部分称为图像Iout的一个子图像,分别记为将纹理图像Iin分割后的各个部分称为图像Iin的一个子图像,分别记为(参见附图11);

设定灯罩纹理图像Iout的当前子图像为内胆纹理图像Iin的当前子图像为其中i=0,j=0;

E.生成走马灯灯罩包围盒Γout和内胆包围盒Γin的纹理贴图Tout和Tin

本实施例生成走马灯灯罩的纹理贴图Tout和内胆的纹理贴图Tin的方法是:以符号%表示求模运算,以灯罩纹理图像Iout的当前子图像为起始子图像,分别将纹理图像Iout的8个子图像依次贴至包围盒Γout的8个子区域上,形成包围盒Γout的纹理贴图Tout;再以内胆纹理图像Iin的当前子图像为起始子图像,分别将纹理图像Iin的8个子图像依次贴至包围盒Γin的8个子区域上,形成包围盒Γin的纹理贴图Tin;

F.混合纹理贴图Tout和Tin,绘制单个动画帧

从纹理贴图Tout中裁剪出位于灯罩显示区域Ωout内的部分,仍记为Tout;从纹理贴图Tin中裁剪出位于内胆显示区域Ωin内的部分,仍记为Tin;根据灯罩透明度控制参数ρ,本实施例中取ρ为0.5,确定纹理贴图Tout的透明程度为半透明;再将设置了透明度的纹理贴图Tout与作为背景纹理的纹理贴图Tin进行混合,得到合成纹理贴图Tb;在显示区域Ωout内绘制合成纹理贴图Tb生成单个动画帧;

G.生成2.5维走马灯动画帧序列

产生走马灯动画帧序列的具体方法步骤为:

(7)根据走马灯灯罩与内胆转动速度的控制参数Δout与Δin,本实施例中Δout取为1,Δin取为-1,重新定义灯罩纹理图像Iout和内胆纹理图像Iin的当前子图像和方法为:确定新的当前子图像为确定新的当前子图像为

(8)重复执行步骤E和步骤F以及(7)共500次,产生动画帧序列,形成具有500个帧的2.5维走马灯动画。

实施例2:

一种2.5维走马灯动画生成方法(参见附图1),其具体实施步骤为:

A.设定走马灯灯罩与内胆的显示区域Ωout和Ωin以及动画控制参数

分别设定走马灯动画中灯罩与内胆在平面上的显示区域Ωout和Ωin,本实施例中,灯罩显示区域Ωout为平面直角坐标系中圆心位于(0,0)点、半径为1.0的圆形区域,内胆显示区域Ωin为平面矩形区域,它的四个顶点分别为E(-0.5,-0.7),F(0.5,-0.7),G(0.5,0.7),H(-0.5,0.7),区域Ωout覆盖区域Ωin(参见附图12);确定走马灯动画的灯罩纹理图像Iout与内胆纹理图像Iin,本实施例采用的纹理图像Iout和Iin均为位图图像;设定动画显示分辨率的控制参数N、走马灯灯罩与内胆转动速度的控制参数Δout与Δin,以及灯罩透明度控制参数ρ,本实施例中,取N为50,Δout为4,Δin为1,ρ为0.6。

B.计算走马灯灯罩与内胆显示区域Ωout和Ωin的包围盒Γout与Γin

根据输入的走马灯动画中灯罩与内胆的显示区域Ωout与Ωin各自在平面上的范围,得到分别覆盖区域Ωout和Ωin的两个矩形Γout和Γin,称矩形Γout与矩形Γin分别为区域Ωout和Ωin的包围盒,矩形Γout与矩形Γin的各边均平行于平面直角坐标系的坐标轴;本实施例中,得到的包围盒Γout的四个顶点分别为A(-1.2,-1.2),B(1.2,-1.2),C(1.2,1.2),D(-1.2,1.2),包围盒Γin的四个顶点分别为E(-0.5,-0.7),F(0.5,-0.7),G(0.5,0.7),H(-0.5,0.7)(参见附图13)。

C.分割包围盒Γout与包围盒Γin,得到两个包围盒的子区域

计算包围盒Γout的子区域与包围盒Γin的子区域,具体步骤如下:

(1)由包围盒Γout和包围盒Γin各自平行于平面直角坐标系x轴的边的长度分别为Lout=2.4和Lin=1.0,定义函数和

(2)将平面直角坐标系x轴上的区间划分为N等份,本实施例中取N=50,得到51个等分点,即得到的等分点分别为将这51个等分点分别代入函数和得到相应的函数值分别为以及

(3)分别按照以及各相邻点之间在坐标系y轴上的距离关系对包围盒Γout和包围盒Γin平行于x轴的边分别进行分割,得到分割点与其中:i=0,1,...,49;

(4)过各个分割点做平面直角坐标系x轴的垂线,将包围盒Γout分割为一组宽度不等的条状矩形,称这组条状矩形为包围盒Γout的子区域,记为过各个分割点做平面直角坐标系x轴的垂线,将包围盒Γin也分割为一组宽度不等的条状矩形,称这组条状矩形为包围盒Γin的子区域,记为

D.分割走马灯的灯罩纹理图像Iout与内胆纹理图像Iin

分割灯罩纹理图像Iout与内胆纹理图像Iin的方法相同,具体步骤为:

(5)对灯罩纹理图像Iout与内胆纹理图像Iin分别进行缩放处理,使缩放后的新纹理图像中每行的像素数为50的整数倍数,缩放后的新图纹理仍分别记为Iout和Iin,本实施例中,图像缩放处理采用双线性插值法进行操作,缩放后的新图像Iout和Iin均为500×1000像素大小;

(6)将缩放后的纹理图像Iout和纹理图像Iin分别按列数分为50等份,每一部分的大小均为10×1000像素大小;将纹理图像Iout分割后的各个部分称为图像Iout的一个子图像,分别记为将纹理图像Iin分割后的各个部分称为图像Iin的一个子图像,分别记为

设定灯罩纹理图像Iout的当前子图像为内胆纹理图像Iin的当前子图像为其中i=0,j=25;

E.生成走马灯灯罩包围盒Γout和内胆包围盒Γin的纹理贴图Tout和Tin

本实施例生成走马灯灯罩的纹理贴图Tout和内胆的纹理贴图Tin的方法是:以符号%表示求模运算,以灯罩纹理图像Iout的当前子图像为起始子图像,分别将纹理图像Iout的50个子图像依次贴至包围盒Γout的50个子区域上,形成包围盒Γout的纹理贴图Tout;再以内胆纹理图像Iin的当前子图像为起始子图像,分别将纹理图像Iin的50个子图像依次贴至包围盒Γin的50个子区域上,形成包围盒Γin的纹理贴图Tin;

F.混合纹理贴图Tout和Tin,绘制单个动画帧

从纹理贴图Tout中裁剪出位于灯罩显示区域Ωout内的部分,仍记为Tout;从纹理贴图Tin中裁剪出位于内胆显示区域Ωin内的部分,仍记为Tin;根据灯罩透明度控制参数ρ,本实施例中取ρ为0.6,确定内胆纹理贴图Tin的颜色60%地透过灯罩纹理贴图Tout;再将设置了透明度的纹理贴图Tout与作为背景纹理的纹理贴图Tin进行混合,得到合成纹理贴图Tb;在显示区域Ωout中绘制合成纹理贴图Tb,生成单个动画帧;

G.生成2.5维走马灯动画帧序列

产生走马灯动画帧序列的具体方法步骤为:

(7)根据走马灯灯罩与内胆转动速度的控制参数Δout与Δin,本实施例中Δout取为4,Δin取为1,重新定义灯罩纹理图像Iout和内胆纹理图像Iin的当前子图像和方法为:确定新的当前子图像为确定新的当前子图像为其中%表示求模运算;

(8)重复执行步骤E和步骤F以及(7)共1000次,产生动画帧序列,形成具有1000个帧的2.5维走马灯动画。

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