Other installation options:

Option 3:

Option 4:

Extract the zipped file on build/extension/bodymovin.zxp to the adobe CEP folder: WINDOWS:C:\Program Files (x86)\Common Files\Adobe\CEP\extensions orC:\<username>\AppData\Roaming\Adobe\CEP\extensions MAC:/Library/Application\ Support/Adobe/CEP/extensions/bodymovin (you can open the terminal and type:$ cp -R YOURUNZIPEDFOLDERPATH/extension /Library/Application\ Support/Adobe/CEP/extensions/bodymovin then type:$ ls /Library/Application\ Support/Adobe/CEP/extensions/bodymovin to make sure it was copied correctly type)

Edit the registry key: WINDOWS: open the registry key HKEY_CURRENT_USER/Software/Adobe/CSXS.6 and add a key named PlayerDebugMode, of type String, and value 1. MAC: open the file ~/Library/Preferences/com.adobe.CSXS.6.plist and add a row with key PlayerDebugMode, of type String, and value 1.

destroy()

getDuration(inFrames)

Additional methods:

Lottie has 8 global methods that will affect all animations:

lottie.play() -- with 1 optional parameter name to target a specific animation lottie.stop() -- with 1 optional parameter name to target a specific animation lottie.setSpeed() -- first argument speed (1 is normal speed) -- with 1 optional parameter name to target a specific animation lottie.setDirection() -- first argument direction (1 is normal direction.) -- with 1 optional parameter name to target a specific animation lottie.searchAnimations() -- looks for elements with class “lottie” or “bodymovin” lottie.loadAnimation() -- Explained above. returns an animation instance to control individually. lottie.destroy() -- To destroy and release resources. The DOM element will be emptied.lottie.registerAnimation() -- you can register an element directly with registerAnimation. It must have the “data-animation-path” attribute pointing at the data.json urllottie.setQuality() -- default ‘high’, set ‘high’,‘medium’,‘low’, or a number > 1 to improve player performance. In some animations as low as 2 won't show any difference.

Events

onComplete

onLoopComplete

onEnterFrame

onSegmentStart

you can also use addEventListener with the following events:

complete

loopComplete

enterFrame

segmentStart

config_ready (when initial config is done)

data_ready (when all parts of the animation have been loaded)

data_failed (when part of the animation can not be loaded)

loaded_images (when all image loads have either succeeded or errored)

DOMLoaded (when elements have been added to the DOM)

destroy

Other loading options

if you want to use an existing canvas to draw, you can pass an extra object: ‘rendererSettings’ with the following configuration:

Doing this you will have to handle the canvas clearing after each frame Another way to load animations is adding specific attributes to a dom element. You have to include a div and set it's class to “lottie”. If you do it before page load, it will automatically search for all tags with the class “lottie”. Or you can call lottie.searchAnimations() after page load and it will search all elements with the class “lottie”.

Add the data.json to a folder relative to the html

Create a div that will contain the animation.

Required

A class called “lottie”

A “data-animation-path” attribute with relative path to the data.json

Optional

A “data-anim-loop” attribute

A “data-name” attribute to specify a name to target play controls specifically

Preview

You can preview or take an svg snapshot of the animation to use as poster. After you render your animation, you can take a snapshot of any frame in the animation and save it to your disk. I recommend to pass the svg through an svg optimizer like https://jakearchibald.github.io/svgomg/ and play around with their settings.

Recommendations

Files

If you have any images or AI layers that you haven't converted to shapes (I recommend that you convert them, so they get exported as vectors, right click each layer and do: “Create shapes from Vector Layers”), they will be saved to an images folder relative to the destination json folder. Beware not to overwrite an existing folder on that same location.

Performance

This is real time rendering. Although it is pretty optimized, it always helps if you keep your AE project to what is necessary More optimizations are on their way, but try not to use huge shapes in AE only to mask a small part of it. Too many nodes will also affect performance.

Help

If you have any animations that don‘t work or want me to export them, don’t hesitate to write. I'm really interested in seeing what kind of problems the plugin has. my email is hernantorrisi@gmail.com

Notes

gzipping the animation jsons and the player have a huge reduction on the filesize. I recommend doing it if you use it for a project.

Issues

For missing mask in Safari browser, please anim.setLocationHref(locationHref) before animation is generated. It usually caused by usage of base tag in html. (see above for description of setLocationHref)