- From: Shane Stephens <shans@google.com>
- Date: Fri, 9 Aug 2013 07:10:05 +1000
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: "public-fx@w3.org" <public-fx@w3.org>
- Message-ID: <CAGTfzwT4_-cXE1LfVtFPaxpmxEX-VjmZKiowhbFzdUDM7baTnQ@mail.gmail.com>
Hi Dirk, I think you might be misunderstanding what Brian is proposing. Web Animations has Timelines, which provide linear time to animated content. It is impossible to apply timing functions to Timelines - animations are always linearly related to one another. When you say "At the end the UA needs to guarantee that it can calculate all these mappings in time to be a real time system. And linear mapping is just the easiest and simplest way to map time lines", well that is precisely what we have right now, and nobody is proposing that this should change. The animated content which attaches to Timelines consists of Timed Items. Timed Items are basically the core timing model abstraction. A Timed Item gives you some basic abilities, like repeating playback of content multiple times (iterations), delaying the onset of content (delay), etc. One of these abilities is to apply a timing function to the content. Timed Items are hierarchical - you compose an animation by building very simple pieces and defining how they relate to each other. Leaf nodes of this hierarchy relate a single set of keyframes to a single target. The leaves are related to each other using Par Groups ('these things all happen together') and Seq Groups ('these things happen in sequence'). Timing Groups *are* animations - from the perspective of the Timeline they are the same class - it's just that they're animations which are composed of smaller animations. In particular, an animation defined by a Timing Group is a unit - you can't pause parts of it independently and it is intended to represent a single thing. What Brian is proposing is that non-leaf-node Timed Items shouldn't be allowed to have timing functions, but leaf node Timed Items should. I think this makes the model much more complicated, i.e. actually harder for people to understand. It also takes away some nice features. For an example of the complication: "I have two things that I can play, by calling timeline.play(thing). This one moves this box to the right, and this other one moves these two boxes towards each other. How come I can ease one of them but not the other?" The point that was raised multiple times is that the first level does not > need to address all possible use cases that authors do or may have. Instead > it is important to have a consistent model and consistent implementations. > For authors this is actually a lot more important than a rich and > "complete" model. I also have doubts that this is an issue for one > implementation. The mapping must be done in all implementations that follow > the spec. It sounds reasonable to defer certain features if they can not be > implemented initially. If that causes inconsistencies in the model, we have > to address these. > I'm all for the removal of extra functionality. I've supported (and in some cases pushed for) the removal of templates, state machines, the simplification of timing functions, the removal of media integration, massive simplifications of the way timed items work, and a host of other changes that reduce the model complexity and surface area. I'm taking a stand with this one because I think it makes the model harder to understand and bigger. I also completely disagree about the implementation complexity. Furthermore, Brian isn't talking about just deferring this feature. He wants to remove it because he doesn't like the implications timing functions have on the event model. Unless we defer the event model at the same time, we're very unlikely to be able to reintroduce timing functions later. Removing it from version 1 of the specification also breaks a single concept into two (Timed Items now become AnimationTimedItems and GroupedTimedItems, or something). Once code relies on this, there's no way we can go back. Cheers, -Shane
Received on Thursday, 8 August 2013 21:10:33 UTC