Adding variety in your characters animation
On top of visual (geometry and shaders) variety, for a shot to look realistic, you also need to add some variety in your character animation. The purpose of Golaem is precisely to help you add this variety as easily as possible, with the least possible input motions.
Depending on the available motions or your animation production capacity, as well as the type of shot and camera values, you will need to go more or less in deep in animation variety creation.
In this page, we will present the various way to create variety from the easiest one to the most in-details. If we forgot one, do not hesitate to let us know!
The basics: creating variety with one motion
Start Percent Min/Max
All Motions related behaviors have Start Percent Min / Max attributes. These attributes enable to choose which part of the animation a Motion Behavior will start playing. By default, Start Percent Min/Max are equal to 0, which means the animation will be played from the beginning.
However if you set Start Percent Min to 0, and Start Percent Max to 1, each character will pick a random timing in the animation to start playing. It means that instead of all playing the same animation at the same time, your characters will play different parts of your animation at a given time.
More details about Start Percent Attributes
A motion configured to start randomly between 0% and 100%
Speed Ratio Min/Max
These attributes enable to randomize the replay speed of your motions. Obviously if applied on walk animations, or if a too big / too small ratio is applied, you could end up with unrealistic animation. However, applying a small ratio range on a stadium audience motion for example can give you a bit of extra variety for a negligible cost.
By default, the speed ratio is equal to 1, which means the animation will be replayed at its original speed
More details about Speed Ratio Attributes
A motion configured to be replayed between 0.8x and 1.2x its original speed
Loading more than one motion in a Motion/Locomotion Behavior
Motion Behavior
A Motion Behavior can be configured with several motions at once. At runtime (and each time the Motion Behavior is restarted), it will choose an motion in the list and play it. It makes it very easy to load various styles for a given animation.
To load several motions at the same time, just double-click on the Motion Behavior in the Behavior Editor, and select the needed files from the file explorer.
Note: if some of your motions need different parameters than the others, then it is better to use multiple Motion Behaviors linked together with a Random Operator (see below).
4 styles of Sit-to-Wave motions loaded in the same Motion Behavior
Locomotion Behavior
When using animations with close enough styles, or when dealing with Locomotion Behaviors with no more than a neutral motion + another one, it is possible to load several motions for a given speed/orientation.
The Locomotion Channel attribute available on each Motion Clip
To do so:
- make sure the motions you want to randomize have similar orientation/speed (you can check the information displayed on their Motion Clip)
- set the same Locomotion Channel ID for each motion with similar orientation/speed
However:
- this cannot be used to randomize between a walk/run motion, as they do not have similar speed
- this cannot be used for complex locomotions. For example, if you have two set of motions A and B (walk animation + run animation for each one), nothing ensures that after choosing Walk A, the locomotion behavior will choose Run A. If mixing different animation styles, it may produce glitches in your animation. In this case, created two Locomotion Behaviors and choose between them with a Random Operator (see below)
Adding variety from the Behavior Graph
In cases where several motions cannot be loaded in the same Motion Behaviors, to choose different weights between motions, or just to make the randomization more obvious in the Behavior Graph, it is possible to link multiple Motion Behaviors to a Random Operator.
A Motion Behavior will be chosen randomly for each character
It is possible to change weights in the Random Operator attributes editor in order to have a motion played more often than others
Here beMotionShape3 will have a 50% probability to be played [ 2 / (2+1+1) = 0.5 ]
It is even possible to embed this setup in a loop, to play a random sequence of motions. See Stadium Behaviors Tutorial
Using blending to generate more diversity
To generate a maximum of variety, it is possible to rely on blending in order to play different components/layers of an animation with a different random combination of start percent / speed ratio and animation weights/ratios.
See Playing Motions in Parrallel to know how to play several motions at the same time
See Additive Blending Tutorial and Interpolated Motion Blending for more details about weights/ratio
Breathe and Clench Fists animations configured with some randomness (Speed Ratio, Start Percent or Additive Blend Ratio, and also directly in Behavior Graph with random delays) to obtain a different and unique animation for each character:
Adding procedural animation
Animation can be entirely created procedurally, or an existing animation can be offset by using the SetBone Behavior.
See Adding Procedural Variation to an Animation Tutorial for more details