Particles

Radius

All dynamic objects in Flex are made up of particles. For efficiency, all particles have the same radius, which is specified for each container. The radius is one of the most important parameters for the simulation because it specifies the maximum interaction distance between particles.

Before authoring assets, it is best to decide on a suitable radius. Typical values are 5cm-10cm, although smaller and larger particles may be useful in some situations. The radius should be chosen to reflect the desired resolution of the simulated materials: the smaller the radius, the higher the resolution (and generally the more expensive the simulation). A radius that is too small can also result in tunneling (particles passing through each other), so a smaller radius generally requires a smaller time-step (or more sub-steps).

The radius has a different meaning for solid and fluid particles. For non-fluid particles, the radius represents the distance that particles will try to maintain from each other. For fluid particles, the radius specifies the “smoothing radius” of SPH (Smoothed Particle Hydrodynamics) computation.

Phases

Something you will see on many Flex objects in UE4 is a Phase property. All particles in Flex have a phase attribute that controls how they behave and how they collide with other particles:

_images/phase.jpg
  • Auto Assign Group When enabled (default), each particle in the object will be automatically assigned a unique group identifier (just a positive number). The collision rules in Flex are that particles of different groups will always collide with each other. By default particles of the same group will not collide with each other. For example, if you are creating a particle-based rigid body then you typically do not want the internal particles to collide with each other. By assigning the particles to the same group, they will ignore each other.
  • Group If Auto Assign Group is disabled then this property can be used to manually set the group id for the particles. This allows you to create different objects with the same group identifier, for example, if you want to disable collision between multiple objects.
  • Self Collide Particles with the same group id will not collide with each other by default. If this flag is ticked then particles of the same group will collide against each other. For example, if you want to make a piece of clothing collide with itself then this flag should be set.
  • Ignore Rest Collisions When self-collision is turned on, particles with the same group id will collide. This can cause a problem when particles overlap in the rest pose. A good example is a cloth mesh where the neighboring particles radius is greater than the edge length. This leads to unwanted internal collisions that often cause the surface to look as if it’s crumpled as the collisions fight the constraints. This flag will test if particles overlap in the rest configuration and if so, will ignore collisions between them at run time.
  • Fluid Any particle in Flex can be made to act like fluid (even ones that belong to clothing or rigid objects). To make particles behave as fluid, this checkbox should be enabled. Note that the Fluid checkbox also needs to be enabled on the container.