unity进阶 -- 2 -- Particle System

· · 个人记录

unity进阶 -- 2 -- Particle System

1.Particle System的一些扩展参数

(1)Renderer

Render Mode

Stretched BillBoard:粒子的转向由移动方向决定(此时会忽略start rotation和rotation over lifetime),并且长度会随着速度等变化而变化。

Horizontal BillBoard和Vertical BillBoard:粒子是水平/垂直的。

Mesh:比如Mesh设成Cube,粒子会变成一个正方体,每个面上都有原来的粒子。这时要将Render Alignment设成World

Render Alignment

View:不管摄像机在什么位置,粒子总是朝向摄像机。
World:粒子的朝向不随摄像机位置而变化。

Max Particle Size

一个粒子至多占据多大的屏幕。如设成0.5表示一个粒子最多占据半个屏幕。

(2)Velocity Over Lifetime

该模块会给粒子在一些方向上添加速度。

Linear X, Y, Z: 每个粒子沿着三个轴的线性运动速度。比如:

改成curve:

Space: 上面配置中X,Y,Z三个轴是哪个坐标系下的,Local或者World。该设置对下面的轨道速度不起作用

Orbital X, Y, Z: 粒子绕某个轴旋转的轨道速度。比如:

Offset X, Y, Z: 粒子所绕旋转轴的偏移量。

Radial: 在粒子旋转的时候增加一个径向的速度,使原来的单个圆轨迹变为螺旋线轨迹。比如Radial设为1:

Speed Modifier: 当上述参数设置完毕后,可以修改该参数在不改变速度方向的情况下增加或者减少粒子速度的量值。

(3)Limit Velocity Over Lifetime

该模块会给粒子设置一个速度限值,如果粒子的速度超过该值,则会被锁定到该限值(不是立即改变,而是通过Dampen参数渐进到该值)。

Separate Axes: 勾选后会按照X,Y,Z三个坐标轴分别设置速度限制。

Speed: 速度限值。一般会使用 Curve 曲线来设定该值模拟烟尘速度从大到小的过程。

Dampen: 抑制系数。这个值越大,从当前速度改变到速度限值的时间就越短。因此值为0的时候表示没有衰减,此时的速度限值是没有意义的。

Drag: 给每个粒子施加于速度方向相反的阻力,用来模拟更加真实的空气阻力。

Multiply by Size: 如果勾选,粒子的尺寸越大,受到的阻力就越大。 Multiply by Velocity: 如果勾选,粒子的速度越大,受到的阻力就越大。

(4)Force over lifetime

该模块会给粒子添加力。比如:

(5)Collision

Scale Plane:对碰撞器的缩放。

Dampen:碰撞器表面的摩擦。若大于0,粒子碰到碰撞器后速度会降低。

Bounce:弹力。若等于0,则粒子只能沿着碰撞器表面滑行。

Lifetime Loss:碰撞后粒子生命周期减少。

Min Kill Speed:粒子碰撞后若速度小于这个速度会被销毁。

(6)Sub Emitters

可以用这个制作粒子特效的连续播放。

(7)Lights

可以用这个制作粒子特效的发光。

(8)Trails

2.制作Textures

比如以下效果:

为了制作这个效果,我们需要以下5个部分的Texture:

I.Smoke

II.Spinning Wind

III.Rings

IV.Sparks

V.Light

下面将讨论如何使用Adobe After Effects进行制作

(1)Adobe After Effects简介

Composition

一个Project可由多个Composition组成。在这里我们只讨论Composition。新建一个Composition:

Duration的最后两个0表示Frames,可以理解为帧数。上面的Frame Rate为29.97,可以理解为帧率。所以Duration为0;00;00;15表示15帧,接近0.5s。这在后面的Animation中会用到。

Layer

创建图层:layer --> New --> Solid...(在这里我们主要用到的都是Solid)

Color一般都是黑色或者白色。在After Effects制作的Textures一般都是白色,由Unity进行上色。

在下面的界面可以设置参数:

其中Opacity表示透明度。

拖动右边的红条,可以改变这个图层的显示时间。

按下F4会有不一样的显示:

Blend Mode & Trikmat

这里的Blend Modes和Unity中的Shader类似。注意,只会和下面的所有图层产生作用,而不会和上面的图层产生作用。

而Trikmat对其上面的图层产生作用。

Luma Matte:根据上面的图层的亮度来对下面的图层的透明度产生影响。使用后上面图层会自动设置为不可见。这看起来和Blend Modes中的Multiply的作用相似,但事实上两者的透明度是不同的(Multiply是全不透明的)。这是一种将黑白信息转化为透明度信息的方法。

Alpha Matte:下面图层的Alpha等于上面图层的Alpha。

Mask

Mask可以理解为裁剪一块区域。使用Mask的方法:

注意,必须选中图层操作!不选中图层,这个功能将变成画一个矩形。

以下是Mask的Properties:

Mask Path:编辑形状
Mask Feather:边缘柔化
Mask Expansion:扩大或缩小Mask的实际大小。这能在不改变Mask Path的情况下改变Mask的整体大小。

矩形旁边的笔(Pen Tool)可以自定义Mask的形状。

注意到上图的Mask 1旁边的Add,这说明Mask也有Blend Mode。比如Intersect表示所有mask的交集。

(2)AE的一些Effect

Fractal Noise

添加方法:Effect --> Noise & Grain --> Fractal Noise。

效果:

Fractal是分形的意思,这个效果非常重要,可以制造各种随机性的效果。

Properties

Fractal Type和Noise Type可以改变Noise的形态。

Contrast表示对比度,调高对比度后的效果:

Brightness表示亮度。经常和Contrast一起调节。

Evolution可以改变Fractal Noise的形态。

Complexity:参数越小,画面越粗糙,参数越大,画面越细致。

PS:另一种添加effects的方法是

再将Directional Blur拖动到我们想要施加的图层。

Directional Blur

Directional Blur是一种具有特定方向的模糊,能够制造各种方向的运动幻觉。Direction设置运动模糊方向,而Blur Length用于设置模糊长度。

PS:效果的顺序很重要,因为效果从上到下执行的。

Bulge

添加方法:Effect --> Distort --> Bulge

能够创造类似放大镜的效果。

(3)Smoke的制作

1 添加Effect --> Noise & Grain --> Fractal Noise,将Fractal Type设置成Dynamic,Contrast设置成219左右:

2 通过Transform --> offset Turbulence实现Fractal Noise的左右平移:

3 这时我们找到了想要的部分。用Pen Tool选出中间的那一块:

4 发现边缘过于尖锐,可以使用Mask的Feather属性进行调节:

5 边缘虽然柔和了许多,但非常单调,我们可以添加Effect --> Stylize --> Roughen Edges:

6 再调低Fractal Noise的Brightness,效果不错。

7 通过Ctrl + Alt + S 输出(发送至Render Queue)

8 点击Photoshop,我们不希望输出为psd文件,因此把Format改成Targa Sequence,点击OK,最后点击 Render,就生成了我们想要的tga文件。

(4)Spinning Wind的制作

1 Spinning Wind比较复杂,因此我们创建1024×1024的Composition。

2 创建一个如下形态的Mask,并添加Roughen Edges,调节一下参数:

3 添加effect --> Distort --> Polar Coordinates,选中Rect To Polar。这个效果是把直线型变成圆形的有力工具。

4 调节Mask的形态和Roughen Edges里的Border,变成以下样子:

5 中间的白色太单调了,我们可以用Fractal Noise。添加一个新的图层,添加Fractal Noise和Polar Coordinates:

6 因为原图的左边像素没有跟右边对上,所以上面看起来就像断开了一样。事实上,我们不需要理会,因为我们只要把下面的部分应用到之前的月牙形图案即可。使用之前的Luma Matte:

使用Luma Matte的另一个好处是,输出的图片不再储存黑白颜色,而是透明度Alpha。

7 调整Fractal Noise的Contrast至246左右,Brightness至-51左右,Arc图层的Edge Sharpness至 0.01左右。最终效果:

(5)Rings的制作

1 双击Ellipse Tool,可以直接Mask出一个贴牢边界的圆。

2 使用Mask Expansion调整Mask的实际大小。复制一个相同的Mask,并将Mode设为Subtract,调节Feather:

3 这个圆环很普通,我们希望做一些指向中心的细线,就像前面展示的那样。

添加一个新的图层,背景Black,添加Fractal Noise。为什么背景是黑色的?我们对比一下:

上图左边是黑色背景,右边是白色背景。图片泛黄是拍摄原因。可以看到,在使用Mask Feather时,右边的边缘更亮。这时因为在使用Mask的同时,Effect也同时被Mask了,所以使用Feather后Solid的底色会显示出来。如果右边是红色图层,这个问题会更明显。

言归正传,我们添加了如下图的Fractal Noise:

4 在这个图层上添加Mask:Mask 1和之前相同,Mask 2的Expansion更小,Feather更大。

5 使用Effect --> Distort --> Optics Compensation。这个效果可以模拟摄像机的透视,但还有一种特殊的用法:

6 减小Mask 1的Expansion,把之前的图层的Mode设置为Add:

7 这两个部分感觉不像是一体的。我们添加一个Adjustment Layer:Layer --> new --> Adjustment layer。Adjustment Layer的作用是,所有在Adjustment Layer上添加的效果都会应用到其下面的所有Layers。

在adjustment layer上添加effects --> Blur & Sharpen --> CC Vector Blur,调节参数,就达到了理想的效果。

(6)Sparks的制作

1 使用Directional Blur对Mask进行处理:

2 发现图片太淡了,可以添加Effect --> Color Correction --> Levels进行调整。由于本身是白色,调整RGB没有作用,应该调整Alpha。

3 将最右边的黑色三角形向左拖动。

4 使用Effect --> Blur & Sharpen --> Gaussian Blur(高斯模糊),模糊和柔化图像。

(7)Light的制作

1 创建一个Black Solid,加入Fractal Noise。

2 Mask出下面的一小部分,加入Effect --> Generate --> CC Light Burst 2.5:

光为什么是向下射的?因为光是从上图中间那个点射出的,所以如果我们把这个点移动到图片外面,光就渐渐朝上射,并且发散度越来越低。

3 再增大Ray Length,添加Levels,用Scale改变宽度,即可完成。

(8)其他效果

Effects --> Distort --> Turbulent Displace

当需要添加扭曲动作时,常常需要添加这个效果。

Effect --> Simulation --> CC Particle World

CC Particle World可以在AE里添加粒子特效。

Producer:粒子发射器的位置和大小
Physics:粒子移动的物理特性
Particle:粒子的样式