一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

粒子效果的实现方法、装置、设备及存储介质与流程

2022-04-25 02:04:07 来源:中国专利 TAG:


1.本发明实施例涉及粒子效果的实现技术领域,尤其涉及一种粒子效果的实现方法、装置、设备及存储介质。


背景技术:

2.在游戏开发中,常常需要实现非常多的粒子效果,第一类粒子效果是颜色面片的堆砌,而第二类粒子效果需要利用程序逻辑配搭实现才能达到理想效果(比如粒子之间的自碰撞,比如粒子根据彼此间的距离关系生成不同的拉扯力等等)。
3.目前,现有的技术方案为:使用ue4粒子系统实现粒子效果。以ue4官方内容示例项目为例,可以实现粒子点和线之间的连接做出星线丛(也称作点线从、plexus,一种由点和线构成的效果)的效果。其中,现有ue4官方内容示例项目中的星线丛,是根据3d邻近网格neighborgrid3d(用于邻近粒子遍历)来实现的,其实现方法为:在粒子系统生成的时候,生成一个neighborgrid3d,把粒子系统空间划分成若干等份,然后在渲染粒子的每一帧期间,遍历所有粒子,根据当前粒子所在neighborgrid3d中的区域,寻找此区域中的所有粒子作为当前粒子的邻近粒子,计算两个粒子彼此之间的距离,生成连线。
4.但是,现有ue4官方内容示例项目中的星线丛的效果实现中星星粒子之间的线会“跳变”出现/消失,导致实现的粒子效果较差。


技术实现要素:

5.本发明实施例提供一种粒子效果的实现方法、装置、设备及存储介质,以克服现有技术中实现的粒子效果较差的问题。
6.第一方面,本发明实施例提供一种粒子效果的实现方法,包括:
7.获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式;
8.获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式;其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确定的;
9.根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。
10.可选的,所述第一发射器的发射模式为每秒生成n个星粒子以及每个星粒子生命周期为t;所述第二发射器的发射模式为一次性发射全部线粒子且每个线粒子无生命周期;所述方法还包括:
11.根据所述每秒生成星粒子的数量n以及每个星粒子的生命周期t,计算得到每两个星粒子之间生成一条线的线数量;
12.将所述线数量作为第二发射器一次性发射全部线粒子的数量。
13.可选的,所述星粒子的粒子属性包括星粒子的标识以及所述星粒子的标识对应的星粒子的位置信息、星粒子的大小、星粒子的颜色值;所述线粒子的粒子属性包括线粒子的
标识以及所述线粒子的标识对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值;
14.所述获取第二发射器发射的各个线粒子的粒子属性以及用于呈现各个线粒子逐渐出现或消失效果的约束条件,包括:
15.获取当前运行的线粒子的标识,并将当前运行的线粒子作为第二发射器发射的任一线粒子;
16.针对任一所述线粒子,根据所述线粒子的标识,确定所述线粒子连接的两个目标星粒子的标识,并根据所述两个目标星粒子的标识,获取所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值;
17.根据所述两个目标星粒子之间的距离以及预设距离阈值,确定所述线粒子对应的所述约束条件;
18.根据所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值,确定所述线粒子对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值。
19.可选的,所述根据所述两个目标星粒子之间的距离以及预设距离阈值,确定所述线粒子对应的所述约束条件,包括:
20.根据所述两个目标星粒子之间的距离与预设距离阈值,通过样条线插值函数,得到所述线粒子逐渐出现或消失的距离范围;
21.将所述距离范围作为所述约束条件。
22.可选的,所述根据所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值,确定所述线粒子的标识对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值,包括:
23.根据所述两个目标星粒子的位置信息,确定所述线粒子的位置信息,并将所述线粒子与所述两个目标星粒子对齐;
24.根据所述两个目标星粒子的颜色值,确定所述线粒子的颜色值;
25.根据所述两个目标星粒子之间的距离和所述两个目标星粒子的大小,确定所述线粒子的大小。
26.可选的,所述根据所述两个目标星粒子的位置信息,确定所述线粒子的位置信息,包括:
27.根据所述两个目标星粒子的位置信息,查找所述两个目标粒子之间的中点位置;
28.将所述中点位置作为所述线粒子的位置信息。
29.可选的,所述根据所述两个目标星粒子的颜色值,确定所述线粒子的颜色值,包括:
30.根据所述两个目标星粒子的颜色值,通过插值计算,得到所述线粒子的颜色值;或者,
31.将所述两个目标星粒子的颜色值相乘,得到所述线粒子的颜色值。
32.可选的,所述线粒子的大小包括所述线粒子的长度值和所述线粒子的宽度值;所述根据所述两个目标星粒子之间的距离和所述两个目标星粒子的大小,确定所述线粒子的大小,包括:
33.将所述两个目标星粒子之间的距离作为所述线粒子的长度值;
34.将所述两个目标星粒子的大小的平均值作为所述线粒子的宽度值。
35.可选的,所述根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图,包括:
36.根据所述约束条件,确定所述线粒子逐渐变化的权重;
37.根据所述权重、所述线粒子的颜色值以及所述线粒子的宽度值,确定所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息;
38.根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式,按照所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息,对各个所述星粒子和各个所述线粒子进行渲染,生成粒子效果图。
39.第二方面,本发明实施例提供一种粒子效果的实现装置,包括:
40.第一获取模块,用于获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式;
41.第二获取模块,用于获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式;其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确定的;
42.渲染模块,用于根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。
43.第三方面,本发明实施例提供一种粒子效果的实现设备,包括:至少一个处理器和存储器;
44.所述存储器存储计算机执行指令;
45.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的粒子效果的实现方法。
46.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的粒子效果的实现方法。
47.本发明实施例提供了一种粒子效果的实现方法、装置、设备及存储介质,首先获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式;获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式;其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确定的;然后根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。通过设置两个粒子发射器,第一发射器发射星粒子,第二发射器发射线粒子,分别获取两个粒子发射器发射的粒子的粒子属性、发射模式以及用于呈现各个线粒子逐渐出现或消失效果的约束条件,进而渲染生成粒子效果图,实现了在星线丛粒子特效中,线段可以渐变出现或消失,因此,粒子效果实现较好,并且线段出现或消失(比如断开)的约束条件(比如分隔距离)可以自定义,具有灵活性。
附图说明
48.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
49.图1为本发明实施例提供的场景示意图;
50.图2为本发明实施例提供的粒子效果的实现方法的流程示意图;
51.图3为本发明实施例提供的粒子效果示意图;
52.图4为本发明实施例提供的粒子效果的实现装置的结构示意图;
53.图5为本发明实施例提供的粒子效果的实现设备的硬件结构示意图。
具体实施方式
54.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
56.现有ue4官方内容示例项目中的星线丛,是根据3d邻近网格neighborgrid3d(用于邻近粒子遍历)来实现的,其实现方法为:在粒子系统生成的时候,生成一个neighborgrid3d,把粒子系统空间划分成若干等份,然后在渲染粒子的每一帧期间,遍历所有粒子,根据当前粒子所在neighborgrid3d中的区域,寻找此区域中的所有粒子作为当前粒子的邻近粒子,计算两个粒子彼此之间的距离,生成连线。
57.但是,现有ue4官方内容示例项目中的星线丛的效果实现中星星粒子之间的线会“跳变”出现/消失,导致实现的粒子效果较差。并且,因为neighborgrid3d这个方案就是比较两两粒子之间的距离,根据距离最短来连接两个粒子的,所以无论如何自定义线段间出现/消失(即出现或消失)的距离阈值,也是无法生效的,因此,线段出现/消失的分隔距离无法自定义,具有一定的局限性。
58.此外,星和线无法在粒子系统动态移动的情况下生成。因为neighborgrid3d在粒子系统开始的时候就已经生成了,在后续粒子系统移动的过程中,邻近网格会跟着粒子系统移动,这样会导致有一些已经生成的粒子遗漏在原来出生的那片区域,超出了当前邻近网格所能覆盖的区域,导致有先前生成的粒子无法和后续生成的粒子产生连线。通俗来说,就是线断掉了就没法再连上了,只剩下星,导致实现的粒子效果较差。
59.下面以具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施
例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
60.参见图1所示,图1为本发明实施例提供的场景示意图。粒子效果的实现方法的执行主体可以是计算机设备,比如服务器。首先设置两个粒子发射器,比如第一发射器作为星粒子发射器即生成星线丛中星的部分;第二发射器作为线粒子发射器即生成星线丛中线的部分。即将第一发射器发射的粒子作为生成星线丛中星的部分,视为星粒子;将第二发射器发射的粒子作为生成星线丛中线的部分,视为线粒子。
61.针对星的部分:首先需要设置发射器emitter的属性为gpu粒子即gpu compute sim(开启了gpu粒子才能),以供第二发射器读取粒子属性。其次,设置每秒生成粒子的个数的发射模式(即spawnrate),因为星是不断地发射的,而每秒发射值的数量暂定为ballcount,比如每秒发射n个星粒子。此外,设置粒子是否永不死亡(即particle state

kill particles when lifetime has elapsed)的值为true(即粒子会死亡),因为星是不断生成/消灭的。
62.针对线的部分,首先同样需要设置发射器的属性为gpu compute sim。其次,添加niagara(即ue4粒子系统)粒子属性读取器attributereader(即用于读取星发射器的粒子属性(位置信息,粒子大小等),并将需要读取的目标发射器名称(比如第一发射器的名称)填到对应栏目中。然后,需要设置粒子发射模式为一次性发射所有粒子(即spawn burstinstantaneous)。同时,设置particle state

kill particles when lifetime elapsed,让线粒子永不结束生命周期(除非粒子系统整体生命周期结束)。这样,线粒子的数量即为固定的。
63.具体地,服务器分别获取两个粒子发射器发射的粒子的粒子属性、发射模式以及用于呈现各个线粒子逐渐出现或消失效果的约束条件,进而渲染生成粒子效果图,实现了在星线丛粒子特效中,线段可以渐变出现或消失,因此,粒子效果实现较好,并且线段出现或消失(比如断开)的约束条件(比如分隔距离)可以自定义,具有灵活性,此外,由于约束条件的设置,使得星和线在粒子系统动态移动的情况下,基于星与星之间距离的变化,线段可以渐变出现或消失,实现了较好的粒子效果。
64.如何实现粒子效果的实现,可以参见以下实施例实现:
65.图2为本发明实施例提供的粒子效果的实现方法的流程示意图,如图2所示,粒子效果的实现方法,可以包括:
66.s101:获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式。
67.其中,所述第一发射器的发射模式为每秒生成n个星粒子以及每个星粒子生命周期为t。所述星粒子的粒子属性包括星粒子的标识以及所述星粒子的标识对应的星粒子的位置信息、星粒子的大小、星粒子的颜色值。
68.具体地,第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式可以是自定义的,服务器可以获取第一发射器的配置信息,比如星粒子的位置信息、星粒子的大小、星粒子的颜色值、每秒生成n个星粒子以及每个星粒子生命周期为t等。
69.s102:获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式。
70.其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确
定的。所述线粒子的粒子属性包括线粒子的标识以及所述线粒子的标识对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值。
71.可选地,获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件的方式可以是根据各个所述星粒子的粒子属性确定各个所述线粒子的粒子属性和约束条件:针对每个线粒子,根据所述线粒子的标识,确定所述线粒子连接的两个目标星粒子的标识;根据所述两个目标星粒子的标识对应的星粒子的位置信息、星粒子的大小、星粒子的颜色值,确定所述线粒子的属性以及约束条件。
72.具体地,可以在ue4粒子系统shader编写模块里面实现的线的设置逻辑。首先第二发射器可以通过粒子属性读取器读取目标发射器id,比如目标发射器名称;然后读取到第一发射器发射的各个星粒子的粒子属性,再根据各个星粒子的粒子属性确定约束条件,用以实现线段的逐渐出现或消失。此外,需要设置第二发射器的发射模式,比如,设置第二发射器的发射模式为一次性发射全部线粒子且每个线粒子无生命周期。第二发射器将发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及所述第二发射器的发射模式提供给服务器进行粒子渲染。
73.s103、根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。
74.具体地,基于两个发射器发射的粒子的粒子属性、各自的发射模式以及基于可以让线段逐渐出现或消失的约束条件,实现了在星线丛粒子特效中,线段可以渐变出现/消失,并且可以在粒子系统移动的状态下,旧粒子之间的线段即使超过距离断掉了,仍然可以连接上,同时线段出现/断开的分隔距离可以自定义。不但保证了较好的渲染效果,还具有灵活性。
75.本发明提供的粒子效果的实现方法,首先获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式;获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式;其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确定的;然后根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。通过设置两个粒子发射器,第一发射器发射星粒子,第二发射器发射线粒子,分别获取两个粒子发射器发射的粒子的粒子属性、发射模式以及用于呈现各个线粒子逐渐出现或消失效果的约束条件,进而渲染生成粒子效果图,实现了在星线丛粒子特效中,线段可以渐变出现或消失,因此,粒子效果实现较好,并且线段出现或消失(比如断开)的约束条件(比如分隔距离)可以自定义,具有灵活性。
76.可选的,线粒子的数量可以由第一发射器的发射模式确定,可以通过以下步骤实现:
77.步骤a1、根据所述每秒生成星粒子的数量n以及每个星粒子的生命周期t,计算得到每两个星粒子之间生成一条线的线数量。
78.步骤a2、将所述线数量作为第二发射器一次性发射全部线粒子的数量。
79.具体地,确定线粒子的线数量的过程可以为:第一发射器每秒发射的数量*粒子的生命周期*(第一发射器每秒发射的数量*粒子的生命周期-1)/2。即可以根据当前第一发射
器中存在星的总数量,计算出星与星之间每两个星生成一条线的线数量。
80.其中,第一发射器每秒生成n个星粒子,粒子的生命周期为t,则线粒子的数量为:n*t*(n*t-1)/2,其中,当前第一发射器中存在星的总数量可以表示为n*t。示例性的,假设n=3,假设t=2s,则线粒子的数量为15个。
81.由于星粒子是不断产生的且有生命周期,线粒子无生命周期即线粒子永不死亡,并且,线粒子的数量是与星粒子的数量相关联的。因此,若当前的星粒子生命周期结束时又会有新的相同数量的星粒子产生,故线粒子的数量是固定不变的,可以无限使用线粒子(除非粒子系统整体生命周期结束),只需根据不同的两两星粒子,确定线粒子的属性,无需不断复制线粒子再删除等操作。
82.可选的,如何获取线粒子的粒子属性以及用于呈现各个线粒子逐渐出现或消失效果的约束条件,可以通过以下步骤实现:
83.步骤b1、获取当前运行的线粒子的标识,并将当前运行的线粒子作为第二发射器发射的任一线粒子;
84.步骤b2、针对任一所述线粒子,根据所述线粒子的标识,确定所述线粒子连接的两个目标星粒子的标识,并根据所述两个目标星粒子的标识,获取所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值;
85.步骤b3、根据所述两个目标星粒子之间的距离以及预设距离阈值,确定所述线粒子对应的所述约束条件。
86.步骤b4、根据所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值,确定所述线粒子对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值。
87.其中,线粒子的标识与两两星粒子产生的顺序相关联,示例性,比如星粒子在当前周期内总数量为3,则产生的星粒子的顺序为星粒子1、星粒子2以及星粒子3,则星粒子标识为1和2的对应线粒子的标识为1(即星粒子1和星粒子2对应线粒子1),星粒子标识为1和3的对应线粒子的标识为2(即星粒子1和星粒子3对应线粒子2),星粒子标识为2和3的对应线粒子的标识为3(即星粒子2和星粒子3对应线粒子3)。
88.具体地,针对任一线粒子,基于该线粒子的标识,即可确定该线粒子连接的两个星粒子的标识,在确定该线粒子的粒子属性(比如位置、大小、颜色等)时,可以基于连接的两个星粒子的标识获取两个星粒子的粒子属性(比如位置、大小、颜色等),然后基于约束条件,实现线粒子和星粒子的渲染效果。
89.可选的,对如何确定约束条件进行了详细说明。所述根据所述两个目标星粒子之间的距离以及预设距离阈值,确定所述粒子对应的所述约束条件,可以包括以下步骤:
90.步骤c1、根据所述两个目标星粒子之间的距离与预设距离阈值,通过样条线插值函数,得到所述线粒子逐渐出现或消失的距离范围;
91.步骤c2、将所述距离范围作为所述约束条件。
92.其中,这里的预设距离阈值可以表示为线段(或线)出现/消失距离阈值。
93.在实际应用中,只需要设置每一条线的位置与这条线与出现/消失距离阈值的结果。这部分逻辑可以写在niagara的粒子模板中,其算法部分可以使用着色器语言编写逻辑的niagara module script模板。
94.其中,输入参数可以为:rreader:星发射器的粒子属性读取器,用来读星粒子的id、大小和颜色值等;currentindex:当前运行的线粒子id(其中,并行处理的粒子,根据不同id做不同逻辑);inballcount:用于循环遍历中的粒子个数上限。输出参数可以为:outpos和outpos2:线粒子连接的两个星粒子(即两个目标星粒子)的位置坐标(即位置信息),用于后续设置线的位置;outsizescale1和outsizescale2:线粒子连接的两个星粒子的粒子大小,用于后续设置粒子逐渐出现/消失;outlinearcolor1和outlinearcolor2:线粒子连接的两个星粒子的颜色,用于后续设置粒子颜色。
95.具体地,线发射器(即第二发射器)的参数可以为:attributereader:用于读取星发射器(即第一发射器)的粒子属性(位置信息,粒子大小等);ballcount:用于循环遍历中的粒子个数上限(比如,线粒子的数量);fadedistance:粒子出现/消失的距离阈值(即预设距离阈值);smoothmax:星粒子之间距离大于(距离阈值*百分比)的值的时候,粒子线段(即连接该两个星粒子之间的线段)消失;smoothmin:粒子之间距离小于(距离阈值*百分比)的值的时候,粒子线段亦消失。(当粒子之间距离处于这两个值之间的时候,线段才会出现,并且因为smoothstep(函数,用于数值平缓过渡)函数(即样条线插值函数),这个线段在smoothmax和smoothmin这条界线上会渐渐出现/消失);spritewidth:线的宽度。
96.这里的百分比可以是由粒子之间的实际距离与距离阈值(即预设距离阈值)的差的绝对值与距离阈值作比确定的。其中,约束条件可以为smoothmin和smoothmin之间的距离范围。即根据距离差值/距离阈值作为逐渐出现或消失的百分比,将线粒子的大小中的宽度值乘以百分比,确定变化的宽度值。
97.可选的,根据所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值,确定所述线粒子的标识对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值,可以通过以下步骤实现:
98.步骤d1、根据所述两个目标星粒子的位置信息,确定所述线粒子的位置信息,并将所述线粒子与所述两个目标星粒子对齐。
99.步骤d2、根据所述两个目标星粒子的颜色值,确定所述线粒子的颜色值。
100.步骤d3、根据所述两个目标星粒子之间的距离和所述两个目标星粒子的大小,确定所述线粒子的大小。
101.在实际应用中,每个线粒子都需要遍历,来确定线粒子的粒子属性等信息。通过上述计算可以得知两两星粒子之间的线数量,所以在这个遍历线粒子循环中,只需要根据当前运行的线粒子id(即id值),匹配对应星与星之间构成的第几个循环序号即可。比如,线粒子id为2,则对应第2个循环序号,即对应的两个星粒子的为星粒子1和星粒子3。
102.通过识别breakflag(标记,常用于记录程序循环中的跳出条件)结束当前循环,即用于当线粒子匹配上序号后,立刻跳出当前循环,记录下当前线两段的星粒子。然后根据星发射器的atrributereader读取对应星粒子的位置、大小和颜色即可。
103.可选的,根据所述两个目标星粒子的位置信息,确定所述线粒子的位置信息,可以包括以下步骤:
104.步骤d11、根据所述两个目标星粒子的位置信息,查找所述两个目标粒子之间的中点位置;
105.步骤d12、将所述中点位置作为所述线粒子的位置信息。
106.具体地,根据两粒子的位置,用ue4原生节点找到两个粒子之间的中点,将此位置赋值给线粒子的位置。
107.其中,将线粒子对齐星粒子(就是倾斜线粒子以满足线粒子在两个星粒子之间):对齐其中一端,另一端就自动对齐了。
108.可选的,根据所述两个目标星粒子的颜色值,确定所述线粒子的颜色值,可以包括以下步骤:
109.根据所述两个目标星粒子的颜色值,通过插值计算,得到所述线粒子的颜色值;或者,将所述两个目标星粒子的颜色值相乘,得到所述线粒子的颜色值。
110.具体地,根据两个星粒子的颜色插值或相乘得到颜色值作为线粒子的颜色值。
111.可选的,所述线粒子的大小包括所述线粒子的长度值和所述线粒子的宽度值;所述根据所述两个目标星粒子之间的距离和所述两个目标星粒子的大小,确定所述线粒子的大小,可以包括以下步骤:
112.步骤d31、将所述两个目标星粒子之间的距离作为所述线粒子的长度值;
113.步骤d32、将所述两个目标星粒子的大小的平均值作为所述线粒子的宽度值。
114.具体地,粒子的逐渐出现/消失的约束条件的确定:根据两个星粒子之间的距离与预设距离阈值做smoothstep插值。
115.可选的,根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图,可以包括以下步骤:
116.步骤e1、根据所述约束条件,确定所述线粒子逐渐变化的权重;
117.步骤e2、根据所述权重、所述线粒子的颜色值以及所述线粒子的宽度值,确定所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息;
118.步骤e3、根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式,按照所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息,对各个所述星粒子和各个所述线粒子进行渲染,生成粒子效果图。
119.具体地,结合图3所示,根据距离范围,可以得知百分比即线粒子逐渐变化的权重,然后将权重与线粒子的颜色值以及线粒子的宽度值分别相乘即可得到线粒子的颜色值的变化信息(即逐渐出现/消失时当前对应的颜色值)和线粒子的宽度值的变化信息(即逐渐出现/消失时当前对应的宽度值)。然后基于粒子属性、发射模式以及变化信息,进行粒子渲染,得到粒子效果图,该粒子效果图中的线段不会突然出现/消失。
120.当所述线粒子逐渐出现或消失时,渲染效果为所述线粒子的颜色值对应的颜色逐渐加深或逐渐透明,且所述线粒子的宽度值逐渐变大或逐渐变小。因此,使用niagara粒子系统配合程序逻辑生成星线丛的粒子效果,在星线丛粒子特效中,线段可以渐变出现/消失,并且可以在粒子系统移动的状态下,旧粒子之间的线段即使超过距离断掉了,仍然可以连接上,渲染的粒子效果较好。并且线段出现/断开的分隔距离可以自定义,具有灵活性。
121.基于同样的思路,本说明书实施例还提供了上述方法对应的装置,如图4所示,为本发明实施例提供的粒子效果的实现装置的结构示意图,该粒子效果的实现装置可以包括:
122.第一获取模块401,用于获取第一发射器发射的各个星粒子的粒子属性以及所述第一发射器的发射模式;
123.第二获取模块402,用于获取第二发射器发射的各个线粒子的粒子属性、用于呈现各个线粒子逐渐出现或消失效果的约束条件以及获取所述第二发射器的发射模式;其中,各个所述线粒子的粒子属性和约束条件是由各个所述星粒子的粒子属性确定的;
124.渲染模块403,用于根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式以及所述约束条件,渲染生成粒子效果图。
125.可选的,所述第一发射器的发射模式为每秒生成n个星粒子以及每个星粒子生命周期为t;所述第二发射器的发射模式为一次性发射全部线粒子且每个线粒子无生命周期;该装置还可以包括:处理模块;处理模块用于:
126.根据所述每秒生成星粒子的数量n以及每个星粒子的生命周期t,计算得到每两个星粒子之间生成一条线的线数量;
127.将所述线数量作为第二发射器一次性发射全部线粒子的数量。
128.可选的,所述星粒子的粒子属性包括星粒子的标识以及所述星粒子的标识对应的星粒子的位置信息、星粒子的大小、星粒子的颜色值;所述线粒子的粒子属性包括线粒子的标识以及所述线粒子的标识对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值;第二获取模块,具体用于:
129.获取当前运行的线粒子的标识,并将当前运行的线粒子作为第二发射器发射的任一线粒子;
130.针对任一所述线粒子,根据所述线粒子的标识,确定所述线粒子连接的两个目标星粒子的标识,并根据所述两个目标星粒子的标识,获取所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值;
131.根据所述两个目标星粒子之间的距离以及预设距离阈值,确定所述线粒子对应的所述约束条件;
132.根据所述两个目标星粒子的位置信息、所述两个目标星粒子的大小以及所述两个目标星粒子的颜色值,确定所述线粒子对应的线粒子的位置信息、线粒子的大小、线粒子的颜色值。
133.可选的,第二获取模块,具体用于:
134.根据所述两个目标星粒子之间的距离与预设距离阈值,通过样条线插值函数,得到所述线粒子逐渐出现或消失的距离范围;
135.将所述距离范围作为所述约束条件。
136.可选的,第二获取模块,具体用于:
137.根据所述两个目标星粒子的位置信息,确定所述线粒子的位置信息,并将所述线粒子与所述两个目标星粒子对齐;
138.根据所述两个目标星粒子的颜色值,确定所述线粒子的颜色值;
139.根据所述两个目标星粒子之间的距离和所述两个目标星粒子的大小,确定所述线粒子的大小。
140.可选的,第二获取模块,具体用于:
141.根据所述两个目标星粒子的位置信息,查找所述两个目标粒子之间的中点位置;
142.将所述中点位置作为所述线粒子的位置信息。
143.可选的,第二获取模块,具体用于:
144.根据所述两个目标星粒子的颜色值,通过插值计算,得到所述线粒子的颜色值;或者,
145.将所述两个目标星粒子的颜色值相乘,得到所述线粒子的颜色值。
146.可选的,所述线粒子的大小包括所述线粒子的长度值和所述线粒子的宽度值;第二获取模块,具体用于:将所述两个目标星粒子之间的距离作为所述线粒子的长度值;
147.将所述两个目标星粒子的大小的平均值作为所述线粒子的宽度值。
148.可选的,渲染模块,具体用于:
149.根据所述约束条件,确定所述线粒子逐渐变化的权重;
150.根据所述权重、所述线粒子的颜色值以及所述线粒子的宽度值,确定所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息;
151.根据各个所述星粒子的粒子属性、所述第一发射器的发射模式、各个所述线粒子的粒子属性、所述第二发射器的发射模式,按照所述线粒子的颜色值的变化信息和所述线粒子的宽度值的变化信息,对各个所述星粒子和各个所述线粒子进行渲染,生成粒子效果图。
152.本发明实施例提供的装置,可以实现上述所示的实施例的方法,其实现原理和技术效果类似,此处不再赘述。
153.图5为本发明实施例提供的粒子效果的实现设备的硬件结构示意图。如图5所示,本实施例提供的粒子效果的实现设备包括:至少一个处理器501和存储器502。其中,处理器501、存储器502通过总线503连接。
154.在具体实现过程中,至少一个处理器501执行所述存储器502存储的计算机执行指令,使得至少一个处理器501执行上述方法实施例中的方法。
155.处理器501的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
156.在上述的图5所示的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
157.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。
158.总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component interconnect,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
159.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述方法实施例的粒子效果的实现方法。
160.本发明实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的粒子效果的实现方法。
161.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
162.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
163.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
164.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献