虚幻引擎学习之路:粒子系统篇(二)

简介:

一、Module 功能

1.1 Required
Required Module是粒子系统Emitter中默认添加且不能删除的Module。它包含了Emitter以及时间、渲染相关的设置,例如:材质、发射器的位置和朝向等,如下图所示:
请输入图片描述
设置不同的粒子系统材质能够渲染出不同颜色以及纹理的粒子。通常粒子系统材质采用的Blend Mode是Translucent。并且在编辑材质时,需要用到Particle Color节点来修改粒子颜色,如下图所示:
请输入图片描述
其中,上图红色框显示了材质设置中Blend Mode的设置,绿色框显示了使用Particle Color节点获取并修改粒子颜色。最终渲染结果如下图所示:
请输入图片描述

1.2 Light
类似于Unity引擎中粒子系统的Lights组件,Unreal 4引擎粒子系统同样支持为粒子系统添加光源来照亮场景,如下图所示:
请输入图片描述
其中,左图红框显示了Unreal 4引擎中Light Module的设置,右图红框显示Unity引擎中Light Module的设置。下图显示了具有光源属性的粒子系统渲染结果图:
请输入图片描述
需要说明的是,在Unreal 4引擎中,Light Module只能用于CPU粒子。GPU粒子暂时还不支持光源的功能。

1.3 Collision
类似于Unity引擎粒子系统中的Collision组件,Unreal 4引擎同样支持粒子的碰撞检测,如下图所示:
请输入图片描述
其中,左图红框显示了Unreal 4引擎粒子系统的碰撞设置,右图显示了Unity引擎粒子系统的碰撞设置。下图显示了带碰撞检测的粒子渲染结果:
18.gif
其中,绿色粒子被发射出之后碰撞到地面和Box后会产生反弹。

1.4 Event
类似于Unity引擎中的粒子系统事件处理,Unreal 4引擎同样支持触发事件以及事件响应的功能,如下图所示:
请输入图片描述
其中,左图红色框显示了Unreal 4引擎中粒子系统触发事件的设置界面,右图红框显示了Unity引擎中粒子系统触发事件的设置界面。Unreal 4引擎支持不同类型的粒子事件,包括:粒子生成、发射、消失、碰撞时触发以及在Blueprint脚本中响应等,可以在左图中Type参数中设置。并且,可以通过Custom Name参数设置事件名称。在Event Receiver中可根据事件名称对不同事件进行处理。

左图中绿色框显示了粒子系统发射器中接收并处理事件的两个Module。其中,Event Receiver Kill All是用于在接收到事件时删除该Emitter的所有粒子,Event Receiver Spawn则是用于在接收到事件时生成新的粒子。其设置界面如下图所示:
请输入图片描述
其中,在Source参数列表中可设置事件的类型和名称,用于响应指定类型和名称的事件。一个Event Generator可以生成多个事件,一个Event Receiver只能处理一个事件。但一个Emitter支持添加多个Event Receiver来处理不同的事件,如下图所示:
请输入图片描述
Unity引擎也同样提供了三种事件响应类型:Kill,Ignore,Callback。其中,Kill表示事件触发时删除粒子,Ignore表示忽略该事件,Callback表示在C#脚本中对该事件进行处理。

1.5 Camera Offset
Unreal 4引擎中Camera Offset Module可以实现将粒子根据相机位置进行位移的功能。其设置界面如下图所示:
请输入图片描述
其渲染效果如下图所示:
请输入图片描述
其中,红色和绿色粒子大小相同,但红色粒子距离相机距离增加了30个单位。

1.6 Vector Field
Unreal 4引擎支持使用向量场驱动粒子运动。向量场由一组在空间中分布的向量表示粒子在该位置时的速度或加速度。Unreal 4引擎采用体素表示向量场,每个体素中保存了向量的x,y,z分量。引擎支持在Maya中制作向量场并导出成.FGA格式文件然后进行导入。FGA文件为纯文本文件,如果不想用Maya制作,仅仅做为测试使用,也可利用Github上的开源工具【1】自动生成。下图显示了将向量场导入Unreal 4引擎后的可视化结果:
请输入图片描述
其中,红色细线表示了空间中向量的方向。

Unreal 4引擎中向量场仅支持GPU粒子,因此在创建粒子系统时需将Emitter的Type Data设置为GPU Sprites。向量场的类型有两种,局部和全局。局部向量场只影响该Module所在的粒子系统,而全局向量场则会影响空间中所有粒子系统。本文以局部向量场为例,可在Emitter中添加Local Vector Field Module,如下图所示:
请输入图片描述
其中,上图红色框显示了对向量场资源文件的设置。对于全局向量场,需要将资源作为Actor放入场景中。上图绿色框中的两个参数:Intensity和Tightness分别用于控制向量场对粒子作用的强度和方式。其中,Tightness取值为[0, 1]之间。当取值为0时,向量场表示了对粒子施加的力,它会将其中保存的向量值累加到粒子速度。当取值为1时,向量场表示粒子的速度,它会将其中保存的向量值赋值给粒子速度。此外,还可通过VF Init Rotation、VF Rotation Rate、Vector Field Scale以及VF Scale/Life等Module对向量场的旋转和缩放进行调整。下图显示了向量场中粒子系统渲染结果:
请输入图片描述


二、LOD 功能

Unreal 4引擎粒子系统提供了LOD功能。当粒子系统距离相机较远时,可通过LOD降低渲染的开销。在Unreal 4引擎中创建粒子系统的LOD比较方便,只需先将LOD0的粒子系统制作好,然后点击工具栏中的Regenerate Lowest LOD,引擎便会自动创建最低级的粒子系统。默认情况下创建的LOD1粒子系统的所有设置都继承自LOD0,但发射粒子个数被降低到1/10,如下图所示:
请输入图片描述
其中,左图为粒子系统LOD0设置及渲染结果,右图为引擎自动生成的LOD1设置及渲染结果。默认情况下,LOD1中除了Spawn之外的其他Module都不能被修改。如果需要修改,则需通过右键->Duplicate from Higher菜单将其设置为可修改,然后即可进行编辑,如下图所示:
请输入图片描述
其中,红框显示了RequiredModule的Details面板为灰色不可编辑状态。绿色框显示了通过右键菜单可将其变为可修改。如果需要添加更多LOD层级,可点击工具栏Add LOD按钮,引擎会在LOD0和已生成的最低级LOD(LOD1)之间生成新的LOD。新的LOD会复制LOD0的设置,但可通上述右键菜单进行编辑。

然后,在粒子系统的LOD设置中,可设置不同距离使用不同的LOD,如下图所示:
请输入图片描述
其中,上图红框显示了LODDistance的设置,在距离相机[0, 500]范围使用LOD0,距离相机500以上使用LOD1,渲染结果如下图所示:
请输入图片描述
其中,场景中使用了两个相同的粒子系统。近处的粒子系统渲染出红色粒子表明其使用了LOD0进行渲染,远处的粒子系统渲染出绿色粒子表明其使用了LOD1进行渲染。

此外,Unreal4引擎对粒子系统半透明渲染的Overdraw做了优化。在ProjectSetting->Rendering > Optimization中有一个渲染Enable Particle Cutouts by Default选项,如下图所示:
请输入图片描述
开启该选项后,引擎会自动根据粒子纹理可见部分生成相应的几何面片,从而减少透明度为0的像素浪费情况,如下图所示:

请输入图片描述
上图取自Unreal 4引擎官方文档【2】

其中,上图左图红线为粒子系统原始面片,右图红线为开启优化选项后的面片。


三、小结

以上,则为Unreal 4引擎粒子系统学习系列中的第二部分,重点介绍了Unreal 4引擎中粒子系统的重点模块和高级功能。在后续的文章中,我们就Unreal 4引擎中的新粒子系统Niagara进行详细的介绍。






原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
5月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
87 11
|
6月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
74 7
|
5月前
|
图形学 开发者
【独家揭秘】Unity游戏开发秘籍:从基础到进阶,掌握材质与纹理的艺术,打造超现实游戏视效的全过程剖析——案例教你如何让每一面墙都会“说话”
【8月更文挑战第31天】Unity 是全球领先的跨平台游戏开发引擎,以其高效性能和丰富的工具集著称,尤其在提升游戏视觉效果方面表现突出。本文通过具体案例分析,介绍如何利用 Unity 中的材质与纹理技术打造逼真且具艺术感的游戏世界。材质定义物体表面属性,如颜色、光滑度等;纹理则用于模拟真实细节。结合使用两者可显著增强场景真实感。以 FPS 游戏为例,通过调整材质参数和编写脚本动态改变属性,可实现自然视觉效果。此外,Unity 还提供了多种高级技术和优化方法供开发者探索。
87 0
|
6月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
402 0
|
9月前
对游戏设计案例杂谈1
对游戏设计案例杂谈1
|
9月前
|
前端开发 JavaScript 数据可视化
元宇宙基础案例 | 大帅老猿threejs特训
元宇宙基础案例 | 大帅老猿threejs特训
|
图形学
egret连连看项目实战之二(礼盒动画)
egret连连看项目实战之二(礼盒动画)
egret连连看项目实战之二(礼盒动画)
|
Web App开发 前端开发 图形学
Unity实战问题-WebGL问题集锦-上篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
462 1
|
前端开发 C# vr&ar
Unity实战问题-WebGL问题集锦-下篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
305 0
|
iOS开发
iOS动画开发之五——炫酷的粒子效果(二)
iOS动画开发之五——炫酷的粒子效果
352 0
iOS动画开发之五——炫酷的粒子效果(二)