Moving domains and waterlines

There are two fundamental ways to create the impression of motion. With both methods it’s not necessary to simulate a huge surrounding ocean:

• In a moving domain, the domain is synchronized with the motion of the animated object. The domain follows the object with the exact same speed.

• If you apply an initial velocity and direction to the waterline particles, the object can remain static. Particles are seeded, accelerated, and collide with the object. This interaction creates waves. On the domain’s opposite side, particles disappear. Constant sourcing and sinking keeps water level and number of particles constant throughout the simulation.

In both cases, the collision waves vanish at the domain’s limits. If you need the ocean segment for compositing, make sure that the domain is big enough for collision waves to propagate and fade out smoothly. With SOP FLIP fluids, domains shapes don’t have to fixed. A domain’s shape can even change over time.

Ship animation ¶

In this example a fish trawler moves over a calm ocean segment and creates nice bow waves. The ship can be pre-animated and imported, but you can also use animation keys in Houdini. For simple animation paths like a straight line, it’s possible to work with expressions.

In this scene, the ship should go along the X axis from left (negative X) to right (positive X).

1. Create a Transform SOP node and connect its input with the output of the boat.

2. At frame 1, use Translate to move the ship to its starting position. Let’s assume the X translation is `30`. In the Translate.X field, enter `\$FF/4-30`. During simulation, `\$FF` is replaced with the current floating point frame number. By dividing the variable you can control the ship’s speed. To make the boat slower, increase the value. Values smaller than `1` are, for example, good for motorboats. The offset of `30` represents the initial position. With this expression the ship moves along a straight path, no matter how long the simulation lasts.

Synchronizing ship and domain ¶

To synchronize the domain with the motion of the animated ship, do the following:

1. Create a Box SOP node for the simulation domain. The box should be large enough to catch the boat’s bow and stern waves. Here, the Size values are `30,10,20`.

2. Use the Center.X parameter to move the box to its starting position at frame 1. In this example, the value is `30` again.

3. To synchronize domain and boat, both speeds have to be equal. In this case you can use the same expression: `\$FF/4-30`.

4. When you scrub the timeline, you can see that the motion of both objects is constrained.

Domain and collision settings ¶

1. Add a FLIP Container and connect the Box’s output to the container’s input.

2. Go to the container’s Particle Separation parameter. This parameter does not only determine the fluid’s quality, but also the resolution of collision objects like the fishing boat. Enter `0.075`.

The fishing boat has to be tagged as a collider to make it interact with the water surface.

1. Add a FLIP Collide node and connect its first three inputs with the FLIP Container’s outputs.

2. Wire the output of the Transform node to the 4th input of the FLIP Collide operator.

3. You can simulate with the default settings.

The image shows the boat’s volume and surface collision geometry.

Solver settings ¶

In terms of FLIP Solver settings there only a few things to consider:

• In the Waterline tab, turn on the Waterline checkbox.

• If necessary, change the Water Origin parameter’s Y value to adjust the position of the water surface.

• As shown in the images, you can also add an ocean spectrum setup for a turbulent surface. In this case, turn off Waterline, because the surface is now controlled through the ocean nodes.

The scene is now ready to simulate. You can also add more collision objects like cliffs and rocks to get a more interesting result. With the expression, the ship starts to move at full speed without any acceleration. After 20-30 frames the interaction between boat and water starts to look natural and you can observe the typical bow and stern waves.

Moving the waterline ¶

Another method to create bow waves is to define an Additional Velocity in the solver. Here, the object remains static, but the motion of the water surface creates the impression of a moving ship:

1. Create the domain around the object.

2. Scale the domain to give the collision waves enough space to propagate and fade out.

3. In the FLIP Solver SOP node, turn on Waterline.

4. Change Additional Velocity to add an initial velocity and direction to the particles, e.g. `-6,0,0`.

Fluids

SOP WORKFLOW

DOP WORKFLOW

Viscous Fluids (DOP) ¶

• Viscous fluids are FLIP simulations that use a temperature attribute to drive viscosity.

Optimization ¶

• Distribute shelf tools set up an object’s sim network so it can be solved in parallel on a farm of multiple machines using HQueue.