Animation Types
PUBLISHED
DALi supports key frame and path animation.
Key Frame Animation
DALi provides support for animating between several different values, or key frames. A key frame takes a progress value between 0.0f and 1.0f (0 and 100% respectively) and portrays the value of the property when the animation has progressed that much. You can create several key frames:
KeyFrames keyFrames = KeyFrames::New(); keyFrames.Add( 0.0f, Vector3( 10.0f, 10.0f, 10.0f ) ); keyFrames.Add( 0.7f, Vector3( 200.0f, 200.0f, 200.0f ) ); keyFrames.Add( 1.0f, Vector3( 100.0f, 100.0f, 100.0f ) );
Next, you can add the key frames to your animation.
animation.AnimateBetween( Property( actor1, Dali::Actor::Property::POSITION ), keyFrames );
When you play the animation, DALi animates the position of actor1
between the specified key frames. The actor1
animates from (10.0f, 10.0f, 10.0f) to (200.0f, 200.f, 200.0f) by 70% of the animation time, and then spends the remaining time animating back to (100.0f, 100.0f, 100.0f).
The advantage of specifying a key frame at 0% is that regardless of where the actor1
is, it starts from position (10.0f, 10.0f, 10.0f). If AnimateTo()
is used, the start position is the actor1
's current position.
Path Animation
The Dali::Path
class can be used to animate the position and orientation of actors.
The black points in the following figure are points where the DALi logo travels to. The red points are the control points which express the curvature of the path on the black points.
Figure: Path animation
The following code presents the black points:
Path path = Path::New(); path.AddPoint( Vector3( 50.0f, 10.0f, 0.0f ) ); path.AddPoint( Vector3( 90.0f, 50.0f, 0.0f ) ); path.AddPoint( Vector3( 10.0f, 90.0f, 0.0f ) );
The control points can be added manually using Path::AddControlPoint
. The Dali::Path
class can also auto-generate the control points for you.
path.GenerateControlPoints( 0.25f );
Here 0.25f represents the curvature of the path you require. For more information, see the GenerateControlPoints()
function in the Dali::Path
class (in mobile [1] and wearable [2] applications).
To animate actor1
along this path, use the following function:
animation.Animate( actor1, path, Vector3::ZERO );
The third parameter is the forward vector (in a local space coordinate system) that is oriented with the path's tangent direction.