I wanted to try some Houdini fluid and test how i could bring that into a game engine. My goal was to bake the velocity information into the vertex so i wouldn't have to bake the velocity in a texture.
I started by creating a fluid simulation in Houdini. For that i exported a part of my world from the engine and imported it in Houdini. Just using a bunch of mesh to create my sim was not great so i decided to create a shell from all those meshes. Here i am using a ray with a high density plane but converting all mesh to VDB then converting it back to poly could be a better solution.
After creating my fluid i picked a frame i liked and converted it to a mesh (using remesh so i could control the mesh cost) I then used the particle data to calculate my velocity and other attribute for foam. Once i calculated my velocity i pushed the value into the vertex. And i made a shader using the vertex color to control how the texture will flow. I also added some vertex animation to get a better result. Conclusion: It works, that's great but the process is quite heavy. Having information in the vertex means that Lods can create issues, also the mesh needs to have enough density to have the information.
My goal was to create a rain effect around lights without using particles to save CPU time So i started this idea using a simple mesh with a vertex animated shader to avoid unnecessary overdraw
I am using a simple mesh with a few planes, i order to rotate the planes to look at the camera at all time i am using the Spline thicken function in unreal to get all the planes to be align with the camera. I could have made cross mesh and made the shader a bit cheaper but the Spline thicken function allow me to change the length of the rain in the material.
Then i used a the vertex animation to get the motion in local space. the solution was OK but i was lacking variation in the motion. so i decided to use vertex color to control the speed and time offset.
After that i decided the add more timing variation using the mesh pivot point
I am using the blue channel to add more speed and i am using the red channel to add some timing offset.
After that i wanted more variation so i added a rotation on the mesh, unfortunately it did not play well with the spline thicken function. I ended up with some moment with the rotation when the all the plane were badly align with the camera.
I could have added some rotation to the base mesh to avoid that but it wouldn't have work with the spline thicken well.
Here is a video with the result. I've added control over the speed, range of travel, length of the water, tint, etc..