As indicated in my
previous
post, we continue to make very good progress with the Model Editor,
and it looks as if we will not only meet our technical goals, but we can
even achieve more than what was originally planned:
While the Model Editor itself is almost complete now, we've also taken the
opportunity to improve the underlying model code.
Our latest feature addition was support for
animation
channels.
Channels allow animations to play only on a subset of the model joints, so that
multiple animations can play on different parts of the model at the same time.
For example, you can play a walking animation on the legs, an animation for
swinging the arms on the upper body, and an animation for moving the eyes on
the head.
At the same time, it makes sense to consider
animation
blending.
Blending means that you can blend from e.g. a "standing idle" animation to
"walking", or from "walking" to "running", with an elegant and smooth
transition of the legs from one action to the next. Without blending, the legs
used to pop from standing still to extended for running with no transition at
all. Blending is also fully compatible with channels, that is, you can set
different blends for different channels.
Finally, channels and blending give rise to
animation
poses.
The pose of a model is the result of the combined application of a set of
animation sequences at given frame numbers playing in given channels, possibly
blended. Poses are especially of technical interest, because they encapsulate
all related data and keep it separate from the main model definition (which is
"pose agnostic"), thus improving both the code clarity and design, as well as
the capability for caching pose-related data.
Once complete, all this functionality will be accessible both from C++ game
code as well as from map scripts.
Much of the above has been implemented already, and we're currently focusing on
completing the rest.
Implementing this is a lot of fun, too, and now in fact I'm looking forward to
get back to work!