This page provides some useful tips for working with the Phoenix FD Active Bodies feature.
The Active Bodies feature in Phoenix FD allows for two-way interaction between scene geometry and the Phoenix FD simulation.
When an object is selected as an Active Body, the simulation both influences and is influenced by the Active Body's movement. This allows objects such as boats to float over a Phoenix FD ocean simulation and be affected by its waves, or objects placed on the ground to be washed away by flooding waters.
Objects selected as Active Bodies may also be animated in which case they will follow the animation while also being influenced by the Phoenix FD simulation. A speedboat simulation is a great example of this mutual interaction in action - the speedboat is heavily affected by the the water while also able to cut through the waves and produce large amounts of foam. You can balance between the influence of the animation and the fluid from an Active Body's Per-Node properties' Original Animation Influence option.
The Active Bodies simulation currently supports interaction between scene geometry and the Phoenix FD Liquid Simulator.
Interaction between Active Bodies and the Phoenix FD Fire/Smoke Simulator is not supported yet.
Mutual interaction between the Active Bodies themselves is not supported yet.
A Phoenix FD Liquid Simulation with Active Bodies consists of the following elements:
- A Liquid Simulator – used for the simulation of water.
- One or more scene objects – converted to Active Bodies at simulation time.
- An Active Body Solver – specified under the Liquid roll-out of the Simulator - used to simulate the Active Bodies and to set some global options for the Active Body simulation.
- An Active Body Interaction set and an Active Body Cloned Bodies set - automatically generated when creating an Active Body Solver node.
- A Center of Mass gizmo – automatically generated for each object when included in the Active Body simulation through the Active Body Solver Interaction set.
To add an Active Body Solver, go to Phoenix FD Menu → Create → Active Body Solver.
Enable Use Active Bodies under the Liquid roll-out of the Simulator, and hit the Set Selected Object as Active Body Solver with the Solver Node and the Simulator selected.
Finally, place the source geometry into the Interaction set of the Active Body Solver. Phoenix FD will automatically generate a Center of Mass gizmo for each Active Body and parent it to its source geometry.
The Active Bodies Solver is separated from the Phoenix FD Simulator to allow extra flexibility when setting up the simulation. Multiple Liquid Simulators can be set up to use the same solver, or alternatively, you can switch between several Active Body solvers with different settings and geometries with the same Simulator.
When you start the simulation, the Active Bodies solver will create a duplicate of your object and keyframe its Position and Rotation for every single frame.
A couple of things to note here:
- The ship is sinking - this happens because its Density too high. The Density of the Active Body can be tweaked from the original object's Phoenix FD Properties.
- The Center of Mass Gizmo is above the ship's deck, right at the base of the middle mast - the is causing the ship to tilt to the side. Instead of relying on the Active Bodies solver to guess the correct position for the Center of Mass gizmo, its position can be overriden from the Phoenix FD Properties of the original object and tweaked manually.
The original geometry's visibility will be set to Bounding Box, and the duplicate will be shown in the Viewport instead.
When tweaking the Phoenix FD Properties of an object, take extra care to select the original, source object, rather than the clone. Existing clones are deleted when a simulation is re-started, thus any changes made in the Phoenix FD Properties window of the clone are lost.
To tweak the Density of the active body, select the original geometry and open the Attribute Editor. Under the Shape node, open the Extra Phoenix FD Attributes roll-out.
You can either manually type an exact value in the Object Density parameter, or choose one of the provided Density Presets.
The Density of an object is its mass divided by its volume. Different materials have different densities, e.g. Wood is less dense than Water which allows it to float. Objects float above water because the upward force acting on them by the water (called Buoyancy) is stronger than the force of Gravity. How much an object sinks, and how far underwater it sinks before stabilizing depends on the object's density in relation to the density of the fluid it's floating over.
For example: the density of wood is 700kg/m3, or 70% of the density of water (1000 kg/m3). Therefore, assuming the object was a perfect sphere, 70% of it would sink below the surface, and 30% will stay above.
With a lower density, the object does not now sink entirely underwater.
The erratic spinning of the ship is caused by the incorrectly placed Center of Mass gizmo. Placing the Center of Mass somewhere close to the center of an object would make sense for a sphere but not for a ship which is usually bottom-heavy.
The Active Bodies solver will compute the Center of Mass of an object by looking at its volume. To simplify things, an assumption is made that all parts of the object have an equal weight.
In the case of a ship, however, this is not true. The masts and sails of a ship make up a large portion of its volume but contribute little to its total mass.
Select the Center Of Mass gizmo parented under the original object and set its Translate XYZ to (0, 0, 0).
The Center of Mass of a real object is a point in space where force can be applied to move the object in a straight line, without changing its orientation. For example: pushing a rectangular plank of wood floating over lake along its center of mass would move it in a straight line. However, pushing the plank along one of its corners would also cause it to tilt or rotate.
Under the Phoenix FD Properties of the original object, enable the Override Center of Mass toggle.
By default, this option is disabled. Running the simulation will reset the Center of Mass back to the center of the object.
Now that the Center of Mass is placed at the bottom, the ship is no longer capsizing.
It is clear, however, that the specified density is too high, causing the ship to sink too far below the surface.
There is no magic formula to determine what the density/mass of your Active Body should be. You can try looking up the real-world weight of an object similar to the one being simulated and use that as a starting point.
The behavior of Active Bodies is fairly consistent between low and high resolution simulations so setting things up at a low resolution, where the simulation is fast to compute, is preferable.
Select the original object and reduce the Density from the Phoenix FD Properties to make the ship lighter.
In this example, the Density is set to 250.
With a lower Density, the ship is no longer sinking.
Note that from the video to the right, it appears the ship is quite front-heavy. This is caused by the placement of the Center of Mass Gizmo. If required, you could take advantage of this behavior to simulate an unbalanced Active Body – to achieve this, you would place the Center of Mass Gizmo's to the side or exaggerate its front/back location.
In this case, the ship is in perfectly calm waters and should not be swinging so heavily up and down. Because it appears front-heavy, the Center of Mass should be pulled back.
In this example, the Center of Mass Gizmo of the original geometry is placed at [ -2.5, 0, 0 ].
The ship is now behaving as expected.
You may continue this setup by adding a Phoenix FD Wave Force with an Ocean Texture to generate waves in the simulator.