CN107180444B - 一种动画生成方法、装置、终端和*** - Google Patents

一种动画生成方法、装置、终端和*** Download PDF

Info

Publication number
CN107180444B
CN107180444B CN201710330863.9A CN201710330863A CN107180444B CN 107180444 B CN107180444 B CN 107180444B CN 201710330863 A CN201710330863 A CN 201710330863A CN 107180444 B CN107180444 B CN 107180444B
Authority
CN
China
Prior art keywords
animation
information
model
grid
state
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
Application number
CN201710330863.9A
Other languages
English (en)
Other versions
CN107180444A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710330863.9A priority Critical patent/CN107180444B/zh
Publication of CN107180444A publication Critical patent/CN107180444A/zh
Application granted granted Critical
Publication of CN107180444B publication Critical patent/CN107180444B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72427User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality for supporting games or graphical animations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种动画生成方法、装置、终端和***,本发明通过预先生成动画模型的静态网格,从而提高运行时渲染效率,避免动态骨骼动画带来的性能消耗,提升渲染效率,特别是在场景中大量使用同类模型时,会显著提升在手机上的表现,解决因骨骼动画模型过多导致的卡顿问题。本发明在现有的方案基础上,保证方便美术师或动画师快速编辑的同时,在运行时使用静态网格来替换骨骼动画模型上的蒙皮网格,节省了大量骨骼更新和蒙皮计算的时间,提升渲染效率,从而解决大量动画模型同屏显示的问题。

Description

一种动画生成方法、装置、终端和***
技术领域
本发明涉及计算机技术领域,尤其涉及一种动画生成方法、装置、终端和***。
背景技术
虽然当前手机性能已经有很大的提升,但是在面对屏幕中需要显示大量动画模型存在时依然有其局限性,会出现卡顿,显示不流畅等一系列问题,会严重游戏的体验,破坏玩家的沉浸感,而大量动画模型同屏显示又是大部分***的刚需,因此如何优化大量动画模型同屏显示是多数***需要面对的一个难题。
发明内容
本发明的目的是提供一种动画生成方法,在运行时直接用新生成的可以被Unity的Draw Call Batching技术处理的静态网格替换蒙皮网格,通过不断替换网格的方式模拟动画,节省大量骨骼更新和蒙皮计算的时间。
根据本发明的一方面,提供了一种动画生成方法,包括:
加载预先建立的动画模型;
获取所述动画模型中的状态机信息和混合树信息;
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
根据所述静态网格生成动画。
根据本发明的第二方面,提供了一种动画生成装置,包括:
模型加载模块,用于加载预先建立的动画模型;
第一信息获取模块,用于获取所述动画模型中的状态机信息和混合树信息;
动作信息获取模块,用于根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
静态网格生成模块,用于根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
指令解析模块,用于获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
静态网格提取模块,用于根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
动画生成模块,用于根据所述静态网格生成动画。
根据本发明的第三方面,提供了一种终端,包括前述的装置。
根据本发明的第四方面,提供了一种动画生成***,包括服务器和前述的终端,所述终端包括前述的装置。
本发明提供的一种动画生成方法、装置、终端和***,通过加载预先建立的动画模型;获取所述动画模型中的状态机信息和混合树信息;根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;根据所述静态网格生成动画。本发明通过预先生成动画模型的静态网格,从而提高运行时渲染效率,避免动态骨骼动画带来的性能消耗,提升渲染效率,特别是在场景中大量使用同类模型时,会显著提升在手机上的表现,解决因骨骼动画模型过多导致的卡顿问题。本发明在现有的方案基础上,保证方便美术师或动画师快速编辑的同时,在运行时使用静态网格来替换骨骼动画模型上的蒙皮网格,节省了大量骨骼更新和蒙皮计算的时间,提升渲染效率,从而解决大量动画模型同屏显示的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本发明实施例提供的动画生成方法的流程图;
图2是本发明一个应用场景中大量动画模型同时出现在屏幕的示意图;
图3是本发明实施例中步骤S103的流程图;
图4是本发明实施例中步骤S106的流程图;
图5是本发明实施例提供的动画生成装置的结构框图;
图6是本发明实施例提供的动作信息获取模块的结构框图;
图7是本发明实施例提供的动画生成装置的另一结构框图;
图8是本发明实施例提供的静态网格提取模块的结构框图;
图9是本发明实施例提供的终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
图1是本发明提供的一种动画生成方法的流程图,如图1所示,本发明提供的方法包括以下步骤:
S101,加载预先建立的动画模型。
其中,所述动画模型通过动画模型绘制软件如3Dmax绘制完成。
本申请的方法适用于Unity引擎,Unity是由Unity Technologies开发的一款专业游戏引擎,具有良好的跨平台性。Unity游戏中多使用自带的Mecanim动画***,它的好处是易于美术师或动画师操作,通过扩展的图形操作界面和动画重定向功能快速创建角色,建立状态机和混合树等手段创建动画,还有一个能管理动画间复杂交互作用的可视化界面,同时,由于是***自带的动画***,因此版本兼容性较高。
本申请主要针对动态骨骼动画过多导致的卡顿问题,本申请中的动画模型主要为动态骨骼动画模型。
骨骼动画本质上是记录了以树形结构存储的一系列对象的位置、旋转、缩放随着时间变化的动态,其中的每一个对象就是一根骨骼。
骨骼动画的基本原理就是首先控制各个骨骼和关节,再使附在上面的skinnedmesh与其匹配。在骨骼蒙皮动画中,一个角色由作为皮肤的单一网格模型和按照一定层次组织起来的骨骼组成。骨骼层次描述了角色的结构,就像关节动画中的不同部分一样,骨骼蒙皮动画中的骨骼按照角色的特点组成一个层次结构。相邻的骨骼通过关节相连,并且可以作相对的运动。通过改变相邻骨骼间的夹角,位移,组成角色的骨骼可以做出不同的动作,实现不同的动画效果。
使用Unity自带的Mecanim动画***,其中模型多设置为蒙皮网格渲染器(SkinnedMeshRenderer),而蒙皮网格渲染器在渲染时是不能被Unity内置的Draw CallBatching技术处理,会造成Draw Call过高,影响渲染效率,同时播放没有融合的单个动画片段会导致Mecanim比旧的动画***慢。Draw Call是在Unity中引擎准备数据并通知GPU的过程。Draw Call Batching是在一次DrawCall中批量处理多个物体。而大量动画模型同时出现时一般应用在逻辑简单的小怪上,如图2所示,在屏幕中出现了大量同模型的小狗怪。这些动画模型多数为一些简单的动画片段,但由于其数量众多也会造成相当大的性能差异。
S102,获取所述动画模型中的状态机信息和混合树信息。
动画模型的状态机是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态,状态机停止。
状态机信息包含一组状态集(states)、一个起始状态(startstate)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transitionfunction)的计算模型。当输入符号串,动画模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有许多变量,例如,状态机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。
状态机信息可包含四个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:
①现态:也叫当前状态,是指当前所处的状态。
②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
从状态机信息中可以获取动画模型的多个状态信息。
混合树(Blend Tree)是一个状态,和状态不同的地方就是一个状态只能设定一个动画,而一个Blend Tree则可以设定为多个动画的混合。混合树信息包含多个动画的混合信息。
S103,根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息。
图3为根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息的流程图,如图3所示,在一个可选的实施例中,步骤S103可以包括以下步骤:
S1031,根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息。
S1032,根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
在一个可选的实施例中,所述根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息之前,还包括:
根据动画帧速率设定时间间隔。
在一个可选的实施例中,根据动画帧速率设定所述预定时间间隔。当然,还可以根据经验设定时间间隔,例如0.02s,所述时间间隔的设定以能够流畅地展示动画为原则。
S104,根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格。
其中,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
静态网格也叫网格(mesh/meshes),静态是相对蒙皮动态网格而言。静态网格包括顶点和多个三角形数组,三角形数组仅仅是顶点的索引数组,每个三角形包含三个索引。每个顶点可以有一条法线,两个纹理坐标,及颜色和切线。虽然这些是可选的,但是也可以去掉。所有的顶点信息是被储存在单独的同等规格的数组中,所以网格(mesh)有10个顶点,应该有大小为10的数组来存储法线和其它属性。
其中,预定的时间节点可以是对动画模型在一个状态下的多个时间节点,所述多个时间节点之间可以为固定的时间间隔。每个时间节点对应一个静态网格,这样,可以形成根据时间节点排列的多个静态网格。
根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格后,可以将其存储到相应的数据库或存储单元中。
在一个可选的实施例中,根据所述动画信息生成每个时间节点对应的静态网格,包括:根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成每个时间节点对应的静态网格。
步骤S102-S104是对动画模型预烘焙的过程,烘培指的将高维、具体数据加工为低维、特化数据的过程,一般通过生成近似的数据来提高运行时的效率。通过预烘焙,生成动画模型的静态网格,以使后续展示动画时可以直接加载静态网格。
S105,获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息。
具体地,步骤S105中,动画模型展示指令可以是***内部根据游戏情节的需要自动生成的,例如,展示多个小狗怪。动画模型展示指令可以包含待展示的模型名称、数量、动画时长、每个时刻对应的状态信息和动作信息。解析所述动画模型展示指令,获取所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息。
具体的,步骤S105中,获取动画模型展示指令后,解析所述动画模型展示指令,获取待展示的动画模型的状态机信息和时间信息。
其中,所述状态机信息和时间信息包括待展示的动画模型的当前状态信息和当前时间信息,以及待展示的动画模型在每个状态对应的动作信息和时间信息。
在一个可选的实施例中,S105之前,还包括:加载网格渲染器(Mesh Renderer)和网格过滤器(Mesh Filter)脚本文件。网格渲染器(Mesh Renderer)为不带蒙皮的网格渲染器。
通过加载网格渲染器(Mesh Renderer),将原模型中的蒙皮网格渲染器替换为网格渲染器(Mesh Renderer),网格渲染器的材质球和原蒙皮网格渲染器可以保持一致,在网格渲染器的节点上添加网格过滤器(Mesh Filter)脚本文件用以添加静态网格。
S106,根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格。
具体的,生成动画模型对应的静态网格后,可以在需要显示原动画模型的地方用预先生成的静态网格代替,从而节省***计算时间。
具体的,如图4所示,步骤S106可以包括:
S1061,根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息。
S1062,根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格。
S1063,加载所述静态网格。
S1064,判断动画模型展示是否完成,若否,回到步骤S1061。
S107,根据所述静态网格生成动画。
步骤S107中,当加载的多个静态网格的频率非常高时,就能产生很好的动画效果,即根据所述静态网格生成动画。
本发明实施例提供了一种动画生成方法,该方法包括加载预先建立的动画模型;获取所述动画模型中的状态机信息和混合树信息;根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;根据所述静态网格生成动画。其中,主要步骤包括:状态机信息和混合树信息的获取,静态网格的生成,静态网格的加载和动画生成。
本发明的动画生成方法,通过预烘培动态骨骼动画模型为静态网格,从而提高运行时渲染效率,避免动态骨骼动画带来的性能消耗,提升渲染效率,特别是在场景中大量使用同类模型时,会显著提升在手机上的表现,解决因骨骼动画模型过多导致的卡顿问题。本发明在现有的方案基础上,保证方便美术师或动画师快速编辑的同时,在运行时使用静态网格来替换骨骼动画模型上的蒙皮网格,节省了大量骨骼更新和蒙皮计算的时间,提升渲染效率,从而解决大量动画模型同屏显示的问题。
表1展示了现有技术方案和本发明在同屏显示250个模型(176个顶点,196个三角面)时在华为手机PE-TL10上的性能差异,数据显示本发明的技术方案大幅度降级了DrawCall数目,提升了帧率。
表1现有技术方案和本发明的数据对比
方案 Draw Call数目 FPS(帧率)
现有技术方案 258 35
本发明 13 56
综上所述,本发明在运行时直接用新生成的可以被Unity的Draw CallBatching技术处理的静态网格替换蒙皮网格,将不能进行Draw Call Batching的蒙皮网格渲染器换成能支持Batching的网格渲染器,提升渲染效率,从而解决了大量模型同屏显示时卡顿这一问题,提升了游戏表现,同时对美术师或动画师无感知,不影响原有的模型制作方式。本发明通过不断替换网格的方式模拟动画,来达到表现上一致的效果,适用于大量动画模型同屏出现的场景,特别适用于大量同样模型同屏出现的场景,能显著提高动画生成效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
本发明还提供了一种动画生成装置,该装置用于执行上述实施例1提供的动画生成方法。参见图5,该装置包括:
模型加载模块501,用于加载预先建立的动画模型;
第一信息获取模块502,用于获取所述动画模型中的状态机信息和混合树信息;
动作信息获取模块503,用于根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
静态网格生成模块504,用于根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
指令解析模块505,用于获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
静态网格提取模块506,用于根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
动画生成模块507,用于根据所述静态网格生成动画。
进一步地,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
进一步地,如图6所示,所述动作信息获取模块503包括:
动画信息获取单元5031,用于根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息;
动作信息获取单元5032,根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
进一步地,如图7所示,所述装置还包括:
组件加载模块508,用于加载网格渲染器(Mesh Renderer)和网格过滤器(MeshFilter)脚本文件。
组件加载模块508包括:
网格渲染器加载单元5081,用于加载网格渲染器(Mesh Renderer);
网格过滤器加载单元5082,用于加载网格过滤器(Mesh Filter)。
进一步地,所述静态网格生成模块504包括:
静态网格生成单元5041,用于根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成所述动画模型在预定的时间节点对应的静态网格。
进一步地,如图8所示,所述静态网格提取模块506包括:
当前信息获取单元5061,用于根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息;
静态网格查找单元5062,用于根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格;
静态网格加载单元5063,用于加载所述静态网格;
判断单元5064,用于判断动画模型展示是否完成;
返回单元,用于在动画模型展示未完成时,回到根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息的步骤。
综上所述,综上所述,本发明在运行时直接用新生成的可以被Unity的DrawCallBatching技术处理的静态网格替换蒙皮网格,将不能进行Draw Call Batching的蒙皮网格渲染器换成能支持Batching的网格渲染器,提升渲染效率,从而解决了大量模型同屏显示时卡顿这一问题,提升了游戏表现,同时对美术师或动画师无感知,不影响原有的模型制作方式。本发明通过不断替换网格的方式模拟动画,来达到表现上一致的效果,适用于大量动画模型同屏出现的场景,特别适用于大量同样模型同屏出现的场景,能显著提高动画生成效率。
实施例3
如图9所示,本发明实施例提供了一种终端,该终端可以用于实施上述实施例中提供的动画生成的方法。
具体来讲:
终端900可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图9中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband CodeDivision MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端900的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端900的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图9中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端900还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端900移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端900之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端900的通信。
WiFi属于短距离无线传输技术,终端900通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块170,但是可以理解的是,其并不属于终端900的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端900的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端900的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端900还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理***与处理器180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端900还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
加载预先建立的动画模型;
获取所述动画模型中的状态机信息和混合树信息;
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
根据所述静态网格生成动画。
进一步地,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
进一步地,还包含用于进行以下操作的指令:
所述根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息,包括:
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息;
根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
进一步地,还包含用于进行以下操作的指令:
加载网格渲染器(Mesh Renderer)和网格过滤器(Mesh Filter)脚本文件。
进一步地,还包含用于进行以下操作的指令:
根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成所述动画模型在预定的时间节点对应的静态网格。
进一步地,还包含用于进行以下操作的指令:
根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息;
根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格;
加载所述静态网格;
判断动画模型展示是否完成,若否,回到根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息的步骤。
综上所述,本发明实施例提供的终端能够实现一种动画生成方法,通过预烘培动态骨骼动画模型为静态网格,从而提高运行时渲染效率,避免动态骨骼动画带来的性能消耗,提升渲染效率,特别是在场景中大量使用同类模型时,会显著提升在手机上的表现,解决因骨骼动画模型过多导致的卡顿问题。本发明在现有的方案基础上,保证方便美术师或动画师快速编辑的同时,在运行时使用静态网格来替换骨骼动画模型上的蒙皮网格,节省了大量骨骼更新和蒙皮计算的时间,提升渲染效率,从而解决大量动画模型同屏显示的问题。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,一个或者一个以上程序被一个或者一个以上的处理器用来执行一种动画生成的方法,所述方法包括:
加载预先建立的动画模型;
获取所述动画模型中的状态机信息和混合树信息;
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
根据所述静态网格生成动画。
进一步地,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
进一步地,还包含用于进行以下操作的指令:
所述根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息,包括:
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息;
根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
进一步地,还包含用于进行以下操作的指令:
加载网格渲染器(Mesh Renderer)和网格过滤器(Mesh Filter)脚本文件。
进一步地,还包含用于进行以下操作的指令:
根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成所述动画模型在预定的时间节点对应的静态网格。
进一步地,还包含用于进行以下操作的指令:
根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息;
根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格;
加载所述静态网格;
判断动画模型展示是否完成,若否,回到根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息的步骤。
综上所述,本发明实施例提供的计算机可读存储介质,能够用于实现一种动画生成方法,通过预烘培动态骨骼动画模型为静态网格,从而提高运行时渲染效率,避免动态骨骼动画带来的性能消耗,提升渲染效率,特别是在场景中大量使用同类模型时,会显著提升在手机上的表现,解决因骨骼动画模型过多导致的卡顿问题。本发明在现有的方案基础上,保证方便美术师或动画师快速编辑的同时,在运行时使用静态网格来替换骨骼动画模型上的蒙皮网格,节省了大量骨骼更新和蒙皮计算的时间,提升渲染效率,从而解决大量动画模型同屏显示的问题。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端,可通过其它的方式实现。其中,以上所描述的***实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (14)

1.一种动画生成方法,其特征在于,包括:
加载预先建立的动画模型;
获取所述动画模型中的状态机信息和混合树信息;
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
根据所述静态网格生成动画。
2.根据权利要求1所述的动画生成方法,其特征在于,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
3.根据权利要求1所述的动画生成方法,其特征在于,所述根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息,包括:
根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息;
根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
4.根据权利要求1所述的动画生成方法,其特征在于,所述获取模型显示指令之前,还包括:
加载网格渲染器和网格过滤器脚本文件。
5.根据权利要求1所述的动画生成方法,其特征在于,所述根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格,包括:
根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成所述动画模型在预定的时间节点对应的静态网格。
6.根据权利要求1所述的动画生成方法,其特征在于,所述根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格,包括:
根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息;
根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格;
加载所述静态网格;
判断动画模型展示是否完成,若否,回到根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息的步骤。
7.一种动画生成装置,其特征在于,包括:
模型加载模块,用于加载预先建立的动画模型;
第一信息获取模块,用于获取所述动画模型中的状态机信息和混合树信息;
动作信息获取模块,用于根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动作信息;
静态网格生成模块,用于根据所述动作信息生成所述动画模型在预定的时间节点对应的静态网格;
指令解析模块,用于获取动画模型展示指令,解析所述动画模型展示指令中包含的待展示的动画模型的状态机信息和时间信息;
静态网格提取模块,用于根据所述状态机信息和时间信息提取待展示的动画模型对应的静态网格;
动画生成模块,用于根据所述静态网格生成动画。
8.根据权利要求7所述的动画生成装置,其特征在于,所述静态网格包括用于构成动画模型的三角面的点及三角面的边。
9.根据权利要求7所述的动画生成装置,其特征在于,所述动作信息获取模块包括:
动画信息获取单元,用于根据所述状态机信息和混合树信息获取所述动画模型在每个状态对应的动画信息;
动作信息获取单元,根据预定的时间间隔对所述动画信息进行采样,获取每个时间节点对应的动作信息。
10.根据权利要求7所述的动画生成装置,其特征在于,还包括:
组件加载模块,用于加载网格渲染器和网格过滤器脚本文件。
11.根据权利要求7所述的动画生成装置,其特征在于,所述静态网格生成模块包括:
静态网格生成单元,用于根据所述动作信息,通过接口函数SkinnedMeshRenderer.BakeMesh生成所述动画模型在预定的时间节点对应的静态网格。
12.根据权利要求7所述的动画生成装置,其特征在于,所述静态网格提取模块包括:
当前信息获取单元,用于根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息;
静态网格查找单元,用于根据所述当前状态信息和当前时间信息获取预先生成的待展示的动画模型与所述当前状态信息和当前时间信息对应的静态网格;
静态网格加载单元,用于加载所述静态网格;
判断单元,用于判断动画模型展示是否完成;
返回单元,用于在动画模型展示未完成时,回到根据所述状态机信息和时间信息获取待展示的动画模型的当前状态信息和当前时间信息的步骤。
13.一种终端,其特征在于,包括权利要求7-12中任意一项所述的动画生成装置。
14.一种动画生成***,其特征在于,包括权利要求7-12中任意一项所述的动画生成装置。
CN201710330863.9A 2017-05-11 2017-05-11 一种动画生成方法、装置、终端和*** Active CN107180444B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710330863.9A CN107180444B (zh) 2017-05-11 2017-05-11 一种动画生成方法、装置、终端和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710330863.9A CN107180444B (zh) 2017-05-11 2017-05-11 一种动画生成方法、装置、终端和***

Publications (2)

Publication Number Publication Date
CN107180444A CN107180444A (zh) 2017-09-19
CN107180444B true CN107180444B (zh) 2018-09-04

Family

ID=59832309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710330863.9A Active CN107180444B (zh) 2017-05-11 2017-05-11 一种动画生成方法、装置、终端和***

Country Status (1)

Country Link
CN (1) CN107180444B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018889B (zh) * 2018-01-10 2021-06-15 武汉斗鱼网络科技有限公司 动画队列的排队方法、存储介质、设备及***
CN108416830B (zh) * 2018-02-26 2021-10-26 网易(杭州)网络有限公司 动画显示控制方法、装置、设备及存储介质
CN109993823B (zh) * 2019-04-11 2022-11-25 腾讯科技(深圳)有限公司 阴影渲染方法、装置、终端及存储介质
CN110033503B (zh) * 2019-04-18 2022-12-13 腾讯科技(上海)有限公司 动画显示方法、装置、计算机设备及存储介质
CN111862272B (zh) * 2019-04-30 2023-06-20 北京达佳互联信息技术有限公司 动画状态机创建方法、动画控制方法、装置、设备及介质
CN111028322A (zh) * 2019-12-18 2020-04-17 北京像素软件科技股份有限公司 游戏动画表情生成方法、装置及电子设备
CN111127602B (zh) * 2019-12-27 2023-07-04 珠海金山数字网络科技有限公司 一种基于ngui的动画制作方法和装置
CN111145318B (zh) * 2019-12-27 2023-04-11 珠海金山数字网络科技有限公司 一种基于ngui的渲染方法及装置
CN111589143B (zh) * 2020-05-15 2022-07-26 腾讯科技(深圳)有限公司 动画播放方法、装置、设备及存储介质
CN111768475A (zh) * 2020-06-30 2020-10-13 网易(杭州)网络有限公司 动画骨骼的处理方法及装置、计算机可读介质、电子设备
CN111739134B (zh) * 2020-07-30 2023-05-26 腾讯科技(深圳)有限公司 虚拟角色的模型处理方法、装置及可读存储介质
CN113379590B (zh) * 2021-06-07 2023-06-30 腾讯科技(上海)有限公司 动画数据处理方法、装置、计算机设备和存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002037471A2 (en) * 2000-11-03 2002-05-10 Zoesis, Inc. Interactive character system
US9536338B2 (en) * 2012-07-31 2017-01-03 Microsoft Technology Licensing, Llc Animating objects using the human body
US20170046865A1 (en) * 2015-08-14 2017-02-16 Lucasfilm Entertainment Company Ltd. Animation motion capture using three-dimensional scanner data
CN105976417B (zh) * 2016-05-27 2020-06-12 腾讯科技(深圳)有限公司 动画生成方法和装置
CN106504309B (zh) * 2016-11-24 2018-12-11 腾讯科技(深圳)有限公司 一种图像合成的方法以及图像合成装置

Also Published As

Publication number Publication date
CN107180444A (zh) 2017-09-19

Similar Documents

Publication Publication Date Title
CN107180444B (zh) 一种动画生成方法、装置、终端和***
CN104679969B (zh) 防止用户流失的方法及装置
CN106453053B (zh) 群组消息显示方法及装置
CN107734179A (zh) 一种消息提示方法、移动终端
CN105183296B (zh) 交互界面显示方法及装置
CN106807087B (zh) 一种应用中模拟对象处理的方法以及移动终端
CN105224556B (zh) 瀑布流界面显示方法及装置
CN107273036A (zh) 移动终端及其分屏控制方法、计算机可读存储介质
CN104679381B (zh) 切换聊天窗口的方法及装置
CN104036536B (zh) 一种定格动画的生成方法和装置
CN105447124B (zh) 虚拟物品分享方法和装置
CN104881844B (zh) 一种图片组合的方法、装置以及终端设备
CN108958805A (zh) 菜单显示方法及装置
CN104424211B (zh) 一种基于微博的业务数据的发布方法、装置和***
CN108920053A (zh) 一种对齐方法及移动终端
CN107952242A (zh) 一种终端软件体验方法、终端及计算机可读存储介质
CN107943417A (zh) 图像处理方法、终端、计算机存储介质及计算机程序
CN110245246A (zh) 一种图像显示方法及终端设备
CN104598542B (zh) 多媒体信息的显示方法及装置
CN106504309A (zh) 一种图像合成的方法以及图像合成装置
CN107391518A (zh) 统计页面加载性能信息的***、方法及装置
CN109976640A (zh) 一种内容复制方法及终端
CN110515521A (zh) 一种截图方法和移动终端
CN110580163A (zh) 通过模板制作挂件的方法、装置及存储设备
CN107908492A (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