This project is a collaboration with Arian Franzén, who wanted to create an island scene set in a stormy ocean. Since I wanted to try my hand at creating water, it was a good matcup!
The complete VFX in the scene is:
Creating a stormy ocean turned out to be a challenge, but in the end, the result turned out quite nice!
The Gerstner waves were the first thing I tackled, as I knew I would need a lot of time to understand what they were, how they work, and how I could get them to look the way I wanted as fast as possible.
I used tutorials and guides from both Ben Cloward and Ghislaine Ghirardot, and after testing out both of their approaches, I had to use Ghislaines setup, as it allowed me to set very specific parameters I needed to get the kind of ocean I was after. Ghislaines Blueprint and material setups were extremely complex for me to understand at first, but after sitting with them for a while, I started to understand how they work. I did not have enough time to completely understand all of the different factors in them, but I eventually understood how to use Render Targets, and how to use Material Parameter Collections and call the parameters from my blueprint.
One of the most rewarding discoveries I made during this project, was the Niagara module that moves particles to their nearest Mesh Distance Field. This made faking the rain hitting the environment super easy, and let me create the illusion of water splashing where it hit land.
Conclusion and takeaways:
One of the biggest lessons I learned working on this project, is the importance of communication, planning, and project structuring. The project itself was a lot of fun, and very interesting, but both Arian and I planned in a way that made it difficult to iterate early on, and we also had issues with our version control. However we still managed to create something really cool and well put together.
I also got a reality check regarding my own skills, in a way that was really eye-opening. The amount of tutorials and guides I looked at seemed overwhelming, but in the end I needed every single one.
The parameters for the VFX is lacking, a lot of the parameters are hard-coded by me in lieu of time, with input from Arian.
If I had more time, I would like to create more customizable setup, as this water is mostly suited for open waters, and has issues creating proper intersections with placed meshes, isnce the blueprint doesn't support Mesh Distance Fields currently.
Arian also wanted a way to control the intensity of the waves, which was initally possible with vertex painting on an ocean mesh, but with the blueprint, I instead had to create a gradient from the origo of the scene, where the Gerstner waves would decrease in intensity. This solution worked, but Iäm not very satisfied with it!
The material is huge, but it also allowed me to get better at using named utility reroute nodes, as well as setting up bool toggles for the various parts of the material.
The blueprint is also enromous, but it also taught how useful child blueprints are, and how you can use functions and variables to your benefit when working in them!
The blueprint and material allows for great versatility, and the control over both the Gerstner settings and material lets the user change how the ocean looks.
Combined with different lighting, the system can be made to look like almost any body of water!