发明内容
本发明实施例所要解决的技术问题在于,提供一种动画对象运动的控制方法,该方法包括以下步骤:
根据一个预设的以时间为自变量的函数计算出一条由多个点组成的曲线,所述曲线包括位于所述曲线两端的第一节点及第二节点;
获取所述曲线的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线的形状;
获取一个对象;
根据一个预设的时间长度,将所述对象以修改后的所述曲线为移动路径,从所述第一节点移动到所述第二节点。
其中,根据一个预设的以时间为自变量的函数计算出一条由多个点组成的曲线,所述曲线包括位于所述曲线两端的第一节点及第二节点的步骤中还包括以下子步骤:
获取第一节点及第二节点的坐标;
根据预设的以时间为自变量的函数设定所述第一节点及所述第二节点之间的所述曲线。
在获取一个对象之后,所述根据一个预设的时间长度,将所述对象以修改后的所述曲线为移动路径,从所述第一节点移动到所述第二节点之前还包括以下步骤:
获取所述对象在所述第一节点及所述第二节点的属性;
根据所述对象在所述第一节点的属性及所述对象在所述第二节点的属性,按预设的时间长度设置所述对象在所述第一节点及所述第二节点之间的属性的变化量;
所述根据一个预设的时间长度,将所述对象以修改后的所述曲线为移动路径,从所述第一节点移动到所述第二节点的步骤包括:
按预设的时间长度将所述对象沿修改后的所述曲线从所述第一节点移动到所述第二节点,并根据所述对象在所述第一节点及所述第二节点之间的属性的变化量计算所述对象在所述第一节点及所述第二节点之间的多个属性。
所述动画对象运动的控制方法还包括以下步骤:
获取所述曲线上的至少一个分段节点,所述分段节点位于所述第一节点及所述第二节点之间,根据所述对象在所述第一节点及所述第二节点设置属性的方式设置所述对象在每两个相邻的节点的属性。
在获取所述曲线上的至少一个分段节点,所述分段节点位于所述第一节点及所述第二节点之间,以所述对象在所述第一节点及所述第二节点设置属性的方式设置所述对象在每两个相邻的节点的属性的步骤中,以所述对象在所述第一节点及所述第二节点之间相同的移动方式设置所述对象在每两个相邻的节点之间的移动方式。
相应的,本发明实施例还提供了一种动画对象运动的控制***,该***包括:
曲线生成模块,用于根据一个预设的以时间为自变量的函数计算出一条由多个点组成的曲线,所述曲线包括位于所述曲线两端的第一节点及第二节点;
修改模块,用于获取所述曲线的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线的形状;
对象获取模块,用于获取一个对象;
运动模块,用于根据一个预设的时间长度,将所述对象以修改后的所述曲线为移动路径,从所述第一节点移动到所述第二节点。
其中,所述控制***还包括:
节点获取模块,用于获取第一节点及第二节点的坐标;
曲线生成模块,用于根据预设的以时间为自变量的函数设定所述第一节点及所述第二节点之间的所述曲线。
所述控制***还包括:
属性模块,用于获取所述对象在所述第一节点及所述第二节点的属性;
变化模块,用于根据所述对象在所述第一节点的属性及所述对象在所述第二节点的属性,按预设的时间长度设置所述对象在所述第一节点及所述第二节点之间的属性的变化量;
所述运动模块还用于按预设的时间长度将所述对象沿修改后的所述曲线从所述第一节点移动到所述第二节点,并根据所述对象在所述第一节点及所述第二节点之间的属性的变化量计算所述对象在所述第一节点及所述第二节点之间的多个属性。
所述控制***还包括:
分段模块,用于获取所述曲线上的至少一个分段节点,所述分段节点位于所述第一节点及所述第二节点之间,以所述对象在所述第一节点及所述第二节点设置属性的方式设置所述对象在每两个相邻的节点的属性。
所述分段模块还用于以所述对象在所述第一节点及所述第二节点之间相同的移动方式设置所述对象在每两个相邻的节点之间的移动方式。
本发明提供的动画对象运动的控制方法可以对对象的运动曲线中坐标点的位置做修改,从而能够使得动画对象按照更加灵活的方式运动,提高动画设计的多样化及便利性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,通过对象的运动曲线中坐标点的位置做修改,从而能够使得动画对象按照更加灵活的方式运动,提高动画设计的多样化及便利性。
请一并参阅图1及图2,为本发明提供的第一实施例的动画对象运动的控制方法,该方法用于视频编辑软件。该方法包括一下步骤:
步骤101,根据一个预设的以时间为自变量的函数计算出一条由多个点组成的曲线L,所述曲线L包括位于所述曲线L两端的第一节点A及第二节点B。所述函数可以由B样条曲线算法等曲线算法得到。本实施例中,所述函数是二纬的贝塞尔曲线函数,公式如下:
其中:
n是阶数,阶数=确定点的个数-1;
i是表示所有点的序列索引,即P0,P1,P2……;
P表示点的坐标(x,y);
t表示时间自变量,并且介于0,1之间,可以等于0和1。
本实施例中,通过该函数能够获得所述曲线L各个时刻的点坐标函数,再通过t的变化,就可以计算出所有点组合成的所述曲线L。当然在其他实施例中,所述函数也可以是其他二维曲线函数,或者是采用三次样条插值法一类算法获得的三维曲线函数。
步骤103,获取所述曲线L的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线L的形状。本实施例中,所述曲线L的所有坐标点的位置都可以通过鼠标拖动来改变,根据被拖动的坐标点的坐标修改所述曲线L的形状。当然,在其他实施例中,所述曲线L的坐标点的位置也可以采用手指在触控屏上拖动来改变,或通过弹出包含要修改的坐标点的坐标值的对话框,通过修改对话框中的坐标值来修改坐标的位置。在其他实施例中,本步骤还可以通过平滑曲线算法来计算未修改位置的坐标点的位置以使所述曲线L保持平滑。
步骤105,获取一个对象M。所述对象M可是图片、文字或者是视频窗口。本实施例中,通过打开文件对话框选取图片、文字或者是视频窗口,再将图片、文字或者是视频窗口载入所述对象M中。
步骤107,根据一个预设的时间长度,将所述对象M以修改后的所述曲线L为移动路径,从所述第一节点A移动到所述第二节点B。所述预设的时间长度可以由软件商设定,也可以由用户设定。本实施例中,所述预设的时间长度由用户设定。在预设的时间长度内的动画由多个帧组成,在第一帧中将所述对象M的中心坐标设置为所述第一节点A的坐标,在最后一帧中将所述对象M的中心坐标设置为所述第二节点B的坐标。根据动画播放的帧率及预设的时间长度计算出帧数,所述帧率由软件商预先设定。根据每一帧与在所有帧中的位置获得所述曲线L中对应的坐标点,在各帧中将所述对象M的中心坐标对应修改为所述曲线L中对应的坐标点。当然,在其他实施例中也可以是将所述对象M的左上角坐标或右下角坐标修改为所述曲线L中对应的坐标点。
如果帧率为25帧/秒,预设的时间长度为2秒。所述第一节点A为第0秒,所述第二节点B为第2秒,那么所述第一节点A到所述第二节点B之间存在50帧(包括所述第一节点A和所述第二节点B对应的帧)。所述曲线L的坐标点中存在50个对应的坐标点(包括所述第一节点A和所述第二节点B的坐标点)。如第2帧在所有帧中位于2/50的位置,当播放到所述第2帧时,所述对象M的中心坐标将对应所述曲线L的函数中位于所述预设的时间长度的2/50处的坐标点,即t为0.04时生成的坐标点。在播放过程中,将所述对象M的中心坐标不断修改为曲线L上对应各个帧的点坐标值,直到所述对象M的中心坐标修改为第二节点B,从而生成一个按照曲线运动的动画。
请参阅图3,为本发明提供的第一实施例的对象运动的控制***100,该***100包括曲线生成模块10、修改模块20、对象获取模块30及运动模块40。
所述曲线生成模块10用于根据一个预设的以时间为自变量的函数计算出一条由多个点组成的曲线L,所述曲线L包括位于所述曲线L两端的第一节点A及第二节点B。所述函数可以由B样条曲线算法等曲线算法得到。本实施例中,所述曲线生成模块10利用贝塞尔曲线函数获得所述曲线L各个时刻的点坐标函数,再通过t的变化获得所有点组合成的所述曲线L。
所述修改模块20用于获取所述曲线L的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线L的形状。本实施例中,所述曲线L的坐标点的位置都可以通过鼠标拖动来改变。当然,在其他实施例中,所述曲线L的坐标点的位置也可以采用手指在触控屏上拖动来改变,或通过弹出包含要修改的坐标点的坐标值的对话框,通过修改对话框中的坐标值来修改坐标的位置。在其他实施例中,所述修改模块20还可以通过平滑曲线算法来改变未修改位置的坐标点的位置以使所述曲线L保持平滑。
所述对象获取模块30用于获取一个对象M。所述对象M可是图片、文字或者是视频窗口。本实施例中,通过打开文件对话框选取图片、文字或者是视频窗口,再将图片、文字或者是视频窗口载入所述对象M中。
所述运动模块40用于根据一个预设的时间长度,将所述对象M以修改后的所述曲线L为移动路径,从所述第一节点A移动到所述第二节点B。所述预设的时间长度可以由软件商设定,也可以由用户设定。本实施例中,所述预设的时间长度由用户设定。在预设的时间长度内的动画由多个帧组成,在第一帧中将所述对象M的中心坐标设置为所述第一节点A的坐标,在最后一帧中将所述对象M的中心坐标设置为所述第二节点B的坐标。根据动画播放的帧率及预设的时间长度计算出帧数,所述帧率由软件商预先设定。根据每一帧在所有帧中的位置获得所述曲线L中对应的坐标点,在各帧中将所述对象M的中心坐标对应修改为所述曲线L中对应的坐标点
请一并参阅图4及图5,为本发明第二实施例提供的一种动画对象运动的控制方法,该方法包括以下步骤:
步骤401,获取第一节点A1及第二节点B1的坐标。所述第一节点A1及第二节点B1的坐标可以预先设定或获取用户点击屏幕的两个坐标点。
步骤403,根据预设的以时间为自变量的函数设定所述第一节点A1及所述第二节点B1之间的所述曲线L1。本实施例中,利用与所述步骤101相同的算法在所述第一节点A1及所述第二节点B1之间计算所述曲线L1的形状。
步骤405,获取所述曲线L1的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线L1的形状。本实施例中,所述步骤405与所述步骤103相同。
步骤409,获取一个对象M1。本实施例中,所述步骤409与所述步骤105相同。
步骤411,获取所述对象M1在所述第一节点A1及所述第二节点B1的属性。所述属性可以是旋转角度、缩放比例、透明度等属性中的一个或几个的组合。本实施例中,用户设置所述对象M1在所述第一节点A1的缩放比例是1,所述第二节点B1的缩放比例是2。
步骤413,根据所述对象M1在所述第一节点A1的属性及所述对象M1在所述第二节点B1的属性,按预设的时间长度设置所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量。本实施例中,采用线性变化的方式设置所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量。所述预设的时间长度可以由软件商设定,也可以由用户设定。本实施例中,所述预设的时间长度由用户设定。在预设的时间长度内的动画由多个帧组成,在第一帧中将所述对象M1的属性设置在所述第一节点A1的属性,在最后一帧中将所述对象M1的属性设置在所述第二节点B1的属性。根据动画播放的帧率及预设的时间长度计算出帧数,所述帧率由软件商预先设定。根据每一帧在所有帧中的位置获得所述对象M1的属性对应的变化量,在各帧中将所述对象M1的属性按照变化量对应修改。
如果帧率为25帧/秒,预设的时间长度为2秒。所述第一节点A1为第0秒,所述第二节点B1为第2秒,那么所述第一节点A1到所述第二节点B1之间存在50帧(包括所述第一节点A1和所述第二节点B1对应的帧)。所述对象M1在所述第一节点A1及所述第二节点B1之间的缩放比例分成49个等份的变化量。例如,第2帧在所有帧中位于2/50的位置,对应所述第2帧所述对象M1的缩放比例将增加为1/49+1。
步骤415,按预设的时间长度将所述对象M1沿修改后的所述曲线L1从所述第一节点A1移动到所述第二节点B1,并根据所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量计算所述对象M1在所述第一节点A1及所述第二节点B1之间的多个属性。将所述对象M1沿所述曲线L1从所述第一节点A1移动到所述第二节点B1的过程与所述第一实施例中的步骤107相同。在本步骤中,修改所述对象M1的中心坐标的同时对应修改所述对象M1在各帧中的缩放比例。
步骤417,获取所述曲线L1上的至少一个分段节点C,所述分段节点C位于所述第一节点A1及所述第二节点B1之间,根据所述对象M1在所述第一节点A1及所述第二节点B1设置属性的方式设置所述对象M1在每两个相邻的节点的属性。本实施例中,在所述曲线L1上增加两个分段节点C。通过增加所述两个分段节点C增加变化的阶段。当然,本步骤也可以省略。该步骤还可以放在所述步骤405和步骤409之间。所述两个分段节点C与所述第一节点A1、第二节点B1一样可以设置属性。并且所述第一节点A1、两个分段节点C及第二节点B1各节点之间的运动及属性设定采用与所述第一节点A1及所述第二节点B1之间的运动及属性设定相同的方法。在其他实施例中,在所述曲线L上也可以只增加一个分段节点C,或增加更多个分段节点C。
请一并参阅图6,为本发明第二实施例提供的一种动画对象运动的控制***200,该***200包括节点获取模块110、曲线生成模块120、修改模块130、对象获取模块140、属性模块150、变化模块160及运动模块170。
所述节点获取模块110用于获取第一节点A1及第二节点B1的坐标。所述第一节点A1及第二节点B1的坐标可以预先设定或通过用户点击屏幕设定。
所述曲线生成模块120用于根据预设的以时间为自变量的函数设定所述第一节点A1及所述第二节点B1之间的所述曲线L1。本实施例中,采用所述步骤403的方法在所述第一节点A1及所述第二节点B1之间定义所述曲线L1。
所述修改模块130获取所述曲线L1的至少一个坐标值被修改的点,根据所述坐标值被修改的点修改所述曲线L1的形状。本实施例中,所述修改模块130采用所述步骤405的方法改变所述曲线L1的形状。
所述对象获取模块140用于获取一个对象M1。本实施例中,所述对象获取模块140采用所述步骤409的方法提供一个对象M1。
所述属性模块150用于获取所述对象M1在所述第一节点A1及所述第二节点B1的属性。所述属性可以是旋转角度、缩放比例、透明度等属性中的一个或几个的组合。本实施例中,设置所述对象M1在所述第一节点A1的缩放比例是1,在所述第二节点B1的缩放比例是2。
所述变化模块160用于根据所述对象M1在所述第一节点A1的属性及所述对象M1在所述第二节点B1的属性,按预设的时间长度设置所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量。本实施例中,采用线性变化的方式设置所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量。所述预设的时间长度可以由软件商设定,也可以由用户设定。本实施例中,所述预设的时间长度由用户设定。在预设的时间长度内的动画由多个帧组成,在第一帧中将所述对象M1的属性设置在所述第一节点A1的属性,在最后一帧中将所述对象M1的属性设置在所述第二节点B1的属性。根据动画播放的帧率及预设的时间长度计算出帧数,所述帧率由软件商预先设定。根据每一帧在所有帧中的位置获得所述对象M1的属性的变化量,在各帧中将所述对象M1的属性按照变化量对应修改。
所述运动模块170用于按预设的时间长度将所述对象M1沿修改后的所述曲线L1从所述第一节点A1移动到所述第二节点B1,并根据所述对象M1在所述第一节点A1及所述第二节点B1之间的属性的变化量计算所述对象M1在所述第一节点A1及所述第二节点B1之间的多个属性。本实施例中,所述运动模块170按照所述步骤415的方法移动所述对象M1及修改所述对象M1的属性。
所述分段模块180用于获取所述曲线L1上的至少一个分段节点C,所述分段节点C位于所述第一节点A1及所述第二节点B1之间,根据所述对象M1在所述第一节点A1及所述第二节点B1设置属性的方式设置所述对象M1在每两个相邻的节点的属性。本实施例中,在所述曲线L1上增加两个分段节点C。通过增加所述两个分段节点C增加变化的阶段。当然,所述分段模块180也可以省略。所述两个分段节点C与所述第一节点A1、第二节点B1一样可以设置属性。并且所述第一节点A1、两个分段节点C及第二节点B1各节点之间的运动及属性设定采用与所述第一节点A1及所述第二节点B1之间的运动及属性设定相同的技术。在其他实施例中,在所述曲线L上也可以只增加一个分段节点C,或增加更多个分段节点C。
本发明提供的动画对象运动的控制方法可以对对象的运动曲线中坐标点的位置做修改,从而能够使得动画对象按照更加灵活的方式运动,提高动画设计的多样化及便利性。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。