It took some time for me to get back to the forum and Unreal community. I was already on my way to quit on this idea, but since I have a follower (YAY!) there is no way back!
I promised to post a project breakdown and here it is!
First of all here is a complete walkthrough for the project:
Packaged game download link:
And some artstation screenshots:
Now let’s get right to it!
This effect is a combination of 2 materials and some BP programming:
Button Sphere material
Opacity masking makes the most work here. The mask consists of two multiplied pieces: distance to nearest surface node lights up surface intersections and animated by panner and sine noise adds life to the effect:
Also I added opacity multiplier (just masking was not enough) and camera depth fade, so the effect will not interrupt gameplay:
I used the same material for the reverse time effect, so I added a static switch parameter for the color:
And again masking! First there is a primary sphere mask and a secondary sphere mask with a smaller radius. Secondary mask is inverted and cutted out from the primary by multiplication, the result is we have a sphere edge with controlled thickness as a mask. This edge is used for burning emissive in the places where button sphere intersects with platform. The primary sphere is used to cut off the platform. If the button sphere intersects the platform, it starts to send parameters to the platform dynamic material - SphereCenter and SphereRadius:
There is a second masking group here. As soon as button sphere overlaps a platform, timeline animation for the dynamic material starts. “If” node is looking for which pixels of the noise texture are lighter then 1.1. With ShowAmount = 0 all pixels in a noise texture are in 0 - 1 range. With ShowAmount = 0.11 some pixels will become 1.11 wich means they are visible for the “If” node! And there is additional “If” mask which moves with 0.1 delay and is multiplied by main mask that gives more burning emissive edge lines:
Final mask multiplier is camera depth fade. Platforms should not block the view:
Sphere mask edge is also used as input for world position offset, so it looks like platforms are building from outside world and not just appearing:
Base color and emissive. Unlike opacity masks, emissive masks have to be added to work together:
That’s it for today, will continue tomorrow. Thank you and have a nice masking!