CN104517309B - 帧循环中的动画处理方法和装置 - Google Patents
帧循环中的动画处理方法和装置 Download PDFInfo
- Publication number
- CN104517309B CN104517309B CN201310467716.8A CN201310467716A CN104517309B CN 104517309 B CN104517309 B CN 104517309B CN 201310467716 A CN201310467716 A CN 201310467716A CN 104517309 B CN104517309 B CN 104517309B
- Authority
- CN
- China
- Prior art keywords
- node
- frame
- rendering
- texture
- render tree
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种帧循环中的动画处理方法和装置。所述方法包括:获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点;根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染;所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。所述装置包括:渲染树获取模块,用于获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点;场景渲染模块,用于根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染;所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。低GPU的负荷和电量耗费。
Description
技术领域
本发明涉及影像处理技术,特别是涉及一种帧循环中的动画处理方法和装置。
背景技术
动画影像通常是以帧为单位循环进行渲染的,即按照一定的帧率对帧画面进行渲染,以得到当前帧所对应的动画场景。
动画影像的帧循环过程中,每一帧都将检测逻辑更新和事件更新,以完成动画场景的绘制,也就是说,无论当前帧和上一帧场景中的画面相比有无变化都将对当前帧重绘整个场景。
然而,这一动画影像的帧循环过程由于需要对每一帧的场景进行重绘,持续的重绘将大大增加GPU(Graphic Processing Unit,图形处理器)的负荷,特别是在帧数较高或者场景较为复杂的时候将会使得GPU不甚重负,进而带来巨大的电量耗费。
发明内容
基于此,有必要针对动画影像的帧循环中对每一帧所进行的重绘给GPU带来较大负荷,进而带来巨大的电量耗费的技术问题,提供一种降低GPU的负荷和电量耗费的帧循环中的动画处理方法。
此外,还有必要提供一种降低GPU的负荷和电量耗费的帧循环中的动画处理装置。
一种帧循环中的动画处理方法,包括如下步骤:
获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点;
根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染;
所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。
在其中一个实施例中,所述根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染的步骤包括:
遍历所述当前帧所对应的渲染树,根据所述渲染节点中的渲染信息进行渲染,并与所述僵尸节点对应的纹理形成当前帧的场景。
在其中一个实施例中,所述渲染节点包括可变节点和变化节点,所述根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染的步骤之前,所述方法还包括:
检查所述渲染树中的可变节点是否发生变化,若是,则
更新所述可变节点对应的纹理。
在其中一个实施例中,所述根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染的步骤包括:
遍历所述当前帧所对应的渲染树,根据所述渲染节点中变化节点的渲染信息进行渲染,并与所述僵尸节点对应的纹理、所述可变节点对应的纹理形成当前帧的场景。
在其中一个实施例中,所述根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染的步骤之前,所述方法还包括:
将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放所述渲染信息,设置对应的僵尸节点。
在其中一个实施例中,所述检查所述渲染树中的可变节点是否发生变化的步骤之前,所述方法还包括:
将可变节点的渲染信息渲染并保存为纹理。
在其中一个实施例中,所述将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放所述渲染信息,设置对应的僵尸节点,将可变节点的渲染信息渲染并保存为纹理的步骤之后,所述方法还包括:
根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
一种帧循环中的动画处理装置,包括:
渲染树获取模块,用于获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点;
场景渲染模块,用于根据所述渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染;
所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。
在其中一个实施例中,所述场景渲染模块还用于遍历当前帧所对应的渲染树,根据所述渲染节点中的渲染信息进行渲染,并与所述僵尸节点对应的纹理形成当前帧的场景。
在其中一个实施例中,所述渲染节点包括可变节点和变化节点,所述装置还包括:
变化检查模块,用于检查所述渲染树中的可变节点是否发生变化,若是,则通知更新模块;
所述更新模块用于更新所述可变节点对应的纹理。
在其中一个实施例中,所述场景渲染模块还用于遍历所述当前帧所对应的渲染树,根据所述渲染节点中变化节点的渲染信息进行渲染,并与所述僵尸节点对应的纹理、所述可变节点对应的纹理形成当前帧的场景。
在其中一个实施例中,所述装置还包括:
第一帧处理模块,用于将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放所述渲染信息,设置对应的僵尸节点。
在其中一个实施例中,所述第一帧处理模块还用于将可变节点的渲染信息渲染并保存为纹理。
在其中一个实施例中,还包括:
第一帧渲染模块,用于根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
上述帧循环中的动画处理方法和装置,在对当前帧进行场景的渲染时将获取当前帧所对应的渲染树,该渲染树包括了僵尸节点和渲染节点,其中,僵尸节点对应的纹理是渲染树中对应的固定节点中已经释放的渲染信息进行渲染得到并保存的,由于僵尸节点所对应的固定节点中的渲染信息已经渲染为纹理并保存,因此,不再需要对渲染树中原有的固定节点的渲染信息进行渲染,减少了场景渲染时的渲染周期,有效降低了GPU的负荷和电量耗费。
附图说明
图1为一个实施例中帧循环中的动画处理方法的流程图;
图2为另一个实施例中帧循环中的动画处理方法的流程图;
图3为一个实施例中帧循环中的动画处理方法的应用示意图;
图4为一个实施例中帧循环中的动画处理装置的结构示意图;
图5为另一个实施例中帧循环中的动画处理装置的结构示意图。
具体实施方式
如图1所示,在一个实施例中,一种帧循环中的动画处理方法,包括如下步骤:
步骤S110,获取当前帧所对应的渲染树,该渲染树包括了僵尸节点和渲染节点。
本实施例中,动画的帧循环中,每一帧都将显示对应的场景,动画中帧的循环播放也将对应的场景的循环变化。其中,每一帧的场景的显示均是通过对应的渲染树实现的。
场景中的元素将按照树形结构进行组织,并以节点的形式存在,即场景都将对应了渲染树,该渲染树由若干个节点组成。例如,若场景为房间,则房间里的床、桌子、灯和柜等设施均分别对应了渲染树中的节点,并且场景中所有的图形对象、属性和事件响应也全由场景的渲染树中的节点处理。
渲染树中的僵尸节点将是由渲染树原先所存在的固定节点变换得到的,也就是说,预先将渲染树中一个或着连接的多个固定节点中的渲染信息渲染为纹理,并设置僵尸节点,因此,实际上,僵尸节点将对应了一个固定节点或者多个连续的固定节点。
渲染节点将是渲染树中除了僵尸节点之后的其它节点,用于进行场景中某一元素的渲染,在此将不对渲染节点进行限定。
步骤S130,根据渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染,其中,僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。
本实施例中,保存了对应纹理的一个或连续的多个固定节点以僵尸节点的形式存在于当前帧的渲染树中,并且该僵尸节点是与纹理对应的,因此,在进行当前帧的场景渲染过程中,将不需要对固定节点的渲染信息进行渲染,而在进行渲染节点中渲染信息的渲染之后,直接应用僵尸节点对应的纹理形成当前帧的场景。
渲染信息包括了图片以及相应的纹理坐标等用于实现场景中元素渲染的信息,其中,纹理坐标将用于指示场景所在的画面中图片所在的区域。
上述帧循环的动画处理过程中,由于预先对固定节点的渲染信息进行了渲染以得到对应的纹理,因此,在每一帧的渲染过程将不再需要进行固定节点的渲染信息的渲染,减少了每一帧所需要耗费的渲染周期,进而有效地降低了GPU的负荷和电量耗费。
在一个实施例中,上述步骤S130的具体过程为:遍历当前帧所对应的渲染树,根据渲染节点中的渲染信息进行渲染,并与僵尸节点对应的纹理形成当前帧的场景。
本实施例中,在当前帧所对应的渲染树中,遍历渲染树中的节点,在遍历到渲染节点时,将提取渲染节点中的渲染信息进行渲染,进而与僵尸节点对应的纹理形成当前帧的场景。
在另一个实施例中,渲染节点包括可变节点和变化节点,如图2所示,上述步骤S130之前,该方法还包括:
步骤S210,检查渲染树中的可变节点是否发生变化,若是,则进入步骤S230,若否,则进入步骤S130。
本实施例中,根据渲染树中节点所对应的创建属性,即该节点被创建时的属性将渲染树中的节点划分为固定节点和渲染节点,其中,又将渲染节点划分为可变节点和变化节点。固定节点为节点中的渲染信息不会发生变化的节点;可变节点为节点中的渲染信息可能会发生变化,但是发生变化的频率不高的节点;变化节点为节点中的渲染信息随着所在帧的不同而时时发生变化的节点。
为进行当前帧的渲染,将检测当前帧的渲染树中可变节点是否发生了变化,若是,则进入步骤S230进行纹理的更新,若否,则进入步骤S130直接根据变化节点中的渲染信息进行渲染后与固定节点的纹理、可变节点的纹理形成当前帧的场景。
步骤S230,更新可变节点对应的纹理。
本实施例中,可变节点均根据其中的渲染信息渲染并保存了对应的纹理,其中,该渲染并保存的纹理可对应于一个可变节点,也可对应于连续的多个可变节点。
在检查得到当前帧中的可变节点发生了变化之后,将更新该可变节点中的信息,并按照更新后的信息进行渲染得到所对应的纹理。
在另一个实施例中,上述步骤S130的步骤包括:遍历当前帧所对应的渲染树,根据渲染节点中变化节点的渲染信息进行渲染,并与僵尸节点对应的纹理、可变节点对应的纹理形成当前帧的场景。
本实施例中,在当前帧中的可变节点发生了变化时,将根据僵尸节点对应的纹理、可变节点更新后的纹理和变化节点中的信息进行场景渲染,不需要对渲染树中所有节点的渲染信息进行渲染,进一步降低了GPU的负荷,特别是帧较高或场景较为复杂的情况下,避免了持续渲染的发生,不会带来巨大的电量浪费和伴随而来的机器温度的升高。对于运行于智能手机等移动平台的动画而言,省电和降低机器温度是非常重要的,有力地保障了移动平台的续航能力和顺畅运行。
在另一个实施例中,上述步骤S210之前,该方法还包括:
判断当前帧是否发生场景变化,若是,则进入步骤S210,若否,则结束。
本实施例中,在进行当前帧的渲染之前,将获取场景变化信息,以判断当前帧的场景是否会发生变化,若否,则说明当前帧的场景是与上一帧的场景相一致的,因此,将不对当前帧的场景进行渲染,断续进行对当前显示的场景进行显示即可,以通过避免场景的持续渲染来降低GPU的负荷。
若判断到当前场景发生了变化时,则检查当前帧中的可变节点是否发生了变化,以定位当前帧中发生了变化的可变节点。
在另一个实施例中,上述步骤S130之前,该方法还包括:
将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放渲染信息,设置对应的僵尸节点。
本实施例中,在动画的帧循环过程中,对第一帧的场景进行渲染之前,根据第一帧所对应的渲染树中固定节点的渲染信息进行渲染并保存为纹理,释放该固定节点中的渲染信息,以避免不必要地占用内存空间,进而提高系统的运行速度。
此外,还将设置对应的僵尸节点,以便于遍历渲染树,根据渲染树中的节点实现场景的渲染时,若遍历到僵尸节点,则相应地获知该僵尸节点所对应的固定节点集,并得到对应的纹理。
在另一个实施例中,上述步骤S210之前,该方法还包括将可变节点的渲染信息渲染并保存为纹理的步骤。
本实施例中,为进一步提高场景渲染的效率和降低渲染过程中占用的系统资源,除了将固定节点的渲染信息渲染并保存为纹理之外,还可渲染可变节点的渲染信息并保存为纹理。
但是,由于可变节点的渲染信息发生变化的机率并不是非常高,但也无法排除其发生变化的可能性,因此,虽然将根据可变节点的渲染信息渲染并保存为纹理,但是并不会释放可变节点的渲染信息,以便于发生变化时更新可变节点中的渲染信息及对应的纹理。
进一步的,上述将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放渲染信息,设置对应的僵尸节点,将可变节点的渲染信息渲染并保存为纹理的具体过程为:
遍历第一帧所对应的渲染树,根据渲染树中一个和/或连续的多个固定节点的渲染信息进行渲染并保存为相应的纹理,释放进行渲染了的固定节点中的渲染信息,设置对应的僵尸节点,根据一个和/或连续的多个可变节点的渲染信息进行渲染并保存为相应的纹理。
本实施例中,遍历第一帧所对应的渲染树,对渲染树中存在的一个或者连续的多个固定节点,将提取固定节点中的渲染信息,以按照提取的渲染信息进行纹理的渲染和保存,例如,可保存为Texture_stable的形式,根据渲染树中节点的情况可生成多个纹理,即Texture_stable_1、Texture_stable_2、……、Texture_stable_n,实现场景中的分块预渲染。
进一步的,对于渲染树中单独的一个固定节点或者连续的多个固定节点而言,可提取单独一个固定节点中的渲染信息,或连续的多个固定节点中的渲染信息,以进行渲染并保存为纹理,但是,也可根据场景复杂度等因素进行灵活地设定。因此,在渲染树中,对于连续的多个固定节点,可分别提取连续的预设数量个固定节点进行渲染并保存为纹理。
进一步的,上述将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放渲染信息,设置对应的僵尸节点,将可变节点的渲染信息渲染并保存为纹理的步骤之后,该方法还包括:
根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
本实施例中,在动画的第一帧中,将根据僵尸节点和可变节点对应的纹理进行第一帧的场景渲染,不需要对固定节点的渲染信息和可变节点的渲染信息进行渲染,大大降低了GPU负荷,避免了在渲染树节点的渲染中持续渲染的发生。
下面结合一个具体的实施例来详细阐述上述帧循环中的动画处理方法。如图3所示,该实施例中,动画所对应的渲染树将包括了编号为1至10的节点,其中,节点1至节点3为固定节点,节点4、节点6、节点7、节点8和节点10为可变节点,节点5和节点9为变化节点。
第一帧时,将节点1至节点3渲染并保存为纹理,即得到Texture_stable_1,并释放节点1至节点3中的渲染信息。
将节点6至节点8渲染并保存为纹理,即Texture_unstable_1。
此时,将遍历渲染树,首先将Texture_stable_1进行渲染,然后根据节点的遍历顺序渲染节点4中的渲染信息,渲染节点5中的渲染信息,最后分别渲染节点9和节点10中的信息,进而与Texture_stable_1、节点6至节点8所对应的纹理,即Texture_unstable_1形成第一帧的场景;
在后续其它帧的场景渲染中,都将检查节点6至节点8是否发生变化,若是,则将对应的纹理更新后再根据节点的遍历顺序完成场景的渲染。
在这一过程中,将设定了预设数量个连续的节点才需要渲染到纹理中,而不对单独的一个节点进行渲染并保存为纹理,以得到最佳的处理效率。
在如上所述的具体实施例中,若每一节点均需要一个渲染周期,则在不预先保存为纹理的情况下将需要10个渲染周期,但是,保存为纹理之后,将只有需要6个渲染周期,减少了40%;在最差的情况下也只有需要9个渲染周期,因此,所降低的负荷是非常可观的。
上述帧循环中的动画处理方法中,在帧率不变的情况下,若没有场景的变化则不会进行任何渲染,在场景发生变化时,将对原先的分块预渲染进行更新,即更新发生了变化的节点,进而使得渲染步骤或者渲染整个场景所需的渲染指令大大减少,将大大减少了渲染事件,降低了GPU的负荷,减少机器中的能耗。
如图4所示,在一个实施例中,一种帧循环中的动画处理装置,包括渲染树获取模块110和场景渲染模块130。
渲染树获取模块110,用于获取当前帧所对应的渲染树,该渲染树包括了僵尸节点和渲染节点。
本实施例中,动画的帧循环中,每一帧都将显示对应的场景,动画中帧的循环播放也将对应的场景的循环变化。其中,每一帧的场景的显示均是通过对应的渲染树实现的。
场景中的元素将按照树形结构进行组织,并以节点的形式存在,即场景都将对应了渲染树,该渲染树由若干个节点组成。例如,若场景为房间,则房间里的床、桌子、灯和柜等设施均分别对应了渲染树中的节点,并且场景中所有的图形对象、属性和事件响应也全由场景的渲染树中的节点处理。
渲染树中的僵尸节点将是由渲染树原先所存在的固定节点变换得到的,也就是说,预先将渲染树中一个或着连接的多个固定节点中的渲染信息渲染为纹理,并设置僵尸节点,因此,实际上,僵尸节点将对应了一个固定节点或者多个连续的固定节点。
渲染节点将是渲染树中除了僵尸节点之后的其它节点,用于进行场景中某一元素的渲染,在此将不对渲染节点进行限定。
场景渲染模块130,用于根据渲染树中僵尸节点对应的纹理以及渲染节点进行当前帧的场景渲染,其中,僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的。
本实施例中,保存了对应纹理的一个或连续的多个固定节点以僵尸节点的形式存在于当前帧的渲染树中,并且该僵尸节点是与纹理对应的,因此,场景渲染模块130在进行当前帧的场景渲染过程中,将不需要对固定节点的渲染信息进行渲染,而在进行渲染节点中渲染信息的渲染之后,直接应用僵尸节点对应的纹理形成当前帧的场景。
渲染信息包括了图片以及相应的纹理坐标等用于实现场景中元素渲染的信息,其中,纹理坐标将用于指示场景所在的画面中图片所在的区域。
上述帧循环的动画处理过程中,由于预先对固定节点的渲染信息进行了渲染以得到对应的纹理,因此,在每一帧的渲染过程将不再需要进行固定节点的渲染信息的渲染,减少了每一帧所需要耗费的渲染周期,进而有效地降低了GPU的负荷和电量耗费。
在一个实施例中,上述场景渲染模块130还用于遍历当前帧所对应的渲染树,根据渲染节点中的渲染信息进行渲染,并与僵尸节点对应的纹理形成当前帧的场景。
本实施例中,在当前帧所对应的渲染树中,场景渲染模块130遍历渲染树中的节点,在遍历到渲染节点时,将提取渲染节点中的渲染信息进行渲染,进而与僵尸节点对应的纹理形成当前帧的场景。
在另一个实施例中,渲染节点包括可变节点为和变化节点,如图5所示,该装置还包括变化检查模块210和更新模块230。
变化检查模块210,用于检查渲染树中的可变节点是否发生变化,若是,则通知更新模块230,若否,则通知场景渲染模块130。
本实施例中,根据渲染树中节点所对应的创建属性,即该节点被创建时的属性将渲染树中的节点划分为固定节点和渲染节点,其中,又将渲染节点划分为可变节点和变化节点。固定节点为节点中的渲染信息不会发生变化的节点;可变节点为节点中的渲染信息可能会发生变化,但是发生变化的频率不高的节点;变化节点为节点中的渲染信息随着所在帧的不同而时时发生变化的节点。
为进行当前帧的渲染,变化检查模块210将检测当前帧的渲染树中可变节点是否发生了变化,若是,则通知更新模块230进行纹理的更新,若否,则通知场景渲染模块130直接根据变化节点中的渲染信息进行渲染后与固定节点的纹理、可变节点的纹理形成当前帧的场景。
更新模块230,用于更新可变节点对应的纹理。
本实施例中,可变节点均根据其中的渲染信息渲染并保存了对应的纹理,其中,该渲染并保存的纹理可对应于一个可变节点,也可对应于连续的多个可变节点。
在检查得到当前帧中的可变节点发生了变化之后,更新模块230将更新该可变节点中的信息,并按照更新后的信息进行渲染得到所对应的纹理。
在另一个实施例中,上述变化检查模块210还用于判断当前帧是否发生场景变化,若是,则检查渲染树中的可变节点是否发生变化,若否,则停止执行。
本实施例中,在进行当前帧的渲染之前,变化检查模块210将获取场景变化信息,以判断当前帧的场景是否会发生变化,若否,则说明当前帧的场景是与上一帧的场景相一致的,因此,将不对当前帧的场景进行渲染,断续进行对当前显示的场景进行显示即可,以通过避免场景的持续渲染来降低GPU的负荷。
若判断到当前场景发生了变化时,则检查当前帧中的可变节点是否发生了变化,以定位当前帧中发生了变化的可变节点。
在另一个实施例中,上述场景渲染模块130还用于遍历当前帧所对应的渲染树,根据渲染节点中变化节点的渲染信息进行渲染,并与僵尸节点对应的纹理、可变节点对应的纹理形成当前帧的场景。
本实施例中,在当前帧中的可变节点发生了变化时,场景渲染模块130将根据僵尸节点对应的纹理、可变节点更新后的纹理和变化节点中的信息进行场景渲染,不需要对渲染树中所有节点的渲染信息进行渲染,进一步降低了GPU的负荷,特别是帧较高或场景较为复杂的情况下,避免了持续渲染的发生,不会带来巨大的电量浪费和伴随而来的机器温度的升高。对于运行于智能手机等移动平台的动画而言,省电和降低机器温度是非常重要的,有力地保障了移动平台的续航能力和顺畅运行。
在另一个实施命名,该装置还包括第一帧处理模块。第一帧处理模块用于将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放渲染信息,设置对应的僵尸节点。
本实施例中,在动画的帧循环过程中,对第一帧的场景进行渲染之前,第一帧处理模块根据第一帧所对应的渲染树中固定节点的渲染信息进行渲染并保存为纹理,释放该固定节点中的渲染信息,以避免不必要地占用内存空间,进而提高系统的运行速度。
此外,第一帧处理模块还将设置对应的僵尸节点,以便于遍历渲染树,根据渲染树中的节点实现场景的渲染时,若遍历到僵尸节点,则相应地获知该僵尸节点所对应的固定节点集,并得到对应的纹理。
在另一个实施例中,上述第一帧处理模块还用于将可变节点的渲染信息渲染并保存为纹理。
本实施例中,为进一步提高场景渲染的效率和降低渲染过程中占用的系统资源,除了将固定节点的渲染信息渲染并保存为纹理之外,还可渲染可变节点的渲染信息并保存为纹理。
但是,由于可变节点的渲染信息发生变化的机率并不是非常高,但也无法排除其发生变化的可能性,因此,虽然第一帧处理模块将根据可变节点的渲染信息渲染并保存为纹理,但是并不会释放可变节点的渲染信息,以便于发生变化时更新可变节点中的渲染信息及对应的纹理。
进一步的,上述第一帧处理模块还用于遍历第一帧所对应的渲染树,根据渲染树中一个和/或连续的多个固定节点的渲染信息进行渲染并保存为相应的纹理,释放进行渲染了的固定节点中的渲染信息,设置对应的僵尸节点,根据一个和/或连续的多个可变节点的渲染信息进行渲染并保存为相应的纹理。
本实施例中,第一帧处理模块遍历第一帧所对应的渲染树,对渲染树中存在的一个或者连续的多个固定节点,将提取固定节点中的渲染信息,以按照提取的渲染信息进行纹理的渲染和保存,例如,可保存为Texture_stable的形式,根据渲染树中节点的情况可生成多个纹理,即Texture_stable_1、Texture_stable_2、……、Texture_stable_n,实现场景中的分块预渲染。
进一步的,对于渲染树中单独的一个固定节点或者连续的多个固定节点而言,第一帧处理模块可提取单独一个固定节点中的渲染信息,或连续的多个固定节点中的渲染信息,以进行渲染并保存为纹理,但是,也可根据场景复杂度等因素进行灵活地设定。因此,在渲染树中,对于连续的多个固定节点,可分别提取连续的预设数量个固定节点进行渲染并保存为纹理。
相应的,该装置还包括了第一帧渲染模块。第一帧渲染模块用于根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
本实施例中,在动画的第一帧中,第一帧渲染模块将根据僵尸节点和可变节点对应的纹理进行第一帧的场景渲染,不需要对固定节点的渲染信息和可变节点的渲染信息进行渲染,大大降低了GPU负荷,避免了在渲染树节点的渲染中持续渲染的发生。
上述帧循环中的动画处理方法和装置可运行于智能手机等移动终端所提供的移动平台中,用于实现移动平台中的游戏运行,以使得游戏中的场景渲染按照上述帧循环中的动画处理方法实现,降低游戏运行过程中GPU的负荷和移动平台的电量耗费。
上述帧循环中的动画处理装置中,在帧率不变的情况下,若没有场景的变化则不会进行任何渲染,在场景发生变化时,将对原先的分块预渲染进行更新,即更新发生了变化的节点,进而使得渲染步骤或者渲染整个场景所需的渲染指令大大减少,将大大减少了渲染事件,降低了GPU的负荷,减少机器中的能耗。
上述帧循环中的动画处理方法和装置,在对当前帧进行场景的渲染时将获取当前帧所对应的渲染树,该渲染树包括了僵尸节点和渲染节点,其中,僵尸节点对应的纹理是渲染树中对应的固定节点中已经释放的渲染信息进行渲染得到并保存的,由于僵尸节点所对应的固定节点中的渲染信息已经渲染为纹理并保存,因此,不再需要对渲染树中原有的固定节点的渲染信息进行渲染,减少了场景渲染时的渲染周期,有效降低了GPU的负荷和电量耗费。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种帧循环中的动画处理方法,包括如下步骤:
获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点,所述渲染节点包括可变节点和变化节点,所述可变节点为节点中的渲染信息随着所在帧的不同存在变化可能性的节点,所述变化节点为节点中的渲染信息随着所在帧的不同而时时发生变化的节点;
根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染;
所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的,所述固定节点为节点中的渲染信息在每一帧都不会发生变化的节点;
所述根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染的步骤之前,所述方法还包括:
将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放所述渲染信息,设置对应的僵尸节点。
2.根据权利要求1所述的方法,其特征在于,所述根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染的步骤包括:
遍历所述当前帧所对应的渲染树,根据所述渲染节点中的渲染信息进行渲染,并与所述僵尸节点对应的纹理形成当前帧的场景。
3.根据权利要求1所述的方法,其特征在于,所述根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染的步骤之前,所述方法还包括:
检查所述渲染树中的可变节点是否发生变化,若是,则
更新所述可变节点对应的纹理。
4.根据权利要求3所述的方法,其特征在于,所述根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染的步骤包括:
遍历所述当前帧所对应的渲染树,根据所述渲染节点中变化节点的渲染信息进行渲染,并与所述僵尸节点对应的纹理、所述可变节点对应的纹理形成当前帧的场景。
5.根据权利要求3所述的方法,其特征在于,所述检查所述渲染树中的可变节点是否发生变化的步骤之前,所述方法还包括:
将可变节点的渲染信息渲染并保存为纹理。
6.根据权利要求5所述的方法,其特征在于,将可变节点的渲染信息渲染并保存为纹理的步骤之后,所述方法还包括:
根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
7.一种帧循环中的动画处理装置,其特征在于,包括:
渲染树获取模块,用于获取当前帧所对应的渲染树,所述渲染树包括了僵尸节点和渲染节点,所述渲染节点包括可变节点和变化节点,所述可变节点为节点中的渲染信息随着所在帧的不同存在变化可能性的节点,所述变化节点为节点中的渲染信息随着所在帧的不同而时时发生变化的节点;
场景渲染模块,用于根据所述渲染树中僵尸节点对应的纹理、所述可变节点以及所述变化节点进行当前帧的场景渲染;
所述僵尸节点对应的纹理是渲染树对应的固定节点中已经释放的渲染信息进行渲染得到并保存的,所述固定节点为节点中的渲染信息在每一帧都不会发生变化的节点;
所述装置还包括:
第一帧处理模块,用于将第一帧所对应的渲染树中固定节点的渲染信息渲染并保存为纹理,并释放所述渲染信息,设置对应的僵尸节点。
8.根据权利要求7所述的装置,其特征在于,所述场景渲染模块还用于遍历当前帧所对应的渲染树,根据所述渲染节点中的渲染信息进行渲染,并与所述僵尸节点对应的纹理形成当前帧的场景。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
变化检查模块,用于检查所述渲染树中的可变节点是否发生变化,若是,则通知更新模块;
所述更新模块用于更新所述可变节点对应的纹理。
10.根据权利要求9所述的装置,其特征在于,所述场景渲染模块还用于遍历所述当前帧所对应的渲染树,根据所述渲染节点中变化节点的渲染信息进行渲染,并与所述僵尸节点对应的纹理、所述可变节点对应的纹理形成当前帧的场景。
11.根据权利要求7所述的装置,其特征在于,所述第一帧处理模块还用于将可变节点的渲染信息渲染并保存为纹理。
12.根据权利要求11所述的装置,其特征在于,还包括:
第一帧渲染模块,用于根据变化节点中的渲染信息进行渲染,并与第一帧对应的渲染树中僵尸节点对应的纹理、可变节点对应的纹理形成第一帧的场景。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310467716.8A CN104517309B (zh) | 2013-10-08 | 2013-10-08 | 帧循环中的动画处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310467716.8A CN104517309B (zh) | 2013-10-08 | 2013-10-08 | 帧循环中的动画处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104517309A CN104517309A (zh) | 2015-04-15 |
CN104517309B true CN104517309B (zh) | 2018-08-24 |
Family
ID=52792551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310467716.8A Active CN104517309B (zh) | 2013-10-08 | 2013-10-08 | 帧循环中的动画处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104517309B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184847B (zh) * | 2015-10-16 | 2017-12-12 | 上海恺英网络科技有限公司 | 3d游戏渲染引擎的渲染方法 |
CN108184054B (zh) * | 2017-12-28 | 2020-12-08 | 上海传英信息技术有限公司 | 一种用于智能终端拍摄图像的预处理方法及预处理装置 |
CN113680069B (zh) * | 2021-08-25 | 2022-06-14 | 广州银汉科技有限公司 | 一种基于ecs设计的技能系统 |
CN117667278A (zh) * | 2022-08-31 | 2024-03-08 | 华为技术有限公司 | 一种界面显示方法、设备及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819684A (zh) * | 2010-04-12 | 2010-09-01 | 长春理工大学 | 一种动画电影虚拟三维场景的空间加速结构及其创建与更新方法 |
CN102831631A (zh) * | 2012-08-23 | 2012-12-19 | 上海创图网络科技发展有限公司 | 一种大规模三维动画的渲染方法及渲染装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8274516B2 (en) * | 2008-08-04 | 2012-09-25 | Microsoft Corporation | GPU scene composition and animation |
-
2013
- 2013-10-08 CN CN201310467716.8A patent/CN104517309B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819684A (zh) * | 2010-04-12 | 2010-09-01 | 长春理工大学 | 一种动画电影虚拟三维场景的空间加速结构及其创建与更新方法 |
CN102831631A (zh) * | 2012-08-23 | 2012-12-19 | 上海创图网络科技发展有限公司 | 一种大规模三维动画的渲染方法及渲染装置 |
Non-Patent Citations (2)
Title |
---|
【译】Sprite Kit编程指南(0):简介;泰然网;《http://www.tairan.com/archives/5040/》;20130904;第1-6页 * |
基于光线跟踪的动画场景空间加速结构的研究;王刚;《中国优秀硕士学位论文全文数据库 信息科技辑》;20090815;摘要、第29-32、38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104517309A (zh) | 2015-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104517309B (zh) | 帧循环中的动画处理方法和装置 | |
CN100437464C (zh) | 显示屏管理单元 | |
CN101290746A (zh) | 电子纸屏幕的图像更新方法 | |
CN103995684B (zh) | 超高分辨率平台下的海量影像并行处理显示方法及系统 | |
CN107360459A (zh) | 一种弹幕的处理方法、装置和存储介质 | |
KR20140039068A (ko) | 정적 이미지들의 디스플레이 | |
CN101388157A (zh) | 一种电子地图显示方法、装置及设备 | |
CN107003875A (zh) | 用于多操作系统的显示方法、装置和电子设备 | |
CN100421119C (zh) | 一种游戏中的地图绘制方法 | |
CN104932659A (zh) | 图像显示方法及显示系统 | |
CN106807087A (zh) | 一种应用中模拟对象处理的方法以及移动终端 | |
CN105718420A (zh) | 数据处理装置及其操作方法 | |
CN106020976A (zh) | 将内存耗尽处理流程卸载到用户空间的方法和装置 | |
US11763414B2 (en) | Glitchless GPU switching at a multiplexer | |
CN114071047A (zh) | 帧率控制方法及相关装置 | |
CN114527980A (zh) | 一种显示渲染方法、装置、电子设备和可读存储介质 | |
CN111127603B (zh) | 动画生成方法、装置、电子设备及计算机可读存储介质 | |
CN105023285A (zh) | 图片拆分方法和装置、图片加载方法和装置 | |
CN106815880A (zh) | 动画复用方法和系统 | |
CN111107427A (zh) | 图像处理的方法及相关产品 | |
CN112316437B (zh) | 一种资源切换方法、装置、电子设备及存储介质 | |
JP2005092362A (ja) | 画像分割処理装置、画像分割処理方法及び画像分割処理集積化回路 | |
CN115952388A (zh) | 基于图像数据处理的卷积运算方法、装置、处理器及介质 | |
CN103455973A (zh) | 一种屏幕图像绘制方法和装置 | |
CN102819533A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |