CN111722896B - 动画播放方法、装置、终端以及计算机可读存储介质 - Google Patents
动画播放方法、装置、终端以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111722896B CN111722896B CN201910219097.8A CN201910219097A CN111722896B CN 111722896 B CN111722896 B CN 111722896B CN 201910219097 A CN201910219097 A CN 201910219097A CN 111722896 B CN111722896 B CN 111722896B
- Authority
- CN
- China
- Prior art keywords
- time
- target
- displacement
- animation
- function
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种动画播放方法、装置、终端以及计算机可读存储介质,属于动画技术领域。所述方法通过获取动力学模型的目标时间,并基于获取的目标时间、动画的播放时间以及动力学模型的位移函数,来获取动画播放使得动画的元素的目标属性值,并随着动画的持续播放,基于实时的动画的元素的目标属性值,来播放动画,从而使得动画效果与动力学模型的位移变化相同,从而提高了动画的拟物效果,提高了动画的真实性。
Description
技术领域
本申请涉及动画技术领域,特别涉及一种动画播放方法、装置、终端以及计算机可读存储介质。
背景技术
用户界面(user interface,UI)元素的属性值随时间的变化可以形成动画,形成的动画可以显示在图形用户界面(graphical user interface,GUI)系统中。可以使用自然界中真实存在的物理运动规律,来表示UI元素的属性值的变化情况,从而使得GUI系统可以按照物理运动规律来显示动画。
自然界中的物理运动规律可以用动力学模型来表示,当直接设置动力学模型的目标时间,并在该目标时间内,使用动力学模型来形式动画时,由于设置的目标时间与实际的目标时间可能不相同,从而导致动画的播放时间与动力学模型真实的目标时间无法匹配,当设置的目标时间小于真实的目标时间时,使得UI元素的属性只能在部分时间内按照动力学模型的曲线执行后直接跳跃至动画的最终位置,当设置的目标时间大于真实的目标时间时,使得UI元素的属性执行时间过长。所以,目前在制作动画过程中,为了使得UI元素的属性在动画播放时间内符合某种物理运动规律时,可以使用人工合成的几何曲线代替物理运动规律所展现的曲线,例如,使用三阶贝塞尔曲线。
但是,三阶贝塞尔曲线和物理运动规律所展现的曲线并不能完全对等,导致在动画播放过程中,UI元素的属性的变化情况和物理运动规律并不完全相同,从而使得动画效果不符合物理运动规律,进而导致动画效果不佳。
发明内容
本申请实施例提供了一种动画播放方法、装置、终端以及计算机可读存储介质,能够解决动画播放过程中,动画效果不佳的问题。该技术方案如下:
第一方面,提供了一种动画播放方法,该方法包括:
当播放动画时,获取该动画的动力学模型的目标时间,该目标时间为该动力学模型从不稳定状态变化为稳定状态的时间;
根据动画当前的播放时间点、该目标时间以及该位移函数,获取该动画的元素的目标属性值;
基于该动画的元素的目标属性值,播放该动画。
在一种可能实现方式中,该方法还包括:
获取该动画的动力学模型;
基于该动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定该动力学模型的目标时间,该函数可逆属性用于表示函数是否存在反函数。
基于上述可能实现方式,确定动力学模型的目标时间为动力学模型精确的目标时间,从而可以避免人工的目标时间不精确。
在一种可能实现方式中,基于该动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定该动力学模型的目标时间,包括:
当该动力学模型中的位移函数和速度函数均存在反函数,且该位移函数和速度函数均为非周期函数时,获取该位移函数的反函数以及该速度函数的反函数;
基于位移阈值以及该位移函数的反函数,得到第二时间;
基于速度阈值以及该速度函数的反函数,得到第三时间;
将该第二时间和该第三时间中最大的时间作为该动力学模型的目标时间。
基于上述可能实现方式,当动力学模型中的位移函数和速度函数均存在反函数,且该位移函数和速度函数均为非周期函数时,可以获取到动力学模型的目标时间,从而可以避免人工的目标时间不精确。
在一种可能实现方式中,基于该动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定该动力学模型的目标时间,包括:
当该动力学模型中的位移函数和速度函数均不存在反函数,且该位移函数和速度函数均是非周期函数时,获取至少一个时间区间,每个时间区间内的速度均大于零或者均小于零;
在该至少一个时间区间内,获取该动力学模型的目标时间,其中,该目标时间对应的位移小于位移阈值,且该目标时间对应的速度小于速度阈值。
基于上述可能实现方式,当该动力学模型中的位移函数和速度函数均不存在反函数,且该位移函数和速度函数均是非周期函数时,可以获取到动力学模型的目标时间,从而可以避免人工的目标时间不精确。
在一种可能实现方式中,在该至少一个时间区间内,获取该动力学模型的目标时间,其中,该目标时间对应的位移小于位移阈值,且该目标时间对应的速度小于速度阈值,包括:
在该至少一个时间区间内,获取至少一个第四时间,每个第四时间对应的位移小于位移阈值,每个第四时间对应的速度小于速度阈值;
将该至少一个第四时间中的最小时间作为该动力学模型的目标时间。
基于上述可能实现方式,通过在每个时间区间内筛选出多个备选目标时间,再从备选的第四时间中筛选出符合条件的目标时间,从而提供了一种获取目标时间的方法。
在一种可能实现方式中,在该至少一个时间区间内,获取至少一个第四时间,包括:
对于任一时间区间,获取该时间区间内该位移函数的第一个拐点;
基于与该拐点处的位移,确定迭代算法的初始时间,该迭代算法的公式为:ti=ti-1-x(ti-1)/Dx(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,x(ti-1)为该动力学模型中ti-1时的位移,x(ti-1)为该动力学模型中ti-1时的速度;
当与该初始时间对应的位移小于位移阈值,且与该初始时间对应的速度小于速度阈值时,将该初始时间作为该时间区间内的第四时间;
当与该初始时间对应的位移不小于位移阈值,或与该初始时间对应的速度不小于速度阈值时,在该时间区间内,基于该迭代算法的公式以及该迭代算法的初始时间继续进行迭代,得到该时间区间内的第四时间。
基于上述可能实现方式,通过迭代算法可以获取到任一时间区间内的第四时间,从而为筛选目标时间提供备用的目标时间。
在一种可能实现方式中,基于与该拐点处的位移,确定迭代算法的初始时间,包括:
当该拐点处的位移大于或等于零时,将该拐点处的时间作为迭代算法的初始时间;
当该拐点处的位移小于零时,将该时间区间的初始时间作为迭代算法的初始时间。
在一种可能实现方式中,述基于该动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定该动力学模型的目标时间,包括:
当该动力学模型中的位移函数和速度函数均是周期函数时,获取目标周期,该目标周期内存在第五时间,其中,该第五时间对应的位移等于零,且该第五时间对应的速度小于速度阈值;
在该目标周期内,基于迭代算法的公式进行迭代,得到该动力学模型的目标时间,该迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
基于上述可能实现方式,当该动力学模型中的位移函数和速度函数均是周期函数时,可以获取到动力学模型的目标时间,从而可以避免人工的目标时间不精确。
在一种可能实现方式中,在该目标周期内,基于迭代算法的公式进行迭代,得到该动力学模型的目标时间,该迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度,包括:
根据该目标周期内的零点和极值点的位置,确定目标时间区间;
在该目标时间区间内,基于迭代算法的公式进行迭代,得到该动力学模型的目标时间,该迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
基于上述可能实现方式,基于迭代算法可以在目标周期内获取到动力学模型的目标时间。
在一种可能实现方式中,根据该目标周期内的零点和极值点的位置,确定目标时间区间,包括:
如果该动力学模型的初始时间不大于该目标周期内的目标零点处的时间,且该目标零点处的时间小于该目标周期内的目标极值点处的时间,将该目标极值点处的时间作为目标时间区间的终止时间,将该目标极值点左侧的第一个极值点处的时间作为该目标时间区间的初始时间;
其中,该目标零点为该目标周期前半周期内的第一个零点,或该目标周期后半周期内的第一个零点,该目标极值点为该目标周期前半周期内的第一个极值点,或该目标周期后半周期内的第一个极值点;
如果该动力学模型的初始时间不大于该目标极值点处的时间,且该目标极值点处的时间小于该目标零点处的时间,将该目标极值点处的时间作为该目标时间区间的初始时间,将该目标极值点右侧的第一个极值点处的时间作为该目标时间区间的终止时间。
基于上述可能实现方式,提供一种确定目标时间区间的方法,以便在该目标时间内使用迭代算法得到该动力学模型的目标时间。
在一种可能实现方式中,根据动画当前的播放时间点、该目标时间以及该位移函数,获取该动画的元素的目标属性值,包括:
当动画启动时,对动画当前的播放时间点进行归一化处理,得到第一时间,该第一时间小于或等于该目标时间;
将该第一时间输入至该动力学模型,得到目标位移;
基于该目标位移,获取该动画的元素的当前的目标属性值。
在一种可能实现方式中,对动画当前的播放时间点进行归一化处理,得到第一时间,包括:
将该动画当前帧对应的时间以及该目标时间输入至时间归一化公式中,得到第一时间,该归一化公式为t=estimatedDuration(ta-ta0)/duration+t0,其中,t为该第一时间,estimatedDuration为该目标时间,ta为该动画当前帧对应的时间,ta0为该动画当前帧的初始时间,duration为该动画的持续时间,t0为该动力学模型的初始时间。
基于上述可能实现方式,随着动画的持续播放,无论动画的持续时间时多少,都可以将动画的持续时间均归一化至该目标时间内,从而使得UI元素的属性在动画持续时间内的变化情况和动力学模型在目标时间内的变化相同,进而可以满足指定动画持续时间的要求。
在一种可能实现方式中,基于该目标位移,获取该动画的元素的当前的目标属性值,包括:
将该目标位移输入至位移归一化公式中,得到第一目标值,该第一目标值用于控制动画的元素的目标属性值;
基于该第一目标值,更新该动画的元素的目标属性值,得到更新后的目标属性值,该更新后的目标属性值为该动画的元素的当前的目标属性值。
基于上述可能实现方式,该终端可以对该动力学模型在目标时间内的各个目标位移进行归一化处理,从而使得各个目标位移归一化至适合动画使用的形式,该终端可以根据位移归一化后的结果更新该目标属性值,从而得到更新后的目标属性值,那么随着目标属性值在该动画持续时间内的不断更新,可以得到形成动画。
第二方面,提供了一种动画播放装置,用于执行上述动画播放方法。具体地,该动画播放装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的动画播放方法的功能模块。
第三方面,提供一种终端,该终端包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述动画播放方法所执行的操作。
第四方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述动画播放方法所执行的操作。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种终端的结构示意图;
图3是本申请实施例提供的一种终端的软件结构框图;
图4是本申请实施例提供的一种动画播放方法的流程图;
图5是本申请实施例提供的一种实现翻页动画的示意图;
图6是本申请实施例提供的一种目标时间确定方法的流程图;
图7是本申请实施例提供的一种目标时间确定方法的流程图;
图8是本申请实施例提供的一种目标时间计算方法的流程图;
图9是本申请实施例提供的一种目标时间确定方法的流程图;
图10是本申请实施例提供的一种目标时间获取方法的流程图;
图11是本申请实施例提供的一种位移曲线示意图;
图12是本申请实施例提供的一种位移曲线示意图;
图13是本申请实施例提供的一种动画播放装置的结构装置图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种实施环境的示意图,参见图1,该实施环境中包括终端100,该终端100可以是具有显示屏的任意终端,该终端100可以但不限于是膝上型计算机、台式计算机、移动电话、智能手机、平板电脑、多媒体播放器、电子阅读器、智能车载设备、智能家电、人工智能设备、穿戴式设备、物联网设备、或虚拟现实/增强现实/混合现实设备等。
该终端100具有GUI系统,该GUI系统提供了UI元素的变换。其中,UI元素包括视图、按钮、文本、菜单、列表等,UI元素的属性包括位置、大小、颜色透明度、旋转角度等,典型UI元素的变换包括显示、隐藏、移动、旋转、透明度变化、颜色变化等。
该终端100可以将动力学模型的输出曲线作为UI元素的属性曲线,该属性曲线为UI元素的属性值随时间变化所形成的曲线,以使得动画的播放效果与动力学模型所体现的物理运动过程相对应,从而增加了UI元素的拟物效果,提升了动画的真实性。
该终端100包括显示模块101、输入模块102、网络接口模块103、存储模块104以及处理模块105。
其中,显示模块101用于显示动画,负责UI元素的变换,该显示模块101可以是触摸屏。
输入模块102、显示模块101和其他输出设备用来提供用户界面。输入模块102可以将用户的请求信息翻译成信号,并向终端提供翻译后的信号。输入模块103可以包括触摸屏、键盘、触控板、鼠标或其他指示设备。
网络接口模块103用于进行语音或数据通信。网络接口模块103可以提供有线或无线的接口,包括射频(radio frequence,RF)接收元件、全球定位系统(global positioningsystem,GPS)接收元件或其他元件,还可以是软件和硬件的结合,例如天线、调制/解调器、编/解码器、模拟/数字处理电路等。
存储模块104用于存储UI数据,该UI数据包括UI布局文件、动画文件、字体文件、字符串文件等资源的数据,该存储模块104还用来存储可以被处理模块105执行的软件程序。该存储模块104可以在终端或者云服务器上实现。
处理模块105用于根据用户操作类型、存储模块104或网络接口模块103的UI信息,进行动画的播放。其中,用户操作的类型包括点击,左右滑动、上下滑动、左右翻页、上下翻页等,播放动画的UI元素的属性曲线对应真实的物理模型,物理模型包括质点-弹簧-阻尼模型,质点-粘滞流体模型等。
图2是本申请实施例提供的一种终端的结构示意图,参见图2,终端200可以包括处理器210,外部存储器接口220,内部存储器221,通用串行总线(universal serial bus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及用户标识模块(subscriber identification module,SIM)卡接口295等。其中传感器模块280可以包括压力传感器280A,陀螺仪传感器280B,气压传感器280C,磁传感器280D,加速度传感器280E,距离传感器280F,接近光传感器280G,指纹传感器280H,温度传感器280J,触摸传感器280K,环境光传感器280L,骨传导传感器280M等。
可以理解的是,本发明实施例示意的结构并不构成对终端200的具体限定。在本申请另一些实施例中,终端200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器210可以包含多组I2C总线。处理器210可以通过不同的I2C总线接口分别耦合触摸传感器280K,充电器,闪光灯,摄像头293等。例如:处理器210可以通过I2C接口耦合触摸传感器280K,使处理器210与触摸传感器280K通过I2C总线接口通信,实现终端200的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器210可以包含多组I2S总线。处理器210可以通过I2S总线与音频模块270耦合,实现处理器210与音频模块270之间的通信。在一些实施例中,音频模块270可以通过I2S接口向无线通信模块260传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块270与无线通信模块260可以通过PCM总线接口耦合。在一些实施例中,音频模块270也可以通过PCM接口向无线通信模块260传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器210与无线通信模块260。例如:处理器210通过UART接口与无线通信模块260中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块270可以通过UART接口向无线通信模块260传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器210与显示屏294,摄像头293等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayseria l interface,DSI)等。在一些实施例中,处理器210和摄像头293通过CSI接口通信,实现终端200的拍摄功能。处理器210和显示屏294通过DSI接口通信,实现终端200的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器210与摄像头293,显示屏294,无线通信模块260,音频模块270,传感器模块280等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
USB接口230是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口230可以用于连接充电器为终端200充电,也可以用于终端200与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端200的结构限定。在本申请另一些实施例中,终端200也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块240可以通过USB接口230接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块240可以通过终端200的无线充电线圈接收无线充电输入。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为电子设备供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,内部存储器221,显示屏294,摄像头293,和无线通信模块260等供电。电源管理模块241还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块241也可以设置于处理器210中。在另一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
终端200的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在终端200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器270A,受话器270B等)输出声音信号,或通过显示屏294显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器210,与移动通信模块250或其他功能模块设置在同一个器件中。
无线通信模块260可以提供应用在终端200上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端200的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得终端200可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
终端200通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。显示屏294包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,终端200可以包括1个或N个显示屏294,N为大于1的正整数。
终端200可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。
ISP用于处理摄像头293反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头293中。
摄像头293用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,终端200可以包括1个或N个摄像头293,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端200在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。终端200可以支持一种或多种视频编解码器。这样,终端200可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端200的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端200的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器221可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器210通过运行存储在内部存储器221的指令,和/或存储在设置于处理器中的存储器的指令,执行终端200的各种功能应用以及数据处理。
终端200可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块270用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块270还可以用于对音频信号编码和解码。在一些实施例中,音频模块270可以设置于处理器210中,或将音频模块270的部分功能模块设置于处理器210中。
扬声器270A,也称“喇叭”,用于将音频电信号转换为声音信号。终端200可以通过扬声器270A收听音乐,或收听免提通话。
受话器270B,也称“听筒”,用于将音频电信号转换成声音信号。当终端200接听电话或语音信息时,可以通过将受话器270B靠近人耳接听语音。
麦克风270C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风270C发声,将声音信号输入到麦克风270C。终端200可以设置至少一个麦克风270C。在另一些实施例中,终端200可以设置两个麦克风270C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端200还可以设置三个,四个或更多麦克风270C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口270D用于连接有线耳机。耳机接口270D可以是USB接口230,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器280A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器280A可以设置于显示屏294。压力传感器280A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器280A,电极之间的电容改变。终端200根据电容的变化确定压力的强度。当有触摸操作作用于显示屏294,终端200根据压力传感器280A检测所述触摸操作强度。终端200也可以根据压力传感器280A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器280B可以用于确定终端200的运动姿态。在一些实施例中,可以通过陀螺仪传感器280B确定终端200围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器280B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器280B检测终端200抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消终端200的抖动,实现防抖。陀螺仪传感器280B还可以用于导航,体感游戏场景。
气压传感器280C用于测量气压。在一些实施例中,终端200通过气压传感器280C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器280D包括霍尔传感器。终端200可以利用磁传感器280D检测翻盖皮套的开合。在一些实施例中,当终端200是翻盖机时,终端200可以根据磁传感器280D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器280E可检测终端200在各个方向上(一般为三轴)加速度的大小。当终端200静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器280F,用于测量距离。终端200可以通过红外或激光测量距离。在一些实施例中,拍摄场景,终端200可以利用距离传感器280F测距以实现快速对焦。
接近光传感器280G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。终端200通过发光二极管向外发射红外光。终端200使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定终端200附近有物体。当检测到不充分的反射光时,终端200可以确定终端200附近没有物体。终端200可以利用接近光传感器280G检测用户手持终端200贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器280G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器280L用于感知环境光亮度。终端200可以根据感知的环境光亮度自适应调节显示屏294亮度。环境光传感器280L也可用于拍照时自动调节白平衡。环境光传感器280L还可以与接近光传感器280G配合,检测终端200是否在口袋里,以防误触。
指纹传感器280H用于采集指纹。终端200可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器280J用于检测温度。在一些实施例中,终端200利用温度传感器280J检测的温度,执行温度处理策略。例如,当温度传感器280J上报的温度超过阈值,终端200执行降低位于温度传感器280J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端200对电池242加热,以避免低温导致终端200异常关机。在其他一些实施例中,当温度低于又一阈值时,终端200对电池242的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器280K,也称“触控器件”。触摸传感器280K可以设置于显示屏294,由触摸传感器280K与显示屏294组成触摸屏,也称“触控屏”。触摸传感器280K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏294提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器280K也可以设置于终端200的表面,与显示屏294所处的位置不同。
骨传导传感器280M可以获取振动信号。在一些实施例中,骨传导传感器280M可以获取人体声部振动骨块的振动信号。骨传导传感器280M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器280M也可以设置于耳机中,结合成骨传导耳机。音频模块270可以基于所述骨传导传感器280M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器280M获取的血压跳动信号解析心率信息,实现心率检测功能。
按键290包括开机键,音量键等。按键290可以是机械按键。也可以是触摸式按键。终端200可以接收按键输入,产生与终端200的用户设置以及功能控制有关的键信号输入。
马达291可以产生振动提示。马达291可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏294不同区域的触摸操作,马达291也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口295用于连接SIM卡。SIM卡可以通过插入SIM卡接口295,或从SIM卡接口295拔出,实现和终端200的接触和分离。终端200可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口295可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口295可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口295也可以兼容不同类型的SIM卡。SIM卡接口295也可以兼容外部存储卡。终端200通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端200采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端200中,不能和终端200分离。
终端200的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明终端200的软件结构。
图3是本申请实施例提供的一种终端的软件结构框图,参见图3,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端200的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合动画播放场景,示例性说明终端200软件以及硬件的工作流程。
当任一应用程序需要播放动画时,该应用程序可以根据动画的UI元素的各个属性,调用三维图形处理库或者2D图形引擎进行动画中各个图像帧的绘制,并通过表面管理器来进行图层的融合,从而实现动画的播放。
图1-3对终端的结构进行了描述,进一步地,为了体现终端将动力模型的输出曲线作为UI元素的属性曲线过程,在此用一个具体的实施例来描述,参见图4,图4是本申请实施例提供的一种动画播放方法的流程图,本申请实施例提供的方法流程包括:
401、终端初始化动力学模型。
该动力学模型可以是任一动力学模型,例如,质点-弹簧-阻尼模型、质点-黏滞流体模型、静摩擦力等模型,动力学模型可以用运动方程来表示,运动方程是描述结构中力与位移关系的数学表达式,例如,质点-弹簧-阻尼模型的运动方程为其中,m为质点质量,c为阻尼系数,k为刚性系数,m、c和k为质点-弹簧-阻尼模型的模型参数,x为动力学模型的位移,为位移x对时间t的一阶导数,也即是速度,为位移x对时间t的二阶导数,也即是加速度。
动力学模型中可以包括至少一个模型参数,该终端通过设置动力学模型的模型参数,来初始化动力学模型。动力学模型可以具有不同的状态,例如,欠阻尼状态、临界阻尼状态以及过阻尼状态,动力学模型的状态可以由模型参数来确定,模型参数之间的关系不同,则动力学模型的状态不同,其输出的位移曲线也不同,例如,当c2<4mk时,质点-弹簧-阻尼模型处于欠阻尼状态,当c2=4mk时,质点-弹簧-阻尼模型处于临界阻尼状态,当c2>4mk时,质点-弹簧-阻尼模型处于过阻尼状态,不同状态下的位移x随时间变化所形成的位移曲线不同。
当将不同状态下的位移曲线作为UI元素的某一属性的曲线时,所获得动画播放效果不同,那么,在一种可能的实现方式中,当将动力学模型任一状态下的位移曲线作为动画的任一属性曲线时,该终端设置的模型参数之间的关系与该状态下的动力学模型对应,例如,当期望将质点-弹簧-阻尼模型欠阻尼状态下的位移曲线作为动画的属性曲线时,该终端为该动力学模型设置的模型参数符合c2<4mk。
402、该终端设置该动力学模型的初始条件。
该初始条件包括初始位移和初始速度,其中,初始位移为动画初始位置与动画最终位置的差,动画最终位置也可以称为动画平衡位置,该动画初始位置可以是动画的初始页面上的任意位置,动画最终位置为动画的最终页面上与初始位置对应的位置,例如,动画初始位置为动画初始页面的中心位置,则动画最终位置则是动画的最终页面的中心位置。
该初始速度为基于用户操作所获取的速度,在一种可能的实现方式中,当该终端在显示屏上检测到滑动操作时,该终端将该滑动操作消失前的速度作为初始速度,例如,手指滑动显示屏上显示的页面时,该终端将检测到的手指离开屏幕的速度作为初始速度。
具体地,参见图5,图5是本申请实施例提供的一种实现翻页动画的示意图,当用户在页面2上进行向左滑动的操作时,终端通过检测,将向左滑动的离手速度作为初始速度v0,将页面2左下角的位置作为动画初始位置,将页面1左下角的位置作为动画最终位置,从而,该终端将该动画初始位置与动画最终位置之间的差值作为该动力学模型的初始位移。
需要说明的是,步骤401-402所示的过程为终端获取该动画的动力学模型的过程。
403、基于该动力学模型中的位移函数和速度函数的周期性和函数可逆属性,该终端确定该动力学模型的目标时间,该函数可逆属性用于表示函数是否存在反函数,该目标时间为该动力学模型从不稳定状态变化为稳定状态的时间。
动力学模型中位移函数和速度函数的周期性以及函数可逆属性不同,该终端确定目标时间的方法不同,在一种可能的实现方式中,参见图6,图6是本申请实施例提供的一种目标时间确定方法的流程图,该方法流程具体包括下述步骤601-604。
步骤601、当该动力学模型中的位移函数和速度函数均存在反函数,且该位移函数和速度函数均为非周期函数时,获取该位移函数的反函数以及该速度函数的反函数。
函数存在反函数的充要条件是函数的定义域与值域是一一映射,也即是,函数的定义域内的任一数值仅与函数的值域中一个数值对应,且该值域内的任一数值仅与该定义域中一个数值对应。
位移函数的反函数的自变量为时间,因变量为位移,例如,位移函数x(t)=3t+1,则该位移函数的反函数为t(x)=(x-1)/3。本申请实施例对该终端获取该位移函数的反函数以及该速度函数的反函数的方式不做具体限定。
步骤602、该终端基于位移阈值以及该位移函数的反函数,得到第二时间。
该位移阈值为该动力学模型处于稳定状态时的任一位移,该速度阈值为该动力学模型处于稳定状态时的任一速度。该终端将位移阈值代入该位移函的反函数中,得到第二时间,该第二时间,也即是在该动力学模型中的位移为位移阈值时的时间。本申请实施例对该位移阈值不做具体限定。
步骤603、该终端基于速度阈值以及该速度函数的反函数,得到第三时间。
该终端将速度阈值代入该速度函数的反函数中,得到第三时间,该第三时间,也即是在该动力学模型中的速度为速度阈值时的时间。本申请实施例对该速度阈值不做具体限定。
步骤604、该终端将该第二时间和该第三时间中最大的时间作为该动力学模型的目标时间。
该终端将该第二时间与该第三时间进行对比,确定该第二时间与该第三时间中最大的时间,从而该终端将该最大时间作为目标时间。
图6中的动力学模型的位移函数和速度函数均存在返函数,且该位移函数和速度函数均为非周期函数,但是有的动力学模型的位移函数和速度函数不存在反函数,且该位移函数和速度函数均是非周期函数,对于这种情况,参见图7,图7是本申请实施例提供的一种目标时间确定方法的流程图,该方法流程具体包括下述步骤701-702。
步骤701、当动力学模型中的位移函数和速度函数均不存在反函数,且该位移函数和速度函数均是非周期函数时,该终端获取至少一个时间区间,每个时间区间内的速度均大于零或者均小于零。
该终端可以将动力学模型随时间变化的位移曲线划分为多个单调区间,则每个单调区间内的速度均大于零或者均小于零,在一种可能的实现方式中,该终端在时间区间[0,∞]内,获取位动力学模型的位移曲线上至少一个连续的极值点,则两个连续的极值点所在的时间形成一个时间区间。例如,位移函数在时间区间[0,∞]内的极值点包括(t1,x1)、(t2,x2),(t3,x3),其中,t1<t2<t3,则[t1,t2]为一个时间区间,[t2,t3]为另一个时间区间。本申请实施例对该预设时间不做限定。
步骤702、在该至少一个时间区间内,该终端获取该动力学模型的目标时间,其中,该目标时间对应的位移小于位移阈值,且该目标时间对应的速度小于速度阈值。
在该至少一个区间内可以存在多个目标时间,该终端可以在至少一个时间区间内筛选出符合上述条件的至少一个备用时间,然后,再从至少一个备用时间中筛选出一个目标时间。在一种可能的实现方式中,本步骤702可以通过下述步骤7021-7022所示的过程来实现。
步骤7021、在该至少一个时间区间内,该终端获取至少一个第四时间,其中,每个第四时间对应的位移小于位移阈值,每个第四时间对应的速度小于位移阈值。
该第四时间为一个时间区间内的目标时间,在每个时间区间内,该终端可以通过迭代算法来获取每个时间区间内的第四时间,参见图8,图8是本申请实施例提供的一种目标时间计算方法的流程图,该方法流程具体包括步骤801-805。
步骤801、对于任一时间区间,该终端获取该时间区间内该位移函数的第一个拐点。
在该时间区间内,该终端对与该时间区间对应的位移曲线上的位移进行二次求导,将二次导数为零的至少一个点作为该时间区间内的至少一个拐点,每个拐点可以表示为(tin,xin),其中,tin为拐点处的时间,xin为拐点处的位移,该终端将该至少一个拐点中时间最小的拐点作为该时间区间内位移曲线上的第一个拐点。
步骤802、基于与该拐点处的位移,该终端确定迭代算法的初始时间,该迭代算法的公式为:ti=ti-1-x(ti-1)/Dx(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,x(ti-1)为该动力学模型中ti-1时的位移,Dx(ti-1)为该动力学模型中ti-1时的速度。
该终端可以根据该拐点处的位移的大小,来确定该迭代算法的初始时间,在一种可能的实现方式中,本步骤802可以通过下述步骤8021-8023所示的过程来实现。
步骤8021、该终端将该拐点处的位移与0进行对比。
步骤8022、当该拐点处的位移大于或等于零时,该终端将该拐点处的时间作为迭代算法的初始时间。
步骤8023、当该拐点处的位移小于零时,该终端将该时间区间的初始时间作为迭代算法的初始时间。
步骤803、该终端将初始时间代入该动力学模型的动力学方程中,得到与该初始时间对应的位移和速度。
步骤804、当与该初始时间对应的位移小于位移阈值,且与该初始时间对应的速度小于速度阈值时,该终端将该初始时间作为该时间区间内的第四时间。
步骤805、当与该初始时间对应的位移不小于位移阈值,或与该初始时间对应的速度不小于速度阈值时,在该时间区间内,该终端基于该迭代算法的公式以及该迭代算法的初始时间进行迭代,得到该时间区间内的第四时间。
该终端以该迭代算法的初始时间作为该迭代算法的第一代迭代时间,在该时间区间内基于迭代算法公式进行迭代,直至迭代的时间满足上述条件或者超过该时间区间内的最大时间时,迭代终止。在一种可能实现方式中,本步骤805可以通过下述步骤8051-8054来实现。
步骤8051、该终端通过对该迭代公式进行计算,得到新的迭代时间。
在初次迭代时,该终端可以将该初始时间代入该迭代公式中,得到新的迭代时间,当不是初次迭代时,该终端将上次迭代得到的迭代时间代入该迭代公式中,得到新的迭代时间。
步骤8052、该终端将新的迭代时间代入动力学模型中,得到与该新的迭代时间对应的位移和速度。
步骤8053、当该位移不小于位移阈值,或该速度不小于速度阈值时,该终端执行步骤8051-8052。
步骤8054、当该位移小于位移阈值,且该速度小于速度阈值时,该终端将该新的迭代时间作为该时间区间内的第四时间。
从而,该终端对每个时间区间执行步骤801-805,就可以得到每个时间区间内的第四时间。
步骤7022、该终端将该至少一个第四时间中的最小时间作为该动力学模型的目标时间。
该终端将获取的每个第四时间进行对比,从中筛选出一个最小的第四时间作为该动力学模型的目标时间。
上述是通过获取多个备用时间,然后从多个备用目标时间中,将一个最小的备用时间作为目标时间的过程。在一种可能的实现方式中,终端按照时间顺序,在各个时间内获取目标时间,当第一次获取到目标时间时,该终端将不在以后的时间区间上获取目标时间,直接将第一次获取的目标时间作为该动力学模型的目标时间。
图7中动力学模型的位移函数和速度函数不存在反函数,且该位移函数和速度函数均是非周期函数,但是,有的动力学模型的位移函数和速度函数均为周期函数,对于这种情况,参见图9,图9是本申请实施例提供的一种目标时间确方法的流程图,该方法流程具体包括下述步骤901-902。
步骤901、当该动力学模型中的位移函数和速度函数均是周期函数时,该终端获取目标周期,该目标周期内存在第五时间,其中,该第五时间对应的位移等于零,且该第五时间对应的速度小于速度阈值。
当动力学模型的位移函数和速度函数均为周期函数时,在该位移函数的各个周期内,可能具有多个目标周期,该终端获取的目标周期可以是该位移函数上第一个目标周期。在一种可能的实现方式中,本步骤901可以通过下述步骤9011-9014所示的过程来实现,
步骤9011、当该动力学模型中的位移函数和速度函数均是周期函数时,该终端将该动力学模型中的位移曲线划分为多个连续的周期。
步骤9012、该终端获取该位移曲线第一个周期中的各个零点以及与该各个零点对应的速度。
该零点为位移曲线上位移为0的点,可以表示为(tx1,0),其中,tx1为零点所在的时间。
该终端令位移函数中的位移为0,将0代入位移函数中,得到该零点所在的时间,进而该终端获取该周期中的各个零点。该终端将该各个零点的时间代入速度函数中,得到与各个零点对应的各个速度。
步骤9013、当与任一零点对应的速度大于速度阈值时,该终端将该周期作为目标周期。
步骤9014、当该周期内没有零点或所有零点所对应的速度均不小于速度阈值时,该终端在获取下一个周期中的各个零点以及与各个零点对应的速度,直至获取的速度小于速度阈值时,将与该速度对应的零点所在的周期作为目标周期。
那么,目标周期内第一个符合上述条件的零点所在的时间,也即是,该目标周期内存在的第五时间。
步骤902、在该目标周期内,该终端基于迭代算法的公式进行迭代,得到该动力学模型的目标时间,该迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
由于该目标时间仅该目标周期的时间区间内的一个时间点,该终端可以现在该目标周期的时间区间内确定迭代区间,然后,在该确定的迭代区间内进行迭代。在一种可能的实现方式中,本步骤902可以通过下述步骤9021-9022所示的过程来实现。
步骤9021、该终端根据该目标周期内的零点和极值点的位置,确定目标时间区间。
该终端可以根据该目标周期内的零点与极值点在该目标周期上的位置,来确定目标时间区间。在一种可能的实现方式中,当该目标周期的目标初始时间不大于该目标周期内的目标零点处的时间,且该目标零点处的时间小于该目标周期内的目标极值点处的时间时,该终端将该目标极值点处的时间作为目标时间区间的终止时间,将该目标极值点左侧的第一极值点的时间作为该目标时间区间的初始时间,其中,该目标初始时间为该目标周期前半周期的初始时间,或该目标周期后半周期的初始时间,该目标零点为该目标周期前半周期内的第一个零点,或该目标周期后半周期内的第一个零点,该目标极值点为该目标周期前半周期内的第一个极值点,或该目标周期后半周期内的第一个极值点;当该目标周期的目标初始时间不大于该目标极值点处的时间,且该目标极值点处的时间小于该目标零点处的时间时,该终端将该目标极值点处的时间作为该目标时间区间的初始时间,将该目标极值点右侧的第一个极值点处的时间作为该目标时间区间的终止时间。
为了进一步说明上述确定目标时间区间的方法,参见图10,图10是本申请实施例提供的一种目标时间获取方法的流程图,该方法流程具体包括下述步骤1001-1009、9022所示的过程。
步骤1001、该终端在该目标周期的前半周期内,获取目标初始时间以及第一个零点处的时间。
步骤1002、该终端获取与该零点对应的速度。
步骤1003、该终端获取第一个极值点的时间。
步骤1004、该终端判断该零点对应的速度是否小于速度阈值。
当该零点的对应的速度大于或等于速度阈值时,该终端在该目标周期中的后半周期执行步骤1001-1004。
步骤1005、当该零点的对应的速度小于速度阈值时,该终端判断该零点处的时间是否小于该极值点处的时间,该目标初始时间是否小于或等于该零点处的时间。
步骤1006、当该零点处的时间小于该极值点处的时间,且该目标初始时间小于或等于该零点处的时间时,该终端将该极值点处的时间作为目标时间区间的终止时间,将该极值点左侧的第一个极值点处的时间作为该目标时间区间的初始时间。
参见图11,图11是本申请实施例提供的一种位移曲线示意图,目标周期为[t2,t4],若第五时间为tx2,位于该目标周期的前半周期,该目标初始时间t2小于tx2,目标周期前半周期的第一个极值点处的时间为ti2,可见tx2小于ti2,ti2左侧的第一个极值点处的时间为ti1,则该终端将[ti1,ti2]作为目标时间,若第五时间为tx3,位于该目标周期的后半周期,该目标初始时间t2小于tx3,,该目标周期后半周期的第一个极值点的处的时间为ti3,可见tx3小于ti3,ti3左侧的第一极值点处的时间为ti2,则该终端将[ti2,ti3]作为目标时间区间。
需要说明的是,当该零点左侧没有极值点时,可以将该零点所在的半周期内的初始时间作为该目标时间区间的初始时间。
步骤1007、当该零点处的时间是不小于该极值点处的时间,或该目标初始时间大于该零点处的时间时,该终端判断该目标初始时间是否小于或等于该极值点处的时间以及该极值点处的时间是否小于该零点处的时间。
步骤1008、当该目标初始时间不大于该极值点处的时间,且该极值点处的时间小于该零点处的时间时,该终端将该极值点处的时间作为该目标时间区间的初始时间,将该极值点右侧的第一个极值点处的时间作为该目标时间区间的终止时间。
参见图12,图12是本申请实施例提供的一种位移曲线示意图,目标周期为[t2,t4],若第五时间为tx2,位于该目标周期的前半周期,前半周期的第一个极值点处的时间为ti2,可见,该目标时间t2小于ti2,ti2小于tx2,该ti2右侧的第一个极值点的处的时间为ti3,则该终端将[ti2,ti3]作为目标区间,若第五时间为tx3,位于该目标周期的后半周期,前半周期的第一个极值点处的时间为ti3,可见,该目标初始时间t3小于ti3,ti3小于tx3,该ti3右侧的第一个极值点的处的时间为ti4,则该终端将[ti3,ti4]作为目标区间,
步骤1009、当该目标初始时间大于该极值点处的时间,或该极值点处的时间不小于该零点处的时间时,则该终端在该目标周期内无法获取到目标时间。
当该终端在该目标周期内获取不到目标时间时,该终端可以再获取一个目标周期,然后在新获取的目标周期内获取目标时间。
步骤9022、在该目标时间区间内,该终端基于迭代算法的公式进行迭代,得到该动力学模型的目标时间。
需要说明的是,步骤802和步骤902中的迭代算法还可以是其他计算目标时间的算法,本申请实施例对该终端计算动力学模型的目标时间的算法不做具体限定。
而通过上述方法,该终端可以精确获取该动力学模型的目标时间,从而可以使得UI元素的属性在动画持续时间内一直按着动力学模型的曲线执行,从而可以避免人工设置动力学模型的目标时间。
需要说明的是,步骤401-403所示的过程,为终端在启动动画之前所执行的过程,且仅执行一次即可,在动画播放过程中无需重复执行。
404、该终端启动动画。
该终端可以基于第一插值器启动动画,其中,该第一插值器为基于模型的插值器,内置有动力模型以及动力模型的动力方程,例如,弹簧插值器(spring interpolator)中内置有质点-弹簧-阻尼模型以及质点-弹簧-阻尼模型的运动方程。
该终端在启动动画之前,需要对第一插值器中的动力学模型进行初始化,具体地,该终端通过设置动力学模型的模型参数、位移阈值以及速度阈值,来进行初始化,该初始化的过程也即是步骤401-402所示的过程。
待对动力学模型初始化完成后,该终端建立第一插值器与目标对象的联系,其中,目标对象为形成动画的对象,例如,翻页动画中被翻页的页面。然后,该终端使用插值器(interpolator)来提供动UI元素的目标属性值,设置动画的持续时间,待该终端设置完成后,动画启动。
当播放动画时,该终端获取该动画的动力学模型的目标时间,该目标时间为该动力学模型从不稳定状态变化为稳定状态的时间,从而使得该终端基于该目标时间,按照下述步骤405-407所示的的过程播放动画,该终端可以直接读取步骤403中该终端确定的目标时间,来实现获取该动画的动力学模型的目标时间。
405、该终端根据动画当前的播放时间点、该目标时间以及该位移函数,获取该动画的元素的目标属性值。
该终端可以将动画当前的播放时间点归一化至目标时间内,使得动画可以在动力学模型的目标时间内完成。在一种可能的实现方式中,本步骤405可以通过系数步骤4051-4053所示的过程来实现。
步骤4051、当动画启动时,该终端对动画当前的播放时间点进行归一化处理,得到第一时间,该第一时间小于或等于该目标时间。
动画当前的播放时间点可用动画当前帧对应的时间来表示。随着动画的持续播放,该终端可以将动画当前帧对应的时间插入之目标时间内,从而可以将动画的持续时间归一化至该目标时间内。
在一种可能的实现方式中,该终端将该动画当前帧对应的时间以及该目标时间输入至时间归一化公式中,得到第一时间,该时间归一化公式可以是t=estimatedDuration(ta-ta0)/duration+t0,其中,t为该第一时间,estimatedDuration为该目标时间,ta为该动画当前帧对应的时间,ta0为该动画当前帧的初始时间,duration为该动画的持续时间,t0为该动力学模型的初始时间。本申请实施例对该时间归一化公式不做具体限定。
那么,随着动画的持续播放,使得动画的持续时间与动力学模型的运行时间相对应,由于该时间归一化公式用于将动画的持续时间归一化至动力学模型的目标时间,所以该终端可以用动画的持续时间表示将该动力学模型的运行时间,那么,当将该动力学模型在目标时间内的位移表示该动画的一个UI属性时,该动力学模型的位移在目标时间内的变化曲线与UI属性在动画持续时间内的变化曲线相似,从而使得动画效果与动力学模型对应的物理现象相似,进而可以提高动画的拟物效果,提升了真实性。
并且,通过将动画的当前时间归一化至目标时间内,那么随着动画的持续播放,无论动画的持续时间时多少,该终端都可以将动画的持续时间均归一化至该目标时间内,从而使得UI元素的属性在动画持续时间内的变化情况和动力学模型在目标时间内的变化相同,进而可以满足指定动画持续时间的要求。
步骤4052、该终端将该第一时间输入至该动力学模型,得到目标位移。
该目标位移为与当前帧动画对应的时间相对应的动力学模型的瞬时位移。
步骤4053、该终端基于该目标位移,获取该动画的元素的当前的目标属性值。
其中,该动画的元素为动画的UI元素,该目标属性值为目标属性在动画当前帧对应的时间的值,该目标属性为UI元素的任一属性。以翻页动画为例,翻页动画实质上UI元素的位置发生变化,则该目标属性值可以表示UI元素的位置在动画当前帧对应时间的值。
使用动力学模型在平衡时间内的变化情况来表示目标属性在动画持续时间内的变化情况,那么,动力学模型在平衡时间内的每个位移对应目标属性在动画持续时间内的一个目标属性值,该终端可以对该动力学模型在目标时间内的各个目标位移进行归一化处理,从而使得各个目标位移归一化至适合动画使用的形式,该终端可以根据位移归一化后的结果更新该目标属性值,从而得到更新后的目标属性值,那么随着目标属性值在该动画持续时间内的不断更新,可以得到形成动画。
在一种可能实现方式中,本步骤4053可以通过下述步骤1-2所示的过程来实现。
步骤1、该终端将该目标位移输入至位移归一化公式中,得到第一目标值,该第一目标值用于控制动画的元素的目标属性值。
第一目标值为该目标位移归一化后的结果,该位移归一化公式可以是iv(t)=(x(t)+delta)/(p(0)+delta),delat=|firstExtremumX|+|x(0)|,其中,firstExtremumX为动力学模型中的位移函数的第一个极值点处的位移值,x(t)为动力学模型t时刻的位移,p(0)为该动力学模型的初始位移,iv(t)为t时刻的第一目标值。本申请实施例对该位移归一化公式不做具体限定。
当该动力学模型开始运动时,x(0)=0,则iv(0)=(0+delta)/(p(0)+delta),0<iv(0)≤1,而x(t)在动画的最终位置停止运动,当该动力学模型停止运动时,x(t)=p(0),则iv(t)=1,可见,动力学模型在目标时间内运动时,位移曲线在目标时间内的变化情况与iv(t)在(0,1]内的变化情况相同,可以将iv(t)作为UI元素的任一属性在动画持续时间内的变换率,从而使得该属性在动画持续时间内的变化情况和位曲线在目标时间内的变化情况相同。
步骤2、基于该第一目标值,该终端更新该动画的元素的目标属性值,得到更新后的目标属性值,该更新后的目标属性值为该动画当前时间的目标属性值。
该终端可以通过更新公式更新目标属性值,该更新公式可以是new=old+Translation,Translation=from+iv(t)(to-from),其中,new为更新后的目标属性值,iv(t)为t时刻的第一目标值,to为动画开始时的目标属性的值,from为动画结束时的目标属性值。
通过步骤1-2可以使得目标属性值保持在期望的范围内,从而避免目标属性值过大或者过小,进而可以使得动画视觉效果较佳。
步骤406、该终端判断该动画是否具有剩余时间。
该终端通过该动画的当前时间与步骤405中动画的持续时间进行对比,当该动画的当前时间小于该动画的持续时间时,该动画还具有剩余时间,否则该动画没有剩余时间。
该终端还可以通过将步骤405中的第一时间与目标时间进行对比,当该第一时间小于该目标时间时,该动画还具有剩余时间,否则该动画没有剩余时间。
步骤407、当该动画还有剩余时间时,该终端执行步骤405-406,当该动画没有剩余时间时,该终端结束该动画。
需要说明的是,步骤405-407所示的过程为终端基于该动画的元素的目标属性值,播放该动画的过程。
本发明实施例提供的方法,通过获取动力学模型的目标时间,并基于获取的目标时间、动画的播放时间以及动力学模型的位移函数,来获取动画播放使得动画的元素的目标属性值,并随着动画的持续播放,基于实时的动画的元素的目标属性值,来播放动画,从而使得动画效果与动力学模型的位移变化相同,从而提高了动画的拟物效果,提高了动画的真实性。并且,该终端可以精确获取该动力学模型的目标时间,从而可以使得UI元素的属性在动画持续时间内一直按着动力学模型的曲线执行,从而可以避免人工设置动力学模型的目标时间。并且,通过将动画的当前时间归一化至目标时间内,那么随着动画的持续播放,无论动画的持续时间时多少,该终端都可以将动画的持续时间均归一化至该目标时间内,从而使得UI元素的属性在动画持续时间内的变化情况和动力学模型在目标时间内的变化相同,进而可以满足指定动画持续时间的要求。并且,通过位移归一化,使得目标属性值保持在期望的范围内,从而避免目标属性值过大或者过小,进而可以使得动画视觉效果较佳。
图13是本申请实施例提供的一种动画播放装置的结构装置图,该装置包括:
第一获取模块1301,用于当播放动画时,获取该动画的动力学模型的目标时间,该目标时间为该动力学模型从不稳定状态变化为稳定状态的时间;
第二获取模块1302,用于执行步骤405;
播放模块1303,用于基于该动画的元素的目标属性值,播放该动画。
可选地,该装置还包括
第三获取模块,用于获取该动画的动力学模型;
确定模块,用于执行步骤403。
可选地,该确定模块,用于执行步骤601-604;
可选地,该确定模块,包括:
第一获取单元,用于执行步骤701;
第二获取单元,用于执行步骤702。
可选地,第二获取单元包括:
第一获取子单元,用于执行步骤7021;
作为子单元,用于执行步骤7022。
可选地,该第一获取子单元,用于:
执行步骤801;
基于与该拐点处的位移,确定迭代算法的初始时间,该迭代算法的公式为:ti=ti-1-x(ti-1)/Dx(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,x(ti-1)为该动力学模型中ti-1时的位移,x(ti-1)为该动力学模型中ti-1时的速度;
执行步骤804-805。
可选地,基于与该拐点处的位移,确定迭代算法的初始时间,用于执行步骤8022-8023。
可选地,该确定模块,包括:
第一获取单元,用于执行步骤901;
迭代单元,用于执行步骤902。
可选地,该迭代单元包括:
确定子单元,用于执行步骤9021;
迭代子单元,用于执行步骤9022。
可选地,该确定子单元,用于:
如果该动力学模型的初始时间不大于该目标周期内的目标零点处的时间,且该目标零点处的时间小于该目标周期内的目标极值点处的时间,将该目标极值点处的时间作为目标时间区间的终止时间,将该目标极值点左侧的第一个极值点处的时间作为该目标时间区间的初始时间;
其中,该目标零点为该目标周期前半周期内的第一个零点,或该目标周期后半周期内的第一个零点,该目标极值点为该目标周期前半周期内的第一个极值点,或该目标周期后半周期内的第一个极值点;
如果该动力学模型的初始时间不大于该目标极值点处的时间,且该目标极值点处的时间小于该目标零点处的时间,将该目标极值点处的时间作为该目标时间区间的初始时间,将该目标极值点右侧的第一个极值点处的时间作为该目标时间区间的终止时间。
可选地,该第二获取模块1303,包括:
归一化单元,用于执行步骤4051;
输入单元,用于执行步骤4052;
获取单元,用于执行步骤4053。
可选地,对动画当前的播放时间点进行归一化处理,得到第一时间,包括:
将该动画当前帧对应的时间以及该目标时间输入至时间归一化公式中,得到第一时间,该归一化公式为t=estimatedDuration(ta-ta0)/duration+t0,其中,t为该第一时间,estimatedDuration为该目标时间,ta为该动画当前帧对应的时间,ta0为该动画当前帧的初始时间,duration为该动画的持续时间,t0为该动力学模型的初始时间。
可选地,该获取单元,用于执行步骤1-2。
本申请实施例所提供的装置,通过获取动力学模型的目标时间,并基于获取的目标时间、动画的播放时间以及动力学模型的位移函数,来获取动画播放使得动画的元素的目标属性值,并随着动画的持续播放,基于实时的动画的元素的目标属性值,来播放动画,从而使得动画效果与动力学模型的位移变化相同,从而提高了动画的拟物效果,提高了动画的真实性。并且,该终端可以精确获取该动力学模型的目标时间,从而可以使得UI元素的属性在动画持续时间内一直按着动力学模型的曲线执行,从而可以避免人工设置动力学模型的目标时间。并且,通过将动画的当前时间归一化至目标时间内,那么随着动画的持续播放,无论动画的持续时间时多少,该终端都可以将动画的持续时间均归一化至该目标时间内,从而使得UI元素的属性在动画持续时间内的变化情况和动力学模型在目标时间内的变化相同,进而可以满足指定动画持续时间的要求。并且,通过位移归一化,使得目标属性值保持在期望的范围内。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的动画播放装置在进行动画播放时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的动画播放装置与动画播放方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (19)
1.一种动画播放方法,其特征在于,所述方法包括:
当播放动画时,获取所述动画的动力学模型的目标时间,所述目标时间为所述动力学模型从不稳定状态变化为稳定状态的时间;
当动画启动时,对动画当前的播放时间点进行归一化处理,得到第一时间,所述第一时间小于或等于所述目标时间;
将所述第一时间输入至所述动力学模型,得到目标位移;
基于所述目标位移,获取所述动画的元素的当前的目标属性值;
基于所述动画的元素的目标属性值,播放所述动画。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述动画的动力学模型;
基于所述动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定所述动力学模型的目标时间,所述函数可逆属性用于表示函数是否存在反函数。
3.根据权利要求2所述的方法,其特征在于,所述基于所述动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定所述动力学模型的目标时间,包括:
当所述动力学模型中的位移函数和速度函数均存在反函数,且所述位移函数和速度函数均为非周期函数时,获取所述位移函数的反函数以及所述速度函数的反函数;
基于位移阈值以及所述位移函数的反函数,得到第二时间;
基于速度阈值以及所述速度函数的反函数,得到第三时间;
将所述第二时间和所述第三时间中最大的时间作为所述动力学模型的目标时间。
4.根据权利要求2所述的方法,其特征在于,所述基于所述动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定所述动力学模型的目标时间,包括:
当所述动力学模型中的位移函数和速度函数均不存在反函数,且所述位移函数和速度函数均是非周期函数时,获取至少一个时间区间,每个时间区间内的速度均大于零或者均小于零;
在所述至少一个时间区间内,获取所述动力学模型的目标时间,其中,所述目标时间对应的位移小于位移阈值,且所述目标时间对应的速度小于速度阈值。
5.根据权利要求4所述的方法,其特征在于,所述在所述至少一个时间区间内,获取所述动力学模型的目标时间,其中,所述目标时间对应的位移小于位移阈值,且所述目标时间对应的速度小于速度阈值,包括:
在所述至少一个时间区间内,获取至少一个第四时间,每个第四时间对应的位移小于位移阈值,每个第四时间对应的速度小于速度阈值;
将所述至少一个第四时间中的最小时间作为所述动力学模型的目标时间。
6.根据权利要求5所述的方法,其特征在于,所述在所述至少一个时间区间内,获取至少一个第四时间,包括:
对于任一时间区间,获取所述时间区间内所述位移函数的第一个拐点;
基于与所述拐点处的位移,确定迭代算法的初始时间,所述迭代算法的公式为:ti=ti-1-x(ti-1)/Dx(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,x(ti-1)为所述动力学模型中ti-1时的位移,x(ti-1)为所述动力学模型中ti-1时的速度;
当与所述初始时间对应的位移小于位移阈值,且与所述初始时间对应的速度小于速度阈值时,将所述初始时间作为所述时间区间内的第四时间;
当与所述初始时间对应的位移不小于位移阈值,或与所述初始时间对应的速度不小于速度阈值时,在所述时间区间内,基于所述迭代算法的公式以及所述迭代算法的初始时间继续进行迭代,得到所述时间区间内的第四时间。
7.根据权利要求6所述的方法,其特征在于,所述基于与所述拐点处的位移,确定迭代算法的初始时间,包括:
当所述拐点处的位移大于或等于零时,将所述拐点处的时间作为迭代算法的初始时间;
当所述拐点处的位移小于零时,将所述时间区间的初始时间作为迭代算法的初始时间。
8.根据权利要求2所述的方法,其特征在于,所述基于所述动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定所述动力学模型的目标时间,包括:
当所述动力学模型中的位移函数和速度函数均是周期函数时,获取目标周期,所述目标周期内存在第五时间,其中,所述第五时间对应的位移等于零,且所述第五时间对应的速度小于速度阈值;
在所述目标周期内,基于迭代算法的公式进行迭代,得到所述动力学模型的目标时间,所述迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
9.根据权利要求8所述的方法,其特征在于,所述在所述目标周期内,基于迭代算法的公式进行迭代,得到所述动力学模型的目标时间,所述迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度,包括:
根据所述目标周期内的零点和极值点的位置,确定目标时间区间;
在所述目标时间区间内,基于迭代算法的公式进行迭代,得到所述动力学模型的目标时间,所述迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
10.根据权利要求9所述的方法,其特征在于,所述根据所述目标周期内的零点和极值点的位置,确定目标时间区间,包括:
如果所述动力学模型的初始时间不大于所述目标周期内的目标零点处的时间,且所述目标零点处的时间小于所述目标周期内的目标极值点处的时间,将所述目标极值点处的时间作为目标时间区间的终止时间,将所述目标极值点左侧的第一个极值点处的时间作为所述目标时间区间的初始时间;
其中,所述目标零点为所述目标周期前半周期内的第一个零点,或所述目标周期后半周期内的第一个零点,所述目标极值点为所述目标周期前半周期内的第一个极值点,或所述目标周期后半周期内的第一个极值点;
如果所述动力学模型的初始时间不大于所述目标极值点处的时间,且所述目标极值点处的时间小于所述目标零点处的时间,将所述目标极值点处的时间作为所述目标时间区间的初始时间,将所述目标极值点右侧的第一个极值点处的时间作为所述目标时间区间的终止时间。
11.根据权利要求1所述的方法,其特征在于,所述对动画当前的播放时间点进行归一化处理,得到第一时间,包括:
将所述动画当前帧对应的时间以及所述目标时间输入至时间归一化公式中,得到第一时间,所述归一化公式为t=estimatedDuration(ta-ta0)/duration+t0,其中,t为所述第一时间,estimatedDuration为所述目标时间,ta为所述动画当前帧对应的时间,ta0为所述动画当前帧的初始时间,duration为所述动画的持续时间,t0为所述动力学模型的初始时间。
12.根据权利要求1所述的方法,其特征在于,所述基于所述目标位移,获取所述动画的元素的当前的目标属性值,包括:
将所述目标位移输入至位移归一化公式中,得到第一目标值,该第一目标值用于控制动画的元素的目标属性值;
基于所述第一目标值,更新该动画的元素的目标属性值,得到更新后的目标属性值,所述更新后的目标属性值为所述动画的元素的当前的目标属性值。
13.一种动画播放装置,其特征在于,所述装置包括:
第一获取模块,用于当播放动画时,获取所述动画的动力学模型的目标时间,所述目标时间为所述动力学模型从不稳定状态变化为稳定状态的时间;
第二获取模块,用于当动画启动时,对动画当前的播放时间点进行归一化处理,得到第一时间,所述第一时间小于或等于所述目标时间;将所述第一时间输入至所述动力学模型,得到目标位移;基于所述目标位移,获取所述动画的元素的当前的目标属性值;
播放模块,用于基于所述动画的元素的目标属性值,播放所述动画。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于获取所述动画的动力学模型;
确定模块,用于基于所述动力学模型中的位移函数和速度函数的周期性和函数可逆属性,确定所述动力学模型的目标时间,所述函数可逆属性用于表示函数是否存在反函数。
15.根据权利要求14所述的装置,其特征在于,所述确定模块,用于:
当所述动力学模型中的位移函数和速度函数均存在反函数,且所述位移函数和速度函数均为非周期函数时,获取所述位移函数的反函数以及所述速度函数的反函数;
基于位移阈值以及所述位移函数的反函数,得到第二时间;
基于速度阈值以及所述速度函数的反函数,得到第三时间;
将所述第二时间和所述第三时间中最大的时间作为所述动力学模型的目标时间。
16.根据权利要求14所述的装置,其特征在于,所述确定模块,用于:
当所述动力学模型中的位移函数和速度函数均不存在反函数,且所述位移函数和速度函数均是非周期函数时,获取至少一个时间区间,每个时间区间内的速度均大于零或者均小于零;
在所述至少一个时间区间内,获取所述动力学模型的目标时间,其中,所述目标时间对应的位移小于位移阈值,且所述目标时间对应的速度小于速度阈值。
17.根据权利要求14所述的装置,其特征在于,所述确定模块,用于:
当所述动力学模型中的位移函数和速度函数均是周期函数时,获取目标周期,所述目标周期内存在第五时间,其中,所述第五时间对应的位移等于零,且所述第五时间对应的速度小于速度阈值;
在所述目标周期内,基于迭代算法的公式进行迭代,得到所述动力学模型的目标时间,所述迭代算法的公式为ti=ti-1-X(ti-1)/DX(ti-1),其中,i为迭代次数,ti为第i迭代的时间,ti-1为第i-1迭代的时间,X(ti-1)为动力学模型中ti-1时的位移,DX(ti-1)为动力学模型中ti-1时的速度。
18.一种终端,其特征在于,所述终端包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条指令,所述指令由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求12任一项所述的动画播放方法所执行的操作。
19.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求12任一项所述的动画播放方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219097.8A CN111722896B (zh) | 2019-03-21 | 2019-03-21 | 动画播放方法、装置、终端以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219097.8A CN111722896B (zh) | 2019-03-21 | 2019-03-21 | 动画播放方法、装置、终端以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111722896A CN111722896A (zh) | 2020-09-29 |
CN111722896B true CN111722896B (zh) | 2021-09-21 |
Family
ID=72562796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910219097.8A Active CN111722896B (zh) | 2019-03-21 | 2019-03-21 | 动画播放方法、装置、终端以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111722896B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114061568B (zh) * | 2021-11-30 | 2023-11-14 | 北京信息科技大学 | 基于地磁数据的飞行体转速测量方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000048129A1 (en) * | 1999-02-12 | 2000-08-17 | Duran | Method and apparatus for animating two-dimensional and three-dimensional images |
CN1629889A (zh) * | 2003-12-15 | 2005-06-22 | 中国科学院自动化研究所 | 三维植物体音乐动画系统 |
CN102542593A (zh) * | 2011-09-30 | 2012-07-04 | 中山大学 | 一种基于视频解译的交互式视频风格化渲染方法 |
CN103559739A (zh) * | 2013-11-22 | 2014-02-05 | 华中科技大学 | 基于osg的数字湖泊三维可视化仿真方法及仿真平台 |
CN107798718A (zh) * | 2017-10-31 | 2018-03-13 | 厦门幻世网络科技有限公司 | 一种动画回放方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020054245A (ko) * | 2000-12-27 | 2002-07-06 | 오길록 | 광학식과 자기식 모션 캡쳐 시스템을 위한 센서 퓨전 장치및 그 방법 |
-
2019
- 2019-03-21 CN CN201910219097.8A patent/CN111722896B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000048129A1 (en) * | 1999-02-12 | 2000-08-17 | Duran | Method and apparatus for animating two-dimensional and three-dimensional images |
CN1629889A (zh) * | 2003-12-15 | 2005-06-22 | 中国科学院自动化研究所 | 三维植物体音乐动画系统 |
CN102542593A (zh) * | 2011-09-30 | 2012-07-04 | 中山大学 | 一种基于视频解译的交互式视频风格化渲染方法 |
CN103559739A (zh) * | 2013-11-22 | 2014-02-05 | 华中科技大学 | 基于osg的数字湖泊三维可视化仿真方法及仿真平台 |
CN107798718A (zh) * | 2017-10-31 | 2018-03-13 | 厦门幻世网络科技有限公司 | 一种动画回放方法和装置 |
Non-Patent Citations (2)
Title |
---|
Natural motion animation through constraining and deconstraining at will;K. Yamane; Y. Nakamura;《IEEE Transactions on Visualization and Computer Graphics ( Volume: 9, Issue: 3, July-Sept. 2003)》;20030625;全文 * |
基于物理模型的流体动画研究;秦培煜;《中国博士学位论文全文数据库 信息科技辑》;20101115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111722896A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814766B (zh) | 一种应用显示方法及电子设备 | |
CN112130742B (zh) | 一种移动终端的全屏显示方法及设备 | |
CN110543289B (zh) | 控制音量的方法和电子设备 | |
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
CN109559270B (zh) | 一种图像处理方法及电子设备 | |
CN112217923A (zh) | 一种柔性屏幕的显示方法及终端 | |
CN114089933A (zh) | 显示参数的调整方法、电子设备、芯片及可读存储介质 | |
CN113224804A (zh) | 一种充电控制方法及电子设备 | |
CN115964231A (zh) | 基于负载模型的评估方法和装置 | |
CN115421619A (zh) | 一种窗口显示方法和电子设备 | |
CN115145436A (zh) | 一种图标处理方法及电子设备 | |
CN111722896B (zh) | 动画播放方法、装置、终端以及计算机可读存储介质 | |
CN112312410A (zh) | 一种无线接入点的部署方法及装置 | |
CN112449101A (zh) | 一种拍摄方法及电子设备 | |
CN113380240B (zh) | 语音交互方法和电子设备 | |
CN114690998B (zh) | 图片处理方法及电子设备 | |
CN114356196B (zh) | 一种显示方法及电子设备 | |
CN115562535A (zh) | 应用控制方法和电子设备 | |
CN114445522A (zh) | 笔刷效果图生成方法、图像编辑方法、设备和存储介质 | |
CN113495733A (zh) | 主题包安装方法、装置、电子设备及计算机可读存储介质 | |
CN116592756B (zh) | 折叠屏夹角的检测方法及电子设备 | |
CN116719569B (zh) | 启动应用的方法及装置 | |
CN118689425A (zh) | 图像合成的方法、装置以及电子设备 | |
CN118484252A (zh) | 一种设备控制方法、电子设备及存储介质 | |
CN115145647A (zh) | 应用程序的组件加载方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |