Making your motions loop
When creating motions for crowds, it is always better when they are looping (either because they must be repeated, like walk cycles, or to be able to start them at any point in time to generate variety, like a really long ambient motion in a stadium for example).
Obviously motions generated by Motion Capture are never perfectly looping. However Golaem offers some tools to make them loop when converting them to Golaem format.
Finding the best part of the motion to create a loop
After importing the whole animation, the Crop Motion panel will display a curve showing how a given frame match with others.
The green/higher the curve, the better the frames match. You can also check the Loop match value at the left hand side of the curve to check which value is best.
Move the first frame slider to check how other frames match with the frame you select.
Then move the last frame slider and check the values of the higher points of the curve to find the best match (the lower the value, the best match it is. 0 is a perfectly looping motion).
Note that depending on the number of frames, when you move the sliders they may move two (or more) frames by two frames. In this case you can clik in the first or last frame input field, and change values using arrow keys, to get the best possible frame.
When you found the best frames, click on the Apply button. The values in the Edit Motion panel just below are adjusted based on the selected motion part.
Making the motion loop
After cropping the motion, it is still not looping, we now needs to fix two things:
- Orientation / Position offsets
- Difference in animation posture of the first / last frames
Fixing offsets
The CharacterMaker displays various properties of the imported/cropped animation
- Position Offset: difference in position between first/last frame
- Orientation Offset: difference in orientation between first/last frame
- Moving Direction: the direction in which the motion is heading (most of the time it corresponds to the motion Velocity except for motions like strafes)
Edit Motion Panel after motion import
In our example, we are extracting a walk cycle from a longer walking animation.
You can see that there is a big position offset on the X axis (because the character is walking forward), but also small offsets in Y/Z axis.
If you do not correct this, the character will not be walking straigt in front of him, but slowly drifting on the side and going downward (although this should be corrected by ground adaptation). So you should set Y / Z position axis to 0, to keep only the X axis difference.
Concerning the orientation offset, we want no offset at all for the character to keep going straight. So change all values to 0.
Edit Motion Panel customized to fix offsets
Here the Moving Direction is correct because the vector point in the X axis direction, but sometimes you may also need to edit it to remove the Y/Z components.
Blending
Then you need to choose when the blending between first/last frame will occur (and when the position/orientation fix will occur as well if you checked the "Fix Position/Orientation offset on blending frames only).
If you check the "Looping motion" on the CharacterMaker locator attributes, and scrub the timeline around the last selected frame, you will be able to see the difference gap between frames which needs to be fixed
Offset after the cropped part of the source motion
But if you want the Position/Orientation offset fix to be distributed along the whole motion duration, you can uncheck "Fix Position/Orientation offset on blending frames only"
Checking the result
If you are going to use this motion in a Locomotion, and even if you checked it using the Looping attribute of the CharacterMaker Locator, we recommend testing it in a simple scene with a Motion Behavior to verify everything is perfect.