Fluid Surface with Horizontal Deformation

Dear fellow Tech Artists, :):

allow me to consult you too in a matter that I already brought up on cgsociety.
Here’s my original post - maybe you have an idea on how solve this?

I’m researching different techniques to generate a partially procedural, partially directable ocean surface. In other words there should be constant cycle of waves from the wind, but I also want to place/shape individual waves and objects interacting with the water.

Maya’s pond & ocean offer a decent solution, but they’re entirely height-map based, so I get zero horizontal deformation of my surface mesh.
The Houdini Ocean Toolkit yields great procedural results, including horizontal deformation, but I didn’t find a way to add custom waves yet. I probably could layer a pond and the HOT displacement map, but then custom waves from the pond would still lack the horizontal deformation that I’m after.

Inspired by the excellent wave rig in the milk commercial, I started looking into deforming a mesh with force fields. nCloth with a strong input attract can do something similar, but it’s very slow and hard to “sculpt” waves with the available force-fields.

I was hoping that I might be able to use a pond’s/fluidShape’s velocity channel to displace vertices horizontally, by piping it into the vector displacement attribute of a displacementShader.
But I couldn’t find an attribute in the fluidShape that would output that information.
And even if I did, I wouldn’t know how to get the vector displacement to happen at edit time and not just during rendering.
There’s a heightField shape but this again only supports one-dimensional displacement.

[QUOTE=saschaherfort;18105]Dear fellow Tech Artists, :):
But I couldn’t find an attribute in the fluidShape that would output that information.
And even if I did, I wouldn’t know how to get the vector displacement to happen at edit time and not just during rendering.
There’s a heightField shape but this again only supports one-dimensional displacement.[/INDENT][/QUOTE]

Not sure if this helps at all - for another use, I’ve been painting a 2d fluid then used the attribute map exporter from within the paint tool to export out a map with the velocities. They would be placed in the r+g channel. This enables painting a velocity field (it takes the direction fromt the brush direction).

Somewhat inspired by this:
http://www.valvesoftware.com/publications/2011/gdc_2011_grimes_nonstandard_textures.pdf

i believe the attribute you are looking for is:

fieldData.fieldDataVelocity

[QUOTE=rgkovach123;18108]i believe the attribute you are looking for is:

fieldData.fieldDataVelocity[/QUOTE]

Thanks, rgkovach123!

I had stumbled across this before, but thought it was the wrong attr, because it’s not visible from the connection- or node editor.

Its type is vectorArray, but displacement node require a float input from a texture.
Do you know any way to convert this output into something that can be used like a texture?

If you’re open to painting the flow texture, I recently put together a little tool that simplifies that process somewhat. That said, I’m not 100% clear on what sort of output/input you require.

FlowMap Painter: http://teckartist.com/?page_id=107

I’m working on something similar to KillZone3’s ocean: http://www.sidefx.com/index.php?option=com_content&task=view&id=1952
Only that I need it in maya.

So flowmaps are not applicable here unfortunately.

In addition to deforming the mesh, I will also need to color it dynamically, which seems like another nontrivial task in maya.
I’m beginning to believe that creating the mesh in a package like realflow and then adding the last 10% in maya will be easier.
This would unfortunately increase iteration time significantly, but it seems that maya is not the right choice to do it all. :frowning: