When you look closely at the playback, there seems to be something wrong with the part where the ball bounces on the ground. Instead of actually bouncing it seems to be going more in a wavy path.
The reason is, the way most of the 3D software create the intermediate frames of animation i.e. interpolate between two consecutive keyframes. The software assumes that you want to start slowly from a state of rest (from one keyframe) and come slowly to rest at the next.
In the real world, this is very common. Remember Newton’s laws of Motion? Anything that is in a state of rest or in motion remains in that state unless there is external force acting on it. This is also called as Inertia. Hence, it is much rare to find some objects suddenly changing the direction and much more common for this to happen over some time and smoothly. In fact, this is an important principle of animation called Slow in Slow out. In 3D this is called Ease in Ease out.
For more details on Ease in Ease out you can check the below module on Principles of Animation:
• When a car which starts from speed zero and accelerates to a speed, then decelerates to stop.
• But this is not the case with the bouncing ball. At the point of the bounce, when it hits the floor, the ball changes direction and speed from downwards to upwards almost immediately.
This would also be the case if a ball was hit by a bat or for that matter collision between any two objects. On the other hand, if there was a car going down a curving road, it may be moving at the same speed down the road, but constantly changing direction.
Hence for any specific animation that you are working on, you will have to figure out, for each keyframe, exactly how the value changes while coming to that keyframe and going out of it.
Any 3D software will allow you to change the way it interpolates from one keyframe to the next by manipulating the graph of that parameter, in this case, translation. This can be done in Graph Editor.
So, What are the types of transitions that you might want from one keyframe to the next?
Let us look at a few examples.
A car moving at constant speed in a straight line from point A to point B.
A stationary car starting from point A, accelerating and then slowing down till it comes to a stop at point B.
An animation where you would like to create a very staccato motion effect for an object, where it freezes for a few frames in one position before suddenly switching to the next one.
When you have more than 2 keyframes and you want the value to change as smoothly as possible between them (without needing to ease-in and ease-out).
Finally, more control - That you may want to create the exact way the value changes between keyframes.
Considering the above examples, you can change the graph of the ball from the wavy to something more like this.
But this is only in the upward (y - axis) direction.
A simple thumb rule when you are animating is to keep your keyframes limited to what is essential and delete those that are not needed. This often will help you control your animation.
Refer the Video for details:
As the video explains, in the (z axis), you can do this by deleting all keyframes between the first and the second last keyframe from where the ball starts rolling along the ground and make this part of the graph linear. This is because in this direction, there is no opposing force, the ball barely slows down until it starts rolling after which it naturally comes to a stop slowly (ease in).