HexWave

Main Render

Still 01

Still 01

Still 02

Still 02

Still 03

Still 03

The main scratchpad graph. Feel free to ignore the random float and scaling. These are nor relevant to the Hex tiling calculations.

The main scratchpad graph. Feel free to ignore the random float and scaling. These are nor relevant to the Hex tiling calculations.

Adjusting the Y offset (spacing) for every odd number based on the index. Note that the XYZ Spacing input is based on the GridLocation.XYZ.Spacing value that is written by the Grid Location module.

Adjusting the Y offset (spacing) for every odd number based on the index. Note that the XYZ Spacing input is based on the GridLocation.XYZ.Spacing value that is written by the Grid Location module.

Connecting the Grid location spacing output to our scratchpad

Connecting the Grid location spacing output to our scratchpad

This function basically adjusts the "gaps" on the X axis. We then add the results to  the Y offset from above and convert the resulting Vector back to a Position.

This function basically adjusts the "gaps" on the X axis. We then add the results to the Y offset from above and convert the resulting Vector back to a Position.

Finally, just a demonstration of the gap between the "shells" without the main X position adjustment.

Finally, just a demonstration of the gap between the "shells" without the main X position adjustment.

HexWave

HexWave is a take on hexagonal tiling in UE5.4 in Niagara with a grid emitter.
________
The system here is based on the concepts explained in the "Hex Tiles in Substance Designer" tutorial from Youtube creator Rekov:
https://youtu.be/STAhhCrtJAE?si=nGh5BoBxLIaJtI80
________
I am not going to dive into a detailed explanation in this post but do watch the above video as it contains the theory behind the needed calculations. I simply adapted the method shown and my approach was to modify the positions of the Grid based particle system by adjusting the Particle.Position.X and the Y axis of the GridLocation.XYZ.Spacing .
________
The motion on the tiles was generated in 3 ways:
- Using a Distance Based Falloff node + sines for circular waves
- Using the Grid UV (UV.x +Sine) to generate "straight" waves
- And a slightly more complex calculation for the spirals.
________
The main math behind the spirals can be found in the material editor node for "VectorToRadialValue". I basically recreated the concepts in this node to generate different Spiral shapes based on the Grid.UV.
________
This effect was actually created a few years back and apart from some cleaning up and LookDev adjustments I just ported it over from 4.27 to 5.4. I am sure there must be some better way to achieve a couple of things but it works and performance is relevant to the amount of mesh particles you use on the grid.