AnimationMorph

Jim Benson jb at speed.net
Sun Feb 17 18:22:19 UTC 2002


> Jim --
>
> Why not just use holders in etoys? This is the way children do
> animations in Squeak ....
>
> Cheers,
>
> Alan
>

Uh oh, busted. This is a tough room. After Tamikas tutorial, my position is
indefensible, but ...

There are a couple of reasons for the animation morph. These animations are
part of a larger sequence of concurrent animations that I run at a
conceptually lower level of the system. For example, things like window
close/collapse/move, and Project thumbnail animations that require things I
couldn't easily provide with etoys based scripts. (Thinking about it, that
probably means that *I* don't know how to add the animations with etoy
scripts into the lower level. Maybe I should get some of those smart
children to do that for me ;-)

This code is a pared down version of the stuff I use, which uses completion
callbacks and such. It also scales the animation to fit the extent of the
morph bounding box. Here's where this animation stuff comes from:

What I've been playing with are the ideas of  Craig Reynolds 'Steering
Behaviors For Autonomous Characters'.

http://www.red3d.com/cwr/steer/

Most of this material is the low level "Turtles, Termites, and Traffic Jams"
StarSqueak stuff, but from a slightly different perspective.

You hit a collapse box on a SystemWindow (which I don't normally think of as
part of the etoy world). The window 'collapses' into a thumbnail. The
thumbnail is then put on a VehicleMorph, which zooms away to some target
position with a 'follower' vehicle attached.

A VehicleMorph may be programmed with different types (or combinations) of
behaviors such as 'Arrival'. With an arrival behavior the vehicle moves
towards a target at some maximum velocity, but arrives at zero velocity,
that is, it appears to slow down when it gets in proximity to the target. I
use these behavioural mechanisms to implement the 'slow in, slow out' part
of animations from the Self work.

[I also use these types of effects when I pick up a window thumbnail in the
hand. I attach a 'follower' vehicle which just displays the thumbnail with a
bit more translucency. The follower is programmed with a 'seek' behaviour.
When I move the hand, the follower 'follows' at a distance dependent on how
fast the hand is moving. When the mouse is moving fast, a temporal aliasing
effect appears as a motion blur from the follower as it tries to keep up.
This is another animation cue taken from the Self Morphic world]

When I expand a window from a thumbnail here's what happens: First a 'poof'
animation starts where the thumbnail appears. Concurrently the thumbnail
takes off (with a follower attached to give it a little motion blur type of
effect), and travels to the center of the represented window. Once it
arrives and slows down, the represented window expands.

Still, these are pretty lame excuses.

Jim






More information about the Squeak-dev mailing list