Re: Proposal: Fix frozen to-animation

Dear Olaf,

Thanks very much for your feedback will I'll respond to below.

2011/3/25 Dr. Olaf Hoffmann <Dr.O.Hoffmann@gmx.de>:
> Can you provide a formula for what you think, the frozen value
> of your variant of a to-animation should look like?
> Because to-animations are not additive, it is not obvious, how the
> formula for another behaviour should look like. The current rule
> for the frozen state seems to be the simplest variant for me.
> SMIL provides a formula for each time of the to-animation.
> To define another variant, we need something like this to compare.

The point of this change is not to add a variant but to remove one.

For SMIL Animation the formula given is:

f(t) = v_cur + ((v_to - v_cur) * (t/d))

Essentially, we just want to continue applying that formula when the
animation is frozen. Unfortunately this is complicated by the fact
that v_cur is defined as "the current base value (at time t)" which is
inaccurate because:

(a) it should refer to the underlying value, not the base value (the
base value refers to the target attribute's un-animated value whilst
the underlying value refers to the result of the animation sandwich up
to this point).

(b) t is defined as "a time within the simple duration (0 <= t <= d)"
but clearly we don't use a time within the simple duration when
determining v_cur. (See SMIL 3.0 which divorces t from the underlying
value)

For these reasons it's hard to provide an accurate formula using the
same terms as SMIL Animation. What we really want to say is that the
given formula continues to apply even when the animation is frozen. It
is the same formula. Of course, as with all frozen animation, the
value of t will remain fixed, but v_cur should continue to change.

These inaccuracies have been addressed in subsequent editions of SMIL
and for SMIL 3.0 we can simply drop the f_f(t,u) = v_f formula[1] to
get the desired result.

> I cannot see the inconsistence within the definition of to-animations.
> Because it is a specific case, it is described in detail. There are still
> a few things in SMIL, which are not consistent with itself or with
> previous versions of SMIL, we alreadey tried to avoid this in SVG tiny 1.2
> for example for specific cases of frozen discrete animations.
> But to-animations look ok for me in SMIL.

There is additional prose in SMIL Animation and an additional formula
in SMIL 3.0 specifically to describe behaviour for frozen to-animation
other than what naturally falls out of the model. This is the kind of
inconsistency I am concerned about. I understand that this is special
behaviour but I cannot see justification for such special behaviour.
It seems less useful and less intuitive that what would naturally fall
out of the model if such formulae were removed.

>From an implementation point of view, my further concern is that the
currently specified behaviour is not implemented correctly anywhere
and nor will it ever be. Many implementations rely on a distinction
between timing model and animation model[2], a distinction encouraged
by the SMIL specification itself which defines the two in separate
chapters. My implementation experience is that implementing this
correctly requires undesirable coupling between the two models. The
proposed change allows the distinction between timing model and
animation model to be preserved.

Best regards,

Brian Birtles

[1] http://www.w3.org/TR/SMIL/smil-animation.html#animationNS-ToAnimation
[2] See, for example,
http://www.ludicrum.org/plsWork/papers/BatikSMILsupport.htm

Received on Tuesday, 5 April 2011 02:00:43 UTC