Unity3d粒子特效:制作火焰效果
效果


分析
真实的火焰效果,通常包括:火、火光、火星等组成部分,火焰燃烧的同时会对周围环境进行烘焙。
1、针对火焰组成部分,我们可以分别创建粒子系统组件实现
2、火焰燃烧对周围环境的烘焙效果,我们可以通过灯光实现,如点光源。
那么,我们通过粒子系统 + 光源实现火焰效果,在Unity3d场景中结构应如下图所示:

1、Fire 火,火焰的主体部分,因燃烧产生的剧烈化学反应,灵动多变;
2、Flash 火光,即火焰的闪光效果,忽明忽暗;
3、Spark 火星,因高温而升起的燃烧碎屑,行踪飘忽,颜色渐变,效果随机;
4、Point Light 光亮,火焰燃烧对周围环境的烘焙效果;
实现
1、新建工程
1.1、新建3D工程
1.2、导入资源素材(后面会提供素材包)
1、天空盒1个
2、多帧火焰形态图1个
3、地面图1个

2、场景搭建
2.1、新建场景FireScene
2.2、设置场景天空盒,选择BlueSkybox
原因:系统默认天空盒太亮,火焰效果对比不明显,视觉冲击力差。
设置天空盒方式:
Window --> lighting -->setting

2.3、创建平面(地面)
用于放置火焰,并作为被烘焙对象(即火焰的光照能显示在该物体上)
1、创建Quad,改名Ground
2、置为原点位置,即坐标(0,0,0)

2.4、调整摄像机视角
1、Scene场景中调整为合适视角(如上图所示视角即可)
2、选中摄像机Main Camera
3、设置摄像机使用当前视角:GameObject --> Align With View
3、制作Fire效果(火)
为了最好体现火的形态变化,此处使用美术人员提供的火的多帧形态图,作为粒子贴图。
火的多帧形态图,素材共4帧,两行两列
3.1、创建粒子系统对象,命名Fire,改其发射方向
正常的火焰效果,火焰粒子应是朝上方向发射;
而新建的粒子系统默认朝前播放粒子,所以需要x轴旋转-90°,改为朝上发射

3.2、思考:火 需要使用粒子系统的哪些模块?
1、基础模块,主要控制粒子生命时长、大小、方向、颜色、重力等
2、Emission模块,粒子主要模块,主要用于控制粒子发射
3、Shape模块,粒子主要模块,主要用于控制粒子发射器的形状
4、Renderer模块,粒子主要模块,主要用于控制粒子渲染
5、Color over Lifetime,控制火的颜色随生命周期而改变,可使火焰效果更真实生动
6、Texture Sheet Animation,用于控制火焰的多帧形态图,随机切换指定帧
3.3、先设置Renderer模块
1、Material 选择多帧火焰图
2、设置Sort Mode:Youngest in Front (即:后渲染出来的显示在最上/前层)

3.4、设置Texture Sheet Animation模块
1、Tiles : 是指纹理在X(水平)和Y(垂直)方向上划分的平铺数量,此处分别设置为 2
2、Frame over Time:默认曲线,指定动画帧随着时间的推移如何增加。此处由逐帧变化,改为随机固定某一帧
3、Cycles : 是指动画序列在粒子生命周期内重复的次数,此处设置为4,当然也可根据自身喜爱更改数值

3.5、设置基础模块
1、Duration 粒子发射时长,此处设置为1秒
2、Start Lifrtime 单个粒子的生命周期,随机1秒以下,此处设置0.3 ~ 0.5秒
3、Start Speed 粒子速度0.1,火多帧图上窜效果有波动,但不宜过大
4、Start Size 0.7 ~ 1 增加随机性
5、Start Rotation -20° ~ 20° 增加随机性
6、Gravity Modifier 重力修改器,因火为升力,此处需改为-1
7、Max Particles 最大数量为25,不宜过多
以上属性可根据自身喜好,微调其数值

3.6、设置Emission模块
1、rate over Time 设置为25,与粒子最大数量一致即可
2、因火是平静燃烧,不存在突然的爆发,所以不需要设置Bursts
以上属性可根据自身喜好,微调其数值

3.7、设置Shape模块
1、Shape 无需改变(咱们实现的效果:火的燃烧点是1个)
2、Radius 改为0(系统默认置为0.01),使粒子产生位置固定


3.8、设置Color over Lifetime颜色
颜色可根据自身喜好,自行调整,须注意颜色渐变与透明度变化


4、制作火星(Spark)
火星的效果比较简单:
1、在固定位置产生火星的粒子
2、粒子产生后向上升,随位置升高速度渐慢,颜色也渐透明
3、为了体现火星的灵动性,火星大小、生命时长等均随机
制作Spark会使用到粒子系统的哪些模块呢?
1、基础模块,用于控制粒子的基础属性:生命时长、大小、颜色、重力等
2、Emission模块,用于控制粒子的发射
3、Shape模块,用于控制粒子发射器的形状
4、Color over Lifetime模块,用于控制粒子颜色随生命周期的变化
5、Size over Lifetime模块,用于控制粒子大小随生命周期的变化
6、Limit Velocity over Lifetime模块,用于控制粒子限速
7、Renderder模块,用于控制粒子渲染(默认就行,无需调整)
4.1、基础模块
1、Duration 发射周期与火的粒子系统一致吧
2、Start Lifetime 粒子的生命时长,咱们也随机吧
3、StartSpeed 火星粒子的向上速度要更大一些
4、Start Size 火星粒子的起始大小应随机
5、Start Color 火星粒子的默认颜色
6、Gravity Modifier 因火星粒子也是上升的力,应设置为负数(使用此属性,效果更贴近真实)
7、Max Particles 最大数量不宜过多,因为正常燃烧时,火星数量不会太多
8、其他属性默认(略)
以上属性可根据自身喜好,微调其数值

4.2、Emission模块
RateOverTime: 随单位时间生成粒子的数量,与最大数量一致吧
以上属性可根据自身喜好,微调其数值

4.3、Shape模块
1、Shape形状默认椎体即可,无需调整
2、Radius: 将椎体的半径设置小一些,让粒子出现的位置固定,微微随机即可
3、其他属性默认即可
以上属性可根据自身喜好,微调其数值

4.4、Color over Lifetime模块
正常情况下,火星是在火焰中上端才能看见,且随时间变化,慢慢灰掉(可理解成与夜色融合,即透明)
1、刚开始颜色透明
2、中间正常显示
3、后面逐渐透明

4.5、Size over Lifetime模块
火星的粒子尺寸随时间变化,视觉上更真实一些

4.6、Limit Velocity over Lifetime模块
当粒子速度超过速度限制时,粒子速度降低
Speed: 限速 2
Dampen: 粒子速度降低的分数 0.1
以上属性可根据自身喜好,微调其数值

4.7 火星效果图

4.8、火加上火星的效果图 (截图不怎么明显)

5、制作火光效果(Flash)
此效果实现起来也比较简单,固定位置,随机交替产生几个的不同尺寸的粒子即可
制作Flash会使用到粒子系统的哪些模块呢?
1、基础模块,用于控制粒子的基础属性:生命时长、大小、颜色等
2、Emission模块,用于控制粒子的发射
3、Shape模块,用于控制粒子发射器的形状
4、Renderder模块,用于控制粒子渲染(默认就行,无需调整)
5.1、基础模块
Start Lifetime: 粒子生命周期随机时长(为实现忽明忽暗的闪动效果)
Start Size:粒子尺寸大小随机(为实现忽明忽暗的闪动效果)
Start Color:颜色与火的颜色一致即可(色调统一)
Max Particles:正常的火焰闪动不会太厉害,所以粒子不宜过多,此处设置为5个
以上属性可根据自身喜好,微调其数值

5.2、Emission模块
Rate over Time: 与粒子最大值一致即可,此处也为5个

5.3、Shape模块
闪光效果应基于火焰的位置,不应改变:
Radius: 为了让粒子产生的位置不变,置为0.01即可

5.4、Shape效果图(因录屏工具原因,图片非高清)

5.5、与火、火星一起的效果图(因录屏工具原因,图片非高清)

6、灯光烘焙
新建点光源,设置光源位置、颜色和强度,如下图:

6.1、火焰 + 灯光 效果图 (因录屏工具原因,图片非高清):

7、素材提供
https://pan.baidu.com/s/1eugxPGWb5sVczJKyvLLpYg
Unity3d粒子特效:制作火焰效果的更多相关文章
- UGUI中显示粒子特效
今天在UGUI上显示粒子特效的时候遇到的一些问题,Mark一下.原理:修改特效中每一个ParticleSystem的Layer为UI,并且把ParticleSystemRenderer.sorting ...
- [原][粒子特效][spark]深入浅出osgSpark
背景: 目前我使用的spark粒子特效库是2.0 这个库好像是原来鬼火引擎的一部分,需要从github上找 现在我要将其使用到我自己开发的基于osgearth开的三维地图引擎中 步骤: 1.编译spa ...
- Three.js粒子特效,shader渲染初探(一篇非常详细的介绍)
Three.js粒子特效,shader渲染初探 转载来源:https://juejin.im/post/5b0ace63f265da0db479270a 这大概是个序 关于Three.js,网上有不多 ...
- Qt移动应用开发(四):应用粒子特效
Qt移动应用开发(四):应用粒子特效 上一篇文章介绍了Qt Quick是如何对帧动画进行支持的.帧动画的实现离不开状态机.而状态机.动画和状态切换(transitions)则是Qt框架的核心内容.也就 ...
- 使用particles.js实现网页背景粒子特效
得知途径 B3log提供了两套博客系统,一个是用Java开发的,叫做Solo,我也是在网上搜索Java博客系统时发现了它,之后才了解了B3log:还有一个是用Go语言开发的,叫做Pipe.其中Solo ...
- Mask裁切UI粒子特效或者3D模型
刚好前几天有人问我这个问题,再加上新项目也可能用,所以这两天就研究了一下.其实如果粒子特效 和3D模型 都用RenderTexture来做的话就不会有裁切的问题,但是粒子特效用RenderTextur ...
- 【Stage3D学习笔记续】真正的3D世界(五):粒子特效
先看效果,按下空格键添加粒子特效: 一般而言粒子特效的实现都是比较复杂的,且不说实现粒子特效的编码和设计,光是编写一个粒子编辑器就不是简单的一件事,但是作者使用了很取巧的方式来完成,我们接下来深入代码 ...
- CSS3火焰文字特效制作教程
原文:CSS3火焰文字特效制作教程 用一句很俗气的话概括这两天的情况就是:“最近很忙”,虽然手头上有不少很酷的HTML5和CSS3资源,但确实没时间将它们的实现过程写成教程分享给大家.今天刚完成了一个 ...
- JParticles 2.0 发布,打造炫酷的粒子特效
JParticles 2.0 发布,打造炫酷的粒子特效.不好意思哈,在这么繁花似锦的世界里,标题不得不取得吸引眼球一点哈,不然...还是不啰嗦了,我们进入正题吧 简单介绍一下 JParticles 2 ...
随机推荐
- 短视频处理LanSoEditor-SDK之功能介绍
短视频处理LanSoEditor-SDK之功能介绍 (注释: 我们的SDK每3周更新一次, 一下功能是在2.8.2版本上列出的,可能不是最新的功能, 请知悉) 和别家最大的不同在于: 别人提供功能, ...
- .Net Core 商城微服务项目系列(十一):MQ消费端独立为Window服务+消息处理服务
之前使用MQ的时候是通过封装成dll发布Nuget包来使用,消息的发布和消费都耦合在使用的站点和服务里,这样会造成两个问题: 1.增加服务和站点的压力,因为每次消息的消费就意味着接口的调用,这部分的压 ...
- spring5 源码深度解析----- 事务增强器(100%理解事务)
上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的,也讲解了Spring是如何将有配置事务的类配置上事务的,实际上也就是用了AOP那一套,也讲解了Advisor,pointcut验 ...
- python编程基础之五
转义字符:就是不方便从键盘之间输出,或者是原字符有特殊含义的一些字符, 下面列举几个常用的转义字符 \',\",\''',\""",\\,都是表示原字符的意思, ...
- sql获取各种时间格式的方法
),)--月/日/年 ),)--年.月.日 (常用) ),)--日/月/年 ),)--日.月.年 ),)--日-月-年 ),)--日 月 年
- 【源码解析】凭什么?spring boot 一个 jar 就能开发 web 项目
问题 为什么开发web项目,spring-boot-starter-web 一个jar就搞定了?这个jar做了什么? 通过 spring-boot 工程可以看到所有开箱即用的的引导模块 spring- ...
- dubbo配置文件的加载顺序详解(图示)
Dubbo配置文件的加载顺序 在使用apache dubbo.version2.7.3 时,配置文件的加载情况.以provider提供服务者为例. 配置文件 ,以下四个配置文件. 其优先级 app ...
- 基于 Web 端 3D 地铁站可视化系统
前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...
- postman全局变量设置
1.点击小齿轮进入到变量添加页面,点击Globals添加全局变量 2.输入变量名称和变量值 3.接口中设置变量
- POJ 1062 昂贵的聘礼(带限制条件的dijkstra)
题目网址:http://poj.org/problem?id=1062 题目: 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submis ...