Niagara 和 Houdini Niagara 贴图包含粒子系统的数个视觉效果和范例,展示Niagara粒子系统的部分功能。
此类贴图展示如何创建移动粒子、发生碰撞并生成其他粒子的粒子,以及如何对关卡中的网格体采样等。
Niagara贴图
Niagara 贴图展示基础、中级和高级的粒子系统集。
在内容浏览器的 Maps 文件夹访问内容范例项目中的此贴图。

范例 | 展示内容 |
---|---|
简单粒子系统 | |
1.1 简单Sprite发射器(Simple Sprite Emitter) | 使用Niagara粒子系统的简单sprite发射器范例。 |
1.2 简单网格体发射器(Simple Mesh Emitter) | 使用Niagara粒子系统的简单网格体发射器范例。 |
1.3 简单GPU发射器(Simple GPU Emitter) | 使用Niagara粒子系统的简单GPU发射器范例。 |
1.4 Sprite朝向(Sprite Facing) | Sprite朝向粒子系统的范例。其展示可朝向摄像机或可朝向任意向量的sprite。在本范例中,向量位于系统中心与粒子自身之间。该向量之后基于发射器的年龄创建旋转sprite。 |
1.5 按值混合属性(Blend Attribute by Value) | 本范例使用动态值来控制粒子与发射器原点之间的距离,以混合各个属性(如颜色、比例、旋转和其他参数)。 |
中级粒子系统 | |
2.1 静态光束(Static Beams) | 本范例展示如何使用静态光束,此类光束通过静态起点和终点生成,而非逐帧动态更新。与级联不同,各光束分段均为模拟粒子,将深受力或其他效果的影响。 |
2.2 动态光束(Dynamic Beams) | 本范例展示具有终点和切线的动态光束,将每帧重新计算此类终点和切线。使用 运行(Play) 或 模拟(Simulate) 查看终点和切线的实时更新。 |
2.3 多个渲染器(Multiple Renderers) | 本范例展示模拟时可用于驱动多个渲染器的Niagara粒子系统。此范例展示驱动sprite、网格体和条带渲染器的单点模拟。 |
2.4 位置事件(Location Events) | 本范例展示使用先导粒子发射器的位置事件,该发射器将其位置作为事件发送到该粒子系统中的其他两个发射器,使之生成该位置。解算粒子的位置和速度后,在帧的最后发送事件。 |
2.5 表达式(Expressions) | 表达式是HLSL的小片段,可用于在堆栈中,无需新建模块的情况下,排队创建微观行为。本范例未使用模块来影响模拟,仅使用和表达式及动态输入结合的变量直接设置。 |
2.6 碰撞(Collision) | 本范例展示如何处理要发送到不同发射器的碰撞事件,其将生成粒子以响应该碰撞事件。通过CPU上的线条追踪或者GPU上的深度缓冲/距离场检查完成碰撞查询。将保存查询结果,并供后续模块使用。 |
高级粒子系统 | |
3.1 静态网格体采样(Static Mesh Sampling) | 本范例使用放置在场景中的静态网格体,可由粒子系统进行采样。此设置包括对其属性采样,例如法线、UV、顶点颜色、样本位置和Actor速度。 |
3.2 渲染器覆盖(Renderer Overrides) | 在本范例中,渲染器使用的各默认属性都可被模拟中的任意数据覆盖。此处使用的sprite渲染器被给予新位置,作为箭头网格体位置处的偏移量,并由不同于箭头网格体的颜色属性驱动。两者都是相同单个射器的一部分。 |
3.3 骨架网格体复制(Skeletal Mesh Reproduction) | 本范例使用单个粒子系统,使用逐粒子累积多个影响的方法进行基于sprite的网格体复制。事件系统和后期解算混合允许其在不同行为模式之间插值。 |
3.4 纹理采样(Texture Sampling) | 本范例演示通过将纹理映射到场景中粒子的网格,在GPU粒子系统中引用纹理的方式。 |
Houdini Niagara贴图
Houdini Niagara 贴图演示使用Houdini应用程序创建复杂的过程属性(可用于Niagara粒子系统)的数个范例。
在内容浏览器的 Maps 文件夹访问内容范例项目中的此贴图。

范例 | 展示内容 |
---|---|
1.Houdini数组中生成(Spawn From Houdini Array) | 本范例展示在Houdini数组生成粒子所需的最少模块集。在发射器更新部分中,在阵列播放中生成粒子(Spawn Particles From Array Playback) 控制逐tick生成的粒子数量。在粒子生成部分中,处理生成的Houdini粒子(Handle Spawned Houdini Particles) 将在Houdini命名空间中设置粒子和其他Houdini属性的初始位置。 |
2.按类型生成(Spawn by Type) | 类似于 1.Houdini数组中生成(Spawn From Houdini Array) 范例,粒子生成部分中模块的变更将处理 按类型生成的Houdini粒子(Spawned Houdini Particles by Type) 以杀死与类型属性不匹配的粒子。 |
3.简单事件(Simple Event) | 本范例类似于 1.Houdini数组中生成(Spawn From Houdini Array) 范例,但有两处较大的差异:1,已添加名为 User.MasterCSV 的系统参数,使多个模块能够共享同一CSV资源,并且2,共有两个发射器,而非一个。首个发射器读取Houdini数组数据,并发送位置事件。第二个发射器读取位置事件。此为根据Houdini数组提供的数据所生成更复杂粒子系统的基础。 |
4.创建自定义事件(Creating Custom Events) | 本范例基于上一范例 3.简单事件(Simple Event) 构建,用于在Houdini数组中访问自定义数据。需创建自定义事件和事件接收器模块。它还需要结构体以保存事件发送和接收的数据。 |
5.内插数组(Interpolate Array) | 本范例基于 3.简单事件(Simple Event) 和 4.创建自定义事件(Creating Custom Events) 构建。若Houdini数组同时拥有 ID 和 生命(Life) 属性,系统可通过粒子更新部分中名为 UpdatePosFromHoudiniArray 的额外模块内插位置。自定义事件用于将CSV索引(ID)传递到条带ID,以便第二个发射器在本演示中创建各字母的条带。 |