而对2D控件实现3D转场动画。通过3D转场动画可以使用户界面在变化时具有丰富的动态效果及艺术过渡效果,从而给用户更好的观看体验。
[0025]请参阅图1,图1示出了本发明一实施例提供的对2D控件实现3D转场动画方法的流程图,本实施例方法包括:
[0026]步骤102:当接收到对2D控件执行3D转场动画的请求时,获取所述2D控件的标识以及与所述2D控件对应的3D动画标识;
[0027]可选的,所述对2D控件执行3D转场动画的请求由用户通过终端按键输入或者触摸屏的触摸信号来触发。可预先在终端中设定具体的触发动作,例如可设置用户在所述2D控件上进行点击、双击或者指定轨迹的滑动等动作来触发所述3D转场动画的请求。所述2D控件具体可以是终端运行的应用程序的页面或文件等。比如,应用程序可以包括但不限于电话、短信和播放器等等。文件可以包括但不限于图片、文档等等。
[0028]具体的,终端接收到对2D控件执行3D转场动画的请求后,获取当前2D控件的标识以及所述2D控件对应的3D动画标识。所述3D动画标识对应一个3D动画,该3D动画标识可以是唯一标识3D动画的字符串、枚举类型或通用资源标识符(URI,Uniform ResourceIdentifier)。
[0029]终端接收到对2D控件执行3D转场动画的请求后,进一步还获取3D动画持续时间、3D动画结束值等参数。所述3D动画持续时间表现为页面切换速度的快慢。所述3D动画结束值是指当前2D控件对应的3D动画结束的位置,比如3D动画最后在某一点消失,则3D动画结束值具体可以是一个三维坐标。所述3D动画持续时间和所述3D动画结束值可以是开发人员预先设置好的,也可以是用户设置的。
[0030]步骤104:根据所述2D控件标识,获取所述2D控件在用户界面上的2D控件位置、2D控件宽度、2D控件高度和2D控件的渲染图像;
[0031]具体的,所述2D控件位置是指所述2D控件的一个二维坐标,比如,可以是所述2D控件左下角的顶点坐标、所述2D控件右下角顶点坐标或者所述2D控件对称中心点的坐标等。所述2D控件位置、所述2D控件宽度和所述2D控件高度确定了所述2D控件在所述用户界面上的布局。
[0032]步骤106:根据所述3D动画标识,获取对应的3D网格模型;
[0033]可选的,所述3D网格模型是预先保存在资源目录中的,其中,所述资源目录可以是应用程序资源目录或用户界面系统资源目录。具体的,终端根据获得的3D动画标识,获取对应的3D网格模型标识,再根据所述3D网格模型标识获取保存在资源目录中对应的3D网格模型。所述终端解析所述3D网格模型获取3D网格模型数据,获取的3D网格模型数据中至少包括一组三维空间顶点坐标,对应的二维纹理坐标和顶点坐标如何组成几何图元的类型。
[0034]可选的,所述3D网格模型是所述终端根据所述3D动画标识创建的,其中所述3D动画标识对应一个预先设置的算法,终端根据所述预先设置的算法创建所述3D网格模型。所述3D网格模型包括至少一组三维空间顶点坐标,对应的二维纹理坐标和设置顶点坐标如何组成几何图元的类型作为3D网格模型。
[0035]步骤108:将所述2D控件的渲染图像映射到所述3D网格模型上;
[0036]具体的,所述终端生成一个纹理标识,并且将所述2D控件的渲染图像绑定到所述纹理标识对应的纹理上。所述终端根据所述3D网格模型的顶点对应的纹理坐标和所述纹理标识,将所述2D控件的渲染图像映射到所述3D网格模型上作为纹理。
[0037]步骤110:根据所述2D控件位置、2D控件宽度和2D控件高度,通过3D变换来设置3D网格模型的初始位置和初始大小;
[0038]具体的,所述3D变换包括3D空间变换和/或设置模型顶点坐标。所述3D空间变换是指三维空间中的平移、旋转、放大缩小的变换。所述终端根据所述2D控件位置、2D控件宽度以及2D控件高度,通过3D变换来设置3D网格模型的初始位置和初始大小。3D网格模型的初始位置和初始大小由3D动画的初始值来表征。所述3D动画的初始值是指设置3D网格模型的初始位置和初始大小时设置的3D空间变换和/或模型顶点坐标,使得3D网格模型渲染显示的图像与所述2D控件位置、2D控件宽度以及2D控件高度一致,从而所述3D网格模型渲染显示的图像在用户界面上与所述2D控件重叠。通过合理的设置3D动画初始值,有效的解决了在页面切换实现3D转场动画时,因为相对于待切换的所述2D控件突然变大、变小或位置偏移而导致的“闪屏”问题。
[0039]步骤112:从所述初始位置和初始大小开始执行所述3D动画标识对应的3D动画。
[0040]具体的,终端根据所述3D转场动画请求,从所述3D动画初始值开始执行所述3D动画标识对应的3D动画,并记录3D动画开始时间。所述3D动画可以是3D空间变换动画和/或3D网格模型顶点变形动画和/或淡入淡出(Alpha)动画。
[0041]具体的,终端在渲染每帧3D图像之前,依据所述3D动画初始值、所述3D动画持续时间、所述动画结束值和当前动画已经运行的时间,通过插值方式计算3D动画当前值。所述当前动画已经运行的时间由当前时间和所述3D动画开始时间确定。所述插值方式可以是线性插值或多项式插值等插值方式,所述3D动画当前值可以是3D空间变换和/或3D网格模型顶点坐标和/或3D网格模型顶点透明度(Alpha)的当前值;终端根据所述3D动画当前值,渲染变化后的3D网格模型为图像,再由用户界面模块显示;
[0042]进一步的,终端判断3D动画是否结束;如果3D动画没有结束,则继续执行3D动画。否则,终端结束3D动画,移除3D网格模型,停止3D渲染。具体的,终端将所述3D动画持续时间和所述当前动画已经运行的时间做比较,当所述当前动画已经运行的时间小于所述3D动画持续时间,则确定3D动画没有结束;当所述当前动画已经运行的时间大于等于所述3D动画持续时间,则确定3D动画已经结束。
[0043]从本发明实施例提供的技术方案可以看出,在接收到对2D控件执行3D转场动画的请求时,终端可以实现三维的转场动画效果,并且通过设置3D网格模型合适的3D动画初始值,使得3D网格模型渲染显示的图像与所述2D控件位置、2D控件宽度以及2D控件高度一致,从而所述3D网格模型渲染显示的图像在用户界面上与所述2D控件重叠,解决了从2D页面转换到3D动画时的“闪屏”问题,改善了用户的体验。
[0044]图2为本发明一实施例提供的对2D控件实现3D转场动画的装置结构示意图。参见图2,所述对2D控件执行3D转场动画的装置包括用户界面模块202、3D转场动画模块204和3D渲染模块206。
[0045]其中,用户界面模块202,用于向3D转场动画模块204发送对2D控件执行3D转场动画的请求,其中,所述3D转场动画请求包括所述2D控件的2D控件标识和所述2D控对应的3D动画标识;
[0046]3D转场动画模块204,用于根据用户界面模块202发送的2D控件标识,获取所述2D控件在用户界面上的2D控件位置、2D控件高度、2D控件宽度以及2D控件的渲染图像;根据用户界面模块202发送的3D动画标识,获取对应的3D网格模型;
[0047]3D渲染模块206,用于将所述2D控件的渲染图像映射到所述3D网格模型上;
[0048]进一步的,所述3D转场动画模块204,还用于根据所述2D页面位置、所述2D页面宽度和所述2D页面高度,通过3D变换来设置3D网格模型的初始位置和初始大小;从所述初始位置和初始大小开始执行所述3D动画标识对应的3D动画。
[0049]具体的,所述根据所述2D页面位置、所述2D页面宽度和所述2D页面高度,通过3D变换来设置3D网格模型的初始位置和初始大小,具体为:所述根据所述2D页面位置、所述2D页面宽度和所述2D页面高度,通过三维空间中的平移、旋转、放大缩小或设置3D网格模型的顶点坐标的方法,使得3D网格模型渲染显示的图像在用户界面上与所述2D控件重叠。
[0050]可选的,所述3D动画标识包括唯一标识3D动画的字符串、枚举类型或通用资源标识符。
[0051]可选的,所述3D动画包括3D空间变换动画和/或3D顶点变形动画和/或淡入淡出动画
[0052]本发明实施例提供的对2D控件执行3D转场动画的装置,与图1所述的方法实施例属于同一个构思,其具体实现过程详见图1所述的方法实施例,这里不再赘述。
[0053]图3为本发明一实施例提供的对2D控件实现3D转场动画方法的流程图。如图3所述,该方法包括如下步骤:
[0054]步骤301:用户界面模块向3D转场动画模块发送3D转场动画请求;其中,所述3D转场动画请求包括所述2D控件的2D控件标识和所述2D控对应的3D动画标识;
[0055]可选的,所述3D转场动画请求进一步还包括3D动画持续时间等参数、3D动画结束值等参数;
[0056]具体的,在用户界面模块向3D转场动画模块发送3D转场动画请求之前,用户界面模块显示2D控件,并监