一种在Flash动画中模拟球体运动的方法及装置与流程

文档序号:11387696阅读:407来源:国知局
一种在Flash动画中模拟球体运动的方法及装置与流程

本发明涉及视频技术领域,尤其涉及一种在flash动画中模拟球体运动的方法的及装置。



背景技术:

flash动画是一个矢量动画制作软件,它以流式控制技术和矢量技术为核心,制作的动画具有短小精悍的特点,目前,flash动画被广泛的用于网页设计和网页动画制作及网页视频播放等。大多数的视频网站包括直播网站都采用flash动画作为其视频播放器,并且大多数的网页游戏也会使用flash动画来开发,flash动画中一般都会使用各种各样的动画来增强画面的表现效果。其中,而对于一些物体在flash动画场景中自由落体,并且碰到其他物体会进行反弹的效果,目前大多数都是简单的计算来模拟物体的运动效果,因此模拟物体的运动效果的真实性比较差。



技术实现要素:

本发明实施例通过提供一种在flash动画中模拟球体运动的方法及装置,解决了现有技术因此模拟物体的运动效果的真实性比较差的技术问题。

第一方面,本发明实施例提供了一种在flash动画中模拟球体运动的方法,包括:

通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在所述flash动画中创建物理世界;

在所述物理世界中添加动态球实体,其中,针对所述动态球实体创建有使所述动态球实体在所述物理世界中进行模拟球体运动的多个物理属性参数;

在所述flash动画中,对所述动态球实体在所述物理世界中进行的模拟球体运动进行刷新,以使所述物理世界和所述动态球实体在所述物理世界中进行的模拟球体运动显示在所述flash动画上。

可选的,所述通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在所述flash动画中创建物理世界,包括:

将所述二维刚体模拟物理引擎的源代码编译为用于所述flash动画制作工具识别的swc库文件,将编译出的swc库文件添加至所述flash动画制作工具的编译配置中;

通过所述swc库文件,在所述flash动画制作工具中创建针对所述物理世界的物理显示对象;

初始化所述物理世界的重力属性;

基于所述物理世界的重力属性,创建针对所述物理世界的物理世界对象;

通过所述物理世界对象创建所述物理世界的包围盒,其中,创建的所述物理世界的包围盒属于所述物理世界。

可选的,所述通过所述物理世界对象创建所述物理世界的包围盒,包括:

通过所述物理世界对象创建所述物理世界的包围盒的包围盒右边界、包围盒左边界、包围盒顶面边界和包围盒地面边界。

可选的,所述针对所述动态球实体创建的物理属性参数,包括:所述动态球实体的摩擦系数、尺寸、密度和反弹系数。

可选的,所述在所述flash动画中,对所述动态球实体在所述物理世界中进行的模拟球体运动进行刷新,包括:

基于所述物理显示对象在所述flash动画中显示所述物理世界和所述动态球实体;

基于预设更新频率对所述物理世界和所述动态球实体进行更新;

在每次对所述物理世界和所述动态球实体进行更新时同步刷新所述flash动画,以对所述动态球实体在所述物理世界中进行的模拟球体运动进行刷新。

第二方面,本发明实施例提供了一种在flash动画中模拟球体运动的装置,包括:

物理世界创建单元,用于通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在所述flash动画中创建物理世界;

球体添加单元,用于在所述物理世界中添加动态球实体,其中,针对所述动态球实体创建有使所述动态球实体在所述物理世界中进行模拟球体运动的多个物理属性参数;

刷新单元,用于在所述flash动画中,对所述动态球实体在所述物理世界中进行的模拟球体运动进行刷新,以使所述物理世界和所述动态球实体在所述物理世界中进行的模拟球体运动显示在所述flash动画上。

可选的,所述物理世界创建单元,包括:

编译子单元,用于将所述二维刚体模拟物理引擎的源代码编译为用于所述flash动画制作工具识别的swc库文件,将编译出的swc库文件添加至所述flash动画制作工具的编译配置中;

显示对象创建子单元,用于通过所述swc库文件,在所述flash动画制作工具中创建针对所述物理世界的物理显示对象;

重力初始化子单元,用于初始化所述物理世界的重力属性;

物理世界对象创建子单元,用于基于所述物理世界的重力属性,创建针对所述物理世界的物理世界对象;

包围盒创建子单元,用于通过所述物理世界对象创建所述物理世界的包围盒,其中,创建的所述物理世界的包围盒属于所述物理世界。

可选的,所述包围盒创建子单元,具体用于:

通过所述物理世界对象创建所述物理世界的包围盒的包围盒右边界、包围盒左边界、包围盒顶面边界和包围盒地面边界。

可选的,所述针对所述动态球实体创建的物理属性参数,包括:所述动态球实体的摩擦系数、尺寸、密度和反弹系数。

可选的,所述刷新单元,包括:

显示子单元,用于基于所述物理显示对象在所述flash动画中显示所述物理世界和所述动态球实体;

运动更新子单元,用于基于预设更新频率对所述物理世界和所述动态球实体进行更新;

动画刷新子单元,用于在每次对所述物理世界和所述动态球实体进行更新时同步刷新所述flash动画,以对所述动态球实体在所述物理世界中进行的模拟球体运动进行刷新。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

由于采用了通过引入到flash动画制作工具中的二维刚体模拟物理引擎在flash动画中创建物理世界;在物理世界中添加的动态球实体创建有多个物理属性参数,使得动态球实体在物理世界中进行模拟运动;在flash动画中对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上,从而实现了在flash动画中模拟球在真实的物理世界运动的动画效果,比简单计算来模拟球体运动更逼真。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例在flash动画中模拟球体运动的方法流程图;

图2为创建的物理世界和动态球实体的示意图;

图3a~图3b为动态球实体在物理世界的运动示意图;

图4本发明实施例在flash动画中模拟球体运动的装置模块图。

具体实施方式

本发明实施例通过提供一种在flash动画中模拟球体运动的方法及装置,解决了现有技术因此模拟物体的运动效果的真实性比较差的技术问题。

本发明实施例的技术方案为解决上述技术问题,总体思路如下:

通过flash动画制作工具中的二维刚体模拟物理引擎在flash动画中创建物理世界;在物理世界中添加的动态球实体创建有多个物理属性参数,使得动态球实体在物理世界中进行模拟运动;在flash动画中对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上,从而实现了在flash动画中模拟球在真实的物理世界运动的动画效果,比简单计算来模拟球体运动更逼真。

参考图1所示,本发明实施例提供的一种在flash动画中模拟球体运动的方法,包括如下步骤:

s101、通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在flash动画中创建物理世界;

s102、在物理世界中添加动态球实体,其中,针对动态球实体创建有使动态球实体在物理世界中进行模拟球体运动的多个物理属性参数;

s103、在flash动画中,对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上。

需要说明的是,在本发明实施例中,二维刚体模拟物理引擎可以为box2d物理引擎。flash动画制作工具为交互式动画设计工具。flash动画由该flash动画制作工具制作而成。

下面,结合图1对本发明实施例提供的在flash动画中模拟球体运动的方法的每个步骤进行详细描述:

首先,执行s101:通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在flash动画中创建物理世界。

s101包括,首先,在flash动画制作工具中引入二维刚体模拟物理引擎。而在flash动画制作工具中引入二维刚体模拟物理引擎,具体为:将所述二维刚体模拟物理引擎的源代码编译为用于所述flash动画制作工具识别的swc库文件,将编译出的swc库文件添加至flash动画制作工具的编译配置中。

以box2d物理引擎为例,将box2d物理引擎的源代码加入到flash动画制作工具的代码编译环境中,在flash动画制作工具的编译配置中,box2d物理引擎的源代码编译成flash动画制作工具可执行的swc库文件。编译完成后,在flash动画制作工具中,则通过box2d物理引擎的进入口来引入由box2d物理引擎的源代码已经编译成的swc库文件,使得flash动画制作工具可以使用box2d物理引擎的所有接口及组件。

需要说明的是,flash动画制作工具的编译配置为makefile,是定义编译代码的规则和配置文件。box2d物理引擎的进入口标示为importbox2d。

接着,通过由二维刚体模拟物理引擎的源代码已经编译成的swc库文件,在flash动画制作工具中创建针对物理世界的物理显示对象。需要说明的是,物理显示对象用于将物理世界和物理世界中的动态球实体显示在flash动画中。

具体的,针对box2d物理引擎,动态球实体放在box2d物理引擎的box2dshow类的成员变量中,以将该动态球实体添加到物理世界中。

需要说明的是,在本发明实施例中,box2dshow类继承自物理显示对象(即:sprite对象),box2dshow类实例化的动态球实体加载到flash动画中进行显示。而sprite对象来自flash动画的actionscript的script类。

再接着,初始化物理世界的重力属性:

具体的,初始化物理世界的重力属性包括:初始化包括物理世界的重力方向和重力大小。具体的,初始化的重力方向为水平运动为0,垂直运动为向下的10,具体实现方式为:

vargravity:b2vec2=b2vec2.create()

gravity.set(0.0,-10.0)。

当然,还可以包括初始化物理世界的尺寸。

再接着,基于物理世界的重力属性,创建针对物理世界的物理世界对象:

varworld:b2world=b2world.create(gravity)

其中,b2world表示物理世界,创建完物理世界对象后,则需要创建物理世界的包围盒,以表示物理世界的边界范围。需要说明的是,创建的物理世界的包围盒属于物理世界。

具体的,结合图2所示,通过物理世界对象创建物理世界的包围盒的包围盒右边界r、包围盒左边界l、包围盒顶面边界t和包围盒地面边界b。

下面对创建物理世界的包围盒的实施方式进行详细说明:

具体的,1、通过定义多边形来确定创建了一个包括包围盒右边界r、包围盒左边界l、包围盒顶面边界t和包围盒地面边界b共4个平面的包围盒;2、创建一个针对物理世界的包围盒的刚体定义;3、创建一个针对物理世界的包围盒的刚体。

比如,通过varwall:b2polygonshape=newb2polygonshape()方法定义一个多边形的变量。通过varwallbd:b2bodydef=newb2bodydef()方法定义一个针对物理世界的包围盒的刚体定义的变量,再通过varwallb:b2body方法定义一个针对物理世界的包围盒的刚体的变量。

则创建物理世界的包围盒左边界l的代码实现为:

varwall:b2polygonshape=newb2polygonshape();

varwallbd:b2bodydef=newb2bodydef();

varwallb:b2body;

wallbd.position.set(xx,xx);

wall.setasbox(xx,xx);

wallb=world.createbody(wallbd);

wallb.createfixture2(wall);

其中,创建物理世界的包围盒左边界l的代码中,使用的world对象就是物理世界对象,通过物理世界对象创建的刚体均属于物理世界,因此,创建的物理世界的包围盒左边界l属于物理世界,通过调用position.set()函数设定包围盒左边界l的位置、调用setasbox()设定包围盒左边界l的设定边框之后,通过调用createbody()函数创建针对包围盒左边界l的刚体,以及通过调用createfixture2()创建针对包围盒左边界l的夹具,用于将包围盒左边界l的形状绑定到针对包围盒左边界l创建的刚体上。

在本发明实施例中,一个针对物理世界的包围盒的刚体定义(b2bodydef)可以用于来创建多个刚体,则各个变量在后续创建包围盒右边界r、包围盒顶面边界t和包围盒地面边界b时共用。因此,创物理世界的包围盒右边界r通过如下代码实现:

wallbd.position.set(xx,xx);

wallb=world.createbody(wallbd);

wallb.createfixture2(wall);

其中,创建物理世界的包围盒右边界r的代码中:通过调用position.set()函数设定包围盒右边界r的位置、调用setasbox()设定包围盒右边界r的设定边框之后,通过调用createbody()函数创建针对包围盒右边界r的刚体,以及通过调用createfixture2()创建针对包围盒右边界r的夹具,以将包围盒右边界r的形状绑定到针对包围盒右边界r创建的刚体上。

具体的,创建针对物理世界的包围盒顶面边界t,具体通过如下代码实现:

wallbd.position.set(xx,xx);

wall.setasbox(xx,xx);

wallb=world.createbody(wallbd);

其中,创建物理世界的包围盒顶面边界t的代码中:通过调用position.set()函数设定包围盒顶面边界t的位置、调用setasbox()设定包围盒顶面边界t的设定边框之后,通过调用createbody()函数创建针对包围盒顶面边界t的刚体,以及通过调用createfixture2()创建针对包围盒顶面边界t的夹具,以将包围盒顶面边界t的形状绑定到针对包围盒顶面边界t创建的刚体上。

具体的,创建针对物理世界的包围盒地面边界b,具体通过如下代码实现:

wallb.createfixture2(wall);

wallbd.position.set(xx,xx);

wallb=world.createbody(wallbd);

wallb.createfixture2(wall);

其中,创建物理世界的包围盒地面边界b的代码中:通过调用position.set()函数设定包围盒地面边界b的位置、调用setasbox()设定包围盒地面边界b的设定边框之后,通过调用createbody()函数创建针对包围盒地面边界的刚体,以及通过调用createfixture2()创建针对包围盒地面边界b的夹具,以将包围盒地面边界b的形状绑定到针对包围盒地面边界b创建的刚体上。

接着,执行s102:在物理世界中添加动态球实体,其中,针对动态球实体创建有使动态球实体在物理世界中进行模拟球体运动的多个物理属性参数。

具体的,创建的物理属性参数包括:动态球实体的摩擦系数、尺寸、密度、反弹系数。

创建动态球实体及创建动态球实体的物理属性参数,具体为:通过newb2circledef()函数创建动态球物理对象(即:circledef),用于定义动态球实体,通过circledef.radius设定动态球实体的半径,circledef.friction设定动态球实体的摩擦系数,circledef.density设定动态球实体的密度,circledef.restitution设定动态球实体的反弹系数。通过调用m_world.createbody()函数创建动态球实体的刚体,通过调用body.createshape()函数创建动态球实体的图形。创建的动态球实体的图形参考图2中所示的g。

具体的实现代码为:

circledef=newb2circledef();

circledef.radius=2;

circledef.friction=0.5;

circledef.density=1.0;

circledef.restitution=0.2;

body=world.createbody(bodydef);

body.createshape(circledef);

需要说明的是,本发明不限制动态球实体的半径、摩擦系数、密度、反弹系数的具体数值,本文所公开的各个物理属性参数的数值仅仅用于举例说明,但是不用于限制本发明,可以根据实际需求创建小于动态球实体,创建的动态球实体的尺寸小于物理世界的尺寸。

s102之后,接着s103:在flash动画中,对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上。

基于物理显示对象在flash动画中显示物理世界和动态球实体;基于预设更新频率对物理世界和动态球实体进行更新;在每次对物理世界和动态球实体进行更新时同步刷新flash动画,以对动态球实体在物理世界中进行的模拟球体运动进行刷新,从而实现形成了参考图3a~图3b所示的动态球实体在物理世界的运动效果:图3a所示为动态球实体从创建位置1开始下落,依次经过位置2、位置3、位置4、位置5、位置6、位置7、在位置8处与包围盒地面边界b碰撞,参考图3b所示,在位置8处反向后,进行向上运动会依次经过位置9、位置10、位置11、位置12后再次下落,位置12低于位置1的高度,动态球实体多次反弹碰撞后停止在8位置,刷新flash动画展示了这种动态球实体在物理世界的运动效果。

具体的,通过将物理世界的更新和动态球实体在物理世界中进行的模拟球体运动的更新放到box2dshow类的场景更新中,使得物理世界更新一次和动态球实体在物理世界中进行的模拟球体运动更新一次,则同步的flash动画刷新一次。

则需要不断的去更新物理世界和动态球实体在物理世界中进行的模拟球体运动,因此,基于预设更新频率对物理世界和动态球实体进行更新,每更新一次就相当于物理世界中的动态球实体发生一次运动。flash动画就对应的刷新一次。更新的频率越高则场景越流畅。

具体的,通过则调用如下方法更新物理世界和动态球实体在物理世界中进行的模拟球体运动:

world.step(timestep,iterations);

其中,step接口为物理世界对象的接口。其中,在前的参数timestep标示每次的更新时间步,在本发明实施例中,更新时间步使用用60分之1秒,在后参数iterations标示一个时间步的迭代次数,在本发明实施例中,一个时间步的迭代次数可以为10次,则更新物理世界和动态球实体在物理世界中进行的模拟球体运动的代码具体为:

world.step(1.0f/60.0f,10);

基于同一发明构思,本发明实施例提供了一种在flash动画中模拟球体运动的装置,参考图4所示,包括:

物理世界创建单元201,用于通过引入到flash动画制作工具中的二维刚体模拟物理引擎,在flash动画中创建物理世界;

球体添加单元202,用于在物理世界中添加动态球实体,其中,针对动态球实体创建有使动态球实体在物理世界中进行模拟球体运动的多个物理属性参数;

刷新单元203,用于在flash动画中,对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上。

可选的,物理世界创建单元201,包括:

编译子单元,用于将所述二维刚体模拟物理引擎的源代码编译为用于所述flash动画制作工具识别的swc库文件,将编译出的swc库文件添加至flash动画制作工具的编译配置中;

显示对象创建子单元,用于通过swc库文件,在flash动画制作工具中创建针对物理世界的物理显示对象;

重力初始化子单元,用于初始化物理世界的重力属性;

物理世界对象创建子单元,用于基于物理世界的重力属性,创建针对物理世界的物理世界对象;

包围盒创建子单元,用于通过物理世界对象创建物理世界的包围盒,其中,创建的物理世界的包围盒属于物理世界。

可选的,包围盒创建子单元,具体用于:

通过物理世界对象创建物理世界的包围盒的包围盒右边界、包围盒左边界、包围盒顶面边界和包围盒地面边界。

可选的,针对动态球实体创建的物理属性参数,包括:动态球实体的摩擦系数、尺寸、密度和反弹系数。

可选的,刷新单元203,包括:

显示子单元,用于基于物理显示对象在flash动画中显示物理世界和动态球实体;

运动更新子单元,用于基于预设更新频率对物理世界和动态球实体进行更新;

动画刷新子单元,用于在每次对物理世界和动态球实体进行更新时同步刷新flash动画,以对动态球实体在物理世界中进行的模拟球体运动进行刷新。

由于本实施例所介绍的装置为实施本发明实施例中在flash动画中模拟球体运动的方法所采用的装置,故而基于本发明实施例中所介绍的在flash动画中模拟球体运动的方法,本领域所属技术人员能够了解本实施例的装置的具体实施方式以及其各种变化形式,所以在此对于该装置如何实现本发明实施例中的方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中信息处理的方法所采用的装置,都属于本发明所欲保护的范围。

上述本发明实施例中的技术方案,至少具有如下的技术效果或优点:

由于采用了通过引入到flash动画制作工具中的二维刚体模拟物理引擎在flash动画中创建物理世界;在物理世界中添加的动态球实体创建有多个物理属性参数,使得动态球实体在物理世界中进行模拟运动;在flash动画中对动态球实体在物理世界中进行的模拟球体运动进行刷新,以使物理世界和动态球实体在物理世界中进行的模拟球体运动显示在flash动画上,从而实现了在flash动画中模拟球在真实的物理世界运动的动画效果,比简单计算来模拟球体运动更逼真。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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