CN112927332B - 骨骼动画更新方法、装置、设备及存储介质 - Google Patents
骨骼动画更新方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112927332B CN112927332B CN202110362955.1A CN202110362955A CN112927332B CN 112927332 B CN112927332 B CN 112927332B CN 202110362955 A CN202110362955 A CN 202110362955A CN 112927332 B CN112927332 B CN 112927332B
- Authority
- CN
- China
- Prior art keywords
- animation
- skeleton
- group
- bone
- updating
- 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
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/02—Non-photorealistic rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
- A63F2300/6607—Methods for processing data by generating or executing the game program for rendering three dimensional images for animating game characters, e.g. skeleton kinematics
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种骨骼动画更新方法、装置、设备及存储介质,属于计算机图形技术领域。该方法包括:展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。
Description
技术领域
本申请涉及计算机图形技术领域,特别涉及一种骨骼动画更新方法、装置、设备及存储介质。
背景技术
目前,在游戏类应用程序中,为了解决展示骨骼动画时对游戏性能产生影响的问题,可以对将虚拟对象按照多细节层次进行区分。
在相关技术中,虚拟场景中的虚拟对象按照所处的位置以及重要程度进行多细节层次划分,当虚拟对象划分的层级较高时,可以将虚拟对象的骨骼模型替换为更简单的骨骼模型以及更简单的骨骼动画资源,而当虚拟对象划分的层级较低时,可以将虚拟对象的骨骼模型替换为更复杂的骨骼模型和更精细的骨骼动画资源。
然而,通过上述更换骨骼模型以及骨骼动画资源来减少展示骨骼动画对游戏性能的影响的方式,需要引入额外的骨骼模型以及骨骼动画资源,在增加了制作成本的同时,也造成了额外的资源的占用。
发明内容
本申请实施例提供了一种骨骼动画更新方法、装置、设备及存储介质,能够通过对不同骨骼组按照渲染尺寸大小分别确定对应的动画更新间隔,基于骨骼组各自对应的动画更新间隔对骨骼动画进行更新,从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。所述技术方案如下:
一方面,本申请实施例提供了一种骨骼动画更新方法,所述方法包括:
展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;
在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;
在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。
另一方面,本申请实施例提供了一种骨骼动画更新装置,所述装置包括:
界面展示模块,用于展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;
画面展示模块,用于在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;
动画更新模块,用于在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。
在一种可能的实现方式中,所述动画更新模块,包括:
距离获取子模块,用于获取所述虚拟相机与所述第一虚拟对象之间的第一距离;
尺寸确定子模块,用于基于所述第一距离,确定至少一个所述骨骼组分别对应的渲染尺寸;
间隔确定子模块,用于基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔;
动画更新子模块,用于基于所述骨骼组分别对应的动画更新间隔,在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画。
在一种可能的实现方式中,所述动画更新子模块,包括:
列表确定单元,用于基于所述动画更新间隔,确定当前帧画面对应的动画执行列表;所述动画执行列表中包含当前帧的所述第一虚拟对象对应的骨骼模型中需要进行所述骨骼动画更新的所述骨骼组的名称;
动画更新单元,用于基于当前帧画面对应的所述动画执行列表,在所述第一场景画面中,更新所述第一虚拟对象对应的所述骨骼动画。
在一种可能的实现方式中,响应于所述第一虚拟对象的骨骼模型中至少包括第一骨骼组;所述第一骨骼组对应的所述动画更新间隔是第一更新间隔;
所述列表确定单元,用于,
检测所述第一骨骼组对应的第一计数器数值;所述第一计数器用于记录所述第一骨骼组上一次进行对应的所述骨骼动画更新时对应的帧画面,距离当前帧画面之间的间隔帧数;
响应于所述第一计数器数值大于等于所述第一更新间隔,将所述第一骨骼组加入当前帧画面对应的所述动画执行列表,且将所述第一计数器数值进行归零。
在一种可能的实现方式中,所述列表确定单元,还用于,
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一计数器数值进行累加,且所述第一骨骼组不加入当前帧画面对应的所述动画执行列表。
在一种可能的实现方式中,响应于所述动画执行列表在初始状态下包括所述骨骼模型中任意一个所述骨骼组;
所述列表确定单元,用于,
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一骨骼组从当前帧画面对应的所述动画执行列表中移除,确定当前帧画面对应的所述动画执行列表;所述第一骨骼组是所述骨骼模型中的任意一个骨骼组。
在一种可能的实现方式中,所述动画更新单元,用于,
获取所述动画执行列表中的至少一个骨骼组对应的骨骼标识;
在所述第一场景画面中,更新当前帧画面中所述骨骼模型中,所述骨骼标识对应的骨骼组的骨骼动画。
在一种可能的实现方式中,所述间隔确定子模块,包括:
映射获取单元,用于获取配置映射表;所述配置映射表用于指示所述至少一个骨骼组分别配置的所述渲染尺寸与所述动画更新间隔之间的对应关系;
第一间隔确定单元,用于基于所述渲染尺寸,从所述配置映射表中确定所述至少一个骨骼组分别对应的所述动画更新间隔。
在一种可能的实现方式中,所述间隔确定子模块,包括:
第二间隔确定单元,用于响应于所述至少一个骨骼组包括第一骨骼组以及第二骨骼组,基于所述渲染尺寸,以及所述第一骨骼组与所述第二骨骼组位于所述骨骼模型中的位置,确定所述第一骨骼组以及所述第二骨骼组分别对应的动画更新间隔;
其中,在相同的所述渲染尺寸下,所述骨骼组与骨骼模型末端之间的距离,与所述骨骼组对应的动画更新间隔呈负相关。
在一种可能的实现方式中,所述骨骼模型中的所述骨骼组是主干骨骼组以及末端骨骼组中的至少一种;
所述主干骨骼组包括脊柱骨骼组、手臂骨骼组、肩部骨骼组、腿部骨骼组以及头部骨骼组中的至少一种;所述末端骨骼组包括手部骨骼组、脚部骨骼组以及服饰部分骨骼组中的至少一种。
在一种可能的实现方式中,响应于所述渲染尺寸小于等于第一阈值,所述末端骨骼组对应的所述动画更新间隔大于所述主干骨骼组对应的所述动画更新间隔;
响应于所述渲染尺寸大于所述第一阈值,所述末端骨骼组对应的所述动画更新间隔与所述主干骨骼组对应的所述动画更新间隔相等。
另一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的骨骼动画更新方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的骨骼动画更新方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。终端的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端执行上述方面的各种可选实现方式中提供的骨骼动画更新方法。
本申请实施例提供的技术方案的有益效果至少包括:
通过获取第一虚拟对象的至少一个骨骼组对应的渲染尺寸,确定与该渲染尺寸成负相关的至少一个骨骼组在骨骼动画中各自的动画更新间隔,然后基于动画更新间隔对第一虚拟对象的骨骼动画进行更新,从而在进行骨骼动画更新时,能够通过不同骨骼组进行骨骼动画更新的频率不同,对于渲染尺寸较大的骨骼组,使用较高的频率刷新,保证展示效果,对于渲染尺寸较小的骨骼组,使用较低的频率刷新,节约处理资源和电量资源,从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一个示例性的实施例提供的骨骼动画更新系统的示意图;
图2是本申请一个示例性实施例提供的骨骼动画更新流程的示意图;
图3是本申请一个示例性实施例提供的骨骼动画更新方法的方法流程图;
图4是图3所示实施例涉及的一种用于判断当前帧画面骨骼组是否进行骨骼动画更新的逻辑流程图;
图5是图3所示实施例涉及的一种不同渲染尺寸下对应的骨骼动画更新情况示意图;
图6是图3所示实施例涉及的一种动画线程上动画耗时示意图;
图7是本申请一个示例性实施例提供的骨骼动画更新装置的结构框图;
图8是本申请一示例性实施例提供的计算机设备的结构框图;
图9是本申请一示例性实施例提供的计算机设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
1)虚拟场景
虚拟场景是应用程序在终端上运行时显示(或提供)的虚拟的场景。该虚拟场景可以是对真实世界的仿真环境场景,也可以是半仿真半虚构的三维环境场景,还可以是纯虚构的三维环境场景。虚拟场景可以是二维虚拟场景、2.5维虚拟场景和三维虚拟场景中的任意一种,下述实施例以虚拟场景是三维虚拟场景来举例说明,但对此不加以限定。可选地,该虚拟场景还可用于至少两个虚拟角色之间的虚拟场景对战。可选地,该虚拟场景还可用于至少两个虚拟角色之间使用虚拟枪械进行对战。可选地,该虚拟场景还可用于在目标区域范围内,至少两个虚拟角色之间使用虚拟枪械进行对战,该目标区域范围会随虚拟场景中的时间推移而不断变小。虚拟场景通常由终端等计算机设备中的应用程序生成基于终端中的硬件(比如屏幕)进行展示。该终端可以是智能手机、平板电脑或者电子书阅读器等移动终端;或者,该终端也可以是笔记本电脑或者固定式计算机的个人计算机设备。
2)虚拟对象
虚拟对象是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、虚拟载具中的至少一种。可选地,当虚拟场景为三维虚拟场景时,虚拟对象是基于动画骨骼技术创建的三维立体模型。每个虚拟对象在三维虚拟场景中具有自身的形状、体积以及朝向,并占据三维虚拟场景中的一部分空间。
3)多细节层次
多细节层次(Levels of Detail,LOD),LOD是指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。一般来说,LOD层级越低,物体模型越重要,反之,LOD层级越高,物体模型越不重要。
4)骨骼动画LOD
骨骼动画LOD是根据播放骨骼动画的虚拟对象距离虚拟相机的远近距离以及该虚拟对象的重要程度来决定播放该骨骼动画的细节程度。通常对于距离虚拟相机较远或者不重要的虚拟对象,可以采用简化骨架或者降低动画更新频率的方式来解决骨骼动画渲染过程中,带来的游戏性能问题。
5)屏幕空间渲染尺寸
在UE4(Unreal Engine 4,虚幻引擎4)中,可以使用骨骼动画网格体在屏幕空间的渲染尺寸,来标识骨骼动画网格体在屏幕上的大小尺寸,也可以根据该大小尺寸值来确定虚拟对象对应的LOD层级。通常,虚拟对象距离虚拟相机越远,在屏幕上的渲染尺寸越小,LOD层级越大;反之,虚拟对象距离虚拟相机越近,在屏幕上的渲染尺寸越大,LOD层级越小。
6)动画更新间隔
动画更新间隔也可以称为骨骼动画更新间隔帧数。骨骼动画更新间隔帧数是两次骨骼动画更新之间间隔的帧数。如果骨骼动画更新间隔帧数为0,则表示骨骼动画每帧均更新。通常来说,动画更新间隔也可以转化为动画更新频率,动画更新间隔越小,动画更新频率越高,骨骼动画更新间隔帧数也越小。
请参考图1,其示出了本申请一个实施例提供的骨骼动画更新系统的示意图。该系统可以包括:计算机设备110、终端120和服务器140。
计算机设备110是开发者对应的终端,在该终端上安装有支持虚拟环境的应用程序的开发和编辑平台,开发者可在该终端上对应用程序进行编辑和更新,并将更新后的应用程序安装包通过有线或无线网络传输至服务器140,终端120可从服务器140下载应用程序安装包实现对应用程序的更新。
终端120安装和运行有支持虚拟环境的应用程序,该应用程序可以是多人在线对战程序。当终端120运行应用程序时,终端120的屏幕上显示应用程序的用户界面。该应用程序可以是多人在线战术竞技游戏(Multiplayer Online Battle Arena Games,MOBA)、大逃杀射击游戏、模拟战略游戏(Simulation Game,SLG)的任意一种。终端120是第一用户使用的终端,第一用户使用终端120控制位于虚拟场景中的第一虚拟对象进行活动,第一虚拟对象可以称为第一用户的主控虚拟对象。第一虚拟对象的活动包括但不限于:调整身体姿态、攀爬、爬行、步行、奔跑、骑行、飞行、跳跃、驾驶、拾取、射击、攻击、投掷、释放技能中的至少一种。示意性的,第一虚拟对象是第一虚拟人物,比如仿真人物或动漫人物。终端120的设备类型包括:智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。图1中仅示出了一个终端,但在不同实施例中存在多个其它终端可以接入服务器140。
计算机设备110以及终端120通过无线网络或有线网络与服务器140相连。
服务器140包括一台服务器、多台服务器组成的服务器集群、云计算平台和虚拟化中心中的至少一种。服务器140用于为支持三维虚拟环境的应用程序提供后台服务。可选地,服务器140承担主要计算工作,终端承担次要计算工作;或者,服务器140承担次要计算工作,终端承担主要计算工作;或者,服务器140和终端之间采用分布式计算架构进行协同计算。其中,虚拟场景可以是三维虚拟场景,或者,虚拟场景也可以是二维虚拟场景。如下实施例以虚拟场景是三维虚拟场景为例。
在相关技术中,为了解决展示骨骼动画时对游戏性能产生影响的问题。需要区分虚拟对象所述的LOD层级,在一种情况下,当虚拟对象的LOD层级较高时,可以通过给虚拟对象替换更简单的骨骼模型以及动画资源来解决展示骨骼动画的性能问题;而当虚拟对象的LOD层级较低时,可以更换使用更复杂细致的骨骼模型以及更精细的骨骼动画资源,以保证在虚拟场景中的骨骼动画表现效果。该种方案需要为不同的虚拟对象制作不同LOD层级对应的用于替换的骨骼模型以及对应的动画资源,一方面,提升了骨骼动画的制作成本,另一方面,由于不同LOD层级的需要替换的资源都需要在运行时载入内存,也会为虚拟场景运行时带来额外的内存开销。
在另一种情况下,当虚拟对象的LOD层级较高时,可以降低虚拟对象整体的骨骼模型的骨骼动画更新频率;而当虚拟对象的LOD层级较低时,可以恢复虚拟对象正常的骨骼动画更新频率。该种方案下,当虚拟对象的LOD层级较低时,如果限制虚拟对象整体骨骼模型的动画更新速率,会导致虚拟对象的动画比较呆滞,从而影响骨骼动画的表现效果;若不限制虚拟对象整体的动画更新频率,则实际展示骨骼动画时的性能问题仍无法解决,同时,在实际应用过程中,性能和动画表现效果之间的取舍很难获得平衡。
通过本申请各个实施例所示的骨骼动画更新方法,在虚拟场景界面中展示第一场景画面,其中,包括具有至少一个骨骼组的第一虚拟对象,基于骨骼组的渲染尺寸确定至少一个骨骼组在骨骼动画中各自的动画更新间隔,从而更新第一虚拟对象的骨骼动画。请参考图2,其示出了本申请一个示例性的实施例提供的骨骼动画更新流程的示意图。其中,上述方法可以由计算机设备执行,该计算机设备可以是终端或者服务器。如图2所示,计算机设备可以通过执行以下步骤来对虚拟场景中的虚拟对象的骨骼动画进行更新。
步骤201,展示虚拟场景界面,虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面。
在本申请实施例中,终端在显示屏幕上展示通过虚拟相机拍摄虚拟场景得到的虚拟场景展示界面。
步骤202,在虚拟场景界面中展示第一场景画面,第一场景画面中包含第一虚拟对象,第一虚拟对象对应有至少一个骨骼组。
在本申请实施例中,终端在虚拟场景展示界面中展示包含第一虚拟对象的第一场景画面。
其中,第一虚拟对象可以是由终端主控的虚拟对象,也可以是由其他终端或者应用程序控制的虚拟对象。
在一种可能的实现方式中,第一虚拟对象在三维环境中是通过构建的三维模型展示在虚拟场景中的,三维模型中包含有第一虚拟对象的骨骼模型,用于模拟实际中的骨骼结构,从而控制第一虚拟对象灵活执行各种动作。
其中,骨骼模型是由至少一个骨骼组构成的,至少一个骨骼组对应的各个骨骼相互配合控制第一虚拟对象执行各个动作,各个动作通过更新骨骼动画的方式进行展示。任意一个骨骼组中包括至少一个父骨骼以及至少一个子骨骼。
由于骨骼对应的骨骼动画更新操作通常在骨骼的局部空间执行,因此一个子骨骼在世界空间的变换数据依赖于其所有的父骨骼,为了确保该子骨骼得到正确的变换结果,此时其所有父骨骼都必须要参与更新。同理,当一个子骨骼决定当前帧要跳过更新时,如果它的某个子骨骼决定更新,那么该子骨骼得到的变换数据是存在问题的。所以在执行骨骼动画的过程中,需要按照从父骨骼到子骨骼的顺序执行当帧是否要更新对应骨骼组的骨骼动画的判定逻辑。也就是说,当父骨骼决定跳过更新对应的骨骼动画时,该骨骼组中的所有子骨骼当帧都不再更新骨骼动画,并且该骨骼组中的其它子骨骼不需要执行后续的是否更新骨骼动画的判定逻辑。同理,当一个骨骼决定当前帧要执行更新骨骼动画时,该骨骼对应的所有父骨骼均不能跳过更新该骨骼组对应的骨骼动画。
步骤203,在第一场景画面中,更新第一虚拟对象的骨骼动画;至少一个骨骼组在骨骼动画中具有各自的动画更新间隔,且骨骼组的动画更新间隔与骨骼组的渲染尺寸成负相关。
在本申请实施例中,在第一场景画面中,获取骨骼组对应的渲染尺寸,确定与该渲染尺寸成负相关的骨骼组对应的动画更新间隔,基于至少一个骨骼组在骨骼动画中具有的各自的动画更新间隔,对第一虚拟对象中的各个骨骼组的骨骼动画进行更新,从而更新第一虚拟对象的骨骼动画。
在一种可能的实现方式中,第一虚拟对象对应的骨骼模型中至少包含一个需要进行骨骼动画LOD的骨骼组,未被纳入需要进行骨骼动画LOD的骨骼组的骨骼设置为每帧进行动画更新。
综上所述,本申请实施例所示的方案,通过获取第一虚拟对象的至少一个骨骼组对应的渲染尺寸,确定与该渲染尺寸成负相关的至少一个骨骼组在骨骼动画中各自的动画更新间隔,然后基于动画更新间隔对第一虚拟对象的骨骼动画进行更新,从而在进行骨骼动画更新时,能够通过不同骨骼组进行骨骼动画更新的频率不同,对于渲染尺寸较大的骨骼组,使用较高的频率刷新,保证展示效果,对于渲染尺寸较小的骨骼组,使用较低的频率刷新,节约处理资源和电量资源,从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。
请参考图3,其示出了本申请一个示例性的实施例提供的骨骼动画更新方法的方法流程图。其中,上述方法可以由计算机设备执行,该计算机设备可以是终端或者服务器。如图3所示,以计算机设备为终端为例,终端可以通过执行以下步骤来对虚拟场景中的虚拟对象进行骨骼动画更新。
步骤301,在虚拟场景界面中展示第一场景画面。
在本申请实施例中,响应于虚拟场景开始运行,终端展示虚拟场景界面,然后当虚拟相机观察到虚拟场景中存在第一虚拟对象时,展示第一场景画面。
其中,虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面。第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组。
在一种可能的实现方式中,骨骼模型中的骨骼组是主干骨骼组以及末端骨骼组中的至少一种。
其中,主干骨骼组是位于骨骼模型对应的骨骼树中,靠近根部的骨骼组,末端骨骼组是位于骨骼树中靠近叶子节点的骨骼组。
比如,以人体骨骼模型为例,主干骨骼组可以包括脊柱骨骼组、手臂骨骼组、肩部骨骼组、腿部骨骼组以及头部骨骼组中的至少一种;末端骨骼组可以包括手部骨骼组、脚部骨骼组以及服饰部分骨骼组中的至少一种。另外,第一虚拟对象的骨骼模型也可以是非人体骨骼模型。
步骤302,获取虚拟相机与第一虚拟对象之间的第一距离。
在本申请实施例中,终端获取虚拟相机与第一虚拟对象之间的第一距离。
其中,该第一距离可以是由虚拟相机到第一虚拟对象重心之间的直线距离。或者,也可以是虚拟相机到第一虚拟对象的重心所在垂直于水平地面的平面之间的垂直距离。
步骤303,基于第一距离,确定至少一个骨骼组分别对应的渲染尺寸。
在本申请实施例中,终端基于获取到的第一距离,确定第一虚拟对象的骨骼模型上的各个骨骼组分别对应的渲染尺寸。
其中,终端基于获取到的第一距离,确定第一虚拟对象的骨骼模型上各个骨骼组在屏幕空间上的渲染尺寸。
在一种可能的实现方式中,各个骨骼组分别对应的渲染尺寸除了与第一距离的大小相关,还与各个骨骼组分别对应的模型尺寸有关。
示例性的,若第一虚拟对象的骨骼模型中存在骨骼组A以及骨骼组B,骨骼组A对应的模型尺寸大于骨骼组B对应的模型尺寸,当第一虚拟对象进入第一虚拟场景并且被虚拟相机观察到时,确定骨骼组A与虚拟相机之间的第一距离以及骨骼组B与虚拟相机之间的第一距离,若骨骼组A与虚拟相机之间的第一距离以及骨骼组B与虚拟相机之间的第一距离相等,则由于骨骼组A对应的模型尺寸大于骨骼组B对应的模型尺寸,所以骨骼组A对应的渲染尺寸大于骨骼组B对应的渲染尺寸。
步骤304,基于至少一个骨骼组分别对应的渲染尺寸,确定至少一个骨骼组分别对应的动画更新间隔。
在本申请实施例中,终端基于获取到的骨骼模型上各个骨骼组分别对应的渲染尺寸,可以确定各个骨骼组分别在当前帧中的动画更新间隔。
其中,动画更新间隔是指该骨骼组两次骨骼动画更新之间间隔的帧数。
在一种可能的实现方式中,获取配置映射表,基于渲染尺寸,从配置映射表中确定至少一个骨骼组分别对应的动画更新间隔。
也就是说,终端获取到各个骨骼组对应的渲染尺寸后,从服务器中存储的配置映射表中,查找各个骨骼组对应的动画更新间隔。
其中,配置映射表用于指示至少一个骨骼组分别配置的渲染尺寸与动画更新间隔之间的对应关系。
示例性的,配置映射表的数据格式可以如下表1所示,若骨骼模型中包括骨骼组X、骨骼组Y以及骨骼组Z,该配置映射表可以表示对于骨骼组X中的所有父骨骼及其子骨骼,当虚拟对象对应在屏幕空间中的渲染尺寸小于A时,骨骼组X中的各个骨骼对应的动画更新间隔为a帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于A且小于B时,该骨骼组X中的各个骨骼对应的动画更新间隔为b帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于B且小于C时,该骨骼组X中的各个骨骼对应的动画更新间隔为c帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于C时,各个骨骼对应的动画更新间隔为0帧,即每帧均进行骨骼动画更新。对于骨骼组Y中的所有父骨骼及其子骨骼,当虚拟对象对应在屏幕空间中的渲染尺寸小于D时,骨骼组Y中的各个骨骼对应的动画更新间隔为d帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于D且小于E时,该骨骼组Y中的各个骨骼对应的动画更新间隔为e帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于E时,各个骨骼对应的动画更新间隔为0帧;对于骨骼组Z中的所有父骨骼及其子骨骼,当虚拟对象对应在屏幕空间中的渲染尺寸小于F时,骨骼组Z中的各个骨骼对应的动画更新间隔为f帧;当虚拟对象对应在屏幕空间中的渲染尺寸大于F时,各个骨骼对应的动画更新间隔为0帧;通常来说,如果存在关系A<B<C,那么有 a>b>c;若存在D<E,那么有 d>e。
表1
在一种可能的实现方式中,响应于至少一个骨骼组是第一骨骼组以及第二骨骼组,基于渲染尺寸,以及第一骨骼组与第二骨骼组位于骨骼模型中的位置,确定第一骨骼组以及第二骨骼组分别对应的动画更新间隔。
其中,在相同的渲染尺寸下,骨骼组与骨骼模型末端之间的距离,与骨骼组对应的动画更新间隔呈负相关。
示例性的,在为虚拟对象的骨骼模型中的各个骨骼组配置渲染尺寸到动画更新间隔之间的映射关系的过程中,映射关系的配置规则可以符合在相同的屏幕空间的渲染尺寸下,越靠近骨骼模型末端的骨骼组(比如,手指骨骼组、脚趾骨骼组以及裙摆骨骼组等)的动画更新间隔越大,越靠近骨骼模型顶端的骨骼组(比如,躯干骨骼组、腿部骨骼组以及手臂骨骼组等)的动画更新间隔越小。
在一种可能的实现方式中,响应于渲染尺寸小于等于第一阈值,末端骨骼组对应的动画更新间隔大于主干骨骼组对应的动画更新间隔;响应于渲染尺寸大于第一阈值,末端骨骼组对应的动画更新间隔与主干骨骼组对应的动画更新间隔相等。
比如,若第一虚拟对象与虚拟相机之间的第一距离小于第一阈值x,则第一虚拟对象对应的骨骼模型在屏幕空间中的渲染尺寸小于等于指定数值,所以在这种情况下,为了减少骨骼动画对虚拟场景运行性能产生的影响,应该降低骨骼动画的更新速率,此时,可以优先降低骨骼模型的末端位置的骨骼组进行骨骼动画更新的速度,然后若渲染尺寸继续减小,再开始对靠近末端位置的骨骼组进行骨骼动画更新速度的降低。若第一虚拟对象与虚拟相机之间的第一距离大于等于第一阈值x,也就是说,第一虚拟对象对应的骨骼模型在屏幕空间中的渲染尺寸大于等于指定数值,需要对骨骼动画进行更加精细的更新,所以可以通过每帧均更新骨骼动画的方式,提高骨骼动画的动画展示效果。
步骤305,基于骨骼组分别对应的动画更新间隔,在第一场景画面中,更新第一虚拟对象的骨骼动画。
在本申请实施例中,终端在进行骨骼动画更新的过程中,基于获取到的当前画面各个骨骼组对应的动画更新间隔,确定展示在第一场景画面中的更新后的第一虚拟对象的骨骼动画。
在一种可能的实现方式中,基于动画更新间隔,确定当前帧画面对应的动画执行列表;基于当前帧画面对应的动画执行列表,在第一场景画面中,更新第一虚拟对象对应的骨骼动画。
其中,动画执行列表中包含当前帧画面的第一虚拟对象对应的骨骼模型中需要进行骨骼动画更新的骨骼组的名称。
在一种可能的实现方式中,响应于第一虚拟对象的骨骼模型中至少包括第一骨骼组,且第一骨骼组对应的动画更新间隔是第一更新间隔,首先,检测第一骨骼组对应的第一计数器数值,然后,响应于第一计数器数值大于等于第一更新间隔,将第一骨骼组加入当前帧画面对应的动画执行列表,且将第一计数器数值进行归零。响应于第一计数器数值小于第一更新间隔,将第一计数器数值进行累加,且第一骨骼组不加入当前帧画面对应的动画执行列表。
其中,第一计数器用于记录第一骨骼组上一次进行对应的骨骼动画更新时对应的帧画面,距离当前帧画面之间的间隔帧数。
示例性的,图4是本申请实施例涉及的一种用于判断当前帧画面骨骼组是否进行骨骼动画更新的逻辑流程图。如图4所示,第一虚拟对象的骨骼模型中的每个骨骼都有各自的计数器,对于骨骼模型中任一骨骼,将计数器的初始值设置为零(S41)然后,每帧画面开始进行计算当前帧需要进行骨骼动画更新的骨骼(S42),首先,基于当前帧画面对应的屏幕空间下的渲染尺寸以及动画更新间隔对应的配置数据表来获取该骨骼在当前帧画面对应的动画更新间隔,并判断该骨骼当前的计数器数值与动画更新间隔大小关系(S43)。若该骨骼当前的计数器数值小于动画更新间隔,则将计数器数值增加1(S44),并且确定该骨骼在当前帧画面中不进行骨骼动画更新(S45),然后继续进行后续的动画更新逻辑(S46)。若计数器的值大于动画更新间隔的帧数,则确定当前帧画面该骨骼需要进行更新(S47),同时将该骨骼对应的计数器数值清零(S48),然后同样继续进行后续的动画更新逻辑(S46)。
在另一种可能的实现方式中,响应于动画执行列表在初始状态下包括骨骼模型中任意一个骨骼组;响应于第一计数器数值小于第一更新间隔,将第一骨骼组从当前帧画面对应的动画执行列表中移除,确定当前帧画面对应的动画执行列表。
其中,第一骨骼组是骨骼模型中的任意一个骨骼组。
比如,虚拟场景中的第一虚拟对象的骨骼模型中包括的骨骼总数量为127个,其中手部、脚部和裙摆部分的末端骨骼数量为84个。在启用骨骼动画LOD时,降低末端骨骼部分的动画更新频率后,在动画执行列表中移除84个末端骨骼,在动画执行列表中只剩下脊柱、手臂、肩部、腿部和头部的骨骼,这部分骨骼数量为43个。
在一种可能的实现方式中,获取动画执行列表中的至少一个骨骼组对应的骨骼标识;在第一场景画面中,更新当前帧画面中骨骼模型中,骨骼标识对应的骨骼组的骨骼动画。
其中,在配置动画执行列表时,在表格中添加的是骨骼组的名称,而在通过动画执行列表对骨骼动画进行更新过程中,则需要将骨骼名称转换为该骨骼在骨骼模型中的骨骼索引值。因此,需要在初始化阶段以及第一虚拟对象更换骨骼模型的时候,根据骨骼模型中的各个骨骼名称到骨骼索引值之间的映射信息,将动画执行列表中的骨骼名称转换为这些骨骼及其子骨骼的索引值列表。
也就是说,在虚拟场景运行过程中,终端基于虚拟对象在当前屏幕空间中的渲染尺寸,以及从服务器中获取到的各个骨骼组对应的用于确定动画更新间隔的配置数据,来确定当前画面中各个骨骼组对应的动画更新间隔。当虚拟对象在屏幕空间中的渲染尺寸较大时,也就是包括该虚拟对象距离虚拟相机较近或者该虚拟对象的实际模型尺寸较大时,对于这种情况下的虚拟对象的各个骨骼组均可以保持较小的动画更新间隔;当虚拟对象在屏幕空间中的渲染尺寸较小时,也就是包括该虚拟对象距离虚拟相机较远或者该虚拟对象的实际模型尺寸较小时,对于这种情况下的虚拟对象的各个骨骼组,优先增大虚拟对象中的末端骨骼组对应的动画更新间隔,从而在保证虚拟场景中的动画效果的同时,解决了展示骨骼动画所带来的影响游戏性能的问题。
示例性的,图5是本申请实施例涉及的一种不同渲染尺寸下对应的骨骼动画更新情况示意图。如图5所示,同一虚拟对象在执行同一招手动作时,由于对应的渲染尺寸不同,其中手指部分骨骼相邻两帧画面对应的动画更新情况也是不同的。当虚拟对象位于距离虚拟相机较近距离处时,在屏幕空间中的渲染尺寸较大,在近距离的第一帧画面511时,虚拟对象的手指部分骨骼为展开状态513,在近距离的第二帧画面512时,虚拟对象的手指部分骨骼为微微弯曲状态514。当虚拟对象位于距离虚拟相机中等距离处时,在屏幕空间中的渲染尺寸略小于近距离处的渲染尺寸,在中等距离的第一帧画面521时,虚拟对象的手指部分骨骼为展开状态523,在中等距离的第二帧画面522时,虚拟对象的手指部分骨骼为完全弯曲状态524。当虚拟对象位于距离虚拟相机远距离处时,在屏幕空间中的渲染尺寸较小,在远距离的第一帧画面531时,虚拟对象的手指部分骨骼为展开状态533,在远距离的第二帧画面532时,虚拟对象的手指部分骨骼仍然为展开状态534。
示例性的,终端可以基于计算指令显示确定骨骼动画更新的计算过程。如下表2所示,是第一虚拟对象的骨骼动画对应的末端骨骼组的配置数据。
表2
若虚拟相机位于终端主控虚拟对象的头部的正上方,即第一场景画面是以第一视角进行展示的场景画面时,若虚拟场景中主控虚拟对象与作为第一虚拟对象的敌方阵营的虚拟对象距离较远时,敌方阵营的虚拟对象对应的屏幕空间的渲染尺寸较小,可以计算得到渲染尺寸为0.0014,基于表2配置的数据,该渲染尺寸小于配置数据中的最小的屏幕空间的渲染尺寸0.002,因此,当前帧画面骨骼动画更新间隔帧数可以为180。此外,同时当末端骨骼对应的计数器的值小于骨骼动画更新间隔帧数180时,末端骨骼不参与动画更新,真正参与更新的骨骼数量只有主干骨骼43个。
该过程中的相关参数可以展示为ScreenSize(0.001419)TotalNumberOfBones(127)RemainNumberOfBones(43)UpdateRate(180)FrameCounter(12)。
其中,ScreenSize表示虚拟对象对应的屏幕空间中的渲染尺寸;TotalNumberOfBones表示虚拟对象的骨骼模型中总的骨骼数量;RemainNumberOfBones表示虚拟对象当前帧画面中参与骨骼动画更新的骨骼数量;UpdateRate表示当前帧画面虚拟对象末端骨骼(比如,手部、脚部和裙摆部分骨骼)的动画更新间隔的帧数;FrameCounter表示当前帧画面对应的该骨骼的计数器的值。
随着骨骼对应的计数器的值每帧进行递增,当计数器的值超过180时,参与更新的骨骼数量立刻变为127,对于这一帧来说,虚拟对象全身的骨骼都会参与动画更新,接着计数器的值立刻归零重新开始计数。
该过程的相关参数可以展示为ScreenSize(0.001413)TotalNumberOfBones(127)RemainNumberOfBones(127)UpdateRate(180)FrameCounter(0)。
当主控虚拟对象逐渐靠近敌方阵营的虚拟对象时,敌方阵营的虚拟对象的屏幕空间的渲染尺寸逐渐增大,当屏幕空间的渲染尺寸增大到0.0024(对应配置数据中0.002到0.004之间)时,角色骨骼动画更新间隔帧数减小到90,也就是说此时第一虚拟对象的末端骨骼的骨骼动画每隔90帧才会更新一次。
该过程的相关参数可以展示为ScreenSize(0.002409)TotalNumberOfBones(127)RemainNumberOfBones(43)UpdateRate(90)FrameCounter(35)。
当主控虚拟对象更加靠近第一虚拟对象时,对应的屏幕空间的渲染尺寸也不断增大,骨骼动画对应的动画更新间隔帧数逐渐减小,末端骨骼的更新频率逐渐提高。
该过程的相关参数可以展示为ScreenSize(0.004804)TotalNumberOfBones(127)RemainNumberOfBones(43)UpdateRate(30/5/0)FrameCounter(4)。
通过本实施例所示方案,骨骼动画进行多细节层次可以有效的降低终端在动画线程上动画耗时的性能毛刺,可以进行如下测试。
在相同的终端设备上,同样使用UE4 development构建类型进行打包,在启用和不启用骨骼动画LOD两种情况下,分别测试了主控虚拟对象与20个其它虚拟对象进行战斗时,对应的骨骼动画性能的开销。在测试过程中,主控虚拟对象未启用骨骼动画LOD。
具体的测试结果如下表3所示。由表3中数据可以看出,在不启用骨骼动画LOD的情况下,动画在主线程上的每帧平均开销为3.36ms,在异步线程上每帧的平均开销为3.89ms。而在启用骨骼动画LOD的情况下,动画在主线程上的每帧平均开销为2.98ms,耗时降低11.3%,在异步线程上每帧的平均开销为2.46ms,耗时降低36.8%。
表3
其中,在最大耗时的数据上,可以发现在不启用骨骼动画LOD的情况下,动画在主线程上的最大耗时为8.68ms,在异步线程上最大耗时为21.12ms。而在启用骨骼动画LOD的情况下,动画在主线程上的最大耗时为10.66ms,提升了18.6%,在异步线程上最大耗时为10.88ms,降低了48.5%。图6是本申请实施例涉及的一种动画线程上动画耗时示意图,如图6所示,通过将无骨骼动画LOD时主线程和异步线程上动画开销示意图61与开启骨骼动画LOD时主线程和异步线程上动画开销示意图62进行对比,可以发现骨骼动画LOD能够有效降低动画线程上动画耗时的性能毛刺。
综上所述,本申请实施例所示的方案,通过获取第一虚拟对象的至少一个骨骼组对应的渲染尺寸,确定与该渲染尺寸成负相关的至少一个骨骼组在骨骼动画中各自的动画更新间隔,然后基于动画更新间隔对第一虚拟对象的骨骼动画进行更新,从而在进行骨骼动画更新时,能够通过不同骨骼组进行骨骼动画更新的频率不同,对于渲染尺寸较大的骨骼组,使用较高的频率刷新,保证展示效果,对于渲染尺寸较小的骨骼组,使用较低的频率刷新,节约处理资源和电量资源,从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。
图7是根据一示例性实施例示出的一种骨骼动画更新装置的框图,如图7所示,该装置用于计算机设备中,以执行图2或图3对应实施例所示的方法的全部或部分步骤。该骨骼动画更新装置可以包括:
界面展示模块710,用于展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;
画面展示模块720,用于在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;
动画更新模块730,用于在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。
在一种可能的实现方式中,所述动画更新模块730,包括:
距离获取子模块,用于获取所述虚拟相机与所述第一虚拟对象之间的第一距离;
尺寸确定子模块,用于基于所述第一距离,确定至少一个所述骨骼组分别对应的渲染尺寸;
间隔确定子模块,用于基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔;
动画更新子模块,用于基于所述骨骼组分别对应的动画更新间隔,在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画。
在一种可能的实现方式中,所述动画更新子模块,包括:
列表确定单元,用于基于所述动画更新间隔,确定当前帧画面对应的动画执行列表;所述动画执行列表中包含当前帧的所述第一虚拟对象对应的骨骼模型中需要进行所述骨骼动画更新的所述骨骼组的名称;
动画更新单元,用于基于当前帧画面对应的所述动画执行列表,在所述第一场景画面中,更新所述第一虚拟对象对应的所述骨骼动画。
在一种可能的实现方式中,响应于所述第一虚拟对象的骨骼模型中至少包括第一骨骼组;所述第一骨骼组对应的所述动画更新间隔是第一更新间隔;
所述列表确定单元,用于,
检测所述第一骨骼组对应的第一计数器数值;所述第一计数器用于记录所述第一骨骼组上一次进行对应的所述骨骼动画更新时对应的帧画面,距离当前帧画面之间的间隔帧数;
响应于所述第一计数器数值大于等于所述第一更新间隔,将所述第一骨骼组加入当前帧画面对应的所述动画执行列表,且将所述第一计数器数值进行归零。
在一种可能的实现方式中,所述列表确定单元,还用于,
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一计数器数值进行累加,且所述第一骨骼组不加入当前帧画面对应的所述动画执行列表。
在一种可能的实现方式中,响应于所述动画执行列表在初始状态下包括所述骨骼模型中任意一个所述骨骼组;
所述列表确定单元,用于,
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一骨骼组从当前帧画面对应的所述动画执行列表中移除,确定当前帧画面对应的所述动画执行列表;所述第一骨骼组是所述骨骼模型中的任意一个骨骼组。
在一种可能的实现方式中,所述动画更新单元,用于,
获取所述动画执行列表中的至少一个骨骼组对应的骨骼标识;
在所述第一场景画面中,更新当前帧画面中所述骨骼模型中,所述骨骼标识对应的骨骼组的骨骼动画。
在一种可能的实现方式中,所述间隔确定子模块,包括:
映射获取单元,用于获取配置映射表;所述配置映射表用于指示所述至少一个骨骼组分别配置的所述渲染尺寸与所述动画更新间隔之间的对应关系;
第一间隔确定单元,用于基于所述渲染尺寸,从所述配置映射表中确定所述至少一个骨骼组分别对应的所述动画更新间隔。
在一种可能的实现方式中,所述间隔确定子模块,包括:
第二间隔确定单元,用于响应于所述至少一个骨骼组包括第一骨骼组以及第二骨骼组,基于所述渲染尺寸,以及所述第一骨骼组与所述第二骨骼组位于所述骨骼模型中的位置,确定所述第一骨骼组以及所述第二骨骼组分别对应的动画更新间隔;
其中,在相同的所述渲染尺寸下,所述骨骼组与骨骼模型末端之间的距离,与所述骨骼组对应的动画更新间隔呈负相关。
在一种可能的实现方式中,所述骨骼模型中的所述骨骼组是主干骨骼组以及末端骨骼组中的至少一种;所述主干骨骼组是位于所述骨骼模型对应的骨骼树中,靠近根部的所述骨骼组;所述末端骨骼组是位于所述骨骼树中靠近叶子节点的所述骨骼组。
在一种可能的实现方式中,响应于所述渲染尺寸小于等于第一阈值,所述末端骨骼组对应的所述动画更新间隔大于所述主干骨骼组对应的所述动画更新间隔;
响应于所述渲染尺寸大于所述第一阈值,所述末端骨骼组对应的所述动画更新间隔与所述主干骨骼组对应的所述动画更新间隔相等。
综上所述,本申请实施例所示的方案,通过获取第一虚拟对象的至少一个骨骼组对应的渲染尺寸,确定与该渲染尺寸成负相关的至少一个骨骼组在骨骼动画中各自的动画更新间隔,然后基于动画更新间隔对第一虚拟对象的骨骼动画进行更新,从而在进行骨骼动画更新时,能够通过不同骨骼组进行骨骼动画更新的频率不同,对于渲染尺寸较大的骨骼组,使用较高的频率刷新,保证展示效果,对于渲染尺寸较小的骨骼组,使用较低的频率刷新,节约处理资源和电量资源,从而在保证对虚拟对象的骨骼动画的展示效果的同时,降低处理资源和电量资源的消耗。
图8是根据一示例性实施例示出的一种计算机设备的结构示意图。该计算机设备可以实现为上述各个方法实施例中的分布式系统。所述计算机设备800包括中央处理单元(CPU,Central Processing Unit)801、包括随机存取存储器(Random Access Memory,RAM)802和只读存储器(Read-Only Memory,ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、闪存或其他固态存储其技术,CD-ROM、或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
计算机设备800可以通过连接在所述系统总线805上的网络接口单元811连接到互联网或者其它网络设备。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理单元801通过执行该一个或一个以上程序来实现图2或图3所示的方法的全部或者部分步骤。
图9是根据一示例性实施例示出的计算机设备900的结构框图。该计算机设备900可以是用户终端,比如智能手机、平板电脑、MP3播放器(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的方法中的全部或者部分步骤。
在一些实施例中,计算机设备900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、显示屏905、摄像头组件906、音频电路907、定位组件908和电源909中的至少一种。
外围设备接口903可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置计算机设备900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在计算机设备900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在计算机设备900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。
音频电路907可以包括麦克风和扬声器。
定位组件908用于定位计算机设备900的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。
电源909用于为计算机设备900中的各个组件进行供电。
在一些实施例中,计算机设备900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。
本领域技术人员可以理解,图9中示出的结构并不构成对计算机设备900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成上述图2或图3对应实施例所示的方法的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM(Read-OnlyMemory,只读存储器)、随机存取存储器(Random Access Memory,RAM)、CD-ROM(CompactDisc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。终端的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端执行上述方面的各种可选实现方式中提供的骨骼动画更新方法。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例所示的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种骨骼动画更新方法,其特征在于,所述方法包括:
展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;
在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;
在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画,包括:
获取所述虚拟相机与所述第一虚拟对象之间的第一距离;
基于所述第一距离,确定至少一个所述骨骼组分别对应的渲染尺寸;
基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔;
基于所述骨骼组分别对应的动画更新间隔,在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画。
3.根据权利要求2所述的方法,其特征在于,所述基于所述骨骼组分别对应的动画更新间隔,在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画,包括:
基于所述动画更新间隔,确定当前帧画面对应的动画执行列表;所述动画执行列表中包含当前帧的所述第一虚拟对象对应的骨骼模型中需要进行所述骨骼动画更新的所述骨骼组的名称;
基于当前帧画面对应的所述动画执行列表,在所述第一场景画面中,更新所述第一虚拟对象对应的所述骨骼动画。
4.根据权利要求3所述的方法,其特征在于,响应于所述第一虚拟对象的骨骼模型中至少包括第一骨骼组;所述第一骨骼组对应的所述动画更新间隔是第一更新间隔;
所述基于所述动画更新间隔,确定当前帧画面对应的动画执行列表,包括:
检测所述第一骨骼组对应的第一计数器数值;所述第一计数器用于记录所述第一骨骼组上一次进行对应的所述骨骼动画更新时对应的帧画面,距离当前帧画面之间的间隔帧数;
响应于所述第一计数器数值大于等于所述第一更新间隔,将所述第一骨骼组加入当前帧画面对应的所述动画执行列表,且将所述第一计数器数值进行归零。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一计数器数值进行累加,且所述第一骨骼组不加入当前帧画面对应的所述动画执行列表。
6.根据权利要求4所述的方法,其特征在于,响应于所述动画执行列表在初始状态下包括所述骨骼模型中任意一个所述骨骼组;
所述基于所述动画更新间隔,确定当前帧画面对应的动画执行列表,包括:
响应于所述第一计数器数值小于所述第一更新间隔,将所述第一骨骼组从当前帧画面对应的所述动画执行列表中移除,确定当前帧画面对应的所述动画执行列表;所述第一骨骼组是所述骨骼模型中的任意一个骨骼组。
7.根据权利要求3所述的方法,其特征在于,所述基于当前帧画面对应的所述动画执行列表,在所述第一场景画面中,更新所述第一虚拟对象对应的所述骨骼动画,包括:
获取所述动画执行列表中的至少一个骨骼组对应的骨骼标识;
在所述第一场景画面中,更新当前帧画面中所述骨骼模型中,所述骨骼标识对应的骨骼组的骨骼动画。
8.根据权利要求2所述的方法,其特征在于,所述基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔,包括:
获取配置映射表;所述配置映射表用于指示所述至少一个骨骼组分别配置的所述渲染尺寸与所述动画更新间隔之间的对应关系;
基于所述渲染尺寸,从所述配置映射表中确定所述至少一个骨骼组分别对应的所述动画更新间隔。
9.根据权利要求3所述的方法,其特征在于,所述基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔,包括:
响应于所述至少一个骨骼组包括第一骨骼组以及第二骨骼组,基于所述渲染尺寸,以及所述第一骨骼组与所述第二骨骼组位于所述骨骼模型中的位置,确定所述第一骨骼组以及所述第二骨骼组分别对应的动画更新间隔;
其中,在相同的所述渲染尺寸下,所述骨骼组与骨骼模型末端之间的距离,与所述骨骼组对应的动画更新间隔呈负相关。
10.根据权利要求3所述的方法,其特征在于,所述骨骼模型中的所述骨骼组是主干骨骼组以及末端骨骼组中的至少一种;所述主干骨骼组是位于所述骨骼模型对应的骨骼树中,靠近根部的所述骨骼组;所述末端骨骼组是位于所述骨骼树中靠近叶子节点的所述骨骼组。
11.根据权利要求10所述的方法,其特征在于,响应于所述渲染尺寸小于等于第一阈值,所述末端骨骼组对应的所述动画更新间隔大于所述主干骨骼组对应的所述动画更新间隔;
响应于所述渲染尺寸大于所述第一阈值,所述末端骨骼组对应的所述动画更新间隔与所述主干骨骼组对应的所述动画更新间隔相等。
12.一种骨骼动画更新装置,其特征在于,所述装置包括:
界面展示模块,用于展示虚拟场景界面,所述虚拟场景界面用于展示通过虚拟相机拍摄虚拟场景得到的画面;
画面展示模块,用于在所述虚拟场景界面中展示第一场景画面,所述第一场景画面中包含第一虚拟对象,所述第一虚拟对象对应有至少一个骨骼组;
动画更新模块,用于在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画;至少一个所述骨骼组在所述骨骼动画中具有各自的动画更新间隔,且所述骨骼组的动画更新间隔与所述骨骼组的渲染尺寸成负相关。
13.根据权利要求12所述的装置,其特征在于,所述动画更新模块,包括:
距离获取子模块,用于获取所述虚拟相机与所述第一虚拟对象之间的第一距离;
尺寸确定子模块,用于基于所述第一距离,确定至少一个所述骨骼组分别对应的渲染尺寸;
间隔确定子模块,用于基于至少一个所述骨骼组分别对应的渲染尺寸,确定至少一个所述骨骼组分别对应的动画更新间隔;
动画更新子模块,用于基于所述骨骼组分别对应的动画更新间隔,在所述第一场景画面中,更新所述第一虚拟对象的骨骼动画。
14.一种计算机设备,其特征在于,计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至权利要求11中任一项所述的骨骼动画更新方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至权利要求11中任一项所述的骨骼动画更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110362955.1A CN112927332B (zh) | 2021-04-02 | 2021-04-02 | 骨骼动画更新方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110362955.1A CN112927332B (zh) | 2021-04-02 | 2021-04-02 | 骨骼动画更新方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112927332A CN112927332A (zh) | 2021-06-08 |
CN112927332B true CN112927332B (zh) | 2023-06-09 |
Family
ID=76174055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110362955.1A Active CN112927332B (zh) | 2021-04-02 | 2021-04-02 | 骨骼动画更新方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112927332B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113457162B (zh) * | 2021-07-16 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种虚拟对象展示方法及相关装置 |
CN114004922B (zh) * | 2021-10-29 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 骨骼动画显示方法、装置、设备、介质及计算机程序产品 |
CN114299201A (zh) * | 2022-01-05 | 2022-04-08 | 腾讯科技(深圳)有限公司 | 动画帧的显示方法、装置、设备及存储介质 |
CN114359469B (zh) * | 2022-01-07 | 2023-06-09 | 腾讯科技(深圳)有限公司 | 生成主控对象投影的方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304297B1 (en) * | 1998-07-21 | 2001-10-16 | Ati Technologies, Inc. | Method and apparatus for manipulating display of update rate |
CN103021008A (zh) * | 2012-12-11 | 2013-04-03 | 湖南师范大学 | 一种基于可编程gpu的骨骼动画处理方法 |
CN104461662A (zh) * | 2014-12-25 | 2015-03-25 | 上海恺英网络科技有限公司 | Unity3d骨骼动画插件SmoothMoves的加载优化方法 |
CN108970113A (zh) * | 2018-07-26 | 2018-12-11 | 广州多益网络股份有限公司 | 一种碰撞检测方法、装置、设备及介质 |
CN111228797A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机以及可读存储介质 |
CN111667544A (zh) * | 2020-07-02 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 动画数据压缩方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3880603B2 (ja) * | 2005-02-22 | 2007-02-14 | 株式会社コナミデジタルエンタテインメント | 画像処理装置、画像処理方法及びプログラム |
US8593463B2 (en) * | 2009-10-27 | 2013-11-26 | Microsoft Corporation | Controlling animation frame rate of applications |
CA2711874C (en) * | 2010-08-26 | 2011-05-31 | Microsoft Corporation | Aligning animation state update and frame composition |
WO2016188551A1 (en) * | 2015-05-22 | 2016-12-01 | Naturalmotion Limited | Animating a virtual object in a virtual world |
-
2021
- 2021-04-02 CN CN202110362955.1A patent/CN112927332B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304297B1 (en) * | 1998-07-21 | 2001-10-16 | Ati Technologies, Inc. | Method and apparatus for manipulating display of update rate |
CN103021008A (zh) * | 2012-12-11 | 2013-04-03 | 湖南师范大学 | 一种基于可编程gpu的骨骼动画处理方法 |
CN104461662A (zh) * | 2014-12-25 | 2015-03-25 | 上海恺英网络科技有限公司 | Unity3d骨骼动画插件SmoothMoves的加载优化方法 |
CN108970113A (zh) * | 2018-07-26 | 2018-12-11 | 广州多益网络股份有限公司 | 一种碰撞检测方法、装置、设备及介质 |
CN111228797A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机以及可读存储介质 |
CN111667544A (zh) * | 2020-07-02 | 2020-09-15 | 腾讯科技(深圳)有限公司 | 动画数据压缩方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Skeletal Animation Optimization Tips and Tricks;Peyman Massoudi;《https://www.gamedev.net/tutorials/programming/graphics/skeletal-animation-optimization-tips-and-tricks-r3988/》;全文 * |
Skeletal Animation(骨骼动画);CG迷途大熊猫;《https://www.cnblogs.com/lai3d/archive/2009/12/22/1629749.html》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112927332A (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112927332B (zh) | 骨骼动画更新方法、装置、设备及存储介质 | |
JP5887458B1 (ja) | プレイヤの移動履歴に基づいてノンプレイヤキャラクタの経路探索を行うゲームシステム等 | |
US20230050933A1 (en) | Two-dimensional figure display method and apparatus for virtual object, device, and storage medium | |
JP7431955B2 (ja) | 仮想環境における仮想キャラクタ制御方法、装置及びコンピュータプログラム | |
CN112717407B (zh) | 虚拟对象的控制方法、装置、终端及存储介质 | |
WO2021238870A1 (zh) | 信息显示方法、装置、设备及存储介质 | |
JP2022540277A (ja) | 仮想オブジェクト制御方法、装置、端末及びコンピュータプログラム | |
CN114067042A (zh) | 一种图像渲染方法、装置、设备、存储介质及程序产品 | |
KR20210151850A (ko) | 가상 장면을 디스플레이하기 위한 방법 및 장치, 단말기, 및 저장 매체 | |
CN110570500B (zh) | 角色绘制方法、装置、设备及计算机可读存储介质 | |
US20230285855A1 (en) | Virtual scene display method and apparatus, terminal, and storage medium | |
US20230321535A1 (en) | Coordinate axis display method and apparatus applied to virtual environments, terminal, and medium | |
CN114344903A (zh) | 控制虚拟对象拾取虚拟道具的方法、终端及存储介质 | |
CN111589114B (zh) | 虚拟对象的选择方法、装置、终端及存储介质 | |
JP7547646B2 (ja) | 連絡先情報表示方法、装置、電子機器、及びコンピュータープログラム | |
US20230401772A1 (en) | Animation frame display method and apparatus, device, and storage medium | |
CN113034651B (zh) | 互动动画的播放方法、装置、设备及存储介质 | |
CN112619131B (zh) | 虚拟道具的状态切换方法、装置、设备及可读存储介质 | |
CN114307150A (zh) | 虚拟对象之间的互动方法、装置、设备、介质及程序产品 | |
CN114359469A (zh) | 生成主控对象投影的方法、装置、设备及介质 | |
CN116883561B (zh) | 动画生成方法、动作控制器的训练方法、装置及设备 | |
CN118662890A (zh) | 虚拟对象的对象动画展示方法、装置、终端及存储介质 | |
CN114047998B (zh) | 对象更新方法及装置 | |
CN113559500B (zh) | 动作数据的生成方法、装置、电子设备及存储介质 | |
US20240316455A1 (en) | Processing information for virtual environment |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40045992 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |