Local Space SimulationΒΆ

It is often desirable to attach Flex components to fast moving objects, e.g.: the player character, vehicles, or controllers. These objects may experience extremely high, non-physical accelerations, that create a problem for the Flex solver, which will struggle to resolve fast collisions and large constraints errors.

One solution to this problem is to use a so called local-space simulation. By simulating Flex in the frame of a parent object we can control how much of the parent’s acceleration is passed on to the Flex particles. The forces due to an accelerating parent frame are sometimes called inertial, or fictitious forces, and are broadly divided into two categories: translational (linear) and rotational. The UE4 Flex integration allows controlling independently both types of inertial forces on particle emitters, clothing, or soft bodies.

The following steps are required to set up a Flex component for local space simulation:

First, make the Flex component a child of the object it should be parented to:

_images/LocalSpaceParent.jpg

Next, enable the Local Space simulation option on the Flex component:

_images/LocalSpaceComponent.jpg

Note: For particle systems, the same option can be found on the emitter inside Cascade.

Next, add a Flex Collision Component to the parent actor and enable Is Local Sim Parent:

_images/LocalSpaceIsLocalSimParent.jpg

Finally, set the linear and rotational inertial strengths. This controls how strongly the Flex component will “feel” the parent’s movements. If they are set to zero then the Flex object will essentially be teleported to the parent’s new location each time it moves. If they are set to 1.0 then the component will feel the entire inertial force and will act almost as if it wasn’t in local space at all.

_images/LocalSpaceInertialScale.jpg