懿百动画魔鬼训练营

收藏178
发布新帖
开启左侧

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

    [复制链接]
有大鱼 发表于 2018-6-7 18:57:02 | 显示全部楼层 |阅读模式

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

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

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


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


unity2018粒子系统全息讲解,坑深慎入(1)


(出处: CGJOY)

unity2018粒子系统全息讲解,坑深慎入(2)


(出处: CGJOY)

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


(出处: CGJOY)


————————————————————————————————————————————————————————————————————————————
图片小片动画Texture Sheet Animation

---------------你要的序列图
Mode(模式):提供了Grid(格子)和sprite(雪碧)两种模式。
1.png
Tiles(平铺数):一张图标被切割的数量。x是横轴的数量,y是纵轴数量。
Animation(动画):有两种形式,
         Whole Sheet(全部小片):从左至右、从上至下播放整个图片里的小方框。
         Single Row(单排):只播一横排,因为可能会有很多排。当勾选了Random Row(随机行)时,随机选中一行播放。不够时,有一个Row值供手选使用哪一行。
Frameover Time(时间内的帧数):通常设置曲线是有意义的,设置数值只会显示固定的一帧(并非是帧,而是第几个小图)。注意的是小图片的第一张的序号是0
StartFrame(开始帧):从第几帧开始播放,仍会完整读取序列。
Cycles(循环):正常图片的整个循环是在粒子的生命时间内循环一次。这里可以改变循环几次。
Flip UU跳转:每个小图片在U也就横轴方向会产生左右翻转、1是全部翻转。0是没有翻转、中间值是随机翻转。
FlipVV):每个小图片在V也就纵轴方向会产生上下翻转、1是全部翻转。0是没有翻转、中间值是随机翻转。
EnabledUV channels(激活UV通道):选择要使用模型的UV通道,通常在发射模型时有意义。
2.png

Sprites(雪碧)模式使用一个图片的sprite循环播放。这个sprite应该是一个被切分好的图片,才有意义。其次,将sprite指定到粒子系统后,会替代粒子系统使用的材质球,你看到的图是sprite的序列图。指定方式是一个图片被切成很多个小块,需要将每一个小块都放到一个新建接口中。
3.png


————————————————————————————————————————————————————————————————————————————
灯光Light

---------------粒子产生灯

4.png

Light(灯):设置一盏灯,使粒子出生时同时有实时光照的效果,实质上就一个粒子一盏灯。
Ratio(比率):产生的粒子会有多大比例有灯照,0是一个也没有,1是全部粒子都有。
RandomDistribution(随机分布):当Ratio不是1时,设置产生灯照的粒子的分布情况,随机就是随机分布,勾掉则会根据粒子情况每隔多少秒出现一个灯照。
UseParticle Color(使用粒子颜色):灯照颜色使用粒子的颜色。
SizeAffect Range(尺寸作用与范围):粒子的尺寸会影响灯照的范围。
AlphaAffect Intensity(透明度作用于亮度):粒子的透明度会影响灯照的亮度,调整粒子的生命颜色时就可以实现控制灯照的亮度了。
Rangemultiplier(范围乘值):增大灯照的范围。
IntensityMultiplier亮度乘值):增大灯照的亮度。
Maximum Lights(最大灯数):因为是实时光照。灯的数量可能会根据粒子数量产生非常多,消耗会非常巨大。这里的值控制最多可以有多少个灯照被创建。
5.png

————————————————————————————————————————————————————————————————————————————
拖尾 Trails

---------------流星划过
理解下拖尾的含义,一个物体从A点到B点,跟随物体每隔多长时间(Minimum Vertex Distance)产生一次网格,是串联起来的。这个网格开始消失的时间是(lifetime)多久。其次还有颜色、宽度等信息。
Mode(模式):提供了ParticleRibbon模式。
6.png

Particle(粒子):使用这个模式使粒子产生一个拖尾。
Ratio(比例):粒子会产生拖尾的比例。1是全部粒子都会有拖尾。
Lifetime(生命):拖尾的生命值。就是拖尾开始消失的时间。1是和粒子生命一样长。注意的是,默认Die with particle勾上时,粒子消失后拖尾也会消失,这个消失跟拖尾的Lifetime没有关系,只是被摧毁了。拖尾的生命时间就是开始消失的时间。
Minimum Vertex Distance(最小顶点距离)mesh的两个顶点的距离。也就是细节程度,值越小,效果越好。实质上是产生一次mesh的时间。当然时间越小整个生命里产生的网格越多了。早先版本trail的产生是按每多少帧产生mesh的数量算的,所以会造成一旦卡了,trail就完全没法看了,这里是按时间算的,不用担心掉帧了。
WorldSpace(世界空间):勾上时,这个拖尾会受到空间位移的影响。不勾是,只会相对于自身粒子系统进行拖尾。
Diewith particle跟随粒子消亡):勾上时,粒子消失后,拖尾一起消失。
TextureMode(图片模式)
         Stretch(拉伸):在整个mesh上拉伸整张图的U
         7.png

         Tile(平铺):U不会被拉伸,超出部分是重复平铺。
         8.png

         Distribute Per Segment(每段都分配):和Stretch效果差不多,但计算的切入点不一样,
      9.png
Stretch是先计算出trail的长度,在拉伸图片。这个是先计算又多少个网格,每个网格上应该分配多少图片的信息。理论上应该更精细。
        Repeat Per Segment(每段重复):每一个网格上分配一个图片。
         10.png

Sizeaffects width尺寸影响宽度):勾上时,默认宽度和粒子大小一致。而且宽度也随粒子大小变化了。
Sizeaffects lifetime(尺寸影响寿命):勾上时,生命时间(也就是开始消失的时间)会受到尺寸的影响。当粒子变的巨大和很小时,智能的缩减拖尾时间很有必要。
Inherit particle color(继承粒子颜色):勾上时,拖尾颜色会受到粒子颜色的影响。
Colorover lifetime(生命期内颜色):拖尾生命时间内的颜色情况,是时间层面的,使用Gradient模式可以设置随时间变化颜色,开始是什么色,后面是什么色。跟粒子生命时间内颜色类似。
Colorover trail(拖尾颜色的情况):拖尾自身的颜色变化情况。是空间层面。使用Gradient模式可以设前段是什么色,后段是什么色。注意和Color over lifetime区别。
Widthover trail(拖尾的宽度情况):重要调节,来真正影响拖尾的宽度的值。曲线模式下可调节拖尾的前后宽度,横轴是整体长度,竖轴是宽度。
GenerateLighting Data(生成光照信息):让trail可以收到光照。
11.png

Ribbon(丝带):让产生的粒子链接起来。目前来说功能很匮乏,效果很尴尬。
Ribboncount(丝带数量):就是使用几条丝带来将所有粒子链接起来。1就是只有一条。当丝带数大于场景中的粒子数时,就不在会产生粒子。多说下粒子的事情,每个粒子系统的粒子都是有序号的,假设一个序号为1的粒子2秒后消失,内存上说但他并不是真的消失了,它会从新回到发射器原点,模拟一个新的粒子出生,拥有新的生命和速度大小等。而这里的丝带链接目标是和序号有紧密关系的(坑深不挖)。所以当你看到条带数是粒子数的一半时,是两两链接的。
SplitSub Emitter Ribbons(分离子发射器的丝带):就是如果当期粒子系统是一个子发射器。让每个粒子产生的新的发射器和其他产生的发射器不关联。
12.png

————————————————————————————————————————————————————————————————————————————
自定义数据Custom Data

---------------请关闭

要用到脚本才能起作用
————————————————————————————————————————————————————————————————————————————
渲染器Renderer

---------------最后一步


简单说下unity里面的坐标轴。
回忆下数学。
在纸上一个两个方向的坐标。一个横轴、一个竖轴。横的是x轴、竖的是y轴。
如果这个坐标是3d坐标。还有一个轴,它是从纸上指向你的一个轴。这就是z轴。
将这三个轴放到unity中就是unityxyzUnity就是继承了这样的概念从纸里指向你的轴是z轴。而y轴则朝上的。
Z轴通常也是一个游戏物体的正方向或前进方向。所以一个粒子系统发射的正方向也是z方向,这就是我们用创建一个Cone发射器时需要x轴倒转90°才能冲着天发射,是让Z轴朝上。
13.png     14.png

数学3d坐标和unity坐标。
而类似于max中坐标系统是xy是在地面上,z轴则是向上的。
RenderMode(渲染模式):提供了几种粒子的显示模式。

Billboard(公告板):永远朝向摄像机。粒子其实是一个plane,只是他的z轴(反方向)每时每刻都朝向摄像机而已。
15.png

NormalDirection(法线方向):改变粒子片的法线方向。当粒子受到光照时(关键是shader要支持),将一个片模拟成一个受光照的体积。
16.png

Material(材质):粒子的材质。图片通过shader生成一个材质。
TrailMaterial(拖尾材质):拖尾材质。
Sort Mode(排序模式):给粒子排列先后顺序,它是针对粒子系统自身发出的粒子进行排序。
而且粒子材质球是可排序的才有意义。就是材质要是透明材质才行。         
         None(无):不排序,混乱的。
         ByDistance(依据距离):根据粒子距离摄像机的远近排序。比较常用。
         Oldestin Front(最早在前):谁先出生排列在前,后出生排列早后。平面上可能有用。
         Youngestin Front(最新的在前):谁后出生排列在前、后出生排列在后。
SortingFudge(排序欺骗):作者的意思大概是说这是一个欺骗性的排序,它让粒子假装往前或者往后移动的多少距离。负值是原理镜头、正值是靠近镜头,靠近镜头的肯定会在前面。当然材质球也必须是可排序的材质球才行。例如相加、相乘、透明混合等。
Min particle Size(最小粒子尺寸):简单说小于这个值的粒子都会被放大到这个值这么大。这个值是屏幕大小,值1就是一个平面那么大。做屏幕特效时有用,不必去把粒子设的很大,用这个就能准确设定大小。
17.png

Max particle Size(最大粒子尺寸):这个值同样只屏幕大小。当粒子显示大于这个值时,会被缩小。避免细小的粒子冲向摄像机时变的巨大。
Render Alignment(显示队列):指定粒子朝向方向,也就是z轴朝向。
         View(视野):粒子片z轴朝向你观察的方向。
         World(时间):粒子片z轴朝向世界的z轴。
         Local(自身):粒子片z轴朝向粒子系统自身的z轴。这时就可以旋转它了,就是真实粒子片的状态。
         Facing(面朝):粒子片z轴朝向摄像机位置。和view效果很像,但是却不并不一样。这里朝向时,会去掉透视关系,只是拿z这个面朝向你。Mesh状态下能看的更清楚。
         Velocity(速率):粒子片z轴朝向自身运动的方向。
18.png

Pivot(中心点):设置了三个方向可以调节中心点。在Stretched Billboard会有大用。            
Visualizepivot(可视化中心点):使粒子的中心点显示出来。粒子真正的运行位置,调节pivot时有用。
Masking遮挡):是关于sprite遮挡的功能。简而言之,sprite有个组件可以把图片做成一个遮照放到场景中。处理超出这个遮照范围外就会消失,或者只在范围外显示。通常用于平面类型特效上面。
         No Masking(无遮挡):不会有遮挡。
         VisibleInside Mask(遮照内部可见):只在Sprite Mask内部显示粒子。超出不显示。
         VisibleOutside Mask(遮照外部可见):只在Sprite Mask外部显示粒子。内部不显示。
19.png

CustomVertex Streams(自定义顶点流):程序相关,脚本调用。主要处理顶点色。
CastShadows(投射阴影):可以投射阴影。但材质必须是不透明类型的。
         Off(关)On(开)Two Sided(双面)shadowsOnly(只有阴影。-
ReceiveShadow(接收阴影):公共版模式下意义不大因为是一个片接收到阴影并不舒服,建议mesh模型下使用。
MotionVectors(移动向量):和摄像机的运动向量有关。不太明白意义是什么。可以确定的是和特效制作没关系了。
Sorting Layer(排序层):设置一个层处理前后关系,越早创建的层越靠后,越新创建的层越靠前。
Orderin Layer(层中排序):在这里可以在同一个Sorting Layer层里设置前后关系。值越大越靠前。
要注意这两个功能和Sorting Fudge是有区别的。Sorting Fudge是假设他在场景中的位置,负值是离镜头较远、正值是离镜头较近。近的肯定是会覆盖掉远的,从而调节先后关系。而这里是真正更改渲染顺序的。在unity中整个排序是这样的,先计算shader上面的顺序,然后是Sorting layer的前后,然后是Order in layer大小,最后才是Sorting Fudge的影响。
LightProbes(光探测):
ReflectionProbes(反射探测):
这两项和其拓展出的功能都和灯光探测有关,坑深不挖。特效制作基本不用。

Stretched Billboard(拉伸公告板):公共板会朝一个方向延伸。

打包文档。看官老爷们,看在码字儿辛苦份上,打赏点。

游客,本付费内容需要支付 12张CGJOY券 才能下载支付



评分

参与人数 6CGJOY券 +79 收起 理由
nuox4 + 20 很棒!我要用实际行动赞扬你!
村长. + 12 资源好!打赏以示感谢!
五月鸣蜩 + 10 资源好!打赏以示感谢!
U_姿态 + 7 资源好!打赏以示感谢!
铁豌豆 + 10

查看全部评分


楼主热帖

有大鱼发表于 2018-6-9 16:04:15
lyunpicq 发表于 2018-6-8 18:17
超级棒的帖子。就是12张CG券。泪崩

有券赏点。没券,直接复制粘贴一样的
pricelessboy发表于 2019-2-18 10:53:07
有券赏点。没券,直接复制粘贴一样的有券赏点。没券,直接复制粘贴一样的有券赏点。没券,直接复制粘贴一样的
十指谋生发表于 2019-10-25 18:53:58
“Sorting Fudge是假设他在场景中的位置,负值是离镜头较远、正值是离镜头较近”。感觉楼主这句话说的不对,应该是“负值是离镜头较近、正值是离镜头较远”才对吧,因为调成负值的粒子能覆盖正值的粒子!
轻枕衣袖梦青空发表于 2020-4-3 11:44:07
看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下
名字是不存在的发表于 2019-8-15 20:44:02

看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下看一下
拉破车发表于 2018-6-7 22:06:49
肯定要打,打打打,多打点,这个真心很棒,很有用
铁豌豆发表于 2018-6-8 00:05:03
谢谢楼主分享,这么认真整理的东西,敬佩啊。
10323105wh发表于 2018-6-8 09:31:41
感谢楼主分享
┄‘风の彼岸发表于 2018-6-8 13:40:38
辛苦了 辛苦了
灰白发表于 2018-6-8 14:58:03
强迫症晚期~
゛Nicotine__。发表于 2018-6-8 17:48:10

感谢楼主分享
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则