CN112215932B - 粒子动画处理方法、装置、存储介质及计算机设备 - Google Patents

粒子动画处理方法、装置、存储介质及计算机设备 Download PDF

Info

Publication number
CN112215932B
CN112215932B CN202011148909.3A CN202011148909A CN112215932B CN 112215932 B CN112215932 B CN 112215932B CN 202011148909 A CN202011148909 A CN 202011148909A CN 112215932 B CN112215932 B CN 112215932B
Authority
CN
China
Prior art keywords
particle
particles
frame
processed
attribute parameters
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
CN202011148909.3A
Other languages
English (en)
Other versions
CN112215932A (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202011148909.3A priority Critical patent/CN112215932B/zh
Publication of CN112215932A publication Critical patent/CN112215932A/zh
Application granted granted Critical
Publication of CN112215932B publication Critical patent/CN112215932B/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/802D [Two Dimensional] animation, e.g. using sprites

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

本申请涉及一种粒子动画处理方法、装置、存储介质及计算机设备,该粒子动画处理方法包括:获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器;基于该多个像素着色器,计算该待处理粒子帧中该多个粒子对应的属性参数;根据该属性参数生成该待处理粒子帧的二维纹理;基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息;根据该显示信息生成该待处理粒子帧的粒子动画,从而能在终端平台上较快地实现复杂的粒子动画显示,使用局限性小,动画显示速度快。

Description

粒子动画处理方法、装置、存储介质及计算机设备
技术领域
本申请涉及粒子特效技术领域,具体涉及一种粒子动画处理方法、装置、存储介质及计算机设备。
背景技术
随着终端性能的逐渐提升,终端游戏对特效表现的要求越来越高,终端可以在用户界面中显示粒子动画,以实现特效展示。
在粒子动画生成过程中,需要涉及粒子渲染。粒子渲染在三维渲染中常常用于实现虚拟场景中的一些大量不规则的物体,例如云、烟雾、灰尘、雨雪、飞沙走石、焰火等。以雨滴天气粒子为例,每一个雨滴都会被视作一个粒子,并在其位于虚拟摄像机的可视范围内时,被渲染在对应的显示画面中,以实现虚拟天气场景的特效显示。
在粒子渲染过程中,端游侧一般是基于Computer Shader来实现,其中,ComputerShader是在显卡上运行的程序,被用于大量并行的GPU(Graphics Processing Unit,图形处理单元)算法或加速部分游戏渲染,而手游侧(比如手机端)由于设备覆盖率以及硬件条件的限制,很难使用Computer Shader,其一般是基于硬件instancing实例,在VertexShader顶点着色器中来实现,其中,手游侧可通过公式p1=p0+v*t实时计算粒子位置p1,p0为初始化的位置,V为初始化的速度,t为运动时间,一方面,由于粒子数据计算是在CPU(Central Processing Unit,中央处理器)中完成后传输至GPU进行渲染,而CPU只能按顺序进行粒子计算,无法一次性计算多个粒子,并且采用CPU写入纹理数据然后GPU读取这一方式来实现粒子计算,在CPU写入纹理数据时需要将数据从系统内存中传输到显卡内存,会消耗显卡的带宽,进而影响粒子的计算效率。另一方面,上述计算方式只能表达简单的抛物线运动,比如雨滴、雪花等特效粒子的运动,很难实现较复杂的粒子运动,从而无法在手游测显示复杂的粒子动画,局限性较强。
发明内容
本申请的目的在于提供一种粒子动画处理方法、装置、存储介质及计算机设备,能在终端平台上较快地实现复杂的粒子动画显示,适用范围广。
本申请实施例提供了一种粒子动画处理方法,包括:
获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个所述像素着色器;
基于所述多个像素着色器,计算所述待处理粒子帧中所述多个粒子对应的属性参数;
根据所述属性参数生成所述待处理粒子帧的二维纹理;
基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
根据所述显示信息生成所述待处理粒子帧的粒子动画。
本申请实施例还提供了一种粒子动画处理装置,包括:
获取模块,用于获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个所述像素着色器;
计算模块,用于基于所述多个像素着色器,计算所述待处理粒子帧中的所述多个粒子对应的属性参数;
第一生成模块,用于根据所述属性参数生成所述待处理粒子帧的二维纹理;
第一确定模块,用于基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
第二生成模块,用于根据所述显示信息生成所述待处理粒子帧的粒子动画。
其中,所述计算模块具体用于:
根据所述待处理粒子帧的上一粒子帧对应的属性参数,利用所述多个像素着色器计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
其中,所述计算模块具体用于:
利用所述多个像素着色器,根据所述待处理粒子帧的上一粒子帧对应的所述属性参数和预设粒子触发条件对应的初始属性参数,计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
其中,所述计算模块具体用于:
获取所述上一粒子帧对应的游戏场景中虚拟对象的瞬时变化信息;
根据所述瞬时变化信息生成所述上一粒子帧对应的矢量场;
利用所述多个像素着色器,根据所述上一粒子帧对应的所述属性参数、所述预设粒子触发条件对应的初始属性参数、以及所述矢量场,计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
其中,还包括第二确定模块,用于:
在所述获取模块获取待处理粒子帧中的多个粒子对应的像素着色器之前,根据所述待处理粒子帧的上一粒子帧对应的属性参数和预设粒子触发条件,确定所述上一粒子帧中即将死亡的粒子和/或待新建的粒子;
根据所述上一粒子帧、所述即将死亡的粒子和/或所述待新建的粒子,确定所述待处理粒子帧中的多个粒子。
其中,当所述待处理粒子帧为多个粒子帧时,所述第一生成模块具体用于:
确定所述多个粒子帧中每个粒子帧的显示顺序;
根据所述显示顺序确定所述每个粒子帧在二维纹理中的排列顺序;
按照所述排列顺序,将所述每个粒子帧对应的属性参数存储在所述二维纹理中。
其中,所述显示信息包括运动轨迹,所述第一确定模块具体用于:
基于顶点纹理拾取技术,从所述二维纹理中获取所述多个粒子对应的所述属性参数;
将所述属性参数输入顶点着色器中,以计算出所述多个粒子的运动轨迹。
其中,当所述待处理粒子帧为单个粒子帧时,所述第一生成模块具体用于:
确定所述单个粒子帧中每个粒子所属的特效类型;
根据所述特效类型将所述单个粒子帧对应的属性参数存储在二维纹理中,其中,不同所述特效类型的粒子的属性参数存储在所述二维纹理中的不同区域。
其中,所述显示信息包括瞬时显示位置和旋转方向,所述第一确定模块具体用于:
基于顶点纹理拾取技术,从所述二维纹理中获取所述多个粒子对应的所述属性参数;
从预设存储区中获取所述待处理粒子帧对应的瞬时加速度;
根据所述多个粒子对应的所述属性参数和所述瞬时加速度,计算所述多个粒子的瞬时显示位置和旋转方向。
本申请实施例还提供了一种计算机可读存储介质,存储介质中存储有多条指令,指令适于由处理器加载以执行上述任一项粒子动画处理方法。
本申请实施例还提供了一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述任一项粒子动画处理方法中的步骤。
本申请提供的粒子动画处理方法、装置、存储介质及计算机设备,通过获取待处理粒子帧中的多个粒子对应的像素着色器,并基于多个像素着色器,计算待处理粒子帧中多个粒子对应的属性参数,之后根据属性参数生成待处理粒子帧的二维纹理,之后,基于顶点纹理拾取技术从二维纹理中确定该多个粒子的显示信息,并根据显示信息生成待处理粒子帧的粒子动画,从而能在终端平台上实现复杂的粒子动画显示,使用局限性小,有利于丰富GPU粒子动画的表现,且由于粒子计算是在显卡内存的像素着色器中完成,减少了主机与内存的传输消耗,故能大大提高计算效率,提高动画生成速度。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。
图1是本申请实施例提供的粒子动画处理系统的场景示意图;
图2是本申请实施例提供的粒子动画处理方法的流程示意图;
图3是本申请实施例提供的粒子动画处理方法的另一流程示意图;
图4是本申请实施例提供的二维纹理的展示示意图;
图5是本申请实施例提供的终端界面上实时粒子动画的示意图;
图6是本申请实施例提供的另一个二维纹理的展示示意图;
图7是本申请实施例提供的又一个二维纹理的示意图;
图8是本申请实施例提供的实时动画中纹理写入流程的示意图;
图9是本申请实施例提供的另一纹理写入流程的示意图;
图10是本申请实施例提供的动画处理系统的框架示意图;
图11是本申请实施例提供的粒子动画处理装置的结构示意图;
图12是本申请实施例提供的粒子动画处理装置的另一结构示意图;
图13是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种粒子动画处理方法、装置、存储介质及计算机设备。
请参阅图1,图1为本申请实施例提供的粒子动画处理系统的场景示意图,该粒子动画处理系统可以应用于计算机设备中,该计算机设备具体为终端或服务器,其中,终端可以包括智能手机、平板电脑、游戏机等不具备Computer Shader的手游设备。
计算机设备可以获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器;基于该多个像素着色器,计算该待处理粒子帧中该多个粒子对应的属性参数;根据该属性参数生成该待处理粒子帧的二维纹理;基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息;根据该显示信息生成该待处理粒子帧的粒子动画。
其中,像素着色器实际上是对像素进行光栅化的处理期间,在GPU上运算的一段程序。顶点纹理拾取技术也即Vertex Texture Fetch(VTF)。粒子动画是一种通过粒子系统实现的动画,粒子系统表示三维计算机图形学中模拟一些特定的模糊现象(相当于特效)的技术,例如,该模糊现象可以包括火、爆炸、烟、水流、雪、雨以及类似的抽象视觉效果。属性参数可以包括粒子位置、粒子大小、粒子速度、粒子角度、粒子生命和粒子颜色等。
比如,在图1中,当需要展示一个特效的粒子动画,比如飘落的白色雪花时,游戏服务器可以把特效有关的数据发送给移动终端,移动终端通过自身GPU中的像素着色器计算特效粒子帧中每个粒子的属性参数,并将这些属性参数通过二维纹理形式存储,之后当需要绘制粒子动画时,移动终端通过VTF从二维纹理中获取这些属性参数,并通过顶点着色器进行粒子渲染,形成粒子动画,也即图1中呈现在终端界面上的飘落的白色雪花。
如图2所示,图2是本申请实施例提供的粒子动画处理方法的流程示意图,该粒子动画处理方法应用于计算机设备,该计算机设备可以包括智能手机、平板电脑、游戏机等,具体流程可以如下:
S101.获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器。
其中,粒子帧是指粒子发射器每帧发射的所有粒子,像素着色器实际上是对像素进行光栅化的处理期间,在GPU上运算的一段程序。该待处理粒子帧可以是多个粒子帧或单个粒子帧,主要取决于需要生成的粒子动画是简单的特效动画(比如仅涉及单个特效),还是比较复杂的特效动画(比如涉及多个特效),对于简单的特效动画,可以直接一次性提前设置好整个特效所需的粒子,而对于复杂的特效动画,一般是预定义出首个粒子帧中的粒子,后续粒子帧中的粒子需通过计算得出。
当为复杂的特效动画时,后续粒子帧中的粒子需要基于上一粒子帧的粒子情况来确定,例如,请参见图3,在上述步骤S101之前,该粒子动画的处理方法还可以包括:
S106.根据该待处理粒子帧的上一粒子帧对应的属性参数和预设粒子触发条件,确定该上一粒子帧中即将死亡的粒子和/或待新建的粒子;
S107.根据该上一粒子帧、该即将死亡的粒子和/或该待新建的粒子,确定该待处理粒子帧中的多个粒子。
其中,属性参数可以包括粒子位置、粒子大小、粒子速度、粒子角度、粒子生命和粒子颜色等粒子信息,预设粒子触发条件通常是提前设定好的,可以包括:目标粒子的粒子生命到达预设值,其中,该预设值可以是目标粒子的寿命时长(相当于死亡触发),也可以是小于寿命时长的任一时长(相当于间隔触发)。
当目标粒子的粒子生命满足粒子触发条件时,若为死亡触发,则目标粒子即为即将死亡的粒子,若为间隔触发或不满足触发条件,则不存在即将死亡的粒子,而粒子触发条件对应的新粒子即为待新建的粒子。待新建的粒子的属性参数存储在二维纹理中的另一个存储区,比如,请参见图4和5,图4为保存有3个特效(Fx1、Fx2和Fx3)的粒子信息的二维纹理,其中,特效Fx2和Fx3存在交互,比如特效Fx2的粒子死亡则触发特效Fx3的粒子生成,而特效Fx1与特效Fx2和Fx3之间不存在交互。图5为某个时刻终端界面上展示的实时粒子动画,其中,图上的星星粒子是上一粒子帧中某些圆形粒子死亡时触发生成的。
S102.基于该多个像素着色器,计算该待处理粒子帧中该多个粒子对应的属性参数。
其中,当为复杂的特效动画时,首个粒子帧中粒子的属性参数一般是根据初始参数,比如发射器位置、发射器方向等信息计算得到,非首个粒子帧中粒子的属性参数则是根据上一粒子帧的属性参数计算得到,也即,上述步骤S102具体可以包括:
根据该待处理粒子帧的上一粒子帧对应的属性参数,利用该多个像素着色器计算该待处理粒子帧中的多个粒子对应的属性参数。
另外,对于复杂特效的粒子动画,比如涉及多个特效,会存在特效与特效之间交互的问题,比较常见的交互方式包括特效触发,也即一个特效的粒子可以触发另一个特效的粒子的生成,特效触发方式可以包括死亡触发和间隔触发,死亡触发是指一个特效的粒子死亡后触发另一个特效的粒子生成,间隔触发是指一个特效的粒子生命到达预定时长后触发另一个特效的粒子生成,也即,上述步骤“根据该待处理粒子帧的上一粒子帧对应的属性参数,利用该多个像素着色器计算该待处理粒子帧中的多个粒子对应的属性参数”可以包括:
利用该多个像素着色器,根据该待处理粒子帧的上一粒子帧对应的该属性参数和预设粒子触发条件对应的初始属性参数,计算该待处理粒子帧中的多个粒子对应的属性参数。
其中,初始属性参数和属性参数类似,也包括粒子位置、粒子大小、粒子速度、粒子角度、粒子生命和粒子颜色等粒子信息。
此外,有些复杂特效的实现需要涉及很复杂的逻辑,比如风场和引力场等矢量场,需要结合矢量场来计算,从而可以使粒子动画中的粒子能体现出人物移动和技能对其的影响,从而达到比较逼真的效果。
矢量场可以是固定的,也可以是实时变化的,当为固定的矢量场时,其可以是直接通过工具对游戏场景或模型进行处理而生成的,也可以是人工通过3D软件编辑生成,当为实时变化的矢量场时,其可以是根据游戏场景中人物移动和技能情况生成,也即,上述步骤“利用该多个像素着色器,根据该待处理粒子帧的上一粒子帧对应的该属性参数和预设粒子触发条件对应的初始属性参数,计算该待处理粒子帧中的多个粒子对应的属性参数”进一步可以包括:
获取该上一粒子帧对应的游戏场景中虚拟对象的瞬时变化信息;
根据该瞬时变化信息生成该上一粒子帧对应的矢量场;
利用该多个像素着色器,根据该上一粒子帧对应的该属性参数、该预设粒子触发条件对应的初始属性参数、以及该矢量场,计算该待处理粒子帧中的该多个粒子对应的属性参数。
其中,虚拟对象可以包括人物和技能。可以通过三维纹理来存储矢量场,比如,对于某个回合制游戏,可以用32*32*8的三维纹理来存储战斗区域的矢量场。可以通过多渲染目标(Multiple Render Targets,MRT)技术将矢量场写入到三维纹理中,比如,对于32*32*8的三维纹理,可以一次写入4层纹理,这样,用2个drawcall绘制调用可写入完整个三维纹理。
S103.根据该属性参数生成该待处理粒子帧的二维纹理。
具体的,二维纹理通常指物体表面的纹理,即物体表面呈现凹凸不平的沟纹和彩色图案,生成二维纹理的过程,相当于将每个粒子的属性参数映射到二维纹理的过程,也是像素着色器将粒子的属性信息写入纹理的过程,其中,每个粒子有一个单独的Instancing实例ID,需要将二维纹理中每个像素的位置信息和Instancing ID建立双射。
需要说明的是,本方案通过将粒子信息存储在二维纹理中,从而可以在GPU中直接访问二维纹理就可以得到大量信息,无需实时从CPU向GPU传输,极大提高了动画生成效率,降低了对设备硬件的要求,并且只要纹理格式设置正确,该二维纹理可以通过一些共享软件资源来制作,比如houdini,3Dmax等,无需单独开发软件,手段灵活,有利于降低开发成本。
其中,当该待处理粒子帧为多个粒子帧时,上述步骤S103具体包括:
S1031A.确定该多个粒子帧中每个粒子帧的显示顺序;
S1032A.根据该显示顺序确定述每个粒子帧在二维纹理中的排列顺序;
S1033A.按照该排列顺序,将该每个粒子帧对应的属性参数存储在该二维纹理中。
其中,在生成纹理的过程中,对于一次性提前设置好整个特效所需的粒子的情况,需要将所有粒子帧的属性参数按顺序存储在一张空白的二维纹理中,该空白的二维纹理可以是根据粒子帧的帧数和每帧的粒子数量来生成,比如二维纹理的分辨率为m*n,则m相当于每帧的最大粒子数量,n相当于粒子帧的帧数。请参见图6,图6示出了分辨率为3781*120的二维纹理,代表着3781个粒子在120张粒子帧的位置信息。对于这种存储方式,后续可以直接按照二维纹理中每行每列的顺序,提取像素信息,同一粒子在时间和空间上的变化情况可以从一行像素中得到,简单明了,方便后续粒子信息的提取操作。
其中,当该待处理粒子帧为单个粒子帧时,上述步骤S103具体包括:
S1031B.确定该单个粒子帧中每个粒子所属的特效类型;
S1032B.根据该特效类型将该单个粒子帧对应的属性参数存储在二维纹理中,其中,不同该特效类型的粒子的属性参数存储在该二维纹理中的不同区域。
其中,可以在二维纹理中为不同特效的粒子信息划分不同的存储块,每个存储块用于存储同一特效实时粒子帧的粒子信息。比如,图7展示了一个存储有3个特效(fx1、fx2和fx3)的二维纹理,这三个特效对应的存储块可以是从下往上依次相邻排布,也可以是间隔排布,每个存储块的大小取决于形成对应特效的粒子数量。
具体的,可参见图8,在粒子计算时,由于单个粒子帧中每个粒子的运动是相对独立的,故可以在GPU中采用像素着色器pixel shader对单个粒子帧进行并行计算,像素着色器是对应每个像素的,也即对应每个粒子,计算完成后会将结果写入对应的像素当中,形成二维纹理,而在形成下一粒子帧的二维纹理时,需要先通过像素着色器从上一粒子帧的二维纹理中读取这些属性参数进行粒子计算,之后将最新计算出的属性参数写入该二维纹理,实现二维纹理的更新。
另外,请参见图9,由于粒子计算实际上是一个GPU的渲染过程,所以在计算之前我们需要设置好渲染的准备工作,包括设置几何面片,pixel shader和更新区域的视口大小等参数,然后调用渲染的API应用程序接口来触发pixel shader完成纹理写入功能。另外因为每个粒子的信息比较多,需要多张纹理来存储,所以要使用上述MRT技术来一次写入多张纹理。
S104.基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息。
其中,显示信息也即在终端界面上绘制时呈现给用户的信息,比如粒子位置、旋转方向、粒子颜色和大小等。
具体的,当该待处理粒子帧为多个粒子帧时,该显示信息至少包括运动轨迹,此时,上述步骤S104具体可以包括:
S1041A.基于顶点纹理拾取技术从该二维纹理中获取该多个粒子对应的该属性参数;
S1042A.将该属性参数输入顶点着色器中,以计算出每个该粒子的运动轨迹。
其中,从二维纹理中获取的属性参数一般表现为数组形式,可以直接输入顶点着色器中进行计算。由于多个粒子帧对应的二维纹理中存储了每个粒子从动画开始到结束的所有信息,故可以直接确定出每个粒子的所有移动位置,进而得到运动轨迹。
具体的,当该待处理粒子帧为单个粒子帧时,该显示信息至少包括瞬时显示位置和旋转方向,此时,上述步骤S104具体可以包括:
S1041B.基于顶点纹理拾取技术,从该二维纹理中获取每个该粒子的该属性参数;
S1042B.从预设存储区中获取该待处理粒子帧对应的瞬时加速度;
S1043B.根据该属性参数和该瞬时加速度,计算每个该粒子的瞬时显示位置和旋转方向。
其中,预设存储区可以是系统内存中的某个区域,用于存储影响粒子发生变化的一些因素信息,比如瞬时加速度,该瞬时加速度可以是重力加速度。属性参数可以包括粒子位置、粒子大小、粒子速度、粒子角度等,这些都是实时参数,不同粒子帧对应的属性参数通常不同。
S105.根据该显示信息生成该待处理粒子帧的粒子动画。
其中,当显示信息包括运动轨迹时,步骤S105具体为S105A:根据该运动轨迹生成该待处理粒子帧的粒子动画。当显示信息包括瞬时显示位置和旋转方向时,步骤S105具体为S105B:根据该瞬时显示位置和旋转方向生成该待处理粒子帧的粒子动画。
换言之,当显示信息包括运动轨迹时,可以直接根据每个粒子的运动轨迹、粒子颜色和大小等信息绘制粒子动画(也即渲染),该粒子动画是由连续多帧粒子图像构成,比如白色雪花从出现到落地消失整个过程的图像。当显示信息包括瞬时显示位置和旋转方向时,只能绘制实时粒子动画,也即单帧粒子图像构成的粒子动画。
需要说明的是,请参见图10,由于像素着色器和顶点着色器均是在GPU中运算的程序,也即粒子的计算和渲染在GPU中完成,没有CPU参与,考虑到CPU进行粒子计算时只能按顺序计算所有粒子,而GPU可以通过并行的架构来计算,故计算效率能得到明显提升,且将计算数据写入纹理和从纹理中读取这些数据等操作都是在GPU中完成,也即完全在显卡的内存中进行,是显卡独立的工作,不像现有CPU粒子计算方案中需要将数据从系统内存中传输到显卡的内存中,需要和主机进行数据传输,消耗显卡的带宽。
由上述可知,本实施例提供的粒子动画处理方法,通过获取待处理粒子帧中的多个粒子对应的像素着色器,并基于多个像素着色器,计算待处理粒子帧中多个粒子对应的属性参数,之后根据属性参数生成待处理粒子帧的二维纹理,之后,基于顶点纹理拾取技术从二维纹理中确定该多个粒子的显示信息,并根据显示信息生成待处理粒子帧的粒子动画,从而能在终端平台上实现复杂的粒子动画显示,使用局限性小,有利于丰富GPU粒子动画的表现,且由于粒子计算是在显卡内存的像素着色器中完成,减少了主机与内存的传输消耗,故能大大提高计算效率,提高动画生成速度。
在上述实施例该方法的基础上,本实施例将从粒子动画处理装置的角度进一步进行描述,请参阅图11,图11具体描述了本申请实施例提供的粒子动画处理装置,其可以包括:获取模块10、计算模块20、第一生成模块30、第一确定模块40和第二生成模块50,其中:
(1)获取模块10
获取模块10,用于获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器。
其中,粒子帧是指粒子发射器每帧发射的所有粒子,像素着色器实际上是对像素进行光栅化的处理期间,在GPU上运算的一段程序。该待处理粒子帧可以是多个粒子帧或单个粒子帧,主要取决于需要生成的粒子动画是简单的特效动画(比如仅涉及单个特效),还是比较复杂的特效动画(比如涉及多个特效),对于简单的特效动画,可以直接一次性提前设置好整个特效所需的粒子,而对于复杂的特效动画,一般是预定义出首个粒子帧中的粒子,后续粒子帧中的粒子需通过计算得出。
当为复杂的特效动画时,后续粒子帧中的粒子需要基于上一粒子帧的粒子情况来确定,例如,请参见图12,该粒子动画处理装置还包括第二确定模块60,用于:
在该获取模块10获取待处理粒子帧中的多个粒子对应的像素着色器之前,根据该待处理粒子帧的上一粒子帧对应的属性参数和预设粒子触发条件,确定该上一粒子帧中即将死亡的粒子和/或待新建的粒子;
根据该上一粒子帧、该即将死亡的粒子和/或该待新建的粒子,确定该待处理粒子帧中的多个粒子。
其中,属性参数可以包括粒子位置、粒子大小、粒子速度、粒子角度、粒子生命和粒子颜色等粒子信息,预设粒子触发条件通常是提前设定好的,可以包括:目标粒子的粒子生命到达预设值,其中,该预设值可以是目标粒子的寿命时长(相当于死亡触发),也可以是小于寿命时长的任一时长(相当于间隔触发)。
当目标粒子的粒子生命满足粒子触发条件时,若为死亡触发,则目标粒子即为即将死亡的粒子,若为间隔触发或不满足触发条件,则不存在即将死亡的粒子,而粒子触发条件对应的新粒子即为待新建的粒子。待新建的粒子的属性参数存储在二维纹理中的另一个存储区,比如,请参见图4和5,图4为保存有3个特效(Fx1、Fx2和Fx3)的粒子信息的二维纹理,其中,特效Fx2和Fx3存在交互,比如特效Fx2的粒子死亡则触发特效Fx3的粒子生成,而特效Fx1与特效Fx2和Fx3之间不存在交互。图5为某个时刻终端界面上展示的实时粒子动画,其中,图上的星星粒子是上一粒子帧中某些圆形粒子死亡时触发生成的。
(2)计算模块20
计算模块20,用于基于该多个像素着色器,计算该待处理粒子帧中的该多个粒子对应的属性参数。
其中,当为复杂的特效动画时,首个粒子帧中粒子的属性参数一般是根据初始参数,比如发射器位置、发射器方向等信息计算得到,非首个粒子帧中粒子的属性参数则是根据上一粒子帧的属性参数计算得到,也即,该计算模块20具体用于:
根据该待处理粒子帧的上一粒子帧对应的属性参数,利用该多个像素着色器计算该待处理粒子帧中的多个粒子对应的属性参数。
另外,对于复杂特效的粒子动画,比如涉及多个特效,会存在特效与特效之间交互的问题,比较常见的交互方式包括特效触发,也即一个特效的粒子可以触发另一个特效的粒子的生成,特效触发方式可以包括死亡触发和间隔触发,死亡触发是指一个特效的粒子死亡后触发另一个特效的粒子生成,间隔触发是指一个特效的粒子生命到达预定时长后触发另一个特效的粒子生成,也即,该计算模块20具体用于:
利用该多个像素着色器,根据该待处理粒子帧的上一粒子帧对应的该属性参数和预设粒子触发条件对应的初始属性参数,计算该待处理粒子帧中的多个粒子对应的属性参数。
其中,初始属性参数和属性参数类似,也包括粒子位置、粒子大小、粒子速度、粒子角度、粒子生命和粒子颜色等粒子信息。
此外,有些复杂特效的实现需要涉及很复杂的逻辑,比如风场和引力场等矢量场,需要结合矢量场来计算,从而可以使粒子动画中的粒子能体现出人物移动和技能对其的影响,从而达到比较逼真的效果。
矢量场可以是固定的,也可以是实时变化的,当为固定的矢量场时,其可以是直接通过工具对游戏场景或模型进行处理而生成的,也可以是人工通过3D软件编辑生成,当为实时变化的矢量场时,其可以是根据游戏场景中人物移动和技能情况生成,也即,该计算模块20具体用于:
获取该上一粒子帧对应的游戏场景中虚拟对象的瞬时变化信息;
根据该瞬时变化信息生成该上一粒子帧对应的矢量场;
利用该多个像素着色器,根据该上一粒子帧对应的该属性参数、该预设粒子触发条件对应的初始属性参数、以及该矢量场,计算该待处理粒子帧中的该多个粒子对应的属性参数。
其中,虚拟对象可以包括人物和技能。可以通过三维纹理来存储矢量场,比如,对于某个回合制游戏,可以用32*32*8的三维纹理来存储战斗区域的矢量场。可以通过多渲染目标(Multiple Render Targets,MRT)技术将矢量场写入到三维纹理中,比如,对于32*32*8的三维纹理,可以一次写入4层纹理,这样,用2个drawcall绘制调用可写入完整个三维纹理。
(3)第一生成模块30
第一生成模块30,用于根据该属性参数生成该待处理粒子帧的二维纹理。
具体的,二维纹理通常指物体表面的纹理,即物体表面呈现凹凸不平的沟纹和彩色图案,生成二维纹理的过程,相当于将每个粒子的属性参数映射到二维纹理的过程,也是像素着色器将粒子的属性信息写入纹理的过程,其中,每个粒子有一个单独的Instancing实例ID,需要将二维纹理中每个像素的位置信息和Instancing ID建立双射。
需要说明的是,本方案通过将粒子信息存储在二维纹理中,从而可以在GPU中直接访问二维纹理就可以得到大量信息,无需实时从CPU向GPU传输,极大提高了动画生成效率,降低了对设备硬件的要求,并且只要纹理格式设置正确,该二维纹理可以通过一些共享软件资源来制作,比如houdini,3Dmax等,无需单独开发软件,手段灵活,有利于降低开发成本。
其中,当该待处理粒子帧为多个粒子帧时,该第一生成模块30具体用于:
S1031A.确定该多个粒子帧中每个粒子帧的显示顺序;
S1032A.根据该显示顺序确定述每个粒子帧在二维纹理中的排列顺序;
S1033A.按照该排列顺序,将该每个粒子帧对应的属性参数存储在该二维纹理中。
其中,在生成纹理的过程中,对于一次性提前设置好整个特效所需的粒子的情况,需要将所有粒子帧的属性参数按顺序存储在一张空白的二维纹理中,该空白的二维纹理可以是根据粒子帧的帧数和每帧的粒子数量来生成,比如二维纹理的分辨率为m*n,则m相当于每帧的最大粒子数量,n相当于粒子帧的帧数。请参见图6,图6示出了分辨率为3781*120的二维纹理,代表着3781个粒子在120张粒子帧的位置信息。对于这种存储方式,后续可以直接按照二维纹理中每行每列的顺序,提取像素信息,同一粒子在时间和空间上的变化情况可以从一行像素中得到,简单明了,方便后续粒子信息的提取操作。
其中,当该待处理粒子帧为单个粒子帧时,该第一生成模块30具体用于:
确定该单个粒子帧中每个粒子所属的特效类型;
根据该特效类型将该单个粒子帧对应的属性参数存储在二维纹理中,其中,不同该特效类型的粒子的属性参数存储在该二维纹理中的不同区域。
S1031B.确定该单个粒子帧中每个粒子所属的特效类型;
S1032B.根据该特效类型将该单个粒子帧对应的属性参数存储在二维纹理中,其中,不同该特效类型的粒子的属性参数存储在该二维纹理中的不同区域。
其中,可以在二维纹理中为不同特效的粒子信息划分不同的存储块,每个存储块用于存储同一特效实时粒子帧的粒子信息。比如,图7展示了一个存储有3个特效(fx1、fx2和fx3)的二维纹理,这三个特效对应的存储块可以是从下往上依次相邻排布,也可以是间隔排布,每个存储块的大小取决于形成对应特效的粒子数量。
具体的,可参见图8,在粒子计算时,由于单个粒子帧中每个粒子的运动是相对独立的,故可以在GPU中采用像素着色器pixel shader对单个粒子帧进行并行计算,像素着色器是对应每个像素的,也即对应每个粒子,计算完成后会将结果写入对应的像素当中,形成二维纹理,而在形成下一粒子帧的二维纹理时,需要先通过像素着色器从上一粒子帧的二维纹理中读取这些属性参数进行粒子计算,之后将最新计算出的属性参数写入该二维纹理,实现二维纹理的更新。
另外,请参见图9,由于粒子计算实际上是一个GPU的渲染过程,所以在计算之前我们需要设置好渲染的准备工作,包括设置几何面片,pixel shader和更新区域的视口大小等参数,然后调用渲染的API应用程序接口来触发pixel shader完成纹理写入功能。另外因为每个粒子的信息比较多,需要多张纹理来存储,所以要使用上述MRT技术来一次写入多张纹理。
(4)第一确定模块40
第一确定模块40,用于基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息。
其中,显示信息也即在终端界面上绘制时呈现给用户的信息,比如粒子位置、旋转方向、粒子颜色和大小等。
具体的,当该待处理粒子帧为多个粒子帧时,该显示信息包括运动轨迹,该第一确定模块40具体用于:
S1041A.基于顶点纹理拾取技术从该二维纹理中获取该多个粒子对应的该属性参数;
S1042A.将该属性参数输入顶点着色器中,以计算出每个该粒子的运动轨迹。
其中,从二维纹理中获取的属性参数一般表现为数组形式,可以直接输入顶点着色器中进行计算。由于多个粒子帧对应的二维纹理中存储了每个粒子从动画开始到结束的所有信息,故可以直接确定出每个粒子的所有移动位置,进而得到运动轨迹。
具体的,当该待处理粒子帧为单个粒子帧时,该显示信息至少包括瞬时显示位置和旋转方向,该第一确定模块40具体用于:
S1041B.基于顶点纹理拾取技术,从该二维纹理中获取每个该粒子的该属性参数;
S1042B.从预设存储区中获取该待处理粒子帧对应的瞬时加速度;
S1043B.根据该属性参数和该瞬时加速度,计算每个该粒子的瞬时显示位置和旋转方向。
其中,预设存储区可以是系统内存中的某个区域,用于存储影响粒子发生变化的一些因素信息,比如瞬时加速度,该瞬时加速度可以是重力加速度。属性参数可以包括粒子位置、粒子大小、粒子速度、粒子角度等,这些都是实时参数,不同粒子帧对应的属性参数通常不同。
(5)第二生成模块50
第二生成模块50,用于根据该显示信息生成该待处理粒子帧的粒子动画。
其中,当显示信息包括运动轨迹时,步骤S105具体为S105A:根据该运动轨迹生成该待处理粒子帧的粒子动画。当显示信息包括瞬时显示位置和旋转方向时,步骤S105具体为S105B:根据该瞬时显示位置和旋转方向生成该待处理粒子帧的粒子动画。
换言之,当显示信息包括运动轨迹时,可以直接根据每个粒子的运动轨迹、粒子颜色和大小等信息绘制粒子动画(也即渲染),该粒子动画是由连续多帧粒子图像构成,比如白色雪花从出现到落地消失整个过程的图像。当显示信息包括瞬时显示位置和旋转方向时,只能绘制实时粒子动画,也即单帧粒子图像构成的粒子动画。
需要说明的是,请参见图10,由于像素着色器和顶点着色器均是在GPU中运算的程序,也即粒子的计算和渲染在GPU中完成,没有CPU参与,考虑到CPU进行粒子计算时只能按顺序计算所有粒子,而GPU可以通过并行的架构来计算,故计算效率能得到明显提升,且将计算数据写入纹理和从纹理中读取这些数据等操作都是在GPU中完成,也即完全在显卡的内存中进行,是显卡独立的工作,不像现有CPU粒子计算方案中需要将数据从系统内存中传输到显卡的内存中,需要和主机进行数据传输,消耗显卡的带宽。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例提供的粒子动画处理装置,通过获取模块10获取待处理粒子帧中的多个粒子对应的像素着色器,计算模块20基于多个像素着色器,计算待处理粒子帧中多个粒子对应的属性参数,之后第一生成模块30根据属性参数生成待处理粒子帧的二维纹理,之后,第一确定模块40基于顶点纹理拾取技术从二维纹理中确定该多个粒子的显示信息,第二生成模块50根据显示信息生成待处理粒子帧的粒子动画,从而能在终端平台上实现复杂的粒子动画显示,使用局限性小,有利于丰富GPU粒子动画的表现,且由于粒子计算是在显卡内存的像素着色器中完成,减少了主机与内存的传输消耗,故能大大提高计算效率,提高动画生成速度。
相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机、个人数字助理(Personal Digital Assistant,PDA)等设备。如图13所示,图13为本申请实施例提供的计算机设备的结构示意图。该计算机设备400包括有一个或者一个以上处理核心的处理器401、有一个或一个以上计算机可读存储介质的存储器402及存储在存储器402上并可在处理器上运行的计算机程序。其中,处理器401与存储器402电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器401是计算机设备400的控制中心,利用各种接口和线路连接整个计算机设备400的各个部分,通过运行或加载存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备400的各种功能和处理数据,从而对计算机设备400进行整体监控。
在本申请实施例中,计算机设备400中的处理器401会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能:
获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器;
基于该多个像素着色器,计算该待处理粒子帧中该多个粒子对应的属性参数;
根据该属性参数生成该待处理粒子帧的二维纹理;
基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息;
根据该显示信息生成该待处理粒子帧的粒子动画。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图13所示,计算机设备400还包括:触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407。其中,处理器401分别与触控显示屏403、射频电路404、音频电路405、输入单元406以及电源407电性连接。本领域技术人员可以理解,图13中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏403可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏403可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏403而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏403也可以作为输入单元406的一部分实现输入功能。
在本申请实施例中,通过处理器401执行游戏应用程序在触控显示屏403上生成虚拟三维场景的画面,该画面中包括图形用户界面(UI界面),该图形用户界面中包括第二空间方位指示器,该第二空间方位指示器上显示了目标对象所对应的空间方位标识,该空间方位标识用于标示目标对象所在的方位。
该触控显示屏403可以用于呈现虚拟三维场景的画面,以及图形用户界面并接收用户作用于图形用户界面产生的操作指令。
射频电路404可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
音频电路405可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路405可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路405接收后转换为音频数据,再将音频数据输出处理器401处理后,经射频电路404以发送给比如另一计算机设备,或者将音频数据输出至存储器402以便进一步处理。音频电路405还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源407用于给计算机设备400的各个部件供电。可选的,电源407可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源407还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图13中未示出,计算机设备400还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种粒子动画处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个该像素着色器;
基于该多个像素着色器,计算该待处理粒子帧中该多个粒子对应的属性参数;
根据该属性参数生成该待处理粒子帧的二维纹理;
基于顶点纹理拾取技术从该二维纹理中确定该多个粒子的显示信息;
根据该显示信息生成该待处理粒子帧的粒子动画。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种粒子动画处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种粒子动画处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种粒子动画处理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上该,本说明书内容不应理解为对本申请的限制。

Claims (12)

1.一种粒子动画处理方法,其特征在于,包括:
获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个像素着色器,其中,所述待处理粒子帧中的多个粒子根据所述待处理粒子帧的上一粒子帧中即将死亡的粒子和/或待新建的粒子确定,所述多个像素着色器为从计算机设备的图形处理单元中获取;
基于所述多个像素着色器,计算所述待处理粒子帧中的所述多个粒子对应的属性参数;
根据所述属性参数生成所述待处理粒子帧的二维纹理,包括:当所述待处理粒子帧为多个粒子帧时,确定所述多个粒子帧中每个粒子帧的显示顺序;根据所述显示顺序确定所述每个粒子帧在二维纹理中的排列顺序;按照所述排列顺序,将所述每个粒子帧对应的属性参数存储在所述二维纹理中;
基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
根据所述显示信息生成所述待处理粒子帧的粒子动画。
2.根据权利要求1所述的粒子动画处理方法,其特征在于,所述基于所述多个像素着色器,计算待处理粒子帧中的所述多个粒子对应的属性参数,包括:
根据所述待处理粒子帧的上一粒子帧对应的属性参数,利用所述多个像素着色器计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
3.根据权利要求2所述的粒子动画处理方法,其特征在于,所述根据所述待处理粒子帧的上一粒子帧对应的属性参数,利用所述多个像素着色器计算所述待处理粒子帧中的所述多个粒子对应的属性参数,包括:
利用所述多个像素着色器,根据所述待处理粒子帧的上一粒子帧对应的所述属性参数和预设粒子触发条件对应的初始属性参数,计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
4.根据权利要求3所述的粒子动画处理方法,其特征在于,所述利用所述多个像素着色器,根据所述上一粒子帧对应的所述属性参数和所述预设粒子触发条件对应的初始属性参数,计算所述待处理粒子帧中的所述多个粒子对应的属性参数,包括:
获取所述上一粒子帧对应的游戏场景中虚拟对象的瞬时变化信息;
根据所述瞬时变化信息生成所述上一粒子帧对应的矢量场;
利用所述多个像素着色器,根据所述上一粒子帧对应的所述属性参数、所述预设粒子触发条件对应的初始属性参数、以及所述矢量场,计算所述待处理粒子帧中的所述多个粒子对应的属性参数。
5.根据权利要求1所述的粒子动画处理方法,其特征在于,在获取待处理粒子帧中的多个粒子对应的像素着色器之前,还包括:
根据所述待处理粒子帧的上一粒子帧对应的属性参数和预设粒子触发条件,确定所述上一粒子帧中即将死亡的粒子和/或待新建的粒子;
根据所述上一粒子帧、所述即将死亡的粒子和/或所述待新建的粒子,确定所述待处理粒子帧中的多个粒子。
6.根据权利要求1所述的粒子动画处理方法,其特征在于,所述显示信息包括运动轨迹,所述基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息,包括:
基于顶点纹理拾取技术从所述二维纹理中获取所述多个粒子对应的所述属性参数;
将所述属性参数输入顶点着色器中,以计算出所述多个粒子的运动轨迹。
7.一种粒子动画处理方法,其特征在于,包括:
获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个像素着色器,其中,所述待处理粒子帧中的多个粒子为提前设置好的特效所需的粒子,所述多个像素着色器为从计算机设备的图形处理单元中获取;
基于所述多个像素着色器,计算所述待处理粒子帧中的所述多个粒子对应的属性参数;
根据所述属性参数生成所述待处理粒子帧的二维纹理,包括:当所述待处理粒子帧为单个粒子帧时,确定所述单个粒子帧中每个粒子所属的特效类型;
根据所述特效类型将所述单个粒子帧对应的属性参数存储在二维纹理中,其中,不同所述特效类型的粒子的属性参数存储在所述二维纹理中的不同区域;
基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
根据所述显示信息生成所述待处理粒子帧的粒子动画。
8.根据权利要求7所述的粒子动画处理方法,其特征在于,所述显示信息包括瞬时显示位置和旋转方向,所述基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息,包括:
基于顶点纹理拾取技术,从所述二维纹理中获取所述多个粒子对应的所述属性参数;
从预设存储区中获取所述待处理粒子帧对应的瞬时加速度;
根据所述多个粒子对应的所述属性参数和所述瞬时加速度,计算所述多个粒子的瞬时显示位置和旋转方向。
9.一种粒子动画处理装置,其特征在于,包括:
获取模块,用于获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个像素着色器,其中,所述待处理粒子帧中的多个粒子根据所述待处理粒子帧的上一粒子帧中即将死亡的粒子和/或待新建的粒子确定,所述多个像素着色器为从计算机设备的图形处理单元中获取;
计算模块,用于基于所述多个像素着色器,计算所述待处理粒子帧中的所述多个粒子对应的属性参数;
第一生成模块,用于根据所述属性参数生成所述待处理粒子帧的二维纹理,包括:当所述待处理粒子帧为多个粒子帧时,确定所述多个粒子帧中每个粒子帧的显示顺序;根据所述显示顺序确定所述每个粒子帧在二维纹理中的排列顺序;按照所述排列顺序,将所述每个粒子帧对应的属性参数存储在所述二维纹理中;
第一确定模块,用于基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
第二生成模块,用于根据所述显示信息生成所述待处理粒子帧的粒子动画。
10.一种粒子动画处理装置,其特征在于,所述装置包括:
获取模块,用于获取待处理粒子帧中的多个粒子对应的像素着色器,得到多个像素着色器,其中,所述待处理粒子帧中的多个粒子为提前设置好的特效所需的粒子,所述多个像素着色器为从计算机设备的图形处理单元中获取;
计算模块,用于基于所述多个像素着色器,计算所述待处理粒子帧中的所述多个粒子对应的属性参数;
第一生成模块,用于根据所述属性参数生成所述待处理粒子帧的二维纹理,包括:当所述待处理粒子帧为单个粒子帧时,确定所述单个粒子帧中每个粒子所属的特效类型;根据所述特效类型将所述单个粒子帧对应的属性参数存储在二维纹理中,其中,不同所述特效类型的粒子的属性参数存储在所述二维纹理中的不同区域;
第一确定模块,用于基于顶点纹理拾取技术从所述二维纹理中确定所述多个粒子的显示信息;
第二生成模块,用于根据所述显示信息生成所述待处理粒子帧的粒子动画。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-8任一项所述的粒子动画处理方法中的步骤。
12.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如权利要求1-8任一项所述的粒子动画处理方法中的步骤。
CN202011148909.3A 2020-10-23 2020-10-23 粒子动画处理方法、装置、存储介质及计算机设备 Active CN112215932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011148909.3A CN112215932B (zh) 2020-10-23 2020-10-23 粒子动画处理方法、装置、存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011148909.3A CN112215932B (zh) 2020-10-23 2020-10-23 粒子动画处理方法、装置、存储介质及计算机设备

Publications (2)

Publication Number Publication Date
CN112215932A CN112215932A (zh) 2021-01-12
CN112215932B true CN112215932B (zh) 2024-04-30

Family

ID=74055075

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011148909.3A Active CN112215932B (zh) 2020-10-23 2020-10-23 粒子动画处理方法、装置、存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN112215932B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112802170B (zh) * 2021-02-07 2023-05-16 抖音视界有限公司 光照图像生成方法、装置、设备和介质
CN112862942B (zh) * 2021-02-08 2024-04-09 腾讯科技(深圳)有限公司 物理特效模拟方法、装置、电子设备和存储介质
CN115994972A (zh) * 2021-10-18 2023-04-21 北京字节跳动网络技术有限公司 特效处理方法及设备
CN117472592B (zh) * 2023-12-27 2024-03-19 中建三局集团有限公司 基于顶点着色器与纹理映射的三维模型爆炸方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1753031A (zh) * 2005-11-10 2006-03-29 北京航空航天大学 基于gpu的粒子系统
CN101706972A (zh) * 2009-11-16 2010-05-12 大连海事大学 海上溢油的三维可视化算法
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
US8335675B1 (en) * 2009-02-27 2012-12-18 Adobe Systems Incorporated Realistic real-time simulation of natural media paints
CN107392835A (zh) * 2016-05-16 2017-11-24 腾讯科技(深圳)有限公司 一种粒子系统的处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7692647B2 (en) * 2006-09-14 2010-04-06 Microsoft Corporation Real-time rendering of realistic rain

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1753031A (zh) * 2005-11-10 2006-03-29 北京航空航天大学 基于gpu的粒子系统
US8335675B1 (en) * 2009-02-27 2012-12-18 Adobe Systems Incorporated Realistic real-time simulation of natural media paints
CN101706972A (zh) * 2009-11-16 2010-05-12 大连海事大学 海上溢油的三维可视化算法
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
CN107392835A (zh) * 2016-05-16 2017-11-24 腾讯科技(深圳)有限公司 一种粒子系统的处理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
3D GIS环境下雨雪天气实时仿真;李欢;樊红;冯浩;;中国图象图形学报(第12期);第1543-1558页 *
基于GPU粒子系统的大规模雨雪场景实时模拟;刘小玲;杨红雨;郭虎奇;;计算机工程与设计(第06期);第2398-2436页 *

Also Published As

Publication number Publication date
CN112215932A (zh) 2021-01-12

Similar Documents

Publication Publication Date Title
CN112215932B (zh) 粒子动画处理方法、装置、存储介质及计算机设备
EP4006844A1 (en) Image rendering method and related device
CN110559653B (zh) 虚拟飞行器的控制方法、装置、终端及存储介质
CN112138386A (zh) 一种体积渲染方法、装置、存储介质及计算机设备
CN113952720A (zh) 游戏场景渲染方法、装置、电子设备及存储介质
WO2021253640A1 (zh) 阴影数据确定方法、装置、设备和可读介质
US20230072762A1 (en) Method and apparatus for displaying position mark, device, and storage medium
CN113398583A (zh) 游戏模型的贴花渲染方法、装置、存储介质及电子设备
CN112206517A (zh) 一种渲染方法、装置、存储介质及计算机设备
CN111445563A (zh) 一种图像生成的方法以及相关装置
CN115082607A (zh) 虚拟角色头发渲染方法、装置、电子设备和存储介质
CN114782605A (zh) 毛发虚拟模型的渲染方法、装置、计算机设备及存储介质
CN114419229A (zh) 图像渲染方法、装置、计算机设备和存储介质
CN112206519B (zh) 实现游戏场景环境变化的方法、装置、存储介质及计算机设备
CN113487662A (zh) 画面显示方法、装置、电子设备和存储介质
KR20220088797A (ko) 선택된 타깃을 결정하기 위한 방법 및 장치, 디바이스 및 저장 매체
CN113018865B (zh) 攀爬线生成方法、装置、计算机设备及存储介质
CN115501590A (zh) 显示方法、装置、电子设备和存储介质
CN116173496A (zh) 一种图像帧的渲染方法及相关装置
CN112843697A (zh) 一种图像处理方法、装置、存储介质及计算机设备
CN113058266B (zh) 虚拟环境中场景字体的显示方法、装置、设备及介质
CN115761066A (zh) 马赛克颗粒的动画效果生成方法、装置、存储介质及设备
WO2021143262A1 (zh) 地图元素添加方法、装置、终端及存储介质
WO2021233046A1 (zh) 一种碰撞范围确定方法和相关装置
CN114404953A (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