CN104700446B - 一种粒子系统中粒子顶点数据的更新方法 - Google Patents

一种粒子系统中粒子顶点数据的更新方法 Download PDF

Info

Publication number
CN104700446B
CN104700446B CN201510143517.0A CN201510143517A CN104700446B CN 104700446 B CN104700446 B CN 104700446B CN 201510143517 A CN201510143517 A CN 201510143517A CN 104700446 B CN104700446 B CN 104700446B
Authority
CN
China
Prior art keywords
particle
mtd
data
summit
msub
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
CN201510143517.0A
Other languages
English (en)
Other versions
CN104700446A (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.)
Boundary Game Inc Co
Original Assignee
Boundary Game Inc Co
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 Boundary Game Inc Co filed Critical Boundary Game Inc Co
Priority to CN201510143517.0A priority Critical patent/CN104700446B/zh
Publication of CN104700446A publication Critical patent/CN104700446A/zh
Application granted granted Critical
Publication of CN104700446B publication Critical patent/CN104700446B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Abstract

本发明公开了一种粒子系统中粒子顶点数据的更新方法,属于图像绘制技术领域。该方法包括:确定当前粒子系统中所需的粒子的相关参数,并根据确定的所述相关参数进行粒子系统初始化,在初始化阶段配置了粒子顶点数据的存储方式,之后顶点数据更新的过程中,根据所述存储方式确定出需要更新的粒子的顶点数据的范围后,完成对应范围内的顶点数据的更新。本发明所述的方法,将粒子的顶点数据分为了顶点变化数据和顶点固定数据,通过使用动态顶点数据的更新方式,减少了每次绘制时的数据更新操作,大大提高了顶点数据更新的效率。

Description

一种粒子系统中粒子顶点数据的更新方法
技术领域
本发明属于计算机图形技术领域,具体涉及一种粒子系统中粒子顶点数据的更新方法。
背景技术
粒子系统是三维计算机图形学中模拟一些特定的不规则模糊景象的技术,而这些景象用其它传统的渲染技术难以实现的真实感。在粒子系统中,景象被定义为由成千上万个不规则的、随机分布的粒子所组成,而每一个粒子均有一定的生命周期,它们不断改变形状、不断运动,充分地体现了不规则物体的性质。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、溅血、落叶、云、雾、雪、尘、流星尾迹或者发光轨迹这样的抽象视觉效果等等。粒子系统方法具有良好的随机性和动态性,能逼真地模拟动态景物。因此,利用粒子系统方法模拟自然景物,有着重要的科学意义和广泛的应用前景,在系统仿真、影视特效、三维游戏中有广泛的应用。
粒子系统更新循环划分为两个不同的阶段:参数更新/模拟阶段以及渲染阶段。参数更新/模拟阶段根据粒子系统信息更新每个粒子的位置等属性信息;渲染阶段根据粒子属性重新绘制粒子。拖尾效果(如流星、刀光剑影等效果的制作)作为粒子系统中最重要的一种渲染器被大量应用到各种场景中。现有技术中,拖尾效果的每次绘制都需要在中央处理器CPU上对所有粒子的历史信息进行更新,然后把所有的信息提交到显卡,在图像处理器GPU对更新后的粒子进行渲染,完成拖尾效果的绘制,而大量的数据更新及资源锁定操作会大大影响CPU的性能。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种粒子系统中粒子顶点数据的更新方法,通过该方法能够有效降低粒子顶点数据更新的复杂度,提高数据更新效率。
为实现上述目的,本发明采用的技术方案如下:
一种粒子系统中粒子顶点数据的更新方法,包括以下步骤:
(1)确定当前粒子系统中所需的粒子的相关参数,所述相关参数包括所需的粒子数量、粒子类型、粒子宽度、粒子的绘制段数以及渲染阶段所需的贴图;所述粒子类型为三角形,在渲染阶段采用四边形进行渲染;
(2)根据所述相关参数进行粒子系统的初始化,包括:生成所述粒子数量的粒子,确定粒子的顶点数据的存储方式;所述粒子的顶点数据包括粒子的每一段的顶点数据;所述粒子的每一段的顶点数据包括顶点变化数据VB1和顶点固定数据VB2,顶点变化数据VB1包括顶点位置坐标和顶点朝向,顶点固定数据VB2为顶点纹理坐标UV;
粒子的顶点变化数据VB1的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点变化数据VB1,且每一段的顶点变化数据VB1连续存储两次,并按照存储顺序设置每一个数据的索引;
假设粒子数量为m、粒子的绘制段数为n,则粒子的顶点变化数据VB1存储为:
其中,Vmn-1和Vmn分别表示第m个粒子第n段的起始的顶点变化数据和结束的顶点变化数据;
粒子的顶点固定数据VB2的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点固定数据,完成一次存储后,按照粒子的段数再次顺序存储每个粒子每一段的顶点固定数据;存储完成后,按照存储顺序设置每一个数据的索引;
(3)确定需要更新的粒子的顶点数据的范围,包括:确定需要更新的顶点变化数据VB1和更新时的顶点固定数据VB2;其中,顶点朝向为当前顶点位置坐标到更新后的顶点位置坐标的方向;
确定需要更新的顶点位置坐标的方式为:根据粒子的顶点位置坐标的存储方式和此次粒子更新的次数,得到粒子此次需要更新的顶点位置坐标的索引范围A,索引范围A对应的顶点位置坐标为此次需要更新的顶点位置坐标;
确定更新时的顶点固定坐标VB2的方式为:根据粒子的顶点固定数据VB2的存储方式和此次粒子更新的次数,确定出更新时的顶点固定数据VB2;
(4)根据粒子当前的顶点位置坐标、此次更新后的顶点位置坐标、粒子宽度和确定出的需要更新的顶点变化数据VB1进行顶点变化数据VB1的更新,并根据确定出的更新时的顶点固定数据VB2进行此次更新时的顶点固定数据VB2的更新;
(5)按照粒子的顺序合并更新后的顶点变化数据VB1和更新时的顶点固定数据VB2,得到更新后的粒子的顶点数据。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,步骤(3)中,所述得到粒子此次需要更新的顶点位置坐标的索引范围A,包括:
假设粒子数量为m、粒子的绘制段数为n,记i为每次更新时的顶点变化数据的起始位置即起始索引,索引范围A的方式为:
当i≤n+1时,则需要更新的顶点位置坐标的索引范围A为[2m(i-1),2mi-1]
当k(n+1)<i≤(k+1)(n+1)时,则需要更新的顶点位置坐标的索引范围A为[2m(i-km-1),2m(i-km)-1],其中,k≥1。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,步骤(3)中,根据粒子的顶点固定数据VB2的存储方式和此次粒子更新的次数,确定出更新时的顶点固定数据VB2,包括:判断所述此次粒子更新的次数是否大于粒子的绘制段数,若否,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引,若是,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引加上C,其中,C=2×粒子的数量×粒子的绘制段数。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,当此次粒子更新的次数大于粒子的绘制段数时,将此次更新后的粒子的顶点数据覆盖粒子最早更新的一段的顶点数据。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,所述方法还包括:
在粒子顶点数据的更新过程中,遍历粒子系统中的所有粒子,判断粒子的存在时间是否大于设定时间,若是则判断粒子死亡;
遍历粒子系统中所有粒子,判断粒子的速度是否大于设定速度,若是则判断粒子死亡;
遍历粒子系统中所有粒子,判断粒子所在区域是否超出生成区域,若是则判断粒子死亡。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,当粒子死亡后,该粒子所对应的所有顶点数据为无效数据。
可选地,如上所述的一种粒子系统中粒子顶点数据的更新方法,当粒子死亡后,生成新的粒子,粒子死亡后下一次的顶点数据为新的粒子的顶点数据。
本发明的有益效果在于:本发明所述的方法,将粒子的顶点数据分为了顶点变化数据和顶点固定数据,通过使用动态顶点数据的更新方式,减少了每次绘制时的数据更新操作,大大提高了顶点数据更新的效率。
附图说明
图1为本发明实施例中提供的一种粒子系统中粒子顶点数据的更新方法的流程图;
图2为本发明实施例中顶点变化数据的示意图;
图3为本发明实施例中顶点固定数据的示意图;
图4为本发明实施例中对第1个粒子进行绘制后的示意图;
图5为本发明实施例中对第2个粒子进行绘制后的示意图;
图6为本发明实施例中对第3个粒子进行绘制后的示意图;
图7为本发明实施例中对第4个粒子进行绘制后的示意图。
具体实施方式
下面结合附图,对本发明的具体实施方式做进一步的详细说明。
粒子系统是由多个粒子组成的,每个粒子是一个带纹理的三角形或多边形,粒子按一定规则运动;每个粒子有自己的属性,如位置、速度、质量、颜色等。粒子系统的更新循环,需要在参数更新/模拟阶段根据粒子系统信息更新每个粒子属性信息,渲染阶段根据粒子属性重新绘制粒子。可见,粒子的属性信息更新是粒子系统更新循环中尤为重要的过程,而现有粒子属性信息的更新方式中计算量巨大,大量的数据更新及资源锁定操作会大大影响CPU的性能。本发明实施例正是针对该问题而提出的一种粒子系统中粒子顶点数据的更新方法,通过该方法有效减低数据更新时的计算量,达到了提升系统性能的目的。
图1示出了本发明实施例中提供的一种粒子系统中粒子顶点数据的更新方法,由图中可以看出,该方法可以包括以下几个步骤:
步骤S1:确定当前粒子系统的相关参数;
通常粒子系统在三维空间中的位置与运动是由发射器控制的。发射器主要由一组粒子行为参数以及在三维空间中的位置所表示。粒子行为参数可以包括粒子生成速度(即单位时间粒子生成的数目)、粒子初始速度向量(例如什么时候向什么方向运动)、粒子寿命(经过多长时间粒子湮灭)等等。因此,在进行系统的初始化之前,首先需要确定当前粒子系统的相关参数。
本实施例中,所述相关参数包括但不限于所需的粒子数量、粒子类型、粒子宽度、粒子的绘制段数以及渲染阶段所需的贴图;所述粒子类型为三角形,在渲染阶段采用四边形进行渲染。
本发明实施例中,每个粒子选用三角形,即显卡显示绘制图形的单位为三角形,每个三角形有三个顶点,每个顶点都有位置信息、颜色信息等等,显卡根据三个顶点的信息绘制出一个三角形。由于在绘制完成进行渲染时,通常每个粒子是用经过纹理映射的四边形像素图sprite(四边形总是面向观察者)进行渲染,也就是说,每个粒子在绘制时需要2个三角形,4个顶点(2个三角形共用2个顶点),每个三角形3个顶点索引,因此,在绘制渲染阶段,每个粒子需要有四个顶点数据。
贴图的过程指的将材质平面图,覆于与立体模型上的过程,也就是说,贴图是用来显示粒子的细节,即相当于把贴图覆盖到对应的三角形上。贴图是一张图片,可以是bmp图片、tga图片等。本实施例中,粒子的绘制段数即粒子的轨迹段数决定了贴图的分割段数,贴图的分割段数step决定将当前的贴图等分为几份,在渲染阶段,粒子的每一段轨迹只使用贴图的一份。
步骤S2:根据所述相关参数进行粒子系统的初始化;
本实施例中,所述初始化包括:生成所述粒子数量的粒子,确定粒子的顶点数据的存储方式。
在完成相关参数的设置后,粒子系统生成对应数量的粒子、并确定出粒子的顶点数据的存储方式,其中,所述粒子的顶点数据包括粒子的每一段的顶点数据。由于绘制阶段粒子的每一段轨迹需要四个顶点数据,如图2所示,假设粒子的绘制段数为3,第一段的顶点数据包括a、b、c、d四个顶点数据,a、b为第一段的起始顶点数据,c、d为完成一次更新后的第一段的结束顶点数据,也是第二段的起始顶点数据,第二段包括c、d、e、f四个顶点数据,第三段包括e、f、g、h四个顶点数据。其中,a、d、f、h是粒子的实际顶点数据,b、c、e、g的顶点数据是由据a、d、f、h的顶点数据和粒子宽度决定的。
本发明实施例中,为了提供后续粒子顶点数据更新的效率,将粒子的每一段的顶点数据分为了两部分,一部分是顶点变化数据VB1,另一部分是顶点固定数据VB2,其中,顶点变化数据VB1包括顶点位置坐标和顶点朝向,顶点固定数据VB2为顶点纹理坐标UV,在顶点数据更新阶段,分别完成顶点变化数据VB1和顶点固定数据VB2,在绘制时,再将两部分数据合并进行绘制。
其中,所述顶点位置坐标指的是当前粒子的位置,顶点朝向为顶点上次更新时的位置到现在的位置的方向,如果粒子是第一次更新,没有历史位置信息,顶点朝向则使用粒子速度的方向。顶点纹理坐标UV表示了顶点使用贴图哪个位置的颜色,即UV信息定义了贴图上每个点的位置的信息,用于确定如何将一个纹理图像(贴图)放置在三维的模型表面,对于纹理贴图而言,一张贴图的U坐标和V坐标的数值范围都是0到1,U表示贴图的水平方向坐标,U为0表示贴图的最左边,U为1表示贴图的最右边;V表示贴图的数字方向,V为0表示贴图的下边,V为1表示贴图的最上边。如图3所示,假设粒子的绘制段数为4段,则贴图需要分成4段,粒子的第一段轨迹所对应的的4个顶点UV为(0.0,0.0)、(1.0,0.0)、(1.0,0.25)、(0.0,0.25),其中,(0.0,0.0)、(1.0,0.0)为起始UV坐标,(1.0,0.25)、(0.0,0.25)为结束UV坐标。由于V坐标表示了粒子的当前段数在粒子总段数的比例,而粒子的绘制段数与贴图的段数是一一对应的,因此,可以根据该比例计算出V坐标,计算方式如下:
V坐标计算方式:起始V坐标=(粒子的当前段数-1)×1.0/总段数;
结束V坐标=粒子的当前段数×1.0/总段数。
本实施例中,所述粒子的顶点变化数据VB1采用的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点变化数据VB1,且每一段的顶点变化数据VB1连续存储两次,并按照存储顺序设置每一个数据的索引;具体如下:
假设粒子数量为m、粒子的绘制段数为n,则粒子的顶点变化数据VB1存储为:
其中,Vmn-1和Vmn分别表示第m个粒子第n段的起始的顶点变化数据和结束的顶点变化数据。假设有3个粒子,则在存储时,按照顺序先存储第一个粒子的第一段的顶点变化数据,再存储第二个粒子的第一段顶点变化数据,之后存储第二个粒子的第一段顶点变化数据,这样完成低于段的存储后,再进行第二段的存储直到最后一段的存储。存储时,由于b、c、e、g对应的顶点变化数据是由a、d、f、h的顶点数据和粒子宽度决定的,因此,实际存储时只需要存储粒子的实际顶点变化数据,即a、d、f、h的顶点变化数据,每个数据连续存储两次,这样在绘制时便可以根据得到四个顶点变化数据了。如图2所示,在绘制计算时,只需要知道a和d的位置坐标,便可以根据粒子的朝向和粒子宽度计算出b和c的坐标,因此通过采用对a和d的位置坐标连续存储两次的方式,即a位置坐标、a位置坐标、d位置坐标和d位置坐标,在数据更新时,只需要计算出b位置坐标对于a位置坐标的偏移,将该偏移加到第二个a位置坐标上,即可以得到b位置坐标,而无须再一一计算四个顶点数据。
对顶点变化数据VB1的顶点位置坐标和顶点朝向均采用上述存储方式。在完成顶点变化数据VB1的存储后,设置每个数据的索引信息,其中,索引为数字,按照存储顺序进行设置。
本实施例中,粒子的顶点固定数据VB2的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点固定数据VB2,完成一次存储后,按照粒子的段数再次顺序存储每个粒子每一段的顶点固定数据VB2;存储完成后,按照存储顺序设置每一个数据的索引。
由于粒子的绘制段数跟粒子的顶点固定数据VB2即UV坐标是一一对应的,即粒子的第一段的对应的是贴图的第一部分,因此,采用上述方式存储顶点固定数据VB2的方式,进行一次存储后,后续更新时,每次绘制时就不需要每次再修改顶点固定数据VB2,只需要调整上述存储的顶点固定数据VB2的偏移即可,通过该偏移的调整,即可确定出每次更新时开始的顶点固定数据VB2。
本实施例中,顶点变化数据VB1对应的索引和顶点固定数据VB2对应的索引在设置时,都是根据数据存储的顺序进行设置,且索引数字从0开始。
步骤S3:确定需要更新的粒子的顶点数据的范围;
本实施例中,由于将顶点数据分为了顶点变化数据VB1和顶点固定数据VB2,因此,该步骤中,在进行数据更新时,首先需要确定出需要更新的顶点变化数据VB1和更新时的顶点固定数据VB2。
对于顶点变化数据VB1中的朝向信息,顶点朝向为当前顶点位置坐标到更新后的顶点位置坐标的方向,如果是第一次更新,没有当前顶点位置坐标,则朝向使用粒子速度的方向。由于顶点朝向可以根据顶点位置坐标进行确定,因此,本实施例中所述的顶点变化数据的更新主要是指顶点位置坐标的更新。
确定需要更新的顶点位置坐标的方式为:根据粒子的顶点位置坐标的存储方式和此次粒子更新的次数,得到粒子此次需要更新的顶点位置坐标的索引范围A,索引范围A对应的顶点位置坐标为此次需要更新的顶点位置坐标。由于在确定顶点变化数据的存储方式时,为每一数据设置了索引,因此,只需要确定出需要更新的索引范围,即可确认出需要更新哪些顶点变化数据VB1。
本实施例中,确定粒子此次需要更新的顶点位置坐标的索引范围A的方式为:
假设粒子数量为m、粒子的绘制段数为n,记i为每次更新时的顶点变化数据的起始位置即起始索引,索引范围A的方式为:
当i≤n时,则需要更新的顶点位置坐标的索引范围A为[2m(i-1),2mi-1]
当k(n+1)<i≤(k+1)(n+1)时,则需要更新的顶点位置坐标的索引范围A为[2m(i-km-1),2m(i-km)-1],其中,k≥1;这是因为当更新次数大于粒子的绘制段数时,每一段的数据至少已经覆盖了一次,即从左到右进行更新数据时,当到达尾部时,再回到第一段数据进行更新。例如,粒子有4个,粒子绘制段数为5段,即m=4,n=5,则在数据存储时,4个粒子第一段的数据对应的索引范围为[0,2n-1]即[0,7],最后一段对应数据的索引范围为[40,47],当完成第5次更新时,完成了所有段数对应数据的更新,第6次更新时,需要覆盖掉第一段的数据,只保留最新的5段数据。
采用本发明实施例中提供的顶点位置坐标的存储方式,即可以根据上述方式快速的确定出需要更新的数据的顶点索引,通过该方式可以大大减少数据更新量,有效提升图形渲染的效率。
本实施例中,确定更新时的顶点固定数据VB2的方式为:判断所述此次粒子更新的次数是否大于粒子的绘制段数,若否,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引,若是,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引加上C,其中,C=2×粒子的数量×粒子的绘制段数。
当更次次数小于或等于粒子的绘制段数时,粒子的顶点位置与顶点固定数据即顶点UV是一一对应的,因此,在后续数据合并时,只需要将确定出需要更新的顶点位置坐标数据与顶点固定数据直接组合即可;而当更新次数大于粒子的绘制段数时,此时更新时对应的顶点固定数据需要通过设置偏移完成顶点固定数据的更新,而该偏移即为上述C。例如,粒子的绘制段数为4,在第一次更新时,对应的顶点固定数据为0-0.25,第二次更新对应的为0.25-0.5,第三次对应的为0.5-0.75,第四次为0.75-1.0,如图3所示。在进行第五次更新时,对应的应该为1.0-0.0,而不是直接回到第一段对应的0.0-0.25,因此,存储偏移,而该偏移对应到顶点固定数据存储时设置的索引上即为上述C。
步骤S4:完成粒子顶点固定数据和顶点变化数据的更新。
步骤S5:合并更新后的顶点固定数据和顶点变化数据,得到更新后的顶点数据。
在步骤S3中确定出需要更新的顶点数据的范围后,根据粒子当前的顶点位置坐标、此次更新后的顶点位置坐标、粒子宽度和确定出的需要更新的顶点变化数据VB1进行顶点变化数据VB1的更新,并根据确定出的更新时的顶点固定数据VB2进行此次更新时的顶点固定数据VB2的更新;之后,按照粒子的顺序合并更新后的顶点变化数据VB1和更新时的顶点固定数据VB2,得到更新后的粒子的顶点数据。
其中,数据的合并可以通过DirectX或OpenGL的接口合并VB1和VB2,并设置顶点索引(顶点位置坐标的索引),合并后通设置渲染引擎shader进行绘制。根据粒子更新后的顶点数据,进行粒子的绘制及渲染的过程为现有技术,在此不再一一描述。
在实际的绘制中,绘制的每段有2个三角形,4个顶点,假设有v0,v1,v2,v34个顶点,v0,v1坐标朝向完全一样,v0的U坐标为0.0,v1的U坐标为1.0。由于绘制的方向与朝向垂直,根据朝向可计算出绘制的方向向量,由粒子宽度和绘制的方向可得到v1对于v0的偏移距离,加上v0即可计算出v1的坐标。v2,v3和v0,v1类似。通过宽度和朝向可计算出v3的坐标。本发明实施例中,通过巧妙的设置顶点变化数据和顶点固定数据的存储方式,可以大大较少数据更新量,提高更新效率。
此外,在实际应用中,在更新过程中,需要遍历粒子系统中所有粒子,对所有粒子进行监控,以判断粒子是否死亡。具体通过遍历粒子系统中所有粒子,判断粒子的存在时间是否大于设定时间,若是则判断粒子死亡;遍历粒子系统中所有粒子,判断粒子的速度是否大于设定速度,若是则判断粒子死亡;遍历粒子系统中所有粒子,判断粒子所在区域是否超出设定区域,若是则判断粒子死亡。当粒子死亡后,该粒子所对应的顶点数据为无效数据,并生成新的粒子,粒子死亡后下一次的顶点变化数据为新的粒子的顶点变化数据。
本发明实施例提供的更新方法,适用于粒子系统更新循环过程中需要对粒子顶点数据进行更新的所有应用场景中,尤其适用于粒子系统中拖尾效果的绘制,通过该方法进行拖尾效果绘制时数据的更新,能够高效地实现拖尾算法。
下面结合具体实施例对本发明的方法进行进一步说明。
实施例
本实施例中,将本发明提供的粒子顶点数据的更新方法应用于拖尾效果的绘制中。
第一步:确定当前粒子系统中待绘制的拖尾效果所需粒子的相关参数,
本实施例中,当前粒子系统所需的粒子数量为4个、粒子宽度即粒子的直径为0.5,粒子的绘制段数为4段,粒子类型选用三角形,在渲染阶段每个粒子用经过纹理映射的四边形进行渲染,也就是说,每个粒子的每段需要2个三角形,两个三角形共用2个顶点,渲染阶段选用的贴图可以是一张tga图片。
第二步:根据所述相关参数进行粒子系统的初始化,包括:
粒子发射器根据第一步中确定的参数,生成4个粒子,并设置4个粒子的每一段的顶点数据存储方式。初始化后的4个粒子的顶点固定数据VB2即顶点纹理坐标UV的存储如下:
第一部分:
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)4个粒子的第一段的起始UV;
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)4个粒子的第一段的结束UV即第二段的起始UV;
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)第二段的结束UV即第三段的起始UV;
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)第三段的结束UV即第四段的起始UV;
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)第四段的结束UV
第二部分:
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)
(0.0,0.0)(0.0,1.0)
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)
(0.25,0.0)(0.25,1.0)
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)
(0.50,0.0)(0.50,1.0)
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)
(0.75,0.0)(0.75,1.0)
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)
(1.0,0.0)(1.0,1.0)
对于4个粒子,由于每个粒子的每段顶点位置坐标数据都存储两次,因此需要4个粒子、每个粒子绘制4段时,按照存储的顺序设置索引时,需要的索引个数为:2×粒子个数×(段数+1)=40。顶点朝向可以根据粒子的顶点位置坐标得到。顶点位置坐标数据的存储格式如下:
V11 V11 V21 V21 V31 V31 V41 V41 索引[0,7]
V12 V12 V22 V22 V32 V32 V42 V42 索引[8,15]
V13 V13 V23 V23 V22 V22 V43 V43 索引[16,23]
V14 V14 V24 V24 V34 V34 V44 V44 索引[24,31]
V15 V15 V25 V25 V35 V35 V45 V45 索引[32,39]
其中,V11和V12表示第一个粒子第一段的起始的和结束的顶点位置坐标数据,两个V11分别表示左侧和右侧的起始的顶点位置坐标数据,V11、V11、v12和V12对应的四个顶点位置坐标数据在渲染阶段被绘制为一个四边形。索引[0,7]为数据V11、V11、V21、V21、V31、V31、V41、V41的索引。
采用上述方式对粒子顶点位置坐标数据进行存储,其中,共40个顶点位置坐标数据,本实施例中,可以采用数组方式存储上述数据,数组的长度为40,数组记为V[40],其中,v[0]对应第一个存储的顶点位置坐标数据(上述第一个V11),v[39]对应最后一个存储的顶点位置坐标数据(上述第二个V45)。
第三步,更新粒子的顶点数据,包括更新粒子的顶点变化数据VB1和确定更新时的顶点固定数据VB2;
其中,对于粒子的顶点变化数据VB1,更新过程如下:
假设第一次更新时,四个粒子的各顶点位置坐标数据分别为(1,0,0),(2,0,0),(3,0,0),(4,0,0),即:
v[0]=v[1]=(1,0,0) 1个历史位置
v[2]=v[3]=(2,0,0) 1个历史位置
v[4]=v[5]=(3,0,0) 1个历史位置
v[6]=v[7]=(4,0,0) 1个历史位置
由于是第一次更新,在此次更新之前每个粒子都没有历史位置数据,两个顶点位置坐标无法绘制成一个三角形,因此,此时还无法进行拖尾效果的绘制。此次更新完成后,每个粒子存在一个历史位置数据。如图4-图7中的A所示。在实际应用中,粒子的顶点位置坐标数据是三维的即XYZ三个反向均有数据,本实施例中,只是为了描述的方便,才将四个粒子的顶点位置坐标的Z轴坐标均设置为了0。
假设第二次更新时各粒子的顶点位置坐标数据为:(1.1,0),(2,1,0),(3,1,0),(4,1,0),即
v[8]=v[9]=(1,1,0) 2个历史位置
v[10]=v[11]=(2,1,0) 2个历史位置
v[12]=v[13]=(3,1,0) 2个历史位置
v[14]=v[15]=(4,1,0) 2个历史位置
本次更新后可以开始绘制及渲染,根据第一个粒子的v[0],v[8]及粒子宽度,可以计算出第一个粒子的v[1],v[9],v[0]、v[1]、v[8]、v[9]4个顶点构成2个三角形进行绘制,绘制得到一个四边形。其余3个粒子类似。更新完成后:
第1个粒子的位置信息(1,0,0),(1,1,0)
第2个粒子的位置信息(2,0,0),(2,1,0)
第3个粒子的位置信息(3,0,0),(3,1,0)
第4个粒子的位置信息(4,0,0),(4,1,0)
此次更新后,4个粒子绘制后的轨迹示意图如图4-图7中的B所示。
之后,进行第三次更新时,假设第三个粒子死亡,重新生成了1个新的粒子,各粒子的位置坐标数据为(2,2,0),(3,2,0),(0,2,0),(5,2,0),即此时:
v[16]=v[17]=(2,2,0) 3个历史位置
v2[18]=v[19]=(3,2,0) 3个历史位置
v[20]=v[21]=(0,2,0) 1个历史位置
v[22]=v[23]=(5,2,0) 3个历史位置
本次更新后进行绘制及渲染,根据第一个粒子的v[16]及粒子宽度,可以计算出第一个粒子的v[17],v[8]、v[9]、v[16]、V[17]4个顶点构成2个三角形进行绘制,绘制得到一个四边形。其余第2个和第4个粒子类似。第三个粒子由于是重新生成的1个粒子,因此没有历史位置信息,无法进行绘制。更新完成后:
第1个粒子的位置信息 (1,0,0),(1,1,0),(2,2,0)
第2个粒子的位置信息 (2,0,0),(2,1,0),(3,2,0)
第3个粒子的位置信息 无效坐标,无效坐标,(0,2,0)
第4个粒子的位置信息 (4,0,0),(4,1,0),(5,4,0)
此次更新后,4个粒子绘制后的轨迹示意图如图4-图7中的C所示。
进行第四次更新时,假设第一个粒子死亡,重新生成了1个粒子替代了第1个粒子。各粒子的位置坐标数据为(0,1,0),(3,4,0),(0,4,0),(5,4,0),即此时:
v2[24]=v2[25]=(0,1,0) 1个历史位置
v2[26]=v2[27]=(3,4,0) 4个历史位置
v2[28]=v2[29]=(0,4,0) 2个历史位置
v2[30]=v2[31]=(5,2,0) 4个历史位置
更新后,第1个粒子的位置信息 无效坐标,无效坐标,无效坐标,(0,1,0)
第2个粒子的位置信息 (2,0,0),(2,1,0),(3,2,0),(3,4,0)
第3个粒子的位置信息 无效坐标,无效坐标,(0,2,0),(0,4,0)
第4个粒子的位置信息 (4,0,0),(4,1,0),(5,2,0),(5,4,0)
此次更新后,4个粒子绘制后的轨迹示意图如图4-图7中的D所示。
进行第五次更新时,假设第二个粒子死亡。各粒子的顶点位置坐标为(0,4,0),(0,0,0),(0,7,0),(4,6,0),即此时:
v[32]=v[33]=(0,4,0) 2个历史位置
v[34]=v[35]=(0,0,0) 0个历史位置
v[36]=v[28]=(0,7,0) 3个历史位置
v[38]=v[39]=(4,6,0) 5个历史位置
完成更新后,第1个粒子的位置信息 无效坐标,无效坐标,无效坐标,(0,1,0),(0,4,0)
第2个粒子的位置信息 无效坐标,无效坐标,无效坐标,无效坐标,无效坐标
第3个粒子的位置信息 无效坐标,无效坐标,(0,2,0),(0,4,0),(0,7,0)
第4个粒子的位置信息 (4,0,0),(4,1,0),(5,2,0),(5,4,0),(4,6,0)
此次更新后,4个粒子绘制后的轨迹示意图如图4-图7中的E所示。
因为只有4段,当第5次更新时,已经有了4段所有的数据。第6次更新时,覆盖掉[0,9]的数据,只保留最新的4段数据。当更新次数大于段数+1时,覆盖存在时间最长的数据。即,把数据分成m段,从左到右进行更新数据。当到达尾部时,再回到第一段数据进行更新。
之后,遍历系统中粒子,根据粒子已经存在的时间是否大于最大时间,粒子速度是否大于最多速度,粒子是否超出了固定的区域等判断粒子是否死亡,如果粒子已经死亡,不做任何操作,如果粒子依旧没有死亡,对锁定的顶点进行更新,更新信息包括位置,和朝向,位置为当前粒子的位置。朝向为当前顶点上次更新时的位置到现在的位置的方向。如果是第一次更新,没有上次位置信息,朝向使用当前粒子的速度的方向。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种粒子系统中粒子顶点数据的更新方法,包括以下步骤:
(1)确定当前粒子系统中所需的粒子的相关参数,所述相关参数包括所需的粒子数量、粒子类型、粒子宽度、粒子的绘制段数以及渲染阶段所需的贴图;所述粒子类型为三角形,在渲染阶段采用四边形进行渲染;
(2)根据所述相关参数进行粒子系统的初始化,包括:生成所述粒子数量的粒子,确定粒子的顶点数据的存储方式;所述粒子的顶点数据包括粒子的每一段的顶点数据;所述粒子的每一段的顶点数据包括顶点变化数据VB1和顶点固定数据VB2,顶点变化数据VB1包括顶点位置坐标和顶点朝向,顶点固定数据VB2为顶点纹理坐标UV;
粒子的顶点变化数据VB1的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点变化数据VB1,且每一段的顶点变化数据VB1连续存储两次,并按照存储顺序设置每一个数据的索引;
假设粒子数量为m、粒子的绘制段数为n,则粒子的顶点变化数据VB1存储为:
<mfenced open='' close=''> <mtable> <mtr> <mtd> <msub> <mi>V</mi> <mn>11</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>11</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>21</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>21</mn> </msub> </mtd> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mi>m</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mi>m</mi> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>V</mi> <mn>12</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>12</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>22</mn> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mn>22</mn> </msub> </mtd> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mi>m</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mi>m</mi> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> <mtd> <mo>&amp;CenterDot;</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>V</mi> <mrow> <mn>1</mn> <mi>n</mi> </mrow> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mn>1</mn> <mi>n</mi> </mrow> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msub> </mtd> <mtd> <mo>.</mo> <mo>.</mo> <mo>.</mo> </mtd> <mtd> <msub> <mi>V</mi> <mi>mn</mi> </msub> </mtd> <mtd> <msub> <mi>V</mi> <mi>mn</mi> </msub> </mtd> </mtr> </mtable> </mfenced>
其中,Vmn-1和Vmn分别表示第m个粒子第n段的起始的顶点变化数据和结束的顶点变化数据;
粒子的顶点固定数据VB2的存储方式为:按照粒子的段数顺序存储每个粒子每一段的顶点固定数据,完成一次存储后,按照粒子的段数再次顺序存储每个粒子每一段的顶点固定数据;存储完成后,按照存储顺序设置每一个数据的索引;
(3)确定需要更新的粒子的顶点数据的范围,包括:确定需要更新的顶点变化数据VB1和更新时的顶点固定数据VB2;其中,顶点朝向为当前顶点位置坐标到更新后的顶点位置坐标的方向;
确定需要更新的顶点位置坐标的方式为:根据粒子的顶点位置坐标的存储方式和此次粒子更新的次数,得到粒子此次需要更新的顶点位置坐标的索引范围A,索引范围A对应的顶点位置坐标为此次需要更新的顶点位置坐标;
确定更新时的顶点固定数据VB2的方式为:根据粒子的顶点固定数据VB2的存储方式和此次粒子更新的次数,确定出更新时的顶点固定数据VB2;
(4)根据粒子当前的顶点位置坐标、此次更新后的顶点位置坐标、粒子宽度和确定出的需要更新的顶点变化数据VB1进行顶点变化数据VB1的更新,并根据确定出的更新时的顶点固定数据VB2进行此次更新时的顶点固定数据VB2的更新;
(5)按照粒子的顺序合并更新后的顶点变化数据VB1和更新时的顶点固定数据VB2,得到更新后的粒子的顶点数据。
2.根据权利要求1所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:步骤(3)中,所述得到粒子此次需要更新的顶点位置坐标的索引范围A,包括:
假设粒子数量为m、粒子的绘制段数为n,记i为每次更新时的顶点变化数据的起始位置即起始索引,索引范围A的方式为:
当i≤n+1时,则需要更新的顶点位置坐标的索引范围A为[2m(i-1),2mi-1]
当k(n+1)<i≤(k+1)(n+1)时,则需要更新的顶点位置坐标的索引范围A为[2m(i-km-1),2m(i-km)-1],其中,k≥1。
3.根据权利要求1所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:步骤(3)中,根据粒子的顶点固定数据的存储方式和此次粒子更新的次数,确定出更新时的顶点固定数据VB2,包括:判断所述此次粒子更新的次数是否大于粒子的绘制段数,若否,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引,若是,则此次粒子更新时的顶点固定数据VB2的起始索引B为所述索引范围A的起始索引加上C,其中,C=2×粒子的数量×粒子的绘制段数。
4.根据权利要求1所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:当此次粒子更新的次数大于粒子的绘制段数时,将此次更新后的粒子的顶点数据覆盖粒子最早更新的一段的顶点数据。
5.根据权利要求1或4所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:所述方法还包括:
在粒子顶点数据的更新过程中,遍历粒子系统中的所有粒子,判断粒子的存在时间是否大于设定时间,若是则判断粒子死亡;
遍历粒子系统中所有粒子,判断粒子的速度是否大于设定速度,若是则判断粒子死亡;
遍历粒子系统中所有粒子,判断粒子所在区域是否超出生成区域,若是则判断粒子死亡。
6.根据权利要求5所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:当粒子死亡后,该粒子所对应的所有顶点数据为无效数据。
7.根据权利要求6所述的一种粒子系统中粒子顶点数据的更新方法,其特征在于:当粒子死亡后,生成新的粒子,粒子死亡后下一次的顶点数据为新的粒子的顶点数据。
CN201510143517.0A 2015-03-31 2015-03-31 一种粒子系统中粒子顶点数据的更新方法 Active CN104700446B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510143517.0A CN104700446B (zh) 2015-03-31 2015-03-31 一种粒子系统中粒子顶点数据的更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510143517.0A CN104700446B (zh) 2015-03-31 2015-03-31 一种粒子系统中粒子顶点数据的更新方法

Publications (2)

Publication Number Publication Date
CN104700446A CN104700446A (zh) 2015-06-10
CN104700446B true CN104700446B (zh) 2017-10-03

Family

ID=53347528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510143517.0A Active CN104700446B (zh) 2015-03-31 2015-03-31 一种粒子系统中粒子顶点数据的更新方法

Country Status (1)

Country Link
CN (1) CN104700446B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392835B (zh) * 2016-05-16 2019-09-13 腾讯科技(深圳)有限公司 一种粒子系统的处理方法及装置
CN108648260A (zh) * 2018-05-17 2018-10-12 成都明镜视觉科技有限公司 一种基于世界空间的粒子发射方法
CN108765527B (zh) * 2018-06-06 2022-03-29 北京知道创宇信息技术股份有限公司 动画显示方法、装置、电子设备及存储介质
CN108921927B (zh) * 2018-06-12 2022-12-23 创新先进技术有限公司 一种基于粒子的烟花特效实现方法、装置以及设备
CN109062487A (zh) * 2018-08-21 2018-12-21 苏州蜗牛数字科技股份有限公司 一种模型材质uv拷贝的方法
CN113786624B (zh) * 2021-09-17 2022-09-30 完美世界(北京)软件科技发展有限公司 游戏资源的制作方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1321956A (zh) * 2000-03-31 2001-11-14 三菱电机株式会社 向顶点数据加算偏移值后绘制多边形的三维图象绘制装置及其方法
CN102147928A (zh) * 2011-03-16 2011-08-10 美通日用品(杭州)有限公司 一种基于粒子系统的火焰模拟加速改进算法
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
CN104143208A (zh) * 2013-05-12 2014-11-12 哈尔滨点石仿真科技有限公司 一种大规模真实感雪景实时渲染方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080266286A1 (en) * 2007-04-25 2008-10-30 Nvidia Corporation Generation of a particle system using a geometry shader

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1321956A (zh) * 2000-03-31 2001-11-14 三菱电机株式会社 向顶点数据加算偏移值后绘制多边形的三维图象绘制装置及其方法
CN102147928A (zh) * 2011-03-16 2011-08-10 美通日用品(杭州)有限公司 一种基于粒子系统的火焰模拟加速改进算法
CN102426691A (zh) * 2011-10-24 2012-04-25 克拉玛依红有软件有限责任公司 一种基于gpu的实时火焰效果的模拟方法
CN104143208A (zh) * 2013-05-12 2014-11-12 哈尔滨点石仿真科技有限公司 一种大规模真实感雪景实时渲染方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Hardware-based Simulation and Collision Detection for Large Particle Systems;A.Kolb 等;《Proc.Graphics Hardware》;20040830;123-131 *
Shannon Drone.Real-Time Particle Systems on the GPU in Dynamic Environments.《ACM SIGGRAPH 2007 courses》.2007,80-96. *
基于粒子系统和纹理映射的火焰模拟研究;吕雪;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130815(第08期);I138-700 *

Also Published As

Publication number Publication date
CN104700446A (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
CN104700446B (zh) 一种粒子系统中粒子顶点数据的更新方法
CN102768765B (zh) 实时点光源软阴影渲染方法
CN102750725B (zh) 基于图形处理器加速的地形渲染方法
CN104318605B (zh) 矢量实线与三维地形的并行贴合渲染方法
US20060077208A1 (en) Method of creating texture capable of continuous mapping
CN107220372B (zh) 一种三维地图线要素注记自动放置方法
CN107358579B (zh) 一种游戏战争迷雾实现方法
CN104157000B (zh) 模型表面法线的计算方法
CN103700060B (zh) 一种海量任意形状多边形的快速可视化方法
Vaaraniemi et al. High-quality cartographic roads on high-resolution DEMs
CN105760073A (zh) 一种在交互式电子白板软件中实现图形透视的方法
CN110433467A (zh) 基于双目视觉和蚁群算法的捡乒乓球机器人运行方法及设备
CN102831634A (zh) 一种高效精确的通用软阴影生成方法
CN106548508B (zh) 一种高质量3d纹理重建方法
CN107918947A (zh) 处理图像数据的方法和设备
CN107292946A (zh) 一种基于brdf函数线性过滤的图像渲染方法
CN104751509A (zh) 一种实时体积雾化效果算法
KR20090059800A (ko) 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템
CN106846452A (zh) 一种gpu上针对延迟着色反走样绘制的优化方法
CN106067193A (zh) 一种点云数据的体素化方法和体素的遮挡裁剪方法
CN106910239A (zh) 一种基于阴影图的软阴影绘制方法
CN114627214A (zh) 顶点动画的处理方法、装置和电子设备
CN114549714A (zh) 基于WebGL三维风向图可视化的渲染方法
KR102638813B1 (ko) 헤어 래스터화를 위한 시스템들 및 방법들
CN103733228B (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