# **程序化生成的风格化火焰**
## **零、需求分析**
**H子**:**AOI**老师!有个问题,我想要做火焰特效,但是我对特效绘制有点不在行。而且购买或者的话,总是很难得到足够数量的素材,风格的协调也又点问题呢。
**AOI**:你可以找熟悉特效朋友帮忙画适合风格的素材嘛。
**H子**:但是我没有朋友呢。
**AOI**:......
**H子**:嗯???
**AOI**:好吧,程序就是我们最好的朋友。来尝试做程序化的火焰特效吧。
还是惯例的先进行需求分析。
首先确定一下火焰到底是什么。
**H子**:唔~火焰嘛,是一种能量发光发热的表现。
**AOI**:嗯,具体形态上的表现呢。
**H子**:会扩张并且上升,还会摇曳,上升过程还会收缩......唔,大概是这样子?还有就是焰心和外焰的温度不同导致颜色不同?
**AOI**:对了,对于外观虽然说是有那么一套整理出来的定义,但是实际上还是根据实际情况有不同的主观理解。具体的就自己感性的或者理性的去认识吧。
首先把需求整理一下:
1. 火焰的形态
2. 能量(燃料)的中心
3. 火焰的摇曳
4. 燃烧范围的限制
5. 能量的上升
6. 火焰的颜色定义
可以从中见到,火焰的形态,能量中心,摇曳效果等的,都有对纹理的依赖。所以根据实际情况,我们要进行程序化生成的软件选择。虽然Blender确实可以程序化生成一部分的纹理,但是在便利性上依旧不如SubstanceDesigner,而且,使用SubstanceDesigner也可以暴露出参数,在游戏引擎里面根据需要生成和编辑随机纹理,而无需回到SubstanceDesigner的流程。
因此选定**SubstanceDesigner**作为创建纹理的软件。而游戏引擎方面则使用Unity以及可视化Shader开发插件**ShaderForge**进行火焰特效的制作。