CN1776746A - 一种动画显示方法 - Google Patents
一种动画显示方法 Download PDFInfo
- Publication number
- CN1776746A CN1776746A CNA200510131814XA CN200510131814A CN1776746A CN 1776746 A CN1776746 A CN 1776746A CN A200510131814X A CNA200510131814X A CN A200510131814XA CN 200510131814 A CN200510131814 A CN 200510131814A CN 1776746 A CN1776746 A CN 1776746A
- Authority
- CN
- China
- Prior art keywords
- pixel
- animation
- frame
- circulation
- display method
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
- Display Devices Of Pinball Game Machines (AREA)
Abstract
本发明涉及一种动画显示方法。包括预置帧显示规则,用于选取组成动画的所有帧中的部分帧进行显示输出;根据所述的帧显示规则,获取当前显示循环中需要加载显示的帧的编号;判断所述需要加载显示的帧是否已被加载到内存,若是则直接显示;否则加载该编号的帧到内存并进行输出显示。本发明保证了动画输出的流畅性,稳定动画输出质量。
Description
技术领域
本发明涉及计算机图像显示技术,尤其是一种动画显示方法。
背景技术
在游戏中,为了满足玩家个性化的需求,往往需要设计大量的图素,并通过复杂的换装系统丰富图素的输出。因此,动画显示技术中经常要面临以下问题。
有的画面包括了大量的图素,例如一个游戏画面中包括了多个玩家角色,每个角色具有各不相同的造型,并且同时进行各不相同的动作操作。现有的动画输出技术包括动态加载和静态加载方式。所述动态加载是指当用到某一个图素时,才把该图素从硬件存储空间加载到内存;所述静态加载是指在程序开始时,把所有的图素加载到内存中,等待应用程序调用。当画面中包含大量图素的时候,若使用动态加载的方式输出画面,采用动态加载方式,如果画面图素过多,大量的数据会导致硬件输入I/O的阻塞而引起程序阻塞,导致动画画面输出不连续,影响动画输出质量;若使用静态加载的方式输出动画,该方法需要预先加载大量的数据,而导致启动程序时间过长和占用内存过多的问题。
为了解决上述问题,现有游戏中的动画显示技术多采用如下的方案:程序开始时,加载部分图素到内存中,具体的,可以根据需求,在程序中预先确定所要加载的图素;程序过程中,若当前要显示的图素不再内存当中,则淘汰内存中的部分图素,释放空间后加载要使用的图素。现有的方法的缺陷在于:由于在启动时,需要加载部分图素,因此导致较长的程序启动时间;并且,程序运行过程中,现有技术无法预知每个图素的使用频率,因此有可能有的图素不经常使用却占用内存空间,导致内存空间的浪费,或者加载图素的重复操作,浪费不必要的系统资源。
发明内容
为解决上述问题,本发明的目的是提供一种动画显示方法,该方法能够减少动画加载过程中的硬件I/O阻塞,并减少内存占用容量。
为解决上述技术问题,本发明提供了一种动画显示方法,包括:预置帧显示规则,用于选取组成动画的所有帧中的部分帧进行显示输出;根据所述的帧显示规则,获取当前显示循环中需要加载显示的帧的编号;判断所述需要加载显示的帧是否已被加载到内存,若是则直接显示;否则加载该编号的帧到内存并进行输出显示。
其中,所述规则为选取动画中编号为等差排列的帧进行显示。该规则的一种算法为:X1=floor(floor(X/F)*F+mod(X,F)/P1)*P1,其中F为动画总帧数,P1为动画质量系数,X1为当前选取显示的帧编号,X为顺序播放F帧时当前显示循环对应于的帧编号。其中,动画质量系数P1以等比数列设置,以对应于不同帧缩减数;进而在动画显示之前通过确定动画质量系数P1。
在上述方法基础上,采用C++标准库提供的MAP储存所加载图素的信息,通过遍历MAP,判断当前要加载的图素是否已在内存中。
在上述方法基础上,进一步限制每一显示循环中图素的加载量。进而,若在确定的显示循环中需要显示的图素未能加载到内存,则调用该动画在内存中最近一次显示循环中加载的图素。具体的,限制图素加载量的方法可采用:判断已加载图素的总容量与当前要加载的图素容量之和是否不小于门限值,若大于则停止该显示循环中加载图素的操作。
在上述方法基础上,加载图素前判断内存空间大小,若内存空间不足,则淘汰内存中最久未使用的图素。
以上技术方案可以看出,本发明提供的动画显示方法中,对一幅动画中的帧按照预置的规则进行删减,并对帧的流量设置门限值,进而进行显示输出,达到了节省内存和控制流量的目的,当动画/程序运行的机器配置不高时,本发明保证了动画输出的连续性,避免出现动画输出停顿的现象。尤其将本发明应用于游戏中时,该方法能够降低游戏对计算机配置的要求,使得现有计算机不会成为要求高配置的游戏运行的瓶颈。
进一步,在上述方法基础上,本发明还提供多个动画帧删减程度选项,可使用户根据机器配置和应用需求决定帧删减程度,即对于机器配置较低的用户可选择删减更多的帧用于保证动画输出的流畅性。优选的,本发明中采用了等比数列的计算方法确定帧的删减程度。该算法进一步保证了动画输出的流畅性,稳定动画输出质量。
进一步,本发明通过对每个显示循环中的流量进行控制,保证了充分合理的使用内存在一个显示循环内完成图素的计算,图素的加载,图素的绘制,以免进行不必要的工作。例如加载图素后,缺乏足够的资源绘制图素,或是在显示循环时间内,没有加载足够的图素,导致资源空闲等该方法进一步提高了内存使用合理的最大化,保证了动画显示的质量;并且,由于本发明调用最近一次加载的相同图素以补偿当前显示循环中未能加载的图素,因而同时保证了画面的完整性。
本发明还采用最久未使用淘汰的原则对内存进行管理,进一步降低了系统负荷,提高了动画输出的流畅性。
附图说明
图1为本发明实施例流程图。
具体实施方式
本发明提供了一种动画显示的方法。所述动画由一组连续的并具有渐变效果的图片组成,每张图片称为一帧,一个动画通常用于表现一个完整的动作,帧数越多,动作表现得越平滑。所述帧即为每个显示循环中显示的图片(图素)例如,一个蝴蝶翅膀扇动的动画,由数幅翅膀位置不同的图片连续组成,当图片连续播放时即显示为翅膀扇动的效果。在动画中包含了若干个显示循环,动画画面的绘制是以时间为周期的循环过程,在每个显示循环内完成一次画面展现和必要的逻辑运算;每个显示循环内,画面内所有的动画都显示一帧,循环的时间可根据需要定制,例如,现有游戏中通常将动画显示循环的周期设置为50毫秒。
在以上公知概念基础上,具体说明本发明的优选实施例。为了在动画显示输出过程中达到减少硬件I/O阻塞以及节省内存空间,以保证动画显示流畅的目的,本实施例的核心包括一下三方面的内容。
1)对一幅动画中的帧进行删减,以使动画输出过程中节省内存空间。
假设一幅动画由编号为1到10的10个帧组成。本发明的原则是按照一定的规则在动画时长不变的情况下,可以只加载并显示编号为1,3,5,7,9的帧,或者只加载显示编号为1,5,9的帧。
具体的,如以下给出的算法实例,设请求绘制一幅动画的第X帧,按照下面的公式进行计算,实际加载显示的帧X1为:
X1=floor(floor(X/F)*F+mod(X,F)/P1)*P1
其中F为该动画的总帧数,即组成该动画的图片总数;floor为取整函数,mod为取余函数,X指代请求绘制的帧,X1指代实际显示输出的帧,P1为本实施例中设置的动画质量系数。在上述算法中,通过系数P1实现对动画帧缩减程度的控制,本实施例中采用等比数列的算法设置P1,对P1取值设置一个范围;进而为用户提供一个动画质量的选项,例如选项内容可包括高级动画质量、中级动画质量、低级动画质量等;该些选项分别对应于P1的几个值。用户可以根据自己机器的配置优劣,通过选择选项内容间接修改P1的值,如果机器配置低,则用户可以选择低级动画质量,那么这个动画最终加载显示的帧数就少,即由上文所举算法公式可知,动画质量越低,X与X1的间隔数越高,加载显示的帧数越少。
上文所举实例采用等比数列的算法对不同质量要求的进行帧的删减,在本发明中,依据业务应用的具体需求可采用其他算法,例如其他线性或非线性的算法选择动画中的部分帧进行显示输出。具体算法和参数配置方式本领域技术人员可以自行定制。
举例:若某动画中包括展现翅膀扇动的过程,使用10个显示循环完成所述翅膀扇动的过程,并且预置了10帧的画面,帧编号为1、……10,每帧中翅膀所在画面位置各不相同,但前后帧中翅膀位置相互连续,进而当顺序输出显示1至10帧时即可呈现翅膀扇动的效果。采用上述动画输出帧删减方法,对原有动画的10帧缩进行缩减,动画质量系数P1等于2时,即显示第1、3、5、7、9帧,在第2个显示循环中,系统通过上述公式计算得出当前加载的帧仍是第1帧,此时不需重新进行第1帧加载的操作,而直接调用已加载到内存中的第1帧进行输出,即所选每一帧在保持连续两个显示循环的输出,依此类推该动画仍使用10个显示循环完成了翅膀扇动过程的展现。下表中是动画质量系数分别等于2和4时的帧加载情况。
显示循环 | p1=2 | p1=4 | ||
x | x1 | x | x1 | |
1 | 1 | 1 | 1 | 1 |
2 | 2 | 1 | 2 | 1 |
3 | 3 | 3 | 3 | 1 |
4 | 4 | 3 | 4 | 1 |
5 | 5 | 5 | 5 | 5 |
6 | 6 | 5 | 6 | 5 |
7 | 7 | 7 | 7 | 5 |
8 | 8 | 7 | 8 | 5 |
9 | 9 | 9 | 9 | 9 |
10 | 10 | 9 | 10 | 9 |
2)控制每个显示循环中的图素加载量。
每个显示循环中,都会加载一定容量的图素到内存。所述图素对应着动画中的一帧,是图像的最小绘制单元。本发明中进一步通过对每个显示循环中的流量进行控制,保证了在一个显示循环内能够合理的分配资源完成图素的计算、图素的加载以及图素的绘制;并且,如果在确定的显示循环中需要显示的某动画的图素未能加载到内存,则调用该动画在内存中最近一次显示循环中加载的图素。
为了实现该目的,具体实现中可设置一个门限值Q作为每次显示循环时可以加载图素的最大容量,该门限值Q可通过具体的业务需求、实际经验值,以及根据内存和硬盘的计算速度确定;设置一个参数Q1,用于记录每次显示循环时图素加载的总容量。当图素的加载容量Q1大于或者等于设定的最大容量Q时,则在当前显示循环中,停止加载图素到内存。如果在当前显示循环中需要显示的图素未能加载到内存中,则查找最近一次的显示循环中该动画所使用的图素进行显示。当本次显示循环结束时,将Q1值清零,开始下一个显示循环图素加载量的计算。
例如,某动画中包括展现翅膀扇动的过程,使用5个显示循环完成所述翅膀扇动的过程,并且每个显示循环显示一帧的画面,帧编号分别为1、2、3、4、5,每帧中翅膀所在画面位置各不相同,但前后帧中翅膀位置相互连续,进而当顺序输出显示1至5帧时即可呈现翅膀扇动的效果。设在下一个显示循环中将显示第3帧,则需加载第3帧画面中的各图素到内存。假设在采用上述流量控制的情况下,由于第三帧加载到内存的图素量达到了预置的门限,使得第3帧中翅膀图素未能加载到内存中,则返回内存中已保存的在第2显示循环中加载并显示的翅膀图素,即第2帧在第3显示循环中显示输出。
本举例中,在加载图素前,判断已加载图素的总容量与当前要加载的图素容量之和是否大于或等于门限值,若是,则调用该动画在内存中最近一次显示循环中所加载的图素。否则,加载显示当前要加载的图素。本发明中并不排除其他设置内存占用门限的方法,如内存占用率等。
3)对内存的管理。
每个显示循环都包括往内存中加载图素的操作,当内存空间不足时,采用最久未使用淘汰的原则卸载那些最久未使用的图素,以释放内存空间,用于加载新的图素。
以上具体介绍了本发明中所采用的部分技术手段。以下参照图1,说明本发明的动画显示方法的处理流程。
操作开始进行步骤11:当内存空间不足时,卸载内存中最久未使用的图素,以释放内存空间加载新的图素;
步骤12:依据预置的算法计算当前显示循环中实际加载的帧X1;判断帧X1是否已被加载到内存,若否则进行步骤13,否则之间进行输出显示;本实施例中采用C++标准库提供的MAP储存所加载图素的信息,通过遍历MAP,可判断当前要加载的图素是否已在内存中;
步骤13:计算当前显示循环中已加载的图素容量;
步骤14:判断当前已加载容量是否达到预置门限,若否则进行步骤15,若时则进行步骤16;
步骤15:继续加载动画第X1帧的图素;
步骤16:对于未能加载的图素,返回最近一次绘制动画所使用的帧。
操作结束。
以上为本发明的优选实施例,该实施例中将内存管理和流量控制进行了有机的结合,即采取最久未使用淘汰的原则释放内存空间的同时,依据预置的规则选择一幅动画中所要加载并显示的帧,并在进行帧加载的过程中对帧中的图素加载流量进行控制。由于在动画显示的多个方面采用所述技术手段,因而达到了降低系统运行负荷,提高动画输出流畅性的目的。
以上对本发明所提供的一种动画显示方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1、一种动画显示方法,其特征在于:
预置帧显示规则,用于选取组成动画的所有帧中的部分帧进行显示输出;
根据所述的帧显示规则,获取当前显示循环中需要加载显示的帧的编号;
判断所述需要加载显示的帧是否已被加载到内存,若是则直接显示;否则加载该编号的帧到内存并进行输出显示。
2、如权利要求1所述的动画显示方法,其特征在于:
所述规则为选取动画中编号为等差排列的帧进行显示。
3、如权利要求2所述的动画显示方法,其特征在于:
所述规则具体为:X1=floor(floor(X/F)*F+mod(X,F)/P1)*P1,其中F为动画总帧数,P1为动画质量系数,X1为当前选取显示的帧编号,X为顺序播放F帧时当前显示循环对应于的帧编号。
4、如权利要求2所述的动画显示方法,其特征在于:
所述动画质量系数P1以等比数列设置,以对应于不同帧缩减数;以及,动画显示之前通过确定动画质量系数P1。
5、如权利要求1所述的动画显示方法,其特征在于:
使用C++标准库提供的MAP储存所加载图素的信息,通过遍历MAP,判断当前要加载的图素是否已在内存中。
6、如权利要求1所述的动画显示方法,其特征在于,进一步包括:
限制每一显示循环中图素的加载量。
7、如权利要求7所述的动画显示方法,其特征在于:
进一步,由于限制每一显示循环中图素加载量,若在确定的显示循环中需要显示的图素未能加载到内存,则调用该动画在内存中最近一次显示循环中加载的图素。
8、如权利要求7所述的动画显示方法,其特征在于,所述限制图素加载量的方法为:
判断已加载图素的总容量与当前要加载的图素容量之和是否不小于门限值,若大于则停止该显示循环中加载图素的操作。
9、如权利要求1所述的动画显示方法,其特征在于,进一步包括:
加载图素前判断内存空间大小,若内存空间不足,则淘汰内存中最久未使用的图素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510131814XA CN100361161C (zh) | 2005-12-15 | 2005-12-15 | 一种动画显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510131814XA CN100361161C (zh) | 2005-12-15 | 2005-12-15 | 一种动画显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776746A true CN1776746A (zh) | 2006-05-24 |
CN100361161C CN100361161C (zh) | 2008-01-09 |
Family
ID=36766217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200510131814XA Active CN100361161C (zh) | 2005-12-15 | 2005-12-15 | 一种动画显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100361161C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428279C (zh) * | 2006-11-10 | 2008-10-22 | 北京金山软件有限公司 | 一种动画的实现方法和动画绘制系统 |
CN101640780B (zh) * | 2008-07-30 | 2013-03-20 | 鸿富锦精密工业(深圳)有限公司 | 影像浏览系统和方法 |
CN103577663A (zh) * | 2012-07-18 | 2014-02-12 | 人人游戏网络科技发展(上海)有限公司 | 信息发送和显示方法及其设备 |
CN106162299A (zh) * | 2015-03-31 | 2016-11-23 | 青岛海信电器股份有限公司 | 一种osd动画素材数据的播放方法和装置 |
CN107464209A (zh) * | 2017-03-24 | 2017-12-12 | 深圳市保千里电子有限公司 | 一种动画的调度方法及系统 |
WO2019015643A1 (zh) * | 2017-07-19 | 2019-01-24 | 腾讯科技(深圳)有限公司 | 游戏画面的显示控制方法及装置、电子设备和存储介质 |
CN110351599A (zh) * | 2019-07-29 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 动画文件播放方法、装置及终端设备 |
-
2005
- 2005-12-15 CN CNB200510131814XA patent/CN100361161C/zh active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428279C (zh) * | 2006-11-10 | 2008-10-22 | 北京金山软件有限公司 | 一种动画的实现方法和动画绘制系统 |
CN101640780B (zh) * | 2008-07-30 | 2013-03-20 | 鸿富锦精密工业(深圳)有限公司 | 影像浏览系统和方法 |
CN103577663A (zh) * | 2012-07-18 | 2014-02-12 | 人人游戏网络科技发展(上海)有限公司 | 信息发送和显示方法及其设备 |
CN106162299A (zh) * | 2015-03-31 | 2016-11-23 | 青岛海信电器股份有限公司 | 一种osd动画素材数据的播放方法和装置 |
CN106162299B (zh) * | 2015-03-31 | 2020-04-17 | 青岛海信电器股份有限公司 | 一种osd动画素材数据的播放方法和装置 |
CN107464209A (zh) * | 2017-03-24 | 2017-12-12 | 深圳市保千里电子有限公司 | 一种动画的调度方法及系统 |
WO2019015643A1 (zh) * | 2017-07-19 | 2019-01-24 | 腾讯科技(深圳)有限公司 | 游戏画面的显示控制方法及装置、电子设备和存储介质 |
US10970908B2 (en) | 2017-07-19 | 2021-04-06 | Tencent Technology (Shenzhen) Company Limited | Display control method and apparatus for game screen, electronic device, and storage medium |
US11450052B2 (en) | 2017-07-19 | 2022-09-20 | Tencent Technology (Shenzhen) Company Limited | Display control method and apparatus for game screen, electronic device, and storage medium |
US11721057B2 (en) | 2017-07-19 | 2023-08-08 | Tencent Technology (Shenzhen) Company Limited | Selectively turning off animation features to address frame rate inadequacy |
CN110351599A (zh) * | 2019-07-29 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 动画文件播放方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100361161C (zh) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100361161C (zh) | 一种动画显示方法 | |
US10402934B2 (en) | System for optimizing graphics operations | |
US7911472B2 (en) | System for reducing the number of programs necessary to render an image | |
US8704837B2 (en) | High-level program interface for graphics operations | |
US7847800B2 (en) | System for emulating graphics operations | |
US9223631B2 (en) | Performing an operation using multiple services | |
CN112905326A (zh) | 任务处理方法及装置 | |
US20100149195A1 (en) | Load balancing in multiple processor rendering systems | |
CN114564302B (zh) | 一种gpu资源分配方法、系统、设备以及介质 | |
US8780120B2 (en) | GPU self throttling | |
CN107122176A (zh) | 一种图形绘制方法及装置 | |
CN102521866A (zh) | 一种角色动画实现方法及系统 | |
CN116847126B (zh) | 一种视频解码数据传输方法及系统 | |
CN109448092B (zh) | 一种基于动态任务粒度的负载均衡集群渲染方法 | |
KR20240063163A (ko) | 업스케일러 작업을 위한 플랫폼 리소스 선택 | |
CN116468597B (zh) | 基于多gpu的图像渲染方法、装置及可读存储介质 | |
CN111507885A (zh) | 一种基于最佳缓存空间计算的混合图元渲染方法及系统 | |
CN117909268B (zh) | 一种gpu驱动优化方法 | |
CN111968190B (zh) | 游戏贴图的压缩方法、装置和电子设备 | |
CN114625544B (zh) | 基于虚拟机业务负载动态分配的内存气球管理方法和装置 | |
WO2021141399A1 (en) | Method and electronic device for accelerating asset execution | |
CN116957907A (zh) | 一种基于并行计算的图像处理方法及设备 | |
CN118781230A (zh) | 一种车机动画优化方法、车机、智能座舱、电子设备 | |
CN118689366A (zh) | 一种列表数据显示方法及处理终端 | |
CN114579295A (zh) | 适应性调用外部硬件资源的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |