Character Controller

A Character Controller Behavior (beCharacterController) is a Behavior which creates a special Kinematic object in the physics simulation which can be used to perform ground adaptation and obstacles navigation on physicalized entities / Crowd Rigid Bodies. This Behavior relies on the NVidia PhysX Character Controller and only knows about the objects which exists in the physics world.
A Character Controller Behavior in the Behavior Editor

Example of a ground adaptation performed by a Character Controller Behavior

Even if Character Controllers are physicalized kinematic objects, those can not be used to detect Collisions in the Physics Collision Trigger. On the other hand the relative entity can be physicalized using the Physicalize Behavior.

As this Behavior can be used to perform Ground Adaptation, it is usually advised to disable the Golaem motion-based automatic ground adaptation, using an Adapt Ground Behavior and set its Adaptation Mode to "No Adaptation".

Creation

  • Behavior Editor / Behavior Library:
  • Golaem Menu: Crowd Behaviors / Behaviors / CrowdBeCharacterController Node
  • MEL command: glmCrowdBeCharacterControllerCmd;

Configuration

A Character Controller Behavior defines the following specific attributes. For common attributes see Behavior Common Attributes.

Shape Attributes

Shape Type Collision Controller shape type, can be Box or Capsule
Size If the Shape Type is set to Box, it specifies the length, width and height of the shape
Radius If the Shape Type is set to Capsule, it specifies the radius of the shape
Height If the Shape Type is set to Capsule, it specifies the height of the shape
Step Offset Defines the maximum height of an obstacle which the character can climb. A small value will mean that a Box-shaped Character Controller gets stuck and cannot walk up stairs etc, a value which is too large will mean that the character can climb over unrealistically high obstacles.
Scale Shape If checked, the Size, Radius, Height and Position Offset attributes will be multiplied by the scale of the Entity (defined in the Entity Type node)
Position Offset Offset between the Character Controller shape and the Root bone of the Entity (by default, the Capsule or the Box are centered on the Character root bone)
Scale Coefficient Additional scale to apply on the Character Controller
Volume Growth Scale factor of space around the Controller which will be cached to improve performance.

A convenient way to check if the Shape is conveniently sized and placed is to used the Display Collision Shapes option of the Physics Locator.

Rigid Body Attributes

Bounciness Restitution coefficient
Static Friction Friction when the Character Controller is at rest
Dynamic Friction Friction when the Character Controller is in motion
Density Density

Collision Filters Attributes

Enable Collision Filters If checked, the physics objects described in the filters will NOT be taken into account in the collision process
Filter Physics Mode Collisions will not be detected with physics parts that are of the given physics mode (see the Physicalize Mode parameter of the Physicalize Behavior for more information on physics modes).
Filter On

This allows to filter the physics parts which will not be detected.

  • If an ID is selected, the ID and operator for the filter should be filled in the 'Filter Operator' and 'Filter ID value' attributes
  • If a color is selected, the color and operator for the filter should be filled in the 'Filter Operator' and 'Filter Color' value
 Filter Operator Comparison operator (equal, greater than…)
Filter ID Value ID for the filter (to see how to set an ID, check the EntityType , the Crowd Rigid Body and the Physicalize Behavior).
Filter Color Value Color for the filter (to see how to set a color, check the EntityType, the Bone Physics Properties part of the Character Maker, and the Crowd Rigid Body).
Collide With Other Character Controllers If checked, the other Character Controllers of the scene will be taken into account in the collision process

Advanced Attributes

Contact Offset Specifies a skin around the object within which contacts will be generated.
Climbing Mode Controls if a Character Controller slides or not on a non-walkable part. This is only used when Slope Limit is non zero.
Slope Limit The maximum slope which the character can walk up.
Max Jump Height Maximum height a jumping character can reach. This is only used if Invisible Wall Height is non zero
Invisible Wall Height Height of invisible walls created around non-walkable triangles