OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

cgmo-webcgm message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [cgmo-webcgm] IsoDraw's declarative animation


Hi,

I just finished giving myself a refresher course on SMIL 2.1 and SVG animation.  As Benoit implies, anything that can conceivably be animated is in fact animatable in SVG, there are many ways to control it (discrete, interpolated, smooth-time-paced, additive, accumulative, ...), and any arbitrary number of animations on the same object or multiple objects can be synchronized in a plethora of ways.

PTC's tech-illustration animation set is interesting.  This may be premature to ask, but I'm curious about some more details...

At 05:02 AM 9/7/2007 -0400, Weidenbrueck, Dieter wrote:
[...]
I want to add a couple of remarks:
 ...
To support animation in CGM, we use an XCF with a proprietary namespace to declare the animation details.

Language:  Looking at Benoit's expression language, I was wondering about that and a couple of related detials.  So Benoit is using a pseudo-code to describe the effect once the XCF is loaded?

Targeting:  how do you target a particular object for animation?  There are a couple of possibilities:

1.) simplest:  the animation elements (or attributes) must be the children of their target object (or attributes of it).

2.) most flexible:  there is an addressing mechanism to attach animation elements/attributes to any arbitrary object.

SMIL/SVG support both of these methods, #1 being the default.  I'm interested in how your model relates to SMIL/SVG, for obvious reasons.  Benoit also wrote:

It's not SVG animation; although we did look at it, there are some similarities with SVG, but there's also several differences. [...] Although there are some differences between SVG and our model; it is close enough to support (most of the animation) in import/export filters. Please see exported SVG file attached.

I assume, then, that you able to map *everything* in your model onto SVG?  I.e., for any animation definable in your model, it is exportable as SVG?

Regards,
-Lofton.

Once the XCF has been loaded, there is one call in IsoDraw to search for these attributes and convert them from simply text strings into our animation sequences. In these cases we expect that the XCF has been exported from IsoDraw, and not hand-written by a user like a DOM script.
 
Regards,
Dieter


From: Bezaire, Benoit [mailto:bbezaire@ptc.com]
Sent: Donnerstag, 6. September 2007 21:30
To: cgmo-webcgm@lists.oasis-open.org
Subject: [cgmo-webcgm] IsoDraw's declarative animation

Hi All,
 
Here's an attempt at explaining what we have done in IsoDraw/IsoView. It's not SVG animation; although we did look at it, there are some similarities with SVG, but there's also several differences.
 
In SVG, just about any attribute/property can be animated. The values can either be interpolated over time; or simply set a new value (discrete animation) for a certain duration.
 
Our animation model is as follows, it's compose of three items: Sequences, Steps and Atoms. We think it adapts well to animations found in technical illustrations. One major difference between our approach and the SVG approach is that we put the duration on the Step; so all the Atoms within a Step have the same start time and duration. SVG puts the duration at the Atom level. This is done because animation of technical illustration is often work in 'states'. Ex: disassembly steps; interactive wiring diagrams states, training situations, etc... Having to specify a duration and start time for all Atoms is time consuming for users.
 
A Sequence has the following attributes:
- a name
- a start time
- a flag to specify if the sequence is to be started by a remote event (instead of time based).
- a disabled flag (don't know the specifics of that?)
- a repeat count for the sequence.
- a restore flag (i.e., what to do once the sequence is done; leave as is, or restore to original state).
Note: there is no end time or duration time on a Sequence.
 
A Sequence is composed of one or more Steps, a Step has the following attributes:
- a name
- a flag to say if the Step is animated over time or if it is 'set' (instantaneous change); if it's animated over time, the step has a duration value.
 
And Steps are composed of 0 or more Atoms. Note that a Step with 0 Atom is a 'pause' Step. The are different types of Atoms; all with their own specific attributes:
- Rotate Atom, Move Atom, Scale Atom, Fill Atom, Stroke Atom, Visibility Atom etc... Note: we wanted to do more but ran out of time, there are use cases we don't cover yet. Ex: animating points of a polyline/polygon.
 
Most of the Atoms have a start and end value. Here is an example (a gauge/indicator that rotates to the left, pauses, then rotates to the right)
Sequence
name: mySequence
start: 1 second
  Step
  name: towardsLeft
  duration: 2 seconds
    Atom(Rotate)
    start angle: 0
    start center point: 200, 250
    end angle: 20
    end center point: 200, 250
  Step
  name: myPause
  duration: 3 seconds
  Step
  name: towardsRight
  duration: 4 seconds
    Atom(Rotate)
    start angle: 0
    start center point: 200, 250
    end angle: -70
    end center point: 200, 250
 
Although there are some differences between SVG and our model; it is close enough to support (most of the animation) in import/export filters. Please see exported SVG file attached.
 
If the group wants to, it can discuss this topic during the next few telecons. I'm back at work on Sept 24th.
 
Hope this help the group understand what we worked on in our last dev cycle.
 
Regards,
Benoit.
 
 


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]