top of page
  • Foto van schrijverMaria Jardan

#Week 14 (DTC update)

Product work | Construction/Destruction VFX


Construction/Destruction VFX | Unreal Engine

After some discussions with the designer, we established that the construction/destruction effect needed to be played when a building would be succesfully placed in the scene and had to be relevant for all the following states:

  • Replacing a building with another

  • Placing a new building on an empty spot

I decided that an animated reference board would be more relevant for an effect, so I did a bit of research online and found a bunch of construction effects utilized in games.


Inspiration 1

Inspiration 2
Inspiration 5
Inspiration 6

Inspiration 3

Inspiration 4

Consequently, I did some brainstorming and ideation, identifying the properties that the effect had to have to be the most relevant for our product. It had to happen relatively fast, work for both construction and destruction, be realistic and satisfying. So the most relevant solution was to create a pile of smoke effect that would slide up creating the illusion of the asset being built. The old asset (if any) would disappear gradually and the new asset would appear.


When it came to creating the smoke part of the effect, I initially thought of using the volume shader I created last week. The issue was that the effect had to be visible from different distances and for that the clipping distance (the distance at which something starts to not be shown on the screen) had to be constantly adjusted in the Unreal Engine Height Fog, which besides being inconvenient, also interfered with the smog effect clipping.


Volume smoke clipping | Unreal Engine

My second option was to use the new Unreal Engine Fluid Simulation system. The smoke created via this method looks very realistic and accurate, but since the system was still in Beta version it crashed on me multiple times and it was lagging heavily. Moreover, trying to use a different source (the source from which the smoke was generated) rather than the original was not working.


Fluid smoke not being sourced from the torus | Unreal Engine

Lastly, I tried creating the smoke using particles, which I avoided from the start because it would have been trickier and more complex to make it accurate and realistic.

The shader I created for the particles was the result of pure experimentation, but when it comes to the disolving of smoke I incorporated a node called "SmoothStep". It allows the remapping of gradients, and when combined with a "Time" and "Sine", it creates a perfect loop of disolving and reappearing. This allowed the smoke pile to look and behave a bit more realistic.


Smoke Shader | Unreal Engine

Creating the shader with some "Dynamic Material Parameters" allowed me to control the shader inside the Niagara System (the Unreal Engine system used to created VFX) and to animate the shader and add randomness.


Smoke Shader applied to Particles | Unreal Engine

The disappearing/appearing shader was created with the help of the "Absolute World Position" node which detects the position of the asset in the world. For practical reasons, I created both the disappearing and appearing options within one shader and allowed to switch between the two via a "Switch Parameter" node used in the shader creation.


Appearing/Disappearing Shader | Unreal Engine

When it comes to the rubble pieces flying from the smoke, for optimization purposes, I was looking into a way to use multiple meshes within one emmiter

(a system within Niagara allowing to spawn particles). I found out that that was possible via a "Set new or existing parameters directly" module (the way particles are manipulated in Niagara). This parameter allowed me to use the mesh index from the "Mesh renderer" module and randomize it.


Rubble Emitter | Unreal Engine

When all the elements were put together it looked nice, but the part where the particles were intersecting with the ground was creating a hard edge. The solution to that turned out to be a "Depth Fade" node used in the smoke shader. This node allows to fade the intersection between a transluscent object and an opaque one and to have less hard edges at that intersection.

Next week I will get some feedback on the effect, perform changes where necessary and export it to the OneDrive for implementation in the product.




17 weergaven0 opmerkingen

Recente blogposts

Alles weergeven

Comments


bottom of page