Your work is really impressive. I’ve always been interested in the projects you’ve been involved with.
I am curious about the ocean stuff as well. I’m a real flow user and was wondering your basic workflow for creating a ship on a stormy ocean. I’ve always had to animate the ship by hand to have it react to the waves since to my knowledge realflow cant alter geo with either its ocean surface or its voxel based fluids. Did you have to do something similar?
So with Naiad and with houdini fluids (we used naiad) you can feed in input velocities to drive fluids. If you start off with a plane with a few segments and put a houdini ocean deformer on it to get a wave surface (get it here - http://www.guillaumeplourde.com/) then you’ve got an animated surface. Cache this out to naiads emp format and plug this into your fluid velocity in naiad. It won’t fit exactly to it but it’ll definitely have a close relation to the original animation. You can do your sim and get a tonne of particles out. Next you’ve a choice as to whether you do your meshing inside of naiad or inside of max. The small crests / waves get added in naiad, max or houdini as an ocean displacement. If you’re using naiad you mesh your water sim and then apply the displace to get an animated mesh surface that has all the nice crisp crest detail in it. If you wanna go the max route, you can take the raw ocean particles simmed by naiad, export them as krakatoa prt files and bring them into max. You can mesh these using frost which is pretty speedy, and then use the hot4max plugin to add on the wave details. The nice thing on the max side is if you’ve used it to make the ocean surface driving the sim, you can use the same ocean deformer settings to add in the crest details after by just turning up the quality.
Boat animation:
So for this, a very talented artist called dan wood came up with a setup in houdini but you can replicate it in max - it might take a bit of scripting but it can be done. There’s a spacewarp in 3dsmax called conform which will wrap the vertices on one object to another using projection. If you’ve got your animated wave surface what you can do is make a kind of low res plane and make it’s width and height similar to the footprint of your boat. If you animate the boat to travel the horizontal distance you want over the waves, copy the same animation to your plane so it’s following it, then use the conform spacewarp on the plane using the wave surface as it’s target, you’ll get a simple low res plane that slides over the surface of the ocean and conforms to it as it goes. Next we’ve to do a tiny bit of scripting, or at least it’s what I did. Each of the polygons in your plane has a direction or normal facing out of it, and if we add all these up and average them, we’ll get the averaged direction of the waves underneath the boat, or what rotation it should be at. You’ll end up with a null that will rock back and forth as it travels over the peaks and troughs of the waves. The last thing to do is now add a wee bit of lag to it, depending on the scale of your boat. If it’s a large heavy object, it’ll take a bit of time for the force of the wave to start acting on the boat so if you store all of the rotations you’ve recorded and rather than set the boat to the average rotation on the exact frame you’re at, also add in the previous 15 frames rotation values and get the average. It’ll soften out the rotation a bit but it’ll make the boat lag behind the waves each time. You could probably do something similar with flex to get something tweakable.
Another very sneaky thing that dan did (Dan Wood) is he set up a second “boat” a little bit further ahead of the actual boat and parented the camera to it so while one boat is rocking up and down, you’ve a second boat on a different part of the wave trying to film it, similar to how it’d work in real life.
Thanks for that description. I think I’ll have to try those techniques out. The boat motion makes total sense. I’ve done something similar to that in the past but the averaging of the normals is definitely the crucial step that really helps sell the effect.