A big difference and big advantage that this Moose has over most computer graphic animated characters, is that all the Moose’s motions are randomized.
And not just by a simple random number generator. We use a Gaussian random number generator. So, for every target that Moose moves to, the actual location where the motion ends, is not exactly the same each time, rather, it is somewhere “near” the “mean” value, according to a bell shaped normal distribution curve, as shown below.
Not only the final destination location is randomized, but the rate-of-movement to reach the target is randomized, and the time it stays at the target is Gaussian randomized. That is, all these parameters are specified with a Mean, a Standard Deviation, a Minimum and a Maximum value.
While moving from one location to a new target location, the movement isn’t linear. We use an “easing function” with a sigmoid curve shape, so that the motion starts slowly, accelerates, then deccelerates, and finally ends slowly. This is how real muscles behave, and it looks smooth and natural.
This means that every motion is created by an algorithm, not a pre-recorded animation. Our technique is therefore in the category of “procedural animation” methods.
As a consequence of this design decision, to control all movements with randoms driven by code, the building of the 3D model of the Moose, and its rigging with bones, has required some special care. In particular, it helps if all the moving joints are designed to rotate in just 1 plane.
If a motion like opening the Jaw is only to occur in the Sagittal plane, along Z-to-Y axis, then the X values at the start and end of the bone should be deliberately set to be identical.
For completeness, since this post mentioned random numbers, I’ll comment further that we are using an improved variant of the Mersenne Twister algorithm to create random values, (which have uniform distribution), then we pass those into a Normal distribution algorithm, to get the Gaussian values. We create a custom initial seed for the random-number-generator, by combining numerous sources of randomness. Exact details withheld, which may seem silly for a joking Moose, but I like my cryptographic grade random methods to stay private, in case I use them for more serious and sensitive plug-in abilities that the Moose might gain in the future.