Ground Adaptation FAQ

Golaem Crowd uses two modes of ground adaptation: by animation (on footprints), or on the particle.

Particle Ground Adaptation

The particle Ground Adaptation mode only adapts the height of the particle on the ground, whatever the character is and whatever animation is played. The height of the character's pelvis above the particle only depends on the skeleton's configuration (.gskm) and the entity type configuration.

More precisely, the height of the simulated pelvis is going to be the height of the skeleton's pelvis (see the Character maker's Skeleton Tab to change the Ground Height on a character) multiplied by the Skeleton Pelvis Height Ratio configured on the Entity Type:

Simulated pelvis height = Skeleton pelvis height (left) * Entity Type Pelvis Height Ratio (right)

Footprint Ground Adaptation

The footprint Ground Adaptation is a classical ground adaptation system that works by performing Inverse Kinematics on the limbs that have ground support sequences configured in the animations.

The ground adaptation mode is configured by the Ground Adaptation behavior, but it also depends on a number of other things that can be summed up by the following chart:

 

So to make sure the ground adaptation behave the way you need, please check that your scene is configured in a way that allows to use the desired ground adaptation mode.

Notice that when using skeleton overrides, it's important that each leg node in the character maker is correctly labeled as a leg.

Character Skeleton

Ground adaptation works with biped or multiped characters. This behavior adapts legs to be properly aligned and adapted on ground.

For biped characters, legs must be directly attached to the pelvis.


Legs must be attached to the pelvis or ground adaptation won't work. See Character Maker Skeleton Mapping Tab for more details

For multiped characters, there must be at least two legs connected to the pelvis. The other legs can be connected to any spine bone.


Multiped characters have at least connected to pelvis and others connected to spine bones.

Motions

When playing a Motion using the Motion or Locomotion behaviors, the animation engine uses the footprints defined on the Motion file to adapt Limbs of the character to the ground geometry. Footprints define for each Limb when the Limb is in contact with the ground during an animation.

To create or edit footprints on a Motion file, see Setting Footprints on your Motions

Terrain

A terrain node must have been created for ground adaptation to work.
Difference between navmesh and terrain : the terrain is the one used to place the feet.

Notice that only one Terrain can be used at simulation time. If there are several Terrains in your scene, you can decide which you one you will use in the Crowd Manager.

Motion / Locomotion  Behaviors 

The Motion and Locomotion behaviors automatically adapts characters to the ground provided all the above-mentionned prerequisites are fullfilled. Unless you want to change ground adaptation parameters, you DO NOT need an Adapt Ground behavior.

Navigation Behavior 

Provided the Terrain related prerequisite is fullfilled, the Navigation behavior automatically adapts the root height of the characters, even if not playing any motion with the Locomotion/Motion behaviors.

Cases where you should use the Adapt Ground Behavior include: 

  • particular characters or motions for which you do not have any footprint computed
  • characters not handled by the animation engine (e.g. animated by a Geometry Animation Behavior)
  • cancelling ground adaptation or modifying ground adaptation parameters when using a Motion or Locomotion behavior

The Adapt Ground behavior only sets a parameter which means it is usually enough to use it at the beginning of the Behavior Flow and stop it at once. However do not forget to set its stop trigger to "true" or it will never stop and block your behavior.

See the Adapt Ground Behavior reference page for more details.

In some situations, Characters created from one surface adapt themselves to another surface. This may happen when doing stadium simulations with tight terrain geometries:

To perform ground adaptation and fetch the height of the ground on which a Character should be adapted, Golaem uses the lowest Mapped Bone of the Character File. This bone position is used to perform a Y-based raycast and the closest mesh found will be used as ground height.

In the example below, the lowest mapped bones in the Character File are LeftFootThumb2 and RightFootThumb2. When checking where those bones are and how they project on the stadium geometry, it's noticeable that they project on the geometry in front (and below) and explains why the Character sink into the geometry:

The easiest way to fix this would be to increase the geometry width.

Ground adaptation is made to follow a ground that differs from the one the animation was made on, but when the slope's gradient is too high, it reaches its limits.

The limit is in fact a parameter in the Ground Adaptation behavior: the character won't put a step higher/lower than the current step's height +/- % of the limb's length.

This is configured in the advanced attribute of the Ground Adaptation Behavior:

The ground adapt behavior works by modifying root and spine bone height position according to ground. Thus having ground adaptation on falling or lying down characters will make the character flying above ground if their foots are set to be on ground.


The possible result of ground adaptation with falling of lying down character

There are two ways of correcting this issue:

  • Add a ground adaptation behavior and configure it to No Adaptation while the falling motion is playing