Skip to content

Expressions

hernan edited this page May 6, 2021 · 8 revisions

Unfortunately, expressions are similar to javascript but not quite the same.
So for converting and evaluating the code, I use Esprima and Escodegen.
A subset of expressions is supported.

Baking expressions

If you need all expressions converted to keyframes because you are using one of the players that don't support expressions, under Expression options you can check the option Convert expressions to keyframes and all expressions will be exported as keyframes.
If you just need a single expression converted, on the expressions editor of After Effects, you can add a commented line
// lottie:bake and that expression will be exported as keyframes. In both cases the original animation won't get modified.

Expression controls

All expression controls are supported. You should have no issues linking any of the supported properties to an expression control.

Native functions

functions like wiggle are not supported.
Probably some will in the near future.
You can set your own function inside the code.

Use javascript

If you set the string 'use javascript' as the first line of your expression, the plugin won't parse your code and you can get a significant performance increase.
For your code to be javascript compliant, please declare all vars and use operators limited to what javascript supports.
For example don't use an addition operator to sum two arrays.

Order of evaluation of expressions (Draft)

Since expressions can target each other, it can create an infinite loop, so in these scenarios AE evaluates the property value before applying an expression. This has a very specific order.

Layers

Layers are executed from the top down

Transforms

Anchor Point
Position
Scale
Rotation
Opacity