Crowd Animation
Overview
Crowd members can be animated in two ways
- By setting animation sequences directly on the crowd member themselves 
- By using an Animation Blueprint (ABP) 
These techniques can be used either together or in isolation.
Animation Data Setup
In order to use an Animation Blueprint with the crowd it must first be configured to be compatible. More details on ABP setup can be found here.
Both animation inputs methods are configured via setting the AnimNameToSequence map.
This can be done in one of two ways:
Via the render target pawn
Where possible, the animated crowd obtains data from the LOD0 render target actor class, e.g. the skeleton and the anim instance. We also enable it to provide the AnimNameToSequence map, so it can specify what anim sequences it needs to support.
If your LOD0 class implements the CrowdAnimationProviderInterface (this is done automatically for children of the M2_CharacterBase), then it will expose a GetAnimNameToSequenceMap function, which can provide the list of anim sequences.

BP_M2Example_PlayerCharacter. It provides the CrowdAnimNameMap, mapping e.g. the name Clap to a "clapping" anim sequence. This list enables our Emotes animations.Via the Crowd Data
If your animated crowd provides a Skeletal Animated Crowd Data data asset, you can fill in the AnimNameToSequence map there.

In the above example, an ABP is connected via the Crowd Anim Instance parameter and additionally a list of named sequences are supplied in the Anim Name to Sequence list.
Selecting An Animation Source On A Crowd Member
Animation setup for each crowd member is specified by configuring properties within its FAnimatedCrowdMemberState . 
Animation selection is performed as follows
- If a crowd member has - FAnimatedCrowdMemberState::AnimStatespecified- The named animation will be play back on that crowd member 
- If a name isn't specified ( - NAME_None) or it isn't found in the- Anim Name to Sequence list, then we go to the next step and check the ABP
 
- If a crowd has an ABP specified - FAnimatedCrowdMemberState::AnimFloatParameterswill be updated for the crowd member - these contain the anim vars used to drive things like ABP state logic
- Crowd member will play back ABP driven animation 
 
- If there was no animation sequence set directly and ABP wasn't present - Crowd member will be set to ref pose and will render, but not animate 
 
Last updated
Was this helpful?

