UDN
Search public documentation:

ParticleExamplesCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 粒子 & 特效 > 粒子系统 > 粒子示例
UE3 主页 > FX 美术 > 粒子示例

粒子示例


概述


这个页面是在 UnrealEd 中使用材质和粒子编辑器来实现不同类型的粒子特效的快速参考文档。要想获得全面的参考,请查看粒子及发射器参考指南页面;要获得使用粒子进行工作的信息,请查看Cascade 用户指南页面。

Unlit Particles(不带光照的粒子)


实例 UnlitOpaqueExample 示范了如何使用一个不带光照的粒子的材质(Mat_UnlitParticleExample_Opaque)来创建一个粒子系统。

UnlitAdditiveExample 是一个在粒子系统中使用叠加混合材质(Mat_UnlitParticleExample_Additive)的例子。注意到这将正确地渲染大量的和其本身及场景混合的粒子是很重要的。

UnlitTranslucentExample 是使用一个半透明材质(Mat_UnlitParticleExample_Translucent)和粒子来创建一个 alpha 混合粒子的例子。这些粒子之间及其和场景之间可以进行正确地渲染。 对于排序在同一个粒子系统中的不同发射器间的粒子,发射器的顺序决定了粒子排列的顺序。

实例 UnlitMaskedExample 示范了和场景混合的不透明蒙板粒子。 和无光照版本类似,材质 (Mat_UnlitParticleExample_Masked) 在 OpacityMask 通道中使用一个材质。

Vertex Color(顶点颜色)


在 Cascade 中改变粒子颜色的一个关键便是应用到粒子的材质。 使用 VertexColor(顶点颜色)模块,用户可以通过使用 Cascade 中的颜色模块(初始颜色、随生命周期改变颜色、随生命周期缩放颜色)传递值到材质中来修改材质的属性。

关于改变粒子颜色的更多信息,我们将会查看 Mat_UnlitParticleExample_VertexColor 和 UnlitVertexColor。

在材质中,我们看到漫反射贴图会和VertexColor(顶点颜色)模块的 RGB 值相乘。 当外加上 Cacade 中的颜色模块时,它将会使用分配的颜色来调制贴图的颜色,从而给出了在 UnlitVertexColor 的结果。 在粒子系统中添加一个 ColorOverLife(随生命周期改变颜色)模块,我们便可以基于曲线上的时间轴来定义我们希望粒子继承的颜色值。 任何模块名称中包含 'OverLife' 字样的模块 都是一个相对生命周期模块,意味着时间值 0-1 对应着粒子生命周期的比例,0时粒子刚刚产生,1时粒子死亡。 所以设置颜色曲线在时间为 0 时粒子以黑色开始发射,在时间为 0.2 是粒子颜色渐渐地变为白色,保持那个颜色值到时间为 0.8 时,然后开始渐渐地变为黑色,在时间为 1 时为彻底黑色。这个设置将会让我们看到一个这样的粒子系统,前 20% 的生命周期中颜色淡入,在接下来的 60% 的生命周期中颜色为全色,最后的 20% 的声明周期中颜色开始淡出。

VertexColor(顶点颜色)的一个高级应用是使用 VertexColor(顶点颜色)模块的 Alpha 通道来影响该材质的另一个值来完成颜色的改变。查看 Mat_UnlitParticleExample_VertexColor_OpacityAlpha 和它的粒子系统 UnlitVertexColor_Alpha,我们会看到 VertexColor(顶点颜色)模块的 alpha 通道 和漫反射贴图的 alpha 通道相乘,然后被连接到材质的 Opacity(不透明)通道。 这意味着通过改变 ColorOverLife 模块的 AlphaOverLife 部分的分布,我们便可以控制粒子在它整个生命周期中的不透明性。

另一个中可替换的方法是,我们可以使用 VertexColor(顶点颜色模块)的 alpha 通道来调制材质系统中的其它值。 比如,在 UnlitVertexColor_AlphaEmissive 及它的材质 Mat_UnlitParticleExample_VertexColor_EmissiveAlpha 中,VertexColor(顶点颜色)的 alpha 通道和一个很大的值相乘,在这里是一个常量值 200,然后再次同漫反射 RGB 颜色和 VertexColor(顶点颜色)的 RGB 颜色的积相乘。 这将可以通过使用 AlphaOverLife 来控制自发光的强度。

Sub UV(子UV)


在材质中使用 ParticleSubUV 模块使您可以通过在粒子发射器中使用子 UV 设置来在一个粒子的单个图像中的多个 'frames(帧)' 之间进行混合或切换。 在实例 SpriteSubUVExample 中应用到粒子发射器的 Mat_ParticleSubUVExample 材质示范了这一功能。 一旦创建了材质,把它应用到发射器并设置发射器的 InterpolationMode(在基础发射器的属性中)及水平方向及垂直方向上子图像的数量,这样我们便可以使用 SubImage Index(子图像索引)模块来决定在这些子图像之间的混合了。 在曲线编辑器中添加一个 SubImage Index(子图像索引)并改变它为 ConstantCurve(常量曲线),这样我们便可以控制随着时间变化所使用的子图像了。 当值从 0 开始,最后一张图像的编号将总是 -1,因此实例曲线将会从 0 到 3。

请参阅 UDN 网站上的粒子子 UV 教程页面了解更多详细信息。

Event Generator(事件产生器)


当预期的特效是在关卡中下雨时,您也可以获得雨落在网格物体 及材质包括人物上产生的飞溅效果。

在人物(Character) Pawns上的飞溅效果可以通过在模型的上方放置一个粒子系统并把它连接到 Pawn 来实现,这样飞溅的特效便可以跟着人物移动了。在例子系统中有两个发射器。第一个发射器从粒子系统发射非常微小的粒子落向网格物体。它们运动的很快并且生命周期很短。这些粒子启用了碰撞并设置当粒子探测到碰撞时 "kill(销毁)" 粒子。第一个发射器也将一个叫事件产生器的模块(在 Event(事件)的子菜单下)设置为 collision(碰撞) 并且给它设置了一个唯一的名称,这样每次这个发射器的粒子中其中的一个和其它的东西发生碰撞时,它都会产生一个事件。

粒子系统中的第二个发射器是个小的水花飞溅。这可以是一个平面米粒子或者小的网格物体。在这个粒子系统内部是一个 Event Receiver Spawn(事件接受者产生)模块(也在 Cascade 的事件子菜单下),它将会监听 Event Generator(事件产生器模块),无论何时当检测到碰撞事件时它将被告知在那个碰撞发生的位置产生一个粒子。

最终的效果是一连串的单独的可见粒子和网格物体发生碰撞,在碰撞点上产生一个小的飞溅。

动画轨迹


动画轨迹可以显示使用直接从其自身中取样得到数据的动画后面的轨迹或痕迹。通过对用户设置的帧速率进行采样,它们可以提供一个与帧速率无关的方法生成诸如武器轨迹这样的特效。

请参阅 UDN 网站上的动画轨迹页面了解更多详细信息。