This page provides some useful tips for working with the Chaos Phoenix Active Bodies feature.
Overview
The Active Bodies feature in Phoenix allows for two-way interaction between scene geometry and the Phoenix 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 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 simulation. A speedboat simulation is a great example of this mutual interaction in action - the speedboat is heavily affected by 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 right click properties' Original Animation Influence option.
The Active Bodies simulation currently supports interaction between scene geometry and the Phoenix Liquid Simulator.
Interaction between Active Bodies and the Phoenix Fire/Smoke Simulator is not supported yet.
Setup Guide
A Phoenix 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 – used to specify the scene objects which will be converted to Active Bodies and to set some global options for the Active Body simulation.
- A Center of Mass Gizmo – automatically generated for each object when included in the Active Body simulation through the Solver.
To add an Active Body Solver, go to Command Panel → Create → PhoenixFD → Active Bodies.
Add your scene geometry to the Active Bodies list.
Finally, link the Active Body Solver to the Phoenix Liquid Simulator from the Dynamics rollout.
The Active Body Solver is separated from the Phoenix 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 Body 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 Properties.
- The Center of Mass Gizmo is above the ship's deck, right at the base of the middle mast - this is causing the ship to tilt to the side. Instead of relying on the Active Body Solver to guess the correct position for the Center of Mass gizmo, its position can be overridden from the Phoenix 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 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 Properties window of the clone are lost.
To tweak the Density of the Active Body, right mouse button click on the original object and bring up the Phoenix Properties.
You can either manually type an exact value in the Specify 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 Body 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 place it at the origin (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.
Right mouse button click on the original object and bring up the Phoenix Properties and 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 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 Wave Force with a Phoenix Ocean Texture to generate waves in the Simulator.
The Wave Force produces real simulated waves inside the Simulator. This is an alternative to the render-time displacement you can achieve when plugging a Phoenix Ocean Texture under the Displacement section of the Rendering rollout of a Simulator, which can't interact with submerged objects. The Wave Force is also driven by a Phoenix FD Ocean Texture and allows you to control how strictly the fluid will follow the pure ocean texture or how much freedom the fluid will have to splash and swirl around.