[x3d-public] STEP interpolation, was Blender > Exporting rig transforms to HAnim?
Andreas Plesch
andreasplesch at gmail.com
Wed Jul 19 20:39:57 PDT 2023
On Wed, Jul 19, 2023 at 9:17 PM Michalis Kamburelis
<michalis.kambi at gmail.com> wrote:
>
> 1. There's a good reason why all 3 things I listed (Blender, most glTF
> viewers, Spine) behave this way:
>
> In practical applications, you can easily have a model with >100
> joints, and >20 animations. When a 2D / 3D artist wants to add a new
> animation, e.g. "wave a hand": The author wants to deal with (animate)
> only the few joints of that hand that are important for this
> animation. The author doesn't want to explicitly set keyframes on all
> the unused joints (that would be both unnecessary work, and also make
> further edits of it difficult -- when the initial pose changes, or new
> joints appear).
>
> Hence the logic "what to do with joints that are not touched by
> this animation" is left to the animation player. Which can do anything
> it wants -- and Blender, glTF viewers, Spine do "use the initial joint
> transformation" by default.
I think an X3D based animation viewer could do the same if an author
wants that. It is not hard to store coordinates for an initial pose in
a CoordinateInterpolator and route it to the shape when desired.
glTF does not prescribe how to actually use the frame transform data
for animations. It is up to a scene author to determine how fast it
should play or how it should be combined with other animations. It
sounds like the default of using the initial joint transform could be
a side-effect of resetting the whole scene in some cases when a new
animation is loaded. Generic glTF viewers just want to show something
which uses the animation. The expectation still is that when the glTF
is actually used ( for example to showcase a product ) the author
needs to take responsibility that the animation is played the way the
author intended.
I think it would be interesting to have the ability in X3D to get
weighted averages of multiple interpolators for mixing and blending
animations. I think that how blending animations is typically done ? A
MixerInterpolator node which accepts children interpolators of the
same type with input weights, computes the weighted average of all at
the same input fraction and provides that as value_changed. Perhaps
that is in the domain of a Script but seems generally useful for many
applications..
Regards, Andreas
More information about the x3d-public
mailing list