Animations
Animations make things move. They can live on blueprints, instances, and parametric define bodies. Blueprint animations are inherited by instances; instance animations are added on top and can target the same property.
From/To Syntax
The most common form: animate a property from one value to another, over a duration.
imagine card
animate position.x from -80 to 0 over 0.4s ease "ease-out" delay 0.1s
create cardease, delay, repeat, and direction are retained when written inline.
speed, blend, weight, and disabled are reliably represented as indented
options. The same animation can be written as an indented property block
instead of the inline form:
imagine card
animate opacity
from: 0
to: 1
duration: 0.4s
ease: "ease-out"
create cardPercent keyframes animate a relative size or position: values interpolate in
percent space and resolve against the parent each frame, so they track a
parent that resizes mid-animation. A transition that mixes units on an axis,
such as from 100 to 50%, resolves both keyframes against the parent and
interpolates smoothly.
imagine dot
shape: circle
size: (10%, 10%)
animate size from (10%, 10%) to (80%, 80%) over 1s
create dotKeyframes
For multi-stop motion, list times and values:
imagine ball
animate position.y
0s: 0
0.3s: 120 ease "ease-out"
0.6s: 0 ease "ease-in"
repeat: infinite
direction: alternate
create ballBoth 0.3s: value and at 0.3s: value are accepted. Named easing values are
defined by EasingType; cubic bezier easing uses a four-number tuple.
imagine ball
animate position.y
at 0s: 0
at 0.3s: 120 ease "ease-out"
create ballExpression Animations
An animation with a colon right after the property path is evaluated every frame. See expressions for the available expression scope.
imagine wiggler
animate position.x: sin(time * 2) * 30
blend: add
create wigglerAccepted but Ignored Options
selector and stagger are accepted as generic animation block properties but
aren't retained in a LumiDSL animation. They're runtime API features, not
working LumiDSL syntax.