ssRender引擎有关3D粒子的归纳总结

引言

3D是ssRender引擎1.5版本所新增的特性,本篇文章是有关于ssRender引擎中有关于粒子特效方面的详解,本文中会伴随相应的画面效果对粒子效果进行演示,文末将会有实例应用,可以帮助大家快速的掌握ssRender引擎中粒子的使用方法。如果对ssRender引擎2D方面感兴趣,可以参考(SSRenderEdit使用理解与学习总结)如果对ssRender引擎3D的其他方面感兴趣,可以参考(ssRender引擎有关3D功能的归纳总结

一:3D粒子节点Particle详解

       Particle节点是粒子系统,用于模拟粒子效果,如火花、烟雾、水滴等。粒子系统可以创建出大量的小型对象,这些对象可以随着时间变化而动态地移动、旋转、变形等,从而形成各种特效。使用Particle节点可以为3D场景模拟出更多的动态效果,例如雨雪天气、沙尘暴环境、夜晚星空效果等真实又自然的场景。

首先,我们先要在3D场景Scene下创建Particle节点。(如下图)其中,自动生成的Camera节点和Light节点在上一篇文章中有过详解,这里不再赘述。

点击Preview预览窗口中的小摄像头按钮,切换为3D场景预览,(如下图)其中红色坐标轴代表X轴,绿色坐标轴代表Y轴,蓝色坐标轴代表Z轴。

如下图,Particle节点的普通属性与其他节点一致,在上篇文章有过详解,本篇文章不再赘述。

接下来,好戏开场!

(1)材质

点击Source导入Particle粒子节点的纹理(如左下图导入的粒子纹理可以控制纹理显示效果,同样也会添加纹理对应的颜色),但是我们也可以在Color中更改Source纹理的颜色显示效果(如右下图)

(2)P_MaxNum属性

int型参数,取值范围[0,10000],表示此3D场景中同时存在的最大粒子数量

(如下图)此时P_MaxNum属性值为100,即同一时刻所允许的最大粒子存在数量为100

(如下图)此时是在相同发射速率下,将P_MaxNum属性值调整为10000时的效果

(3)P_Rate属性

int型参数,取值范围[0,10000],表示此3D场景中每一次发射的粒子的数量

(如下图)此时P_Rate属性值为1,即每一次发射的粒子的数量为1

(如下图)此时是在其余参数不变的情况下,将P_Rate属性值调整为20时的效果

(4)P_Life属性

int型参数,取值范围[0,10000],表示此3D场景中所有粒子的生命周期,(也可以说是粒子的存在范围,或者粒子的消失范围)

(如下图)此时P_Life属性值为10000,所有粒子将会在最大范围(10000)外消失

(如下图)此时是在其余参数不变的情况下,将P_Life属性值调整为2000时(粒子在范围>2000时消失)的效果

(5)P_LifeOffset属性

int型参数,取值范围[0,10000],表示此3D场景中所有粒子的生命周期偏移量,与上一属性共同构成粒子的生命周期

例如:生命周期为10000,生命周期偏移量为1000,则粒子的生命周期将会在[9000,11000]范围之间波动

(如下图)此时是在其余参数不变的情况下,P_Life设置为10000,、将P_LifeOffset属性值调整为10000时(粒子消失的范围在[0,20000])的效果

(如下图)此时是在其余参数不变的情况下,P_Life设置为10000,、将P_LifeOffset属性值调整为2000时(粒子消失的范围在[8000,12000])的效果,显然与上图的最大范围有着明显的区别

(6)有关Size的属性

①P_Size:Float型参数,取值范围[0.0,1000.0],表示粒子生成时的起始大小

②P_SizeEnd:Float型参数,取值范围[0.0,1000.0],表示粒子生命周期结束(消失时)的大小

③P_SizeOffset:Float型参数,取值范围[0.0,1000.0],表示粒子大小的偏移量

(如下图)此时是P_Size设为1.0、P_SizeEnd设为0.4、P_SizeOffset设为0.3时的效果

(7)与发射角度相关的属性

①P_AngleXY :Float型参数,取值范围[0.0,1000.0],粒子在XY平面的发射角度

②P_AngleXYOffset :Float型参数,取值范围[0.0,1000.0],粒子在XY平面的发射角度的偏移量

③P_AngleXZ :Float型参数,取值范围[0.0,1000.0],粒子在XZ平面的发射角度

④P_AngleXZOffset:Float型参数,取值范围[0.0,1000.0],粒子在XZ平面的发射角度的偏移量

例如下图,当P_AngleXY = 0,P_AngleXYOffset =0时

当P_AngleXY = 90,P_AngleXYOffset =45时

属性P_AngleXY 和P_AngleXYOffset 初始值均为360,P_AngleXZ、P_AngleXZOffset初始值均为0,就导致了如下效果,粒子只在XY平面发射:

此时,我们将P_AngleXZ、P_AngleXZOffset均设置为360,就能得到一个从空间坐标原点(0,0,0)向四周各个方向均匀发射粒子的效果了(如下图):

(8)与发射速度相关的属性

①P_Speed :Float型参数,取值范围[0.0,1000.0],表示粒子的运动速度

②P_SpeedOffset:Float型参数,取值范围[0.0,1000.0],表示粒子运动速度的偏移量

经过上面对偏移量的讲解,相信Speed和SpeedOffset应该很好理解,这里就不再放置例子了,我们接着往下来

(9)P_Scope属性

P_Scope属性:Float型参数,取值范围[0.0,1000.0],表示粒子在X Y Z 方向的显示区域。

这里就要重新讲一下Particle节点的一般属性:S_X、S_Y、S_Z,正常其他3D节点的这三个属性值代表的是该节点在某一坐标轴上的Size大小,但是Particle的初始大小和消失时大小,以及大小的偏移量均有其他属性控制!S_X、S_Y、S_Z是不是没什么作用了?

漏漏漏!

这下,你就见到了:将P_Scope配合S_X,S_Y,S_Z使用。

例如:S_X=1时,无事发生,正常显示!S_X=-1时,假设P_Scope的X值是10.0,就表示粒子在X方向10.0以内的是随机产生的,不再由(0,0,0)产出。

(如下图)S_X、S_Y、S_Z均为-1,P_Scope的X、Y、Z属性均为10

(10)与运动方向有关的属性

①P_PointDirect :Float型参数,X、Y、Z取值范围[0.0,100.0],表示粒子朝某一坐标点/轴的运动方向

②P_PointDirectOffset:Float型参数,X、Y、Z取值范围[0.0,100.0],粒子朝某一坐标点/轴的运动方向的偏移量

例如:将P_PointDirect的Y设置为-7,则所有粒子都会朝着Y=-7这一坐标轴进行运动,而不是像上述例子一样四处飘散;P_PointDirectOffset的Y设置为-2,则粒子则会像Y=-5与Y=-9两个坐标轴区间运动(如下图)

OK啦,Particle3D粒子节点的基本属性值讲完啦!接下来,我们将进入实际案例中,通过设置不同属性值,来更好的模拟出各种真实的动态效果!

二:3D粒子节点应用

(一)雨雪霏霏

(1)导入一张好看的BG

在相同Layer图层中新建一个Item节点(item节点的详解在引言中的第一个链接),将一张好看的BG导入到Item的Source属性中:

(2)模拟下雨效果

①雨滴要按照同一个角度掉落,不会像雪花一样漫天飞舞,所以我们在导入雨滴纹理之后,要设置P_AngleXY为220,且无偏移量(有偏移量就会像花洒一样的喷射效果,如果想要实现花洒喷水的效果可以设置偏移量)

②雨滴的空气阻力远小于雪花,所以下降的速度要快,故设置P_Speed为100

③雨滴要在一定X轴范围内随机产生,不能光在(0,0,0)点产生,所以设置S_X为-1,P_Scope的X为50,实现了雨滴横向产生

④雨滴向斜下方掉落y已实现,但是雨滴产生位置是在纵轴Y=0处,所以我们要把Particle粒子节点向上移动,设置P_Y为 10,最后实现下雨效果

(3)模拟下雪效果    

1+1都回做了,1+2也一样咯

只不过要注意雪花飘动方向不能由运动角度P_AngleXY控制,雪花会满天飞,所以通过P_PointDirect的纵轴Y值来实现,设为-10,Y偏移量设为-3即可

下雪效果如图:

(4)总效果展示

本效果可以细化,由于时间原因只是粗实现,效果可能不算完美,有强迫症可以试着自己手动调试实现一下!嘿嘿。

(二)星汉灿烂

同“雨雪霏霏”效果步骤一致,导入背景图片与星星的纹理

根据心中所想的效果设置属性值:

繁星向左下角移动,所以设置移动方向P_AngleXY为330;

繁星需要在3D空间内随机出现,设置S_X、S_Y、S_Z均为-1,P_Scope的X、Y、Z值分别为10(无需强求比例,正好能够覆盖到背景上即可)

繁星的大小可以通过Size部分的详解来控制,设置size的偏移量,就能实现不同大小的繁星。或者通过ssRender引擎1.5版本的3D特性,Camera视角的近大远小,设置适合的Camera坐标,依据3D空间内随机产生的粒子与Camera的距离实现繁星近大远小的效果!

思考:

部分繁星需要移动,部分繁星需要闪烁,该如何实现?

思考一下,

别着急看答案,

说不定,

你的方案比我的更好哦!

解答①:

笨方法,设置两个Particle粒子节点不就行了?反正是个小例子,也不用考虑性能方面的因素。第一个Particle节点与第二个Particle节点空间上重合:一个生命周期设为最大值10000,更改其他属性,实现移动的繁星效果;另一个Particle生命周期设置为100,粒子刚出现,就因为生命周期结束而被释放掉,就实现了繁星闪烁的功能!

简单,又粗暴,还好理解,也好想。Ctrl+c、Ctrl+v复制Particle节点,改改属性就能实现,但是我觉得,应该还有更好地方法来实现!

解答②:

上面我们已经实现随机位置产生繁星,那我们是不是可以通过:允许最大粒子数MaxNum和粒子产生速率Rate进行联动,产生速率快一些,最大粒子数小一些,利用新产生粒子之后,超过最大粒子数后产生的新粒子将会立马被销毁!

所以,随机位置的繁星粒子,刚产生就被消灭,实现了闪烁效果

而之前产生的粒子,在生命周期结束后才被销毁,实现了移动效果!

怎么样,你的想法有没有跟我的不谋而合呢?

解答③:

从另一个角度切入,粒子是拥有生命周期这一属性的,超过生命周期的粒子也会被自动销毁!

那么,最佳办法来了!不同于解答①,我们只需要更改一个属性值即可!在方便操作的同时,又减少了接近一半的系统开支(虽然原本开支就不算大):设置P_Life = P_LifeOffset = 10000,偏移量与生命周期相等,就会同时产生生命周期大和小的不同粒子,长生命周期的粒子移动,短生命周期的粒子会出现闪烁效果。

最终的实现效果如下!

感兴趣的铁铁,可以自行实现一下其他粒子效果哦,封面的效果也可以完美复刻(需要用到序列帧和粒子节点搭配使用哦)!

小结:本篇文章是本人在使用ssRenderEdit工具中的Scene 3D相关Particle粒子节点内容时的学习理解,并且实现了两个简单的小例子,接下来本人会继续分享对ssRender引擎其他的学习理解,并且会继续深度探索ssRenderEdit工具其他实用功能!若是感兴趣,还请持续关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值