Doing some work recently on flamethrower effect for a client. This is progress made over the course of two days. I completely changed my approach in the latter half of the second day and I think the results were improved considerably.
Transparent spheres with refraction and a flipbook sprite animation baked from a fluid simulation in maya to create the ‘flames’
- Overall the effect looks quite naive and unrealistic
- Can see clear repetition of the fire sprite
- something odd about the ‘spit’ droplets
- the fire sprites rotate to face the camera, which looks on in VR
- There is no smoke coming from the fire
Day 2 Morning
Looked at reference material and tried to copy the motion of the fire more accurately, switched from translucent blending to additive. Locked the ‘spit’ spheres to uniform scaling so that droplets were all perfectly spherical.
- There is still repetition of the fire sprite
- Sprites still rotate to face camera
- The color of the fire is too uniform and does not match the reference
- No smoke
Day 2 Afternoon
Started using blackbody node in Material Editor, driving the temperature with the red channel of a particle colour node. This was done to more accurately emulate the falloff in heat over time.
- Repetition is less noticeable with the colour gradient in effect
- The rotation is still an issue
- The fire looks like it is dissipating and smoking more believably
Day 2 Evening
Studied reference material more closely, observed that flamethrowers seem to be made up of lots of smaller explosions and flames grow outwards spherically. Replaced the flipbook sprite with tessellation distorted spheres that grow over time. The tesselation uses procedural noise which pans in the +Z direction, (upwards). There is a constant acceleration in the -Z axis to mimic the effects of gravity, but, over the life of each particle, a force in the +Z direction grows until it overcomes the gravity effect, which mimics the convection effect of the fire.
- There is still repetition, although it is less noticeable
- As the fire uses geometry, the screen facing rotation is now non-existent
- The fire looks much closer to the source images.
- The fire looks good from multiple angles
- The fire is expensive to render due to lots of overlapping transparency, panning procedural noise and tesselation.
There is still a bit of work to be done in regards to optimizing the effect for virtual reality. But overall I am pleased with the visual result that I have achieved so far, and I think my approach would be suitable for a variety of effects, particularly those that are intended to be seen in VR headsets where a more ‘volumetric’ look might be more desirable than a flat animated sprite.
Perhaps combining this approach with smaller sprites could produce a greater effect!
The effect isn’t perfect, and I would love to hear from people with criticism. However, It goes to show how much of an improvement can be made in a very little amount of time if you are willing to experiment and close attention is paid to reference material!