Week 10 - Fire

While I did continued to populate and texture my environment this week much of my effort went into developing the fire effect for the fireplace. Unlike the candle flame I made last week, this fire effect required a full particle system. The particle system would in the end feature 5 emitters within Cascade for the body of the flames, the higher bursts of flames, the embers, the smoke and the heat haze.

The fire particle system in the scene.
The fire particle systems 5 emitters within Cascade.
I knew I wanted to avoid the effect looking to static so targeted animating the material used for the particles. I developed a sprite sheet for both the fire and smoke effects that would achieve this and hopefully add in some of the finer detail to help sell the effect. I initially considered hand drawing or rotoscoping the animation but I am not an animator so the results would have likely been sub-optimal. I instead decided to simulate fire and smoke within a 3D suit and render out the results. I choose Blenders Mantaflow system for this as I had previous experience creating simulations within in Blender and was confident in the results. However, Mantaflow requires simulation data to be fully baked out before it can be viewed, there was no way to avoid this slowing progress. But as the baking did not use significant amount of my CPU I could work on other things while Mantaflow baked. Once I had settled on results I was happy with I render out each frame and arranged them into a 6 by 6 sprite sheet to use within Unreal Engine 4. 6 by 6 at 1024 resolution was a happy medium between reasonable texture size, smooth animation and maintaining as much detail in each frame as possible. I found that the simulations did not render correctly without a background behind them so I used a uniform colour that I then cut out afterwards.

Smoke sprite sheet.
Fire sprite sheet.

The material used for the haze uses a noise texture initially for the water material plugged into the refraction output to create varying levels of refraction similar to the distortion you see from heat. I then used a radial gradient to give the material a soft edge. The alpha of the particle colour is used for the density of the radial gradient allowing me to slowly fade out the particle so its death is not noticeable. Cascade appears to handle refractions differently to the rest of Unreal Engine 4 as the refractions were initially non-existent on the particles.

Shader graph for the haze material.

While the fire particle system took up the bulk of my time this week I did develop some assets and textures as well including the leather and wood textures used for the sofas. The leather material was a new material authored within Substance Designer similar to previous materials, I tried to add patches to the albedo and roughness to indicate where the leather had been worn away from use.

Softa assets textured, the emblem on the back belongs to the "Research Commission" the organisation the player works for in Monster Hunter: World.
Leather material within Substance Designer.

The hanging lanterns will hopefully give me more options for lighting the scene, the metal is an instance of the metal material I created earlier while the glass is an instance of the heat haze material. 


To avoid having to line up each piece of the balcony railings individually and to make them easier to update I created a blueprint to automate the process.



I replaced the texture used for the floor with a more advanced set designed to allow for more fine-tuning in engine. This approach also allows for the resolution to stand up to scrutiny better, while the shader is more intensive as a result I feel the amount of screen real estate the floor occupies justifies this.

Floor shader graph.
New material left, original material right.
Close up shot, both have a texture resolution of 1024 by 1024.