懿百动画魔鬼训练营

收藏146
发布新帖
开启左侧

[教程] Unity2018粒子系统全息讲解,坑深慎入(3)

    [复制链接]
有大鱼 发表于 2018-6-5 19:55:03 | 显示全部楼层 |阅读模式

马上注册,加入CGJOY,让你轻松玩转CGJOY。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
200357v0p9jufzelwj0uuj.jpg

声明!声明!声明!这不会让你对制作想法上有什么提升!没有提升!不会提升!纯粹知识研究,非实用派人士专,强迫癌晚期解药,桌面必备文档。


将从头至尾对Particle System的每个功能都分析解释一遍,每个值的含义和一些背后的知识。当然能力有限,有些地方也没有完全弄明白或者完全理解错了的,希望各位大神指出我会及时更正。

word文档打包下载在第(4)部分放出


unity2018粒子系统全息讲解,坑深慎入(1)
https://www.cgjoy.com/forum.php?mod=viewthread&tid=211517
(出处: CGJOY)
unity2018粒子系统全息讲解,坑深慎入(2)
https://www.cgjoy.com/forum.php?mod=viewthread&tid=211521
(出处: CGJOY)

Unity2018粒子系统全息讲解,坑深慎入(4)
https://www.cgjoy.com/forum.php?mod=viewthread&tid=211802
(出处: CGJOY)




————————————————————————————————————————————————————————————————————————————


生命时间内的速率
Velocity over Lifetime
---------------无垠宇宙。
1.png
Linear线性):粒子朝XYZ轴的方向匀速移动。曲线时间轴是Duration时间
         Space(空间):可设置为是世界空间world或自身空间local
Orbital(轨道):可以使粒子绕着某个轴自行旋转。数值是可以快旋转的速度。观察到,值为1时,粒子绕行一周所需粒子生命大致为6.28s。是pi*2
Offset(偏移):Orbital旋转的过程中在施加一个轴方向的速度。能使粒子不在绕着中心自转,而是形成一个圆环,适合模拟星系。这个速度和上面linear施加其上,效果看是差不多的,但是计算方式是完全不同,这里不做深究,只要注意Orbital所旋转的轴,这个轴方向是无法施力的就行。增加值,可以是圆环范围扩大。值为1时,半径是1m
         Radial(半径):这个值增加整个粒子的运动形成一个螺旋线。值越大,范围越大。默认是0,就是一个圆。还是深究下,这里的Orbital、Offset其实用到的是一个渐开线,而半径是指基圆的半径。
SpeedModifier(速度修正):如果上面的各项值都调好了,忽然想在增加下粒子运动速度时,可以修正性的调节。效果上是和Orbital轴上的值是一样的。
2.png

————————————————————————————————————————————————————————————————————————————
生命时间内限制速度Limit Velocity over Lifetime
----------------爆炸必点项
3.png
Speed(速度):限制后的速度。时间轴是duration时间。
         Dampen(抑制):抑制的含义是在粒子生命期间的速度由初始速度改为当前设置的速度,值越小抑制的越晚。值越大抑制的越早。值0是整个粒子生命时间内没有抑制。1是整个时间内完全抑制。抑制速度不会大于初始速度。
Drag(拖拉):类似于抑制的功能。是另外的一个控制粒子运动速度的功能。类似于一个跟粒子速度反向的一种力。设置的值和初始速度有关,初始速度越大,能拖住粒子所需的力就约大。值和粒子初始速度一样时,达到一个临界值,粒子运动到终点时,速度为0
         Multiply by Size(乘以尺寸):和粒子尺寸关联起来。用Drag这个值乘以粒子的Size值。当粒子大小小于1时,这个值会被缩小,大于1会被加强。
         Multiply by velocity(乘以速率):让他在和速率(包含初始速度)关联起来。用drag乘以速率。就可以实现一个效果:设定一固定的drag值,速度增加时,拖拽的力也跟着增加。
4.png
SeparateAxes(分离轴):当勾选时。出现可设置的xyz轴和空间坐标选择。可设定xyz三轴方向上的抑制后的速度。会更改发射器影响的粒子方向。
5.png
————————————————————————————————————————————————————————————————————————————
继承速率Inherit Velocity
----------粒子甩出去
6.png
继承速度的含义是粒子继承了粒子系统这个物体位移速度。前提是粒子使用的空间坐标是world才行。
Mode(模式):提供了两种initial(初始)current(当前的)
Multiplier(乘值):是速度要乘的数,速度是粒子系统在(世界)空间坐标中的速度,
         initial(初始):计算粒子出生时的粒子系统速度。1就是原始速度,2,就是2倍速度。小数,速度会变慢。
         current(当前的):计算的是实时的粒子系统速度。粒子系统愈快,粒子的运行速度就越快。但值为1的时候,粒子移动速度和粒子系统速度一致,所以视觉上看不出粒子的位移,大于1或小于1才有意义。
7.png

————————————————————————————————————————————————————————————————————————————
生命时间内受到的力Force over Lifetime
------------------加速度移动。
8.png
给粒子施加力,力的含义参考重力,一个物体收到重力影响是一个加速运行的。这里也的力也一样。粒子持续收到力,是加速度移动的。本质上是和Gravity Modifier是一样的,但GravityModifier可以看做是一个外部施加的力。而这个则是内部的力。
给予了xyz三个轴方向的力,可设置自身空间或是世界空间。
Randomize只在两个值随机时有效,含义不太明确。

————————————————————————————————————————————————————————————————————————————
生命时间内的颜色color over Lifetime
略。
————————————————————————————————————————————————————————————————————————————
颜色受到速度影响color by speed
---------------------万年不用
9.png
含义很简单就是粒子速度的快慢会获得不同的颜色影响。首先颜色是个变色才有意义。因为粒子快慢都是一个颜色也看不出来。
如果所示,粒子速度是1的时候是黄色,是5的时候是红色,中间值就是中间颜色。
SpeedRange(速度范围):设定受到颜色影响最小速度和最大速度。
至于粒子速度可以在初始速度的时候给个随机获得不同,也可以用Velocity over LifetimeLimit Velocity over Lifetime Force over Lifetime等功能改变粒子速度。好像是废话。
————————————————————————————————————————————————————————————————————————————

生命时间内的尺寸Size over Lifetime
略。
————————————————————————————————————————————————————————————————————————————

尺寸受到速度影响Size by speed
---------------------万年不用2
10.png
含义和 color over lifetime类似,Size必须是个变化的才有意义,这里是个曲线。
如图当速度为1时,尺寸为最小。当速度是5时,尺寸为最大。
SeparateAxes(分离轴),可以单独设定每个轴方向的尺寸变化。
————————————————————————————————————————————————————————————————————————————
生命时间内的旋转Rotation over Lifetime
略。
————————————————————————————————————————————————————————————————————————————
旋转受到速度影响Rotation by speed
---------------------万年不用3
11.png
含义和以上color over lifetime类似,Angular Velocity(角度速率)必须是个变化的才有意义。
AngularVelocity(角度速率):角度旋转的速度。是转速,容易和角度混淆。
如图当速度为1时,旋转速率为最小。当速度是5时,旋转速率为最大。
SeparateAxes(分离轴),可以单独设定每个轴方向的尺寸变化。
————————————————————————————————————————————————————————————————————————————
外部的力External  Forces
---------------------把粒子吹跑
12.png
值很简单,就一个乘值。
外部力是指粒子系统以外的,施加在空间中的力。比如Unity自带的Wind Zone就是一种力,勾选这里就会让粒子收到风的影响,默认是1就是正常值,要加强影响就增加值。
————————————————————————————————————————————————————————————————————————————
噪波 noise
---------------------花絮乱飞

Noise被翻译或变化成噪波、噪音、杂波、云彩、噪点等五花八门的名字。本质上就是一张黑白波动的可调节的图。利用这张图做遮照从而影响图片通道、力、时间、模型等等你能想到的变化。

首先理解下这个功能的运作原理:是以一张噪波形式的信息作用于粒子。用黑白强弱影响粒子的速率、转速和方向、和尺寸。这张图可以是一个1维的一条线上影响、也可以是个2维一个平面上影响、还可以是个3维、一个立体的体积影响。
13.png
Preview(预览):只是预览噪波信息形成的图像,并不是真的这个用到的这张图,只是便于让你看到数值调整到一个什么程度。这张图其实是平均竖分成三分的,左中右分别代表了xyz轴上的信息。
14.png
这张图是可以在Quality中设置一维、二维、三维、三种级别的噪波图。其中二维和三维从图形上是看不出区别的,因为就是在一个2d界面上的(⊙﹏⊙)b
15.png 1D 16.png 2D 17.png 3D


Strength(影响力):
       从噪波图理解:就是黑白的程度,值越大对比度越强,黑的更黑,白的更白。值是可以超出黑白色溢出的。
       从影响粒子的尺寸理解:黑的会缩小粒子尺寸、白的会放大粒子尺寸。越黑缩的越小、越白放的越大。注意当Separate Axes分开轴时,粒子如果是公告版实质上产生效果的只有x轴。
       1D图时只会在一条线上影响,图上蓝轴方向。2D图时会在一个平面上影响,会在蓝轴和绿轴方向影响。3D图是一个体积,三个轴都会有影响。
18.png 1 19.png 2 20.png 3
       从影响粒子的转速理解:黑的会逆时针旋转、白的会顺时针旋转。越黑逆针转的越快、越顺针转的越快。当粒子是公告板时,轴起作用的只有z轴,z一直朝向摄像机才是公告板。
       从影响粒子的速率理解:白的会朝一个轴的正方向移动、黑的会朝一个轴的反方向移动、越白正方向速度越快、越黑反方向速度越快。
当是1D图时,就是朝三个轴的两个方向移动同时随机快慢发射,三个轴同时发射,就会形成一个随机紊乱的粒子走向了,原理类似于Velocity over Lifetime三个轴给正负随机的效果。当是2D图时就变的有趣了,正常来说只一个平面的值,但是当粒子移动后后会得到一个抑制的力,变成一个减速运动,直至速度变成零,一旦尺寸和转速同时附加了速度的变化,获得了这个抑制力,转速和尺寸也会变化趋于一个中间的初始值。3D图的情况和2D一样。
Separate Axes(分离轴)时,可以单个调节每个轴。
Frequency(频率):
       从噪波图理解:就是缩放整个噪波图。值越大噪波图缩的越小。值小大噪波图放的越大。
       从影响粒子的尺寸理解:和噪波图的情况一样,影响的更加细分了。
       从影响粒子的转速理解:和噪波图的情况一样,影响的更加细分了。
       从影响粒子的速率理解:速率就和其它情况不一样了。首先要理解一个概念:噪波图影响的信息并不是真正影响粒子速度的。而是粒子在多大的空间内位移,strength越强,空间越大,                粒子速度自然移动的越快了。而这里的frequency变大了,是指上是空间被拉长了,类似于粒子系统的scale。而strength相当于发射器的大小。效果上看他和strength调大是差不多的。同时在       2D图以上时,它的抑制的力会随着frequency增加。
Scroll Speed(滚动速度):
       从噪波图理解:就是滚动起来形成一个循环,值大就滚动的越快。
       从影响粒子的尺寸理解:粒子受到的尺寸随着时间会变化。效果上就是一个粒子会变大变小。
       从影响粒子的速率理解:粒子受到的转速方向随着时间会变化。效果上就是一个粒子忽左忽右的转。
       从影响粒子的速率理解:粒子受到的速度和方向随着时间会变化。效果上就是一个粒子。忽然朝一个方向,然后转向反方向。如图假如有粒子2在0s受到了-2的值影响;在1s后手打-1的影            响。那在0s的时候以-2会朝反方向位移,到1s后又以1的速度朝正方向移动。
21.png 0s    22.png 1s
Damping(抑制):个人理解是提供一种抑制力,解决一些过小的影响产生的抖动。
Octaves(八度音阶):奇特的名字其实就是噪波的分层或者叫复杂度。就在在原有的黑白图的变化上在增加一层细微的变化,八度音阶是CDEFGABC八个音级,通常说的上8度下8度就是这个意思,这里只是一个比喻。值是代表分多少次。
       Octaves multiplier(分层乘值):就是和原始图的混合程度。0是没有混合,随值增加颜色越来越深。1是完全和原始图一个程度了。
       Octaves scale(分层尺寸):值1是和原始图一样大。值越越大细节越小。
       整体这个分层的意义不并不大,首先消耗会很大。而直接效果和Frequency增大值的效果很类似,除非在一些非常非常精细的情况下会有区别。所以建议忽略这个功能。
       1D噪波在Octaves123的情况和增加Frequency值的情况
23.png 1 24.png 2 25.png 3   26.png Frequency增加
2D噪波在Octaves123的情况和增加Frequency值的情况。3D2D类似。
27.png 1 28.png 2 29.png 3    30.png Frequency增加
Quality(质量):就是提供了1D的噪波、2D的噪波和3D选择的地方。
Remap(重置图):重新调节噪波图的黑白。类似于曲线的功能。可以从新定义粒子收到的影响。
Position Amount(位置合计):粒子受到到的位移影响、某种层面说就和strength值一样。
rotation Amount(旋转合计):粒子受到到的旋转影响、值是每秒多少度。
Size Amount(尺寸合计):粒子受到到的尺寸的影响。
    这三个值可以设置为0,选择性的让噪波影响粒子。
31.png
————————————————————————————————————————————————————————————————————————————
碰撞collision
---------------------有碰撞就会有结果。
32.png
Type(类型):提供了两种planworld类型。World主要针对场景中有collider组件的物体(包含terrain)会产生碰撞。Plan是指定一个的物体的transform,作为一个面产生碰撞。

Planes(面):指定物体的transform为面。这个物体可以是场景中的也可以是资源中的。主要是用他的变换值。一版是和场景中的物体互动是有意义的,如果只是想得到一个碰撞可以使用空物体,会剩一点。
Visualization(形象):有Grid(网格)和Solid(固体)两种。只是便于查看的显示方式。
ScalePlane(缩放片):就是缩放Visualization这个片,还是为了便于观察。
两个按钮:可以直接在这里对指定的物体反向操作。
Dampen(抑制力):碰撞后,粒子的速度被抑制多少,1是抑制到速度为0,粒子会停留在片上,0是没有抑制。
Bounce(弹力):碰撞后弹起的情况。1跟初始速度一样的速度反弹。0是不反弹,粒子会朝平面方向运动
LifetimeLoss(生命损耗):碰撞后,粒子生命所短的数量。1是缩短到最大。碰撞后粒子生命结束。0是没有损耗。
MinKill Speed(速度小于值消灭粒子):碰撞后的粒子速度小于这个值被摧毁。
MaxKill Speed(速度大于值消灭粒子):碰撞后的粒子速度大于这个值被摧毁。
RadiusScale(半径的尺寸):其实粒子的碰撞是和场景中其他碰撞是一个原理的,每个粒子都有一个圆的碰撞组件。计算碰撞就是计算这个组件和其他物体的碰撞的。这里调节半径尺寸是调的每个粒子碰撞大小。
SendCollision Messages(发送碰撞信息):程序相关,程序会得到相关信息作出处理。
VisualizeBounds(显示界限):就是显示出碰撞框。
33.png
TypeWorld时。
Mode(模式):是2d碰撞组件还是3d碰撞组件。
CollisionQuality(碰撞品质):设定了三种级别。LowMedium使用是静态碰撞。什么是静态碰撞?凡是直接记录在内存中的东西通常都是静态的,记录在内存中的碰撞叫静态碰撞。为什么放到内存中?计算小节约资源不用每次都实例化。但会有个问题,就是不能移动,一旦移动这样的碰撞就会耗时重新计算,直接导致粒子无法产生碰撞。所以根据情况如果粒子系统经常被移动那就使用high。如果总是固定不变的可以使用后两种。这个移动是相对于世界坐标的,就是就算你在父物体中没动,但父物体动了也算。
         Collides With(发射碰撞和..:设置什么层会发生碰撞、什么层不会。方便操作。
Max Collision Shapes(最大碰撞体数量):粒子最多和多少个物体(每个物体1个碰撞组件)产生碰撞。
Enable Dynamic Colliders(启用动态碰撞组件):这个不明白,动态碰撞是个啥玩意儿,提示说:这是让粒子碰撞到会动的物体上?居然打问号,无语.......
CollierForce(碰撞组件的力):程序相关。
         Multiplyby Collision Angle(乘法受碰撞角度影响)
         Multiplyby Collision particle Speed(乘法受碰撞粒子速度影响)
         Multiply byCollision particle Size(乘法受碰撞粒子大小影响)
34.png
————————————————————————————————————————————————————————————————————————————
事件Triggers
---------------------还是一个碰撞。

35.png
设置了Inside(内部)Outside(外部)Enter(进入)Exit(出去)四种状态的Ignore(忽略)、kill(消灭)、callback(回调)三种情况。回调的含义是程序的回调函数。
Colliders(碰撞的物体):应该是个模型才有意义。真正起作用的是物体上面的collider组件。
RadiusScale(半径的尺寸)和Visualize Bounds(显示界限)和碰撞功能里一样。
36.png

————————————————————————————————————————————————————————————————————————————
子发射器 Sub Emitters
37.png
设置了粒子在五种情况下产生子粒子的情况:Birth(出生)、Collision(发射碰撞)Death(死亡)、Trigger(触发时间)。
Inherit(继承):设定了Color(颜色)、Size(尺寸)、Rotation(旋转)、Lifetime(生命)Nothing(没有任何)几种继承其粒子属性的值。

评分

参与人数 5CGJOY券 +73 收起 理由
Q1402534241 + 25 我要当土豪 感谢分享
may10086 + 10 原来你也在打这个,我也打了一份文档,讲课.
muzijun233 + 10 真的非常感谢
拉破车 + 10 厉害了,我的哥!
铁豌豆 + 18 很棒!我要用实际行动赞扬你!

查看全部评分


楼主热帖

hxwloveff发表于 2019-3-26 16:32:56
看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下
orzshui发表于 2019-2-1 14:19:08
看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下
zhpycx397发表于 2018-10-30 16:45:18
看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下


GIF石头发表于 2018-9-4 11:58:03
试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试收拾收拾
ee_lzyong发表于 2018-9-29 17:44:44
很全面,希望作者能帮忙说说旧版本的如何迁移过来。重建太麻烦,我也是初学者,不是很懂,楼主可以讲讲这方面的知识吗
有大鱼发表于 2018-6-5 21:43:06
不知道是不是漏了啥
拉破车发表于 2018-6-5 23:33:21
这个好有用的说啊
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则