This page provides information on the Active Bodies component.
Chaos Phoenix is a dynamics simulator, which enables you to create fluids like liquids and gases, as well as make objects such as a ship or ice cubes float in water. It can even simulate waves that can carry these objects around, or wash them away.
The Phoenix Active Bodies feature makes this possible, by introducing Rigid Body Dynamics for active body objects.
To use Active Bodies, you’ll need to create an Active Body Solver component, and specify the scene geometry which will partake in the Active Bodies simulation.
Then, in the Simulator's Liquid rollout, enable the Active Bodies parameter, and specify the Active Body Solver node.
Note that by default, all geometries in the scene are Solid and act as obstacles to the Phoenix fluid simulation.
However, unlike Solid obstacles, which stay in place and simply obstruct the movement of the fluid, Active Bodies go further by enabling objects to be pushed by the fluid, or to float over a liquid surface.
Just as the movement of Solid objects can be animated, the movement of Active Bodies can also be animated as well. This way, an Active Body can both follow a trajectory, and at the same time get pushed by the fluid.
You can balance between the influence of the animation and the fluid using the Original Animation Influence parameter, located in the Phoenix Node Properties attributes rollout, for any Active Body.
You can also set the density and other Active Body properties in the Node Properties attributes rollout as well, for each Active Body object.
Note that the Active Body Solver node sets up global simulation parameters, which affect all Active Body objects in the solver's Interaction Set. This is in contrast to the Phoenix Node Properties attributes, which are unique for each Active Body.
As a result, you can set up several Active Body Solver nodes, each with their own solver settings and set of Active Bodies, so that you can have different rigid body behaviors for each set. Note that only one solver node can be specified in the Simulator's settings, however, so to use multiple you would need to set up an additional Simulator for each solver.
The Active Bodies simulation currently supports interaction between scene geometry and liquid simulations.
Interaction between Active Bodies and fire/smoke simulations is not supported yet.
Active Body Solver
Solver | solver – Specifies which solver will be used for the Active Bodies scene interaction.
Bullet – Uses the Bullet solver for the Active Bodies interaction. Allows for mutual interaction between Active Bodies.
Basic – Uses the legacy basic solver for the Active Bodies interaction. This solver does not support mutual interaction between Active Bodies, but does support Air Drag.
Interaction Steps | timestep_mult – Supported only when the Solver is set to Bullet. Determines how many calculations for the Active Bodies are performed between two consecutive fluid simulation steps - e.g. if the Steps Per Frame option of the fluid Simulator is 4 and the Interaction Steps of the Active Bodies are 10, then the rigid body simulation will do 40 steps per frame. Increasing the value will make the Active Bodies move smoother and increase the overall accuracy of the collisions at the expense of simulation time.
Fluid Density Multiplier | interaction_mult – Allows you to override the density of the simulated liquid. By default, 1.0 is considered 1000 kilograms per cubic meter (the density of water). Increasing this value will cause the Active Bodies to appear lighter and sink less inside the fluid simulation, and vice versa.
On Earth, an object floats above water because of two forces: Gravity pulling it down, and the Buoyancy of the liquid pushing it up. Depending on the densities of the liquid and the floating object, those forces balance out and the object either sinks (if denser than the liquid it is submerged in) or floats.
Affect by Foam | affect_by_foam – Controls how much the Foam particles will affect the Active Bodies - if set to 1.0, foam particles will push the bodies with the strength applied by the liquid particles. For example, a wave made mostly of foam would accelerate active bodies significantly. On the contrary - if this is set to 0.0, the foam would not affect the movement of the active bodies at all. Lower values of the Affect by Foam tend to work better when the simulation has a lot of foam particles, while higher values might accelerate the active bodies too much.
Collision Margin | collision_margin – Supported only when the Solver is set to Bullet. You can lower this parameter if you have groups of Active Bodies which are in contact with one another and you want to keep them still. If the value is too high, the bodies might start pushing apart for no apparent reason. On the other hand, if the Collision Margin is too low, the simulation will slow down, and also fast moving bodies might start passing through other bodies. If the latter happens and you still need the Collision Margin to be low, you can prevent bodies from passing through one another by increasing the Interaction Steps.
Air Drag | simulate_air_drag – Applies a simple Drag force to slow down the translation and rotation of the Active Body. This option helps stabilize the motion of objects in the simulation. The Air Drag will affect the simulation only when the Basic solver is used.
Jammed Walls as Obstacles | use_jammed_walls – When enabled the Active Body Solver will use the Simulator's Jammed Walls as obstacles for the Active Bodies.
Interaction Set | interactionSet – Determines which objects will be processed by the simulation. By default, all objects in the set will be treated as Active Bodies. Scene geometry not preset in the Interaction Set will be ignored by the Active Body Solver. Enable the Exclude List option to reverse this behavior.
Exclude List | interExcludeList – When enabled, all objects in the scene will be considered Active Bodies unless they are added to the Interaction Set.
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 e.g. a ship, 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.
In such cases, enable the Override Center of Mass option on the Phoenix Node Properties of the original object and tweak the Center of Mass Gizmo.
Create CoM gizmos – Creates a Center of Mass Gizmo for a scene object. Use this option if you accidentally deleted the Center of Mass Gizmo or would like to reset it to its automatically-computed position.
Destroy CoM gizmos – Deletes the Center of Mass Gizmo for a scene object. Using this option is the same as selecting and deleting the gizmo from the Scene Explorer window.
Auto-create CoM gizmos | autocreate_dummies – When enabled, a Center of Mass Gizmo is automatically generated for an object when added to the Interaction Set. The Center of Mass gizmo is linked to the object in a parent/child hierarchy.
Auto-delete CoM gizmos | autodelete_dummies – When enabled, the Center of Mass Gizmo is automatically deleted for an object when removed from the Interaction Set. The Center of Mass gizmo is linked to the object in a parent/child hierarchy.
Ground Plane Object
Use Ground Plane | use_ground_plane – Enables the calculation of a Ground Plane geometry for the Active Bodies simulation. The Ground Plane is infinite in size, and its orientation is based on the rotation of the specified Plane geometry.
Set Selected Object as Ground Plane | ground_plane – Specifies the Ground Plane geometry. The Solver expects a Phoenix FD menu → Create → Active Bodies Ground Plane object. Other object types will not work with this option.
Ground Friction | ground_friction – Controls the amount of friction between the Ground Plane and the Active Bodies. Low friction will allow objects to slide across the ground plane. High friction will slow down both the objects' rotation and movement once they come into contact with the ground plane.
Ground Elasticity | ground_elasticity – Controls the bounciness of the Active Bodies when they hit the Ground Plane.