CN103927776A - 动画曲线优化方法 - Google Patents

动画曲线优化方法 Download PDF

Info

Publication number
CN103927776A
CN103927776A CN201410124595.1A CN201410124595A CN103927776A CN 103927776 A CN103927776 A CN 103927776A CN 201410124595 A CN201410124595 A CN 201410124595A CN 103927776 A CN103927776 A CN 103927776A
Authority
CN
China
Prior art keywords
animation
frame
curvature
animation frame
less
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410124595.1A
Other languages
English (en)
Other versions
CN103927776B (zh
Inventor
沈杰
吴佳
沈玉良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHEJIANG ZHONGNAN CARTOON CO Ltd
Original Assignee
ZHEJIANG ZHONGNAN CARTOON CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZHEJIANG ZHONGNAN CARTOON CO Ltd filed Critical ZHEJIANG ZHONGNAN CARTOON CO Ltd
Priority to CN201410124595.1A priority Critical patent/CN103927776B/zh
Publication of CN103927776A publication Critical patent/CN103927776A/zh
Application granted granted Critical
Publication of CN103927776B publication Critical patent/CN103927776B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明涉及计算机动画领域,公开了一种动画曲线优化方法,包括以下的具体步骤,准备步骤,找寻文件中的物体;曲率计算步骤,计算每个物体在所有动画帧上的曲率;非关键帧排除步骤,剔除非关键帧;从而达到减少非关键帧,优化动画曲线的目的。本发明的优点在于,优化效果好,可以大幅度地减少动画文件中的K帧,可以大幅简化后期的动画修改流程,人工干预少,同时具有计算步骤少的特点,尤其适应于对于动画文件的后期优化操作,具有较好的应用价值。

Description

动画曲线优化方法
技术领域
本发明涉及计算机动画领域,特别涉及一种动画曲线优化方法。
背景技术
随着3D动画时代的来临,各式各样的动画充斥在人们的电脑上。有时,为了获得更好的动画效果,有些动画公司采用动作捕捉来制作动画,然后把动作捕捉的数据转到Maya的人物或动物中,之后还要进行一些动画的修饰和调整,这时密密麻麻的k帧就给用户带来极大的不便。还有动力学的k帧烘培,烘培之后若想修改烘培之后的k帧那是相当困难。于是,在已经制作完成的动画文件中,例如Maya文件中实现动画曲线优化的技术应运而生。
现有技术中,对于动画文件中曲线的优化还仅仅停留在通过固定的动画参数修改曲线的阶段,通过现有技术对动画曲线的修改的问题在于每条曲线的形状差异较大,无法较为准确地确定上述固定的动画参数的范围,通常而言,只能设定一个较宽的数值范围,因此导致优化效果不佳。此外,采用固定参数进行优化只能对一条曲线进行一次优化,无法应用迭代进行再次优化,需要再次调整参数后方能进一步进行优化,导致优化过程的人工干预程度上升,实际上对优化效率影响较大。
有鉴于此,有必要研发一种具有多种能够根据动画曲线的具体情况,智能地进行动画曲线的修改的新型动画曲线优化方法。
发明内容
本发明针对现有技术中,对在动画文件中的曲线进行优化的过程中普遍存在的控制优化参数过多,优化效果不好的缺点,提供了一种新型的智能动画曲线优化方法,可以在提供较少的控制参数的情况下,根据曲线的情况自动地完成优化操作。
为实现上述目的,本发明可采取下述技术方案:
动画曲线优化方法,包括以下的具体步骤:
准备步骤:找寻动画文件中的所有物体并形成物体集合,确定物体集合中所有物体在所述动画文件的时间轴上的所有时间点;
曲率计算步骤:依次计算每个物体在所有动画帧上的曲率,所述曲率是指在以时间变化为x轴,物体取值变化为y轴的x-y坐标系中,动画帧所在时间点的物体取值的变化程度,所述时间点是指所述动画帧在x轴上的位置,所述物体取值包括物体在空间坐标系内的位置、形状;
非关键帧排除步骤:根据所述曲率的大小,剔除那些曲率较小的动画帧以达到优化动画曲线的目的,所述曲率较小的动画帧是指对物体在x-y坐标系中的运动曲线曲率改变影响较小的动画帧,所述剔除那些曲率较小的动画帧包括剔除所述曲率较小的动画帧所在时间点的物体取值和/或动画帧所在时间点。
于本发明的实施例中,所述曲率计算步骤中,所述曲率较小的动画帧是通过计算该动画帧分别上游帧以及下游帧之间的变化率之差得到的,所述上游帧是指在x轴上的位置先于该动画帧的位置的动画帧,所述下游帧是指在x轴上的位置后于该动画帧的位置的动画帧。
于本发明的实施例中,所述上游帧以及下游帧分别为与所述曲率较小的动画帧相邻的动画帧。
于本发明的实施例中,所述变化率为绝对变化率。
于本发明的实施例中,所述变化率之差包括上游变化率与下游变化率之差,所述上游变化率是指所述曲率较小的动画帧与上游帧之间的物体取值之差与间隔时长的比值,所述下游变化率是指所述曲率较小的动画帧与下游帧之间的物体取值之差与间隔时长的比值。
于本发明的实施例中,还包括阈值计算步骤:首先将所述曲率计算步骤中计算得到的单个物体在所有动画帧上的曲率进行排序,计算所有动画帧上的曲率的百分比相对排名,取百分比相对的排名等于或者最接近于预设值的动画帧的曲率作为阈值,所述阈值用于判断所述曲率较小的动画帧,并于所述非关键帧排除步骤中保留曲率大于阈值的动画帧,所述百分比相对排名是指以百分数表示的特定动画帧的曲率在所述单个物体在所有动画帧上的曲率的排名顺序,所述预设值为预先设定的百分比数值。
于本发明的实施例中,所述物体取值包括该物体在三维空间内的包括位移、旋转或者缩放的变化。
于本发明的实施例中,所述物体取值包括该物体分别在三维空间的x、y、z轴上的变化。
于本发明的实施例中,还包括迭代优化步骤:对经过所述非关键帧排除步骤排除非关键帧后的物体再次应用所述曲率计算步骤和非关键帧排除步骤以进一步排除非关键帧。
本发明具有以下的显著技术效果:
可以较为智能地实现对动画文件中的曲线进行优化操作,只需要预设极少的参数即可,本发明所记载的方法可以自动地实现对动画文件的曲线优化;此外,本发明通过判断并剔除非关键帧的方法大幅度减少动画文件中K帧的数量,优化效率高。
进一步地,本发明采用了一种依据曲率百分比自动调整曲线优化阈值的步骤,有效地避免了曲线在被优化后需要相应地调整预设参数的问题,进一步简化了优化过程,提高了智能程度。
附图说明
图1为动画曲线优化方法的流程步骤示意图。
图2为一种动画曲线优化装置的连接结构示意图。
图3为优化前的曲线以及关键帧。
图4为优化后的曲线以及关键桢。
具体实施方式
下面结合实施例对本发明作进一步的详细描述。
实施例1
动画曲线优化方法,如图1所示,包括以下的具体步骤:
准备步骤100:找寻动画文件中的所有物体并形成物体集合,确定物体集合中所有物体在所述动画文件的时间轴上的所有时间点,即K帧所在时间点。
曲率计算步骤200:依次计算每个物体在所有动画帧上的曲率,所述曲率是指在以时间变化为x轴,物体的空间取值变化为y轴的x-y坐标系中,动画帧所在时间点的物体取值的变化程度,通常而言,所述的动画帧是指K帧,即将关键帧作为衡量物体的取值变化的节点,所述时间点是指所述动画帧在x轴上的位置,所述物体的空间取值变化即物体取值,包括物体在空间坐标系内的位置、形状。文件内的物体在每一个动画帧处产生空间上的变化,即发生物体取值变化,因此,每一个物体在各个动画帧处所发生的空间上的变化在时间轴上就形成了一条物体的变化曲线,由于本发明所使用的物体的变化曲线是基于物体的取值在时间轴上的变化,而非物体在实际的三维空间内的空间变化,因此所形成的K帧剔除类似于一种虚拟的动画帧剔除方法,即仅仅剔除物体在特定的动画帧上的取值。
非关键帧排除步骤300:根据所述曲率的大小,剔除那些曲率较小的动画帧以达到优化动画曲线的目的,所述曲率较小的动画帧是指对物体在x-y坐标系中的运动曲线曲率改变影响较小的动画帧,所述剔除那些曲率较小的动画帧是指包括剔除所述曲率较小的动画帧所在时间点的物体取值和/或动画帧所在时间点,剔除动画帧所在时间点是指将某一个动画帧完全去除,所述运动曲线即上文所指的每一个物体在各个动画帧处所发生的空间上的变化在时间轴上形成的一条物体的变化曲线。
所述曲率计算步骤200中,所述曲率较小的动画帧是通过计算该动画帧分别上游帧以及下游帧之间的变化率之差得到的,所述上游帧是指在x轴上的位置先于该动画帧的位置的动画帧,所述下游帧是指在x轴上的位置后于该动画帧的位置的动画帧。
所述上游帧以及下游帧分别为与所述曲率较小的动画帧相邻的动画帧。
所述变化率为绝对变化率。
所述变化率之差包括上游变化率与下游变化率之差,所述上游变化率是指所述曲率较小的动画帧与上游帧之间的物体取值之差与间隔时长的比值,所述下游变化率是指所述曲率较小的动画帧与下游帧之间的物体取值之差与间隔时长的比值。
动画曲线优化方法还包括阈值计算步骤400:首先将所述曲率计算步骤200中计算得到的单个物体在所有动画帧上的曲率进行排序,计算所有动画帧上的曲率的百分比相对排名,取百分比相对排名等于或者最接近于预设值的动画帧的曲率作为阈值,所述阈值用于判断所述曲率较小的动画帧,并于所述非关键帧排除步骤300中保留曲率大于阈值的动画帧,所述百分比相对排名是指以百分数表示的特定动画帧的曲率在所述单个物体在所有动画帧上的曲率的排名顺序,所述预设值为预先设定的百分比数值,优选地,该预设值在20%-40%之间,可以有效地提高剔除效率,且可以防止对关键的K帧的剔除。
所述物体取值包括该物体在三维空间内的包括位移、旋转或者缩放的变化。所述物体取值包括该物体分别在三维空间的x、y、z轴上的变化。可选地,物体取值亦可以为其他影响一个物体在计算机三维绘图技术中的变量或者参数,进一步提高本实施例的应用范围。
动画曲线优化方法还包括迭代优化步骤500:对经过所述非关键帧排除步骤300排除非关键帧后的物体再次应用所述曲率计算步骤200和非关键帧排除步骤300以进一步排除非关键帧。具体而言,为了能够进一步地实现对曲线的优化,并且提高非关键帧的剔除率,需要在一次剔除的基础上,迭代地进行多次,剔除,该步骤是通过一个迭代器实现的,不仅提高了剔除效果,且简化了代码,提高了代码的执行效率。优选地,通过3次迭代,可以达到较好的剔除效果,达到曲线的最佳优化效果,具体如图3-4所示,经过优化,在保持曲线的原有形状的基础上,大大减少了关键帧的数量,便于后期对曲线的进一步修改。
实施例2
动画曲线优化方法,包括以下的具体步骤:
打开动画文件,于本实施例而言,是一个Maya文件,以Maya文件为例,在文件中找寻其所包含的物体,将所有在Maya文件中找到的物体集合成为物体集合,分别对物体进行标识。查找Maya文件中的动画曲线,即每一个物体在各个K帧处所发生的空间上的变化在时间轴上形成的一条物体的变化曲线,查找特定K帧所对应的物体,一个K帧可能包括多个物体,分别确定物体在特定K帧的空间变化,该空间变化包括位移、旋转以及缩放的变化。选择一个特定的空间变化,分别计算物体的空间变化于特定K帧的曲率。曲率的计算采用以下方法进行计算,分别计算曲线在特定K帧位置的左值以及右值,所述左值是K帧与上游帧之间物体取值的变化率,所述右值是指K帧与下游帧之间的物体取值的变化率。结合左值与右值以便于判断曲线在特定K帧处的曲率变化,即将满足以下4个判断之一的K帧作为关键帧进行保留,所述4个判断为:左值小于等于0且右值大于0;左值小于0且右值大于等于0;左值大于等于0且右值小于0;左值大于0且右值小于等于0,该判断的作用在于,编辑物体k帧曲率上的关键帧,确认物体k帧曲率上的k帧的输入角度为0输出角度为0。进一步地,还需要对曲线进行迭代,重复地进行上述K帧剔除过程,以便于更进一步地实现曲线优化,最终得到一条优化后的曲线。上述具体步骤可以采用以下的代码实现:
string$object_jh[]=`ls-sl`;//拾取物体集合名字
string$object;//拾取物体
string$ACNameh[];//定义$ACNameh[]
string$ACName;//定义$ACName
for($object in$object_jh)//物体是否在物体集合名字中
{
$ACNameh=`keyframe-q-n$object`;//定义$ACName=询问k帧物体的名字
for($ACName in$ACNameh)//$ACName是否在$ACNameh中
{
float$at[]=`keyframe-q-tc$ACName`;
//定义$at[]=询问k帧的时间变化$ACName
float$av[]=`keyframe-q-vc$ACName`;
//定义$av[]=询问k帧的值变化$ACName
float$kfav[]=`keyTangent-t$at[0]-q-oa$ACName`;
//定义$kfav[]=帧切线的时间询问$ACName的输出角度
float$klav[]=`keyTangent-t$at[1]-q-ia$ACName`;
//定义$klav[]=帧切线的时间询问$ACName的输入角度
float$av_minToMax[]=`sort($av)`;
//定义$av_minToMax[]=$av从小到大排序的集合
float$avMax=$av_minToMax[size($av_minToMax)-1];
//定义$avMax=$av_minToMax[size($av_minToMax)-1]
if(size($at)==1)//如果$at的数目大小等于1
delete$ACName;//删除$ACName
if((size($at)==2)&&($av[0]==$av[1])&&($kfav[0]==0)&&($klav[0]==0))
//如果$at的数目大小等于2与$av[0]等于$av[1])与($kfav[0]等于0)($klav[0]等于0)
delete$ACName;//删除$ACName
if((size($at)>2)&&($avMax-$av_minToMax[0]==0))
//如果$at的数目大小大于2与$avMax-$av_minToMax[0]等于0
delete$ACName;//删除$ACName
}
$ACNameh=`keyframe-q-n$object`;
//定义$ACNameh=询问k帧的物体名字
for($ACName in$ACNameh)//$ACName是否在$ACNameh中
{
float$at[]=`keyframe-q-tc$ACName`;
//定义$at[]=询问$ACName的k帧时间的变化
float$av[]=`keyframe-q-vc$ACName`;
//定义$av[]=询问$ACName的k帧值的变化
float$kt0;//定义$kt0
float$kt;//定义$kt
float$kt1;//定义$kt1
float$kv0[];//定义kv0[]
float$kv[];//定义$kv[]
float$kv1[];//定义$kv1[]
float$qdjh[];//定义$qdjh[]
int$fi=0;//定义$fi=0
for($kt in$at)//$kt是否$at中
{
if(($kt==$at[0])||($kt==$at[size($at)-1]))
//如果$kt==$at[0]或$kt==$at[size($at)-1]
{
continue;//继续
}
$kt0=`findkeyframe-t$kt-which previous$ACName`;
//定义$kt0=找出$kt的k帧时间,先前的$ACName在哪
$kt1=`findkeyframe-t$kt-which next$ACName`;
//定义$kt1=找出$kt的k帧时间,下一个的$ACName在哪$kv0=`keyframe-t$kt0-q-vc$ACName`;
//定义$kv0=$kt0的k帧时间,询问$ACName值的变化
$kv=`keyframe-t$kt-q-vc$ACName`;
//定义$kv=$kt的k帧时间,询问$ACName值的变化
$kv1=`keyframe-t$kt1-q-vc$ACName`;
//定义$kv1=$kt1的k帧时间,询问$ACName值的变化
float$hlcv=$kv1[0]-$kv[0];//定义$hlcv=$kv1[0]-$kv[0]
float$hlct=abs($kt1-$kt);//定义$hlct=abs($kt1-$kt)
float$hlcl=$hlcv/$hlct;//定义$hlcl=$hlcv/$hlct
float$qlcv=$kv[0]-$kv0[0];//定义$qlcv=$kv[0]-$kv0[0]
float$qlct=abs($kt-$kt0);//定义$qlct=abs($kt-$kt0)
float$qlcl=$qlcv/$qlct;//定义$qlcl=$qlcv/$qlct
if((($hlcl<=0)&&($qlcl>0))||(($hlcl<0)&&($qlcl>=0))||(($hlcl>=0)&&($qlcl<0))||(($hlcl>0)&&($qlcl<=0)))
//如果$hlcl小于等于0与$qlcl大于0或$hlcl小于0与$qlcl大于等于0或$hlcl大于等于0与$qlcl小于0或$hlcl大于0与$qlcl小于等于0
continue;//继续
$qdjh[$fi]=`abs($hlcl-$qlcl)`;//定义$qdjh[$fi]=abs($hlcl-$qlcl)
$fi=$fi+1;//定义$fi=$fi+1
}
float$qdjh_minToMax[]=sort($qdjh);//定义$qdjh_minToMax[]=$qdjh从小到大排序的集合
float$usp=`intField-q-v DC12`;//定义$usp=用户面板输入优化率
int$spt=trunc((size($qdjh_minToMax))*$usp/100)-1;
//定义$spt=按用户输入优化率提取的拐点样值的个数
float$sp;//定义$sp
if($spt>=0)//如果$spt大于等于0
{
$sp=$qdjh_minToMax[$spt];//定义$sp=$qdjh_minToMax[$spt]
}
else
$sp=$qdjh_minToMax[0];//定义$sp=$qdjh_minToMax[0]
for($kt in$at)//$kt是否在$at中
{
if(($kt==$at[0])||($kt==$at[size($at)-1]))
//如果$kt==$at[0]或$kt==$at[size($at)-1]
continue;//继续
$kt0=`findkeyframe-t$kt-which previous$ACName`;
//定义$kt0=找出$kt时间,先前的$ACName在哪
$kt1=`findkeyframe-t$kt-which next$ACName`;
//定义kt1=找出$kt时间,下一个的$ACName在哪
int$kt_first=`findkeyframe-which first$ACName`;
//定义$kt_first==找出$ACName的第一帧在哪
int$kt_last=`findkeyframe-which last$ACName`;
//定义$kt_last==找出$ACName的最后一帧在哪
$kv0=`keyframe-t$kt0-q-vc$ACName`;
//定义$kv0=$kt0的k帧时间,询问$ACName的值变化
$kv=`keyframe-t$kt-q-vc$ACName`;
//定义$kv=$kt的k帧时间,询问$ACName的值变化
$kv1=`keyframe-t$kt1-q-vc$ACName`;
//定义$kv1=$kt1的k帧时间,询问$ACName的值变化
float$hlcv=$kv1[0]-$kv[0];//定义$hlcv=$kv1[0]-$kv[0]
float$hlct=abs($kt1-$kt);//定义$hlct=abs($kt1-$kt)
float$hlcl=$hlcv/$hlct;//定义$hlcl=$hlcv/$hlct
float$qlcv=$kv[0]-$kv0[0];//定义$qlcv=$kv[0]-$kv0[0]
float$qlct=abs($kt-$kt0);//定义$qlct=abs($kt-$kt0)
float$qlcl=$qlcv/$qlct;//定义$qlcl=$qlcv/$qlct
if((($hlcl<=0)&&($qlcl>0))||(($hlcl<0)&&($qlcl>=0))||(($hlcl>=0)&&($qlcl<0))||(($hlcl>0)&&($qlcl<=0)))
//如果$hlcl小于等于0与$qlcl大于0或$hlcl小于0与$qlcl大于等于0或$hlcl大于等于0与$qlcl小于0或$hlcl大于0与$qlcl小于等于0
keyTangent-e-a-t$kt-inAngle0-outAngle0$ACName;
//编辑$kt帧切线的绝对时间,$ACName的输入角度为0输出角度为0(人为设定的输入角度为0输出角度为0)
if((($hlcl<=0)&&($qlcl>0))||(($hlcl<0)&&($qlcl>=0))||(($hlcl>=0)&&($qlcl<0))||(($hlcl>0)&&($qlcl<=0)))
//如果$hlcl小于等于0与$qlcl大于0或$hlcl小于0与$qlcl大于等于0或$hlcl大于等于0与$qlcl小于0或$hlcl大于0与$qlcl小于等于0
continue;//继续
if((abs($hlcl-$qlcl))<=$sp)//如果abs($hlcl-$qlcl)小于等于$sp
{
cutkey-t$kt-clear$ACName;
//$kt切帧的时间,清除$ACName
}
else
keyTangent-t$kt-itt spline-ott spline$ACName;//$kt帧切线的时间,$ACName内帧切线的形式为spline外切线的形式为spline
}}}
以上步骤在Maya中执行,以免影响优化的结果。
实施例3
动画曲线优化装置,如图2所示,包括预备装置101、曲率计算装置201以及非关键帧排除装置301,其中,
预备装置101用于找寻动画文件中的所有物体并形成物体集合,确定物体集合中所有物体在所述动画文件的时间轴上的所有时间点,即K帧所在时间点。
曲率计算装置201用于计算物体在动画帧处的曲率,具体而言,依次计算每个物体在所有动画帧上的曲率,所述曲率是指在以时间变化为x轴,物体的空间取值变化,物体取值变化,通常为曲率变化,为y轴的x-y坐标系中,动画帧所在时间点的物体取值的变化程度,通常而言,所述的动画帧是指K帧,即将关键帧作为衡量物体的取值变化的节点,所述时间点是指所述动画帧在x轴上的位置,所述物体取值包括物体在空间坐标系内的位置、形状,具体包括物体在空间坐标系中的位移、旋转以及缩放,也可以包括物体的其他在计算机3D绘图中的可控制变量。文件内的物体在每一个动画帧处产生空间上的变化,即发生物体取值变化,因此,每一个物体在各个动画帧处所发生的空间上的变化在时间轴上就形成了一条物体的变化曲线,由于本发明所使用的物体的变化曲线是基于物体的取值在时间轴上的变化,而非物体在实际的三维空间内的空间变化,因此所形成的K帧剔除类似于一种虚拟的动画帧剔除方法,即仅仅剔除物体在特定的动画帧上的取值。
非关键帧排除装置301,用于根据所述曲率的大小,剔除那些曲率较小的动画帧以达到优化动画曲线的目的,所述曲率较小的动画帧是指对物体在x-y坐标系中的运动曲线曲率改变影响较小的动画帧,所述剔除那些曲率较小的动画帧是指剔除所述曲率较小的动画帧所在时间点的物体取值,所述运动曲线即上文所指的每一个物体在各个动画帧处所发生的空间上的变化在时间轴上形成的一条物体的变化曲线。
动画曲线优化装置还包括阈值计算装置401,用于实时地根据动画曲线的曲率计算优化阈值,其中,阈值计算装置401首先将所述曲率计算步骤200中计算得到的单个物体在所有动画帧上的曲率进行排序,计算所有动画帧上的曲率的百分比相对排名,取百分比相对排名等于或者最接近于预设值的动画帧的曲率作为阈值,所述阈值用于判断所述曲率较小的动画帧,并于所述非关键帧排除步骤300中保留曲率大于阈值的动画帧,作为一种优选,本实施例中的动画帧均指关键动画帧,或称为K帧,所述百分比相对排名是指以百分数表示的特定动画帧的曲率在所述单个物体在所有动画帧上的曲率的排名顺序,所述预设值为预先设定的百分比数值,优选地,该预设值在20%-40%之间,可以有效地提高剔除效率,且可以防止对关键的K帧的剔除。
动画曲线优化装置还包括迭代优化装置501,用于对经过所述非关键帧排除步骤300排除非关键帧后的物体再次应用所述曲率计算步骤200和非关键帧排除步骤300以进一步排除非关键帧。
总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

Claims (9)

1.一种动画曲线优化方法,其特征在于,包括以下的具体步骤:
准备步骤(100):找寻动画文件中的所有物体并形成物体集合,确定物体集合中所有物体在所述动画文件的时间轴上的所有时间点;
曲率计算步骤(200):依次计算每个物体在所有动画帧上的曲率,所述曲率是指在以时间变化为x轴,物体取值变化为y轴的x-y坐标系中,动画帧所在时间点的物体取值的变化程度,所述时间点是指所述动画帧在x轴上的位置,所述物体取值包括物体在空间坐标系内的位置、形状;
非关键帧排除步骤(300):根据所述曲率的大小,剔除那些曲率较小的动画帧以达到优化动画曲线的目的,所述曲率较小的动画帧是指对物体在x-y坐标系中的运动曲线曲率改变影响较小的动画帧,所述剔除那些曲率较小的动画帧包括剔除所述曲率较小的动画帧所在时间点的物体取值和/或动画帧所在时间点。
2.根据权利要求1所述的动画曲线优化方法,其特征在于,所述曲率计算步骤(200)中,所述曲率较小的动画帧是通过计算该动画帧分别上游帧以及下游帧之间的变化率之差得到的,所述上游帧是指在x轴上的位置先于该动画帧的位置的动画帧,所述下游帧是指在x轴上的位置后于该动画帧的位置的动画帧。
3.根据权利要求2所述的动画曲线优化方法,其特征在于,所述上游帧以及下游帧分别为与所述曲率较小的动画帧相邻的动画帧。
4.根据权利要求2所述的动画曲线优化方法,其特征在于,所述变化率为绝对变化率。
5.根据权利要求2所述的动画曲线优化方法,其特征在于,所述变化率之差包括上游变化率与下游变化率之差,所述上游变化率是指所述曲率较小的动画帧与上游帧之间的物体取值之差与间隔时长的比值,所述下游变化率是指所述曲率较小的动画帧与下游帧之间的物体取值之差与间隔时长的比值。
6.根据权利要求1所述的动画曲线优化方法,其特征在于,还包括阈值计算步骤(400):首先将所述曲率计算步骤(200)中计算得到的单个物体在所有动画帧上的曲率进行排序,计算所有动画帧上的曲率的百分比相对排名,取百分比相对的排名等于或者最接近于预设值的动画帧的曲率作为阈值,所述阈值用于判断所述曲率较小的动画帧,并于所述非关键帧排除步骤(300)中保留曲率大于阈值的动画帧,所述百分比相对排名是指以百分数表示的特定动画帧的曲率在所述单个物体在所有动画帧上的曲率的排名顺序,所述预设值为预先设定的百分比数值。
7.根据权利要求1-6任一所述的动画曲线优化方法,其特征在于,所述物体取值包括该物体在三维空间内的包括位移、旋转或者缩放的变化。
8.根据权利要求1-6任一所述的动画曲线优化方法,其特征在于,所述物体取值包括该物体分别在三维空间的x、y、z轴上的变化。
9.根据权利要求1所述的动画曲线优化方法,其特征在于,还包括迭代优化步骤(500):对经过所述非关键帧排除步骤(300)排除非关键帧后的物体再次应用所述曲率计算步骤(200)和非关键帧排除步骤(300)以进一步排除非关键帧。
CN201410124595.1A 2014-03-28 2014-03-28 动画曲线优化方法 Active CN103927776B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410124595.1A CN103927776B (zh) 2014-03-28 2014-03-28 动画曲线优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410124595.1A CN103927776B (zh) 2014-03-28 2014-03-28 动画曲线优化方法

Publications (2)

Publication Number Publication Date
CN103927776A true CN103927776A (zh) 2014-07-16
CN103927776B CN103927776B (zh) 2017-12-15

Family

ID=51145987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410124595.1A Active CN103927776B (zh) 2014-03-28 2014-03-28 动画曲线优化方法

Country Status (1)

Country Link
CN (1) CN103927776B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105513099A (zh) * 2015-11-27 2016-04-20 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN108320322A (zh) * 2018-02-11 2018-07-24 腾讯科技(成都)有限公司 动画数据处理方法、装置、计算机设备和存储介质
CN110730000A (zh) * 2018-07-17 2020-01-24 珠海格力电器股份有限公司 一种从采样数据中提取关键数据的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999923A (zh) * 2012-12-24 2013-03-27 大连大学 基于自适应阈值的运动捕捉数据的关键帧提取方法
CN103218824A (zh) * 2012-12-24 2013-07-24 大连大学 基于距离曲线幅度的运动关键帧提取
US20130315457A1 (en) * 2012-05-23 2013-11-28 International Business Machines Corporation Vessel Identification Using Shape and Motion Mapping for Coronary Angiogram Sequences
CN103679747A (zh) * 2013-11-15 2014-03-26 南昌大学 一种运动捕捉数据关键帧提取方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130315457A1 (en) * 2012-05-23 2013-11-28 International Business Machines Corporation Vessel Identification Using Shape and Motion Mapping for Coronary Angiogram Sequences
CN102999923A (zh) * 2012-12-24 2013-03-27 大连大学 基于自适应阈值的运动捕捉数据的关键帧提取方法
CN103218824A (zh) * 2012-12-24 2013-07-24 大连大学 基于距离曲线幅度的运动关键帧提取
CN103679747A (zh) * 2013-11-15 2014-03-26 南昌大学 一种运动捕捉数据关键帧提取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吴渝等: "基于多特征相似度曲线曲率检测的关键帧提取", 《计算机应用》 *
杨涛等: "基于分层曲线简化的运动捕获数据关键帧提取", 《计算机辅助设计与图形学学报》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105513099A (zh) * 2015-11-27 2016-04-20 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN105513099B (zh) * 2015-11-27 2019-01-22 北京像素软件科技股份有限公司 一种骨骼动画数据的压缩方法及装置
CN108320322A (zh) * 2018-02-11 2018-07-24 腾讯科技(成都)有限公司 动画数据处理方法、装置、计算机设备和存储介质
CN108320322B (zh) * 2018-02-11 2021-06-08 腾讯科技(成都)有限公司 动画数据处理方法、装置、计算机设备和存储介质
CN110730000A (zh) * 2018-07-17 2020-01-24 珠海格力电器股份有限公司 一种从采样数据中提取关键数据的方法及装置

Also Published As

Publication number Publication date
CN103927776B (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN109344497B (zh) 一种模具基础本体的设计实现方法
CN104035438A (zh) 一种基于种群多样性的自适应多目标机器人避障算法
CN107506865A (zh) 一种基于lssvm优化的负荷预测方法及系统
CN103927776A (zh) 动画曲线优化方法
KR20140009013A (ko) 3d 얼굴의 모델링 방법 및 장치, 얼굴 추적 방법 및 장치
CN113312778A (zh) 一种自适应于模型几何特征的非结构网格生成方法
CN104915009B (zh) 手势预判的方法及系统
CN110110402A (zh) 基于二叉决策图的资源分配系统可达状态的快速求解方法
CN115509178A (zh) 数字孪生驱动的刀具磨损监测方法及数控机床设备
US20060139356A1 (en) Adaptive caching of animation controls
CN109492816B (zh) 一种基于混合智能的煤与瓦斯突出动态预测方法
US20130271460A1 (en) Apparatus and method for generating 3d tree images
CN111460552B (zh) 一种卫生间样板间自动设计方法
CN108492372B (zh) 一种b样条曲面的形状编辑方法
CN116050579A (zh) 基于深度特征融合网络的建筑能耗预测方法及系统
CN110656385B (zh) 一种基于神经网络的静电纺丝纤维平均直径预测方法
CN105511643B (zh) 一种基于三轴加速度传感器的手势识别方法
Li et al. Neural-fuzzy control of truck backer-upper system using a clustering method
CN110148207B (zh) 基于古代长沙窑陶瓷风格的可生产器型的智能生成算法
CN111709886B (zh) 一种基于u型空洞残差网络的图像去高光方法
Read et al. A UNITY sketch based modelling environment for virtual assembly and machining to evaluate DFMA metrics
CN109684424B (zh) 基于离散特征线的地貌数据快速生成与优化方法
CN110599568B (zh) 一种线条的生成方法、装置、设备和存储介质
Khan et al. Genetic Shape Fitting for Hand Gesture Modeling and Feature Extraction using Variable Length Chromosome
CN110647988A (zh) 一种ssd目标检测卷积神经网络的加速计算方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant