Motion Prerequisites

Motion

There are two ways to animate a character in Golaem Crowd. Either through the animation engine (Motion Behavior or Locomotion Behavior) or thanks to a baked fbx/gcg animation through the Geometry Behavior. To convert an animation with the Character Maker and be able to use it within the Golaem Crowd animation engine, it should respect the following rules:

  • apart from the root bone of the skeleton, only joint orientations are supported and converted (ie. joint position and scale animations are not supported), except in the specific case of squash'n stretch (see below)
  • any animation rig can be used as soon as it always affects skeleton joint orientations (and position for the root bone)
  • when creating locomotion animations (walk, run, turn cycles...) intended to be used in a Locomotion Behavior, more prerequisites can be found here.

General Recommendations

Even if the previous list of prerequisites is enough to ensure a working animation, a few other things may help obtaining a better animation quality:

  • when using complex rigs to control the joint animation, make sure to bake the animation before converting it. Sometimes, when querying the orientation of the joints in the skeleton, Maya can return different value than what's displayed in the viewport.
  • pay attention to the Conversion Quality indicators in the Character Maker: if the curves turn red, it means that the animation will not be replayed correctly in the simulation.

Squash'n Stretch Specifics

At each frame, only one ​Squash’n Stretch ratio per auxiliary/extension bone chain is computed, based only on the positions of the joints which are parts of the bone chain. So for all the joints consisting of the same bone chain, scales or position translations must be uniform in time, e.g. must vary in the same way. For instance, if considering stretch on the arm of a human morphology (made of an arm bone and a forearm bone):

Right arm OK, as both forearm
and arm bones are growing in
the same way at the same time

Right arm not properly handled,
as arm bone is first growing/reducing before forearm bone is doing so

The amount of squash/stretch associated with a bone is computed considering the distance between this bone and its child. If a bone has several children, then all the distances from this bone to its children are taken into account to obtain a Squash’n Stretch average ratio. So the distances between a bone and its children must vary in the same way. For instance, if considering the hand of a human morphology (a hand bone with five finger bones):


Right hand not properly handled, as index finger is stretching whereas other fingers are squashing

The issues described above generally occurs when:

  • setting animation keys to scale several bones of a same bone chain, but not at the same frames;

  • using non-uniform scale on a bone that have several children bones;

  • using complex rigs to control the joint animation (that may cause minor but chaotic variations in the distances between a bone and its children bones).