Sourcing

Before you can start simulating you need to get fluid into the system. That’s where sourcing comes in!

The easiest way to source is by connecting volumes or VDBs directly into the first input of the solver. You can make these sources any way you want. Make sure to properly name all of your volumes as other names will not be compatible. It is case sensitive and should always be lower case.

  • density

  • temperature

  • fuel

  • vel (VDB vector type)

  • vel.x, vel.y, vel.z (Houdini volumes type or a split vector VDB type)

One common mistake is not including a temperature field in your source. This will cause the simulation to not work because no temperature equals no buoyancy, and no buoyancy means no motion. However, you can still have motion in your sim if you have initial velocities in your source using the vel fields.

The second input is for collisions. You need to give it a field named “density” to mark regions where your collider exists, a field named “temperature” if you want your collider to influence the fluid upon collision, and if its a moving collider, a field named “vel, or vel.x, vel.y, vel.z”. Make sure the interior of the density field has a value of 1 and the outside a value of 0.

The third input is what I call the influence source. This is an extra source you can use to add custom turbulence and forces. It accepts a temperature, fuel, and vel field and this can be anything you want. It is just a utility. 

The solvers sourcing settings.

The solvers sourcing settings.

On the solver node itself under the sourcing tab you can find parameters that control all of the inputs you give it. These are all multipliers on the original values. You can also specify how the sourcing is computed by choosing add, replace, or maximum. 

Add will add the source field to the sim field.

Replace will replace any voxel values where the source overlaps with the source’s value.

Maximum will choose the value of the field that has the higher value.

This is a very basic, but typical network for sourcing.

This is a very basic, but typical network for sourcing.

There is also an extra HDA that comes with the solver called the PSEUDO fluid source node. This is a utility that helps covert volumes into the most efficient form for the solver node. Actually, if you look inside the solver HDA you will find this node. All it is really doing is converting the volumes into a form the solver can understand. It has three inputs identical to the solver and it will output a point cloud. You can then connect this directly to the first input of the solver and all three input will be passed down to it so don’t worry about the other two inputs on the solver when using this node.

Set the path to your solver node in this parameter.

Set the path to your solver node in this parameter.

Remember to link the source node to the solver using the the solver node parameter on the source node. This is important because the source node needs to fetch information from the solver node.

The benefit to using this rather than connecting volumes to the solver directly is that this point cloud cached out to disk and then connected to the solver is much faster for it to process.  Note that the point cloud that is created by this node is tied to the division size of the solver. If you cache it out and then change your division size you will need to recache the source.

One last thing to note is that you are currently limited to a source that is 10% of the number of voxels your simulation has. If you choose to simulate with 10 million voxels then your source can not have more than 1 million voxels at any time step. This is an efficiency measure and will likely change soon, or at least give the user the option to control what percentage they are limited to.