CN112562049A - 一种播放系统形象的方法 - Google Patents
一种播放系统形象的方法 Download PDFInfo
- Publication number
- CN112562049A CN112562049A CN202110214929.4A CN202110214929A CN112562049A CN 112562049 A CN112562049 A CN 112562049A CN 202110214929 A CN202110214929 A CN 202110214929A CN 112562049 A CN112562049 A CN 112562049A
- Authority
- CN
- China
- Prior art keywords
- animation
- information
- frame
- slot
- bone
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000009877 rendering Methods 0.000 claims abstract description 12
- 210000000988 bone and bone Anatomy 0.000 claims description 94
- 230000008859 change Effects 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 230000008901 benefit Effects 0.000 abstract description 4
- 230000000875 corresponding effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000737241 Cocos Species 0.000 description 1
- 206010011224 Cough Diseases 0.000 description 1
- 208000004350 Strabismus Diseases 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2016—Rotation, translation, scaling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种播放系统形象的方法,包括:解析骨骼动画制作的系统形象动画资源得到解析动画数据,处理所述解析动画数据并生成包含各单个动画的完整信息的系统形象动画的动画库;根据当前场景确定即将播放的目标动画,从所述动画库中获取所述即将播放的目标动画的完整信息;对所述即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画。本发明的优点是通过骨骼动画制作系统形象动画,根据当前场景可以直接获取即将播放的目标动画,相比于普通帧动画的播放方式而言,显著地降低了CPU占用率。并且采用OpenCV对即将播放的系统形象动画的各帧动画进行渲染,不仅降低了播放引擎的启动延时,还使得播放引擎拥有更广的适用范围。
Description
技术领域
本发明涉及车载娱乐信息系统领域,特别是涉及一种播放系统形象的方法。
背景技术
目前,动画播放的几种常见方法有普通帧动画播放、H5(HyperText MarkupLanguage 5,超文本标记语言5)播放器播放骨骼动画和游戏引擎附带播放骨骼动画。
普通帧动画实际是对每一个动画的每一帧进行切图,动画资源的大小和动画的总帧数及动画的个数成正相关。由于播放帧动画实际上是播放一张张大的bitmap图片,相比于骨骼动画,帧动画存在资源占用大的问题,帧动画CPU占用更高。又由于帧动画的资源都是在资源库里,应用程序包打包后,无法再远程更新。
H5骨骼动画播放器运行在安卓平台的车载娱乐系统上,需要附属于WebView,WebView是android系统中一个非常重要的控件,用来展示web页面。由于部分车载娱乐系统并不能很好的支持WebView,可能会导致该类车型无法播放。且因为播放前需要先加载WebView,再播放动画,所以首次加载的时间较长,扩展性低。
游戏引擎虽然也能播放骨骼动画,但是骨骼动画并不是其主要业务,只是游戏精灵播放动画的一种方式。以Cocos 2DX游戏引擎为例,其里面还包含着Layer(层)、Scene(场景)和Director(导演)。这也导致了游戏引擎不仅启动时间长,而且占用的CPU和内存也较大。
发明内容
鉴于上述问题,提出了一种克服上述问题或者至少部分地解决上述问题的播放系统形象的方法。
特别地,根据本发明实施例的一方面,提供了一种播放系统形象的方法,包括:
解析骨骼动画制作的系统形象动画资源得到解析动画数据,处理所述解析动画数据并生成包含各单个动画的完整信息的系统形象动画的动画库;
根据当前场景确定即将播放的目标动画,从所述动画库中获取所述即将播放的目标动画的完整信息;
对所述即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画。
进一步地,所述系统形象动画资源包括纹理集图片、纹理集文本和动画集文本;
所述解析骨骼动画制作的系统形象动画资源得到解析动画数据的步骤包括:
解析所述纹理集文本,从所述纹理集文本中提取出所述纹理集图片的名称、位置和高宽以及所述纹理集图片中各组件的名称、高宽和各所述组件在所述纹理集图片中的相对位置作为所述解析动画数据的第一部分;
根据所述纹理集图片中各所述组件的名称、高宽和各所述组件在所述纹理集图片中的相对位置,从所述纹理集图片中剪裁出各所述组件,并将裁剪出的各所述组件和各所述组件的名称、高宽共同保存作为所述解析动画数据的第二部分;
解析所述动画集文本,从所述动画集文本中获取各单个动画的初始信息和各单个动画的子信息作为所述解析动画数据的第三部分。
进一步地,所述单个动画的完整信息包括单个动画的初始信息、单个动画的子信息和单个动画的每一帧的完整信息;
所述处理所述解析动画数据并生成包含系统形象动画的动画库的步骤包括:
从所述解析动画数据中提取各单个动画的初始信息和各单个动画的子信息;
根据各单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息;
分别将单个动画的初始信息、子信息和该单个动画的每一帧的完整信息组合在一起形成所述单个动画的完整信息,将所有的单个动画的完整信息组合到一起形成所述系统形象动画库。
进一步地,所述单个动画的初始信息包括动画集信息、骨骼信息、插槽信息和组件信息;
所述单个动画的子信息包括各单个动画的基本信息、骨骼的运动轨迹和插槽的显示轨迹;
所述从所述解析动画数据中提取各单个动画的初始信息和单个动画的子信息的步骤包括:
从所述解析动画数据中提取出所述动画集信息、所述骨骼信息、所述插槽信息和所述组件信息作为各单个动画的初始信息;
从所述解析动画数据中提取出各单个动画的所述基本信息、所述骨骼的运动轨迹和所述插槽的显示轨迹;
将各单个动画的所述基本信息、所述初始信息、所述骨骼的运动轨迹和所述插槽的显示轨迹组合成各单个动画的完整信息。
进一步地,所述骨骼信息包括骨骼父子关系、各单个动画中骨骼的初始位置和骨骼缩放大小;
所述插槽信息包括插槽父子关系、插槽下组件列表和插槽显示状态;
所述组件信息包括组件相对于插槽的位置;
所述各单个动画的基本信息包括各单个动画的总帧数;
所述骨骼的运动轨迹包括骨骼平移轨迹、包括骨骼的旋转角度在内的骨骼旋转轨迹和骨骼缩放轨迹;
所述插槽的显示轨迹包括插槽显示轨迹和插槽渐变轨迹;
所述根据各单个动画的初始信息和单个动画的子信息计算出各单个动画的每一帧的完整信息的步骤包括:
对于各单个动画,从该单个动画的骨骼信息、插槽信息、组件信息以及骨骼的运动轨迹中提取该单个动画的初始数据,所述初始数据包括骨骼的初始位置、骨骼缩放大小、骨骼旋转角度、插槽下组件列表和组件相对插槽的位置;
从该单个动画的基本信息中提取该单个动画的总帧数,创建与所述总帧数长度相同的列表以用于保存该单个动画的每一帧的完整信息;
从该单个动画的骨骼的运动轨迹中提取该单个动画的骨骼平移轨迹、骨骼旋转轨迹和骨骼缩放轨迹,根据所述骨骼平移轨迹、所述骨骼旋转轨迹和所述骨骼缩放轨迹以及所述初始数据中骨骼的初始位置、骨骼缩放大小和骨骼旋转角度,计算出每一帧中骨骼的位置、旋转角度和实际大小;
从该单个动画的插槽的显示轨迹中提取该单个动画的插槽显示轨迹,根据所述插槽显示轨迹、所述插槽下组件列表和所述插槽显示状态计算出每一帧中插槽是否显示以及显示的插槽下的组件;
从该单个动画的插槽的显示轨迹中提取该单个动画的插槽渐变轨迹,读取所述插槽渐变轨迹中的持续时间、透明度、变化曲线,结合上一帧轨迹结束时的透明度或初始透明度,计算出每一帧中插槽的透明度;
将计算得到的每一帧中骨骼的位置、旋转角度和实际大小、插槽是否显示以及显示的插槽下的组件、插槽的透明度组合为该单个动画的每一帧的完整信息保存在所述列表中。
进一步地,根据所述骨骼平移轨迹和所述初始数据中骨骼的初始位置计算出每一帧中骨骼的位置,包括:
根据所述骨骼平移轨迹中x、y轴的相对平移距离、上一帧平移结束后的位置和平移的持续时间,计算出每一帧中骨骼的位置,其中,在进行第一帧计算时,以所述骨骼的初始位置作为上一帧平移结束后的位置。
进一步地,根据所述骨骼旋转轨迹和所述初始数据中骨骼旋转角度计算出每一帧中骨骼的旋转角度,包括:
根据所述骨骼旋转轨迹中角度变化曲线、上一帧轨迹结束后的旋转角度和旋转的持续时间,计算出每一帧中骨骼的旋转角度,其中,在进行第一帧计算时,以默认为0的骨骼初始旋转角度作为上一帧轨迹结束后的旋转角度。
进一步地,所述根据当前场景确定即将播放的目标动画的步骤,包括:
当场景发生变化时,判断当前播放的动画是否与变化后的当前场景匹配;
若匹配,则继续播放当前的动画;
若不匹配,则根据所述当前场景确定与所述当前场景对应的即将播放的目标动画。
进一步地,所述根据所述当前场景确定与所述当前场景对应的即将播放的目标动画的步骤包括:
根据预设的场景与动画的对应关系查找出与所述当前场景对应的动画;
判断所述动画库中是否存在所述与所述当前场景对应的动画;
若存在,则以所述与所述当前场景对应的动画作为所述即将播放的目标动画;
若不存在,则以默认动画作为所述即将播放的目标动画。
进一步地,所述各单个动画的基本信息包括各单个动画的总帧数和设定播放次数;
所述对所述即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画的步骤包括:
步骤S31,获取所述目标动画的下一帧的完整信息作为当前帧数据;
步骤S32,渲染所述当前帧数据中所有所述组件;
步骤S33,根据所述目标动画的总帧数判断所述目标动画是否存在下一帧,若存在,返回至步骤S31,若不存在,则执行步骤S34;
步骤S34,累计播放次数加1,且将当前播放帧数重置为0;
步骤S35,根据所述目标动画的累计播放次数和设定播放次数判断所述目标动画是否播放完毕,若是,则结束播放,否则,返回至步骤S31。
本发明实施例通过骨骼动画制作系统形象动画,根据当前场景可以从系统形象库中直接获取即将播放的目标动画,相比于普通帧动画的播放方式而言,显著地降低了CPU占用率,提高了CPU的运行效率。
进一步地,在本发明中,可以采用OpenCV对即将播放的系统形象动画的各帧动画进行渲染,从而降低播放引擎的启动延时。由于OpenCV可以在Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux和Mac OS等各大平台上运行,因此,可以使播放引擎具有更广的适用范围。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明一个实施例的播放系统形象的方法流程图;
图2是根据本发明一个实施例的生成系统形象动画库的流程图;
图3是根据本发明一个实施例的切换动画的流程图;
图4是根据本发明一个实施例的渲染目标动画的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述问题,本发明实施例提供了一种播放系统形象的方法,图1是根据本发明一个实施例的播放系统形象的方法流程图。参见图1,该方法至少包括步骤S102至步骤S106。
步骤S102,解析骨骼动画制作的系统形象动画资源得到解析动画数据,处理解析动画数据并生成包含各单个动画的完整信息的系统形象动画的动画库。
步骤S104,根据当前场景确定即将播放的目标动画,从动画库中获取即将播放的目标动画的完整信息。
步骤S106,对即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画。
本发明实施例通过骨骼动画制作系统形象动画,根据当前场景可以从系统形象库中直接获取即将播放的目标动画,相比于普通帧动画的播放方式而言,显著地降低了CPU占用率,提高了CPU的运行效率。
上文步骤S102中,系统形象动画资源一般性地可包括纹理集图片、纹理集文本和动画集文本。其中,纹理集图片是所有动画帧中的组件的合集,汇总合成在一张png图片上。纹理集文本用于描述组件在纹理集图片中的位置、大小和名称等信息,便于将组件从纹理集图片中裁剪出来。动画集文本是用于描述动单个动画的初始信息和单个动画的子信息的文本文件,该文本文件可以为json格式。
参照图2,在本发明一实施例中,在解析骨骼动画制作的系统形象动画资源得到解析动画数据时,可以先解析纹理集文本,从纹理集文本中提取出纹理集图片的名称、位置和高宽以及纹理集图片中各组件的名称、高宽和各组件在纹理集图片中的相对位置作为解析动画数据的第一部分。然后,根据纹理集图片中各组件的名称、高宽和各组件在纹理集图片中的相对位置,从纹理集图片中剪裁出各组件,并将裁剪出的各组件和各组件的名称、高宽共同保存作为解析动画数据的第二部分。最后,解析动画集文本,从动画集文本中获取动各单个动画的初始信息和各单个动画的子信息作为解析动画数据的第三部分。需要说明的是,解析动画集文本与解析纹理集文本互不影响,两者可以同时进行,以提高解析效率。
在一种具体的实施方案中,可以使用Gson库对纹理集文本和动画集文本进行解析。例如,在采用Gson解析纹理集文本时,可以得到纹理集图片中电话的名称为Phone,高宽为97×91,在纹理集图片中的位置为(1,497)。当然,也可以采用其他方式进行解析,本发明实施例对此不作具体限制。
单个动画的完整信息包括单个动画的初始信息、单个动画的子信息和单个动画的每一帧的完整信息。上文步骤S102中,在处理解析动画数据并生成包含系统形象动画的动画库时,可以先从解析动画数据中提取各单个动画的初始信息和各单个动画的子信息,根据各单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息。然后,分别将单个动画的初始信息、子信息和该单个动画的每一帧的完整信息组合在一起形成单个动画的完整信息。最后,将所有的单个动画的完整信息组合到一起形成系统形象动画库。
在本发明一实施例中,单个动画的初始信息可包括动画集信息、骨骼信息、插槽信息和组件信息。各单个动画的子信息可包括各单个动画的基本信息、骨骼的运动轨迹和插槽的显示轨迹。在从解析动画数据中提取各单个动画的初始信息和各单个动画的子信息时,可以先从解析动画数据中提取出动画集信息、骨骼信息、插槽信息和组件信息。然后,从解析动画数据中提取出各单个动画的基本信息、骨骼的运动轨迹和插槽的显示轨迹。
为了更加清楚的说明如何根据单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息,下面首先对解析动画集文本时涉及到的相关名称及其具体内容进行介绍。
动画集信息,包括动画集名称、动画的帧率、画布的大小、形象在画布中的初始位置和动画集中的默认动画名称。
骨骼信息,包括骨骼父子关系(包括骨骼名称、父骨骼名称)、各单个动画中骨骼的初始位置、骨骼缩放大小和骨骼偏移位置。骨骼信息是骨骼动画的灵魂,系统形象动画中的各种动作均是通过骨骼的动作传导的。在实际的动画中,骨骼除了根据自己移动,还会受到父骨骼的移动而移动。例如,父骨骼在x轴上平移30像素,相对地,子骨骼也会在跟着在x轴上平移30像素,并加上子骨骼自己的移动。
插槽信息,包括插槽父子关系(包括插槽名称、父插槽名称)、插槽下组件列表和插槽显示状态。实际上,插槽是依附于骨骼的,但是相比于骨骼,插槽还具有是否显示状态。也就是说,通过设置插槽的显示状态,可以直接控制用户是否能看到该插槽上的组件。
组件信息,包括组件的名称、组件相对于插槽的位置、组件的大小和组件缩放大小。组件是依附于插槽的,一个插槽可以放置多个组件,但一个插槽同一时间只能显示一个组件。基于此,系统形象动画的换肤可以通过替换纹理集图片来实现。
各单个动画的基本信息,包括各单个动画名称、单个动画的总帧数以及设定播放次数。
骨骼的运动轨迹,包括骨骼平移轨迹、包括骨骼的旋转角度在内的骨骼旋转轨迹和骨骼缩放轨迹。由于,骨骼存在父子关系,父骨骼的移动会带动子骨骼移动。因此,在计算骨骼的位置、旋转角度和缩放大小时,需要同时考虑父骨骼的状态。另外,骨骼的关系中还有IK(Inverse Kinematics,反向动力学)约束,添加IK约束的两个骨骼的运动轨迹也会相互影响,用来实现由下而上的驱动。例如,做俯卧撑时,手撑住底面,支起身体。可以理解,IK约束与IF(Forward Kinematics,正向动力学)约束相反,IF约束则是用来实现由上而下的驱动。例如,大臂带动小臂、大腿带动小腿等。
插槽的显示轨迹,包括插槽显示轨迹和插槽渐变轨迹。
事实上,在从解析动画数据中提取各单个动画的初始信息和各单个动画的子信息时,可以得到各单个动画中每一帧的部分信息。例如,动画music中的手臂骨骼,动画中只会记录其在一个完成的动作里面的起始位置、平移大小、旋转角度和持续时间,这些数据在从解析动画数据中提取各单个动画的初始信息和各单个动画的子信息时可以直接得到。但每一帧中各个骨骼在什么位置、需要旋转多少角度、插槽是否显示、插槽的透明度是多少和插槽上显示哪个组件,还需要综合动画的初始位置、运动轨迹、骨骼父子关系和骨骼的IK约束来一起计算。
具体地,对于单个动画而言,根据各单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息的步骤包括:
第一步,从该单个动画的骨骼信息、插槽信息、组件信息以及骨骼的运动轨迹中提取该单个动画的初始数据,初始数据包括骨骼的初始位置、骨骼缩放大小、骨骼旋转角度、插槽下组件列表(例如,眼睛是一个插槽,睁眼、眯眼和闭眼的图片是这个插槽下的组件,通过控制插槽显示第几个组件来控制眼睛的睁闭)和组件相对插槽的位置。
第二步,从该单个动画的基本信息中提取该单个动画的总帧数,创建与总帧数长度相同的列表以用于保存该单个动画的每一帧的完整信息。
第三步,从该单个动画的骨骼的运动轨迹中提取该单个动画的骨骼平移轨迹、骨骼旋转轨迹和骨骼缩放轨迹,根据骨骼平移轨迹、骨骼旋转轨迹和骨骼缩放轨迹以及初始数据中骨骼的初始位置、骨骼缩放大小和骨骼旋转角度,计算出每一帧中骨骼的位置、旋转角度和实际大小。
第四步,从该单个动画的插槽的显示轨迹中提取该单个动画的插槽显示轨迹,根据插槽显示轨迹、插槽下组件列表和插槽显示状态计算出每一帧中插槽是否显示以及显示的插槽下的组件。需要说明的是,显示轨迹是指插槽在一个时间段里面该显示插槽下的组件列表中的第几个。例如,电话插槽在0到17帧是隐藏的,17到35帧显示的电话1,35到60帧显示的是电话2,60到76帧又隐藏,那么其对应的持续时间和显示值应该是(17,-1),(18,0),(25,1),(16,-1)。如上,通过持续时间、当前显示值就能计算出每一动画帧中该插槽是否该显示以及显示的哪一插槽组件。
第五步,从该单个动画的插槽的显示轨迹中提取该单个动画的插槽渐变轨迹,读取插槽渐变轨迹中的持续时间、透明度、变化曲线,结合上一帧轨迹结束时的透明度或初始透明度,计算出每一帧中插槽的透明度。具体地,默认初始透明度是100%,也就是不透明。以系统形象动画里面的打电话动画为例,在打电话动画中,电话插槽在0到17帧透明度是0,17到25帧透明度从0变到100,25到52帧透明度保持为100,52到60帧透明度从100变到0,60到76帧保持透明度为0,那么其对应的持续时间和透明度应该是(17,[0]),(8,[0,100]),(27,[100]),(8,[100,0]),(16,[0])。
第六步,将计算得到的每一帧中骨骼的位置、旋转角度和实际大小、插槽是否显示以及显示的插槽下的组件、插槽的透明度组合为该单个动画的每一帧的完整信息保存在列表中。
在一种具体的实施方案中,在根据骨骼平移轨迹和初始数据中骨骼的初始位置计算出每一帧中骨骼的位置时,可以根据骨骼平移轨迹中x、y轴的相对平移距离、上一帧平移结束后的位置和平移的持续时间,计算出每一帧中骨骼的位置。其中,在进行第一帧计算时,以骨骼的初始位置作为上一帧平移结束后的位置。
在一种具体的实施方案中,在根据骨骼旋转轨迹和初始数据中骨骼旋转角度计算出每一帧中骨骼的旋转角度时,可以根据骨骼旋转轨迹中角度变化曲线、上一帧轨迹结束后的旋转角度和旋转的持续时间,计算出每一帧中骨骼的旋转角度。其中,在进行第一帧计算时,以默认为0的骨骼初始旋转角度作为上一帧轨迹结束后的旋转角度。
值得注意的是,无论是骨骼平移轨迹、骨骼旋转轨迹还是骨骼缩放轨迹,都不仅仅支持线性变化,都可以自定义曲线。例如,骨骼平移轨迹使用的是抛物线y=x²,从第1帧(1,5)移动到第5帧(31,5),那么它在各帧的位置变化应该是(1,5)、(2,5)、(6,5)、(15,5)、(31,5),而不是(1,5)、(8.5,5)、(16,5)、(23.5,5)、(31,5)。同样地,骨骼旋转轨迹中也包含了持续时间、旋转角度和变化曲线,通过持续时间、旋转角度、变化曲线以及上一次轨迹结束时的状态(骨骼的初始旋转角度均为0),即可计算出每一动画帧中骨骼的旋转角度。缩放轨迹则相对较为复杂,除了包含持续时间、变化曲线,还有x和y两个维度的缩放大小,在计算每一动画帧骨骼的大小时,需要分x和y两个维度一起计算,最后得出每一帧中骨骼的实际大小。
上文步骤S104中,根据当前场景确定即将播放的目标动画的步骤可以包括:当场景发生变化时,判断当前播放的动画是否与变化后的当前场景匹配。若匹配,则继续播放当前的动画。若不匹配,则根据当前场景确定与当前场景对应的即将播放的目标动画。也就是说,系统形象的动画切换由场景触发,如系统在播放音乐时,系统形象能通过OPENAPI接口实时监听音乐的播放状态,播放音乐动画。如果车上有人抽烟时,系统形象通过OPENAPI接口从感知app(该app用于识别用户行为和人脸等功能)中监听人的行为、表情等信息的回调,根据人的行为、表情播放相应的动画,例如用户抽烟时播放咳嗽动画。
参照图3,进一步地,在根据当前场景确定与当前场景对应的即将播放的目标动画时,可以先根据预设的场景与动画的对应关系查找与当前场景对应的动画。然后,判断动画库中是否存在与当前场景对应的动画。若存在,则以与当前场景对应的动画作为即将播放的目标动画。若不存在,则以默认动画作为即将播放的目标动画。
参照图4,在一种具体的实施方案中,各单个动画的基本信息可包括各单个动画的总帧数和设定播放次数。对即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画的步骤可以包括以下步骤。
步骤S31,获取目标动画的下一帧的完整信息作为当前帧数据。
具体地,本步骤中获取的目标动画的下一帧的完整信息包括骨骼在该帧中的位置、旋转角度和缩放大小,插槽在该帧中的显示状态、透明度和插槽显示的组件名称,组件的大小、相对位置等。
步骤S32,渲染当前帧数据中所有组件。
本步骤中,使用openCV渲染动画帧中所有组件。具体地,使用openCV按照插槽的顺序,和组件的绝对位置、大小、角度,依次渲染其上的组件。这里插槽是有图层概念的,比如系统形象的眼睛组件图层高于系统形象的脸部,所以在渲染的时候,需要先渲染脸部再渲染眼睛组件,否则会导致眼睛组件被脸部组件盖住的情况。
步骤S33,根据目标动画的总帧数判断目标动画是否存在下一帧,若存在,返回至步骤S31,若不存在,则执行步骤S34。
步骤S34,累计播放次数加1,且将当前播放帧数重置为0。
步骤S35,根据目标动画的累计播放次数和设定播放次数判断目标动画是否播放完毕,若是,则结束播放,否则,返回至步骤S31。
具体地,如果目标动画的累积播放次数大于或等于设定播放次数,则表明目标动画已播放完毕,结束该动画的播放。如果目标动画的累积播放次数小于设定播放次数,则继续从头开始播放该动画。
本实施例中采用OpenCV对即将播放的系统形象动画的各帧动画进行渲染,从而降低播放引擎的启动延时。由于OpenCV可以在Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux和Mac OS等各大平台上运行,因此,可以使播放引擎具有更广的适用范围。
根据本发明任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下技术效果:
本发明实施例通过骨骼动画制作系统形象动画,根据当前场景可以从系统形象库中直接获取即将播放的目标动画,相比于普通帧动画的播放方式而言,显著地降低了CPU占用率,提高了CPU的运行效率。并且,在本发明中,可以采用OpenCV对即将播放的系统形象动画的各帧动画进行渲染,从而降低播放引擎的启动延时。由于OpenCV可以在Windows、Android、Maemo、FreeBSD、OpenBSD、iOS、Linux和Mac OS等各大平台上运行,因此,可以使播放引擎具有更广的适用范围。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (10)
1.一种播放系统形象的方法,其特征在于,包括:
解析骨骼动画制作的系统形象动画资源得到解析动画数据,处理所述解析动画数据并生成包含各单个动画的完整信息的系统形象动画的动画库;
根据当前场景确定即将播放的目标动画,从所述动画库中获取所述即将播放的目标动画的完整信息;
对所述即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画。
2.根据权利要求1所述的播放系统形象的方法,其特征在于,所述系统形象动画资源包括纹理集图片、纹理集文本和动画集文本;
所述解析骨骼动画制作的系统形象动画资源的步骤包括:
解析所述纹理集文本,从所述纹理集文本中提取出所述纹理集图片的名称、位置和高宽以及所述纹理集图片中各组件的名称、高宽和各所述组件在所述纹理集图片中的相对位置作为所述解析动画数据的第一部分;
根据所述纹理集图片中各所述组件的名称、高宽和各所述组件在所述纹理集图片中的相对位置,从所述纹理集图片中剪裁出各所述组件,并将裁剪出的各所述组件和各所述组件的名称、高宽共同保存作为所述解析动画数据的第二部分;
解析所述动画集文本,从所述动画集文本中获取各单个动画的初始信息和各单个动画的子信息作为所述解析动画数据的第三部分。
3.根据权利要求2所述的播放系统形象的方法,其特征在于,所述单个动画的完整信息包括单个动画的初始信息、单个动画的子信息和单个动画的每一帧的完整信息;
所述处理所述解析动画数据并生成包含系统形象动画的动画库的步骤包括:
从所述解析动画数据中提取各单个动画的初始信息和各单个动画的子信息;
根据各单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息;
分别将单个动画的初始信息、子信息和该单个动画的每一帧的完整信息组合在一起形成所述单个动画的完整信息,将所有的单个动画的完整信息组合到一起形成所述系统形象动画库。
4.根据权利要求3所述的播放系统形象的方法,其特征在于,所述单个动画的初始信息包括动画集信息、骨骼信息、插槽信息和组件信息;
所述单个动画的子信息包括单个动画的基本信息、骨骼的运动轨迹和插槽的显示轨迹;
所述从所述解析动画数据中提取各单个动画的初始信息和单个动画的子信息的步骤包括:
从所述解析动画数据中提取出所述动画集信息、所述骨骼信息、所述插槽信息和所述组件信息;
从所述解析动画数据中提取出各单个动画的所述基本信息、所述骨骼的运动轨迹和所述插槽的显示轨迹。
5.根据权利要求4所述的播放系统形象的方法,其特征在于,
所述骨骼信息包括骨骼父子关系、各单个动画中骨骼的初始位置和骨骼缩放大小;
所述插槽信息包括插槽父子关系、插槽下组件列表和插槽显示状态;
所述组件信息包括组件相对于插槽的位置;
所述各单个动画的基本信息包括各单个动画的总帧数;
所述骨骼的运动轨迹包括骨骼平移轨迹、包括骨骼的旋转角度在内的骨骼旋转轨迹和骨骼缩放轨迹;
所述插槽的显示轨迹包括插槽显示轨迹和插槽渐变轨迹;
所述根据各单个动画的初始信息和各单个动画的子信息计算出各单个动画的每一帧的完整信息的步骤包括:
对于各单个动画,从该单个动画的骨骼信息、插槽信息、组件信息以及骨骼的运动轨迹中提取该单个动画的初始数据,所述初始数据包括骨骼的初始位置、骨骼缩放大小、骨骼旋转角度、插槽下组件列表和组件相对插槽的位置;
从该单个动画的基本信息中提取该单个动画的总帧数,创建与所述总帧数长度相同的列表以用于保存该单个动画的每一帧的完整信息;
从该单个动画的骨骼的运动轨迹中提取该单个动画的骨骼平移轨迹、骨骼旋转轨迹和骨骼缩放轨迹,根据所述骨骼平移轨迹、所述骨骼旋转轨迹和所述骨骼缩放轨迹以及所述初始数据中骨骼的初始位置、骨骼缩放大小和骨骼旋转角度,计算出每一帧中骨骼的位置、旋转角度和实际大小;
从该单个动画的插槽的显示轨迹中提取该单个动画的插槽显示轨迹,根据所述插槽显示轨迹、所述插槽下组件列表和所述插槽显示状态计算出每一帧中插槽是否显示以及显示的插槽下的组件;
从该单个动画的插槽的显示轨迹中提取该单个动画的插槽渐变轨迹,读取所述插槽渐变轨迹中的持续时间、透明度、变化曲线,结合上一帧轨迹结束时的透明度或初始透明度,计算出每一帧中插槽的透明度;
将计算得到的每一帧中骨骼的位置、旋转角度和实际大小、插槽是否显示以及显示的插槽下的组件、插槽的透明度组合为该单个动画的每一帧的完整信息保存在所述列表中。
6.根据权利要求5所述的播放系统形象的方法,其特征在于,
根据所述骨骼平移轨迹和所述初始数据中骨骼的初始位置计算出每一帧中骨骼的位置,包括:
根据所述骨骼平移轨迹中x、y轴的相对平移距离、上一帧平移结束后的位置和平移的持续时间,计算出每一帧中骨骼的位置,其中,在进行第一帧计算时,以所述骨骼的初始位置作为上一帧平移结束后的位置。
7.根据权利要求5所述的播放系统形象的方法,其特征在于,
根据所述骨骼旋转轨迹和所述初始数据中骨骼旋转角度计算出每一帧中骨骼的旋转角度,包括:
根据所述骨骼旋转轨迹中角度变化曲线、上一帧轨迹结束后的旋转角度和旋转的持续时间,计算出每一帧中骨骼的旋转角度,其中,在进行第一帧计算时,以默认为0的骨骼初始旋转角度作为上一帧轨迹结束后的旋转角度。
8.根据权利要求1所述的播放系统形象的方法,其特征在于,所述根据当前场景确定即将播放的目标动画的步骤,包括:
当场景发生变化时,判断当前播放的动画是否与变化后的当前场景匹配;
若匹配,则继续播放当前的动画;
若不匹配,则根据所述当前场景确定与所述当前场景对应的即将播放的目标动画。
9.根据权利要求8所述的播放系统形象的方法,其特征在于,所述根据所述当前场景确定与所述当前场景对应的即将播放的目标动画的步骤包括:
根据预设的场景与动画的对应关系查找出与所述当前场景对应的动画;
判断所述动画库中是否存在所述与所述当前场景对应的动画;
若存在,则以所述与所述当前场景对应的动画作为所述即将播放的目标动画;
若不存在,则以默认动画作为所述即将播放的目标动画。
10.根据权利要求4所述的播放系统形象的方法,其特征在于,
所述各单个动画的基本信息包括各单个动画的总帧数和设定播放次数;
所述对所述即将播放的目标动画的各帧动画依次进行渲染,并逐帧播放渲染后的各帧动画的步骤包括:
步骤S31,获取所述目标动画的下一帧的完整信息作为当前帧数据;
步骤S32,渲染所述当前帧数据中所有所述组件;
步骤S33,根据所述目标动画的总帧数判断所述目标动画是否存在下一帧,若存在,返回至步骤S31,若不存在,则执行步骤S34;
步骤S34,累计播放次数加1,且将当前播放帧数重置为0;
步骤S35,根据所述目标动画的累计播放次数和设定播放次数判断所述目标动画是否播放完毕,若是,则结束播放,否则,返回至步骤S31。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214929.4A CN112562049B (zh) | 2021-02-26 | 2021-02-26 | 一种播放系统形象的方法 |
PCT/CN2021/111678 WO2022179054A1 (zh) | 2021-02-26 | 2021-08-10 | 一种播放系统形象的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110214929.4A CN112562049B (zh) | 2021-02-26 | 2021-02-26 | 一种播放系统形象的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112562049A true CN112562049A (zh) | 2021-03-26 |
CN112562049B CN112562049B (zh) | 2021-05-18 |
Family
ID=75034800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110214929.4A Active CN112562049B (zh) | 2021-02-26 | 2021-02-26 | 一种播放系统形象的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112562049B (zh) |
WO (1) | WO2022179054A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022179054A1 (zh) * | 2021-02-26 | 2022-09-01 | 亿咖通(湖北)科技有限公司 | 一种播放系统形象的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008100427A1 (en) * | 2007-02-13 | 2008-08-21 | Jaewoo Jung | Systems and methods for generating personalized computer animation using game play data |
CN108010112A (zh) * | 2017-11-28 | 2018-05-08 | 腾讯数码(天津)有限公司 | 动画处理方法、装置及存储介质 |
CN109636884A (zh) * | 2018-10-25 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 动画处理方法、装置及设备 |
CN109658484A (zh) * | 2018-12-21 | 2019-04-19 | 上海哔哩哔哩科技有限公司 | 一种动画自动生成方法及动画自动生成系统 |
CN111242688A (zh) * | 2020-01-13 | 2020-06-05 | Oppo广东移动通信有限公司 | 动画资源的制作方法、装置、移动终端和存储介质 |
CN111462287A (zh) * | 2020-03-31 | 2020-07-28 | 网易(杭州)网络有限公司 | 游戏中骨骼动画的数据处理方法、装置以及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110020370B (zh) * | 2017-12-25 | 2023-03-14 | 阿里巴巴集团控股有限公司 | 在客户端应用中实现动画的方法、装置及动画脚本的框架 |
WO2020010530A1 (en) * | 2018-07-10 | 2020-01-16 | Microsoft Technology Licensing, Llc | Automatically generating motions of an avatar |
CN112235635B (zh) * | 2019-07-15 | 2023-03-21 | 腾讯科技(北京)有限公司 | 动画显示方法、装置、电子设备及存储介质 |
CN112562049B (zh) * | 2021-02-26 | 2021-05-18 | 湖北亿咖通科技有限公司 | 一种播放系统形象的方法 |
-
2021
- 2021-02-26 CN CN202110214929.4A patent/CN112562049B/zh active Active
- 2021-08-10 WO PCT/CN2021/111678 patent/WO2022179054A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008100427A1 (en) * | 2007-02-13 | 2008-08-21 | Jaewoo Jung | Systems and methods for generating personalized computer animation using game play data |
CN108010112A (zh) * | 2017-11-28 | 2018-05-08 | 腾讯数码(天津)有限公司 | 动画处理方法、装置及存储介质 |
CN109636884A (zh) * | 2018-10-25 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 动画处理方法、装置及设备 |
CN109658484A (zh) * | 2018-12-21 | 2019-04-19 | 上海哔哩哔哩科技有限公司 | 一种动画自动生成方法及动画自动生成系统 |
CN111242688A (zh) * | 2020-01-13 | 2020-06-05 | Oppo广东移动通信有限公司 | 动画资源的制作方法、装置、移动终端和存储介质 |
CN111462287A (zh) * | 2020-03-31 | 2020-07-28 | 网易(杭州)网络有限公司 | 游戏中骨骼动画的数据处理方法、装置以及电子设备 |
Non-Patent Citations (2)
Title |
---|
周华民,刘芬,张云,李德群: "虚拟注射机系统的设计与开发", 《华中科技大学学报(自然科学版)》 * |
朱挺杰, 张申生, 王江春, 姚挺: "支持多模即时控制的角色动画库", 《计算机仿真》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022179054A1 (zh) * | 2021-02-26 | 2022-09-01 | 亿咖通(湖北)科技有限公司 | 一种播放系统形象的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112562049B (zh) | 2021-05-18 |
WO2022179054A1 (zh) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210272161A1 (en) | Method for serving interactive content to a user | |
CN108010112B (zh) | 动画处理方法、装置及存储介质 | |
US7589732B2 (en) | System and method of integrated spatial and temporal navigation | |
US6466213B2 (en) | Method and apparatus for creating personal autonomous avatars | |
KR100720309B1 (ko) | 자동 3차원 모델링 시스템 및 방법 | |
JP2021517309A (ja) | 画像処理方法、装置、コンピュータプログラム及びコンピュータデバイス | |
EP3729242A1 (en) | Methods and system for generating and displaying 3d videos in a virtual, augmented, or mixed reality environment | |
US6061054A (en) | Method for multimedia presentation development based on importing appearance, function, navigation, and content multimedia characteristics from external files | |
CN112154658A (zh) | 图像处理装置、图像处理方法和程序 | |
US20080055306A1 (en) | Virtual three-dimensional environment | |
US20120176516A1 (en) | Augmented reality system | |
US20060022983A1 (en) | Processing three-dimensional data | |
WO2002037471A2 (en) | Interactive character system | |
CN112070864A (zh) | 动画渲染方法、装置、计算机可读存储介质和计算机设备 | |
CN112933606B (zh) | 游戏场景转换方法及装置、存储介质、计算机设备 | |
US20090262139A1 (en) | Video image display device and video image display method | |
CN112562049B (zh) | 一种播放系统形象的方法 | |
CN111881395A (zh) | 页面的呈现方法、装置、设备及计算机可读存储介质 | |
CN111638784A (zh) | 人脸表情互动方法、互动装置以及计算机存储介质 | |
Thorn | Learn unity for 2d game development | |
CN114092370A (zh) | 一种图像展示方法、装置、计算机设备及存储介质 | |
US20040174365A1 (en) | Method and system for computer animation | |
CA2457839C (en) | Automatic 3d modeling system and method | |
US20050021552A1 (en) | Video playback image processing | |
Van der Spuy | Learn Pixi. js |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220330 Address after: 430000 No. b1336, chuanggu startup area, taizihu cultural Digital Creative Industry Park, No. 18, Shenlong Avenue, Wuhan Economic and Technological Development Zone, Wuhan, Hubei Province Patentee after: Yikatong (Hubei) Technology Co.,Ltd. Address before: No.c101, chuanggu start up area, taizihu cultural Digital Industrial Park, No.18 Shenlong Avenue, Wuhan Economic Development Zone, Hubei Province Patentee before: HUBEI ECARX TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |