Adobe Bodymovin



  • Learn how to install new plugins, extensions, and add-ons for Adobe apps from the Creative Cloud desktop app. Also, learn how to install ZXP files of your extensions using the ExMan command-line tool.
  • Exporting JSON Files Using the Bodymovin plugin. After finishing the animation, use the ZXP Installer to install the Bodymovin plugin and save your animation as a JSON file. After installing it, go to Window Extensions Bodymovin. In an open window, choose a composition to render, the file path, and saving options in Settings.

Bodymovin is an After Effects extension for exporting the animation to a JSON file, which you can use on your website or in your Android or iOS app. You can download it for free here or here, where you can show your love to the creators and pay any price you want.

Lottie is a mobile library for Web, and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!

For the first time, designers can create and ship beautiful animations without an engineer painstakingly recreating it by hand. They say a picture is worth 1,000 words so here are 13,000:

Option 1 (Recommended):

Download it from from aescripts + aeplugins:http://aescripts.com/bodymovin/

Option 2:

Or get it from the adobe storehttps://creative.adobe.com/addons/products/12557CC 2014 and up.

Other installation options:

Option 3:

  • download the ZIP from the repo.
  • Extract content and get the .zxp file from '/build/extension'
  • Use the ZXP installer from aescripts.com.

Option 4:

  • Close After Effects

  • Extract the zipped file on build/extension/bodymovin.zxp to the adobe CEP folder:
    WINDOWS:
    C:Program Files (x86)Common FilesAdobeCEPextensions or
    C:<username>AppDataRoamingAdobeCEPextensions
    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.

Option 5:

Install the zxp manually following the instructions here:https://helpx.adobe.com/x-productkb/global/installingextensionsandaddons.htmlSkip directly to 'Install third-party extensions'

Option 6:

Install with Homebrew-adobe:

After installing

  • Windows: Go to Edit > Preferences > General > and check on 'Allow Scripts to Write Files and Access Network'
  • Mac: Go to Adobe After Effects > Preferences > General > and check on 'Allow Scripts to Write Files and Access Network'

Or you can use the script file from here:https://cdnjs.com/libraries/bodymovinOr get it directly from the AE plugin clicking on Get Player

See a basic implementation here.

See examples on codepen.

How it works

Here's a video tutorial explaining how to export a basic animation and load it in an html page

After Effects

  • Open your AE project and select the bodymovin extension on Window > Extensions > bodymovin
  • A Panel will open with a Compositions tab listing all of your Project Compositions.
  • Select the composition you want to export.
  • Select a Destination Folder.
  • Click Render
  • look for the exported json file (if you had images or AI layers on your animation, there will be an images folder with the exported files)

HTML

  • get the lottie.js file from the build/player/ folder for the latest build
  • include the .js file on your html (remember to gzip it for production)

    You can call lottie.loadAnimation() to start an animation.It takes an object as a unique param with:

  • animationData: an Object with the exported animation data.
  • path: the relative path to the animation object. (animationData and path are mutually exclusive)
  • loop: true / false / number
  • autoplay: true / false it will start playing as soon as it is ready
  • name: animation name for future reference
  • renderer: 'svg' / 'canvas' / 'html' to set the renderer
  • container: the dom element on which to render the animation

It returns the animation instance you can control with play, pause, setSpeed, etc.

Composition Settings:

Check this wiki page for an explanation for each setting.https://github.com/airbnb/lottie-web/wiki/Composition-Settings

Usage

Animation instances have these main methods:

play

stop

pause

setLocationHref(href)

  • href: usually pass as location.href. Its useful when you experience mask issue in safari where your url does not have # symbol.

setSpeed(speed)

  • speed: 1 is normal speed.

goToAndStop(value, isFrame)

Adobe bodymovin
  • value: numeric value.
  • isFrame: defines if first argument is a time based value or a frame based (default false).

goToAndPlay(value, isFrame)

  • value: numeric value.
  • isFrame: defines if first argument is a time based value or a frame based (default false).

setDirection(direction)

  • direction: 1 is forward, -1 is reverse.

playSegments(segments, forceFlag)

  • segments: array. Can contain 2 numeric values that will be used as first and last frame of the animation. Or can contain a sequence of arrays each with 2 numeric values.
  • forceFlag: boolean. If set to false, it will wait until the current segment is complete. If true, it will update values immediately.

    setSubframe(useSubFrames)

  • useSubFrames: If false, it will respect the original AE fps. If true, it will update on every requestAnimationFrame with intermediate values. Default is true.

    destroy()

    getDuration(inFrames)

  • inFrames: If true, returns duration in frames, if false, in seconds.

Additional methods:

  • updateTextDocumentData -- updates a text layer's dataMore Info

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 url
lottie.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

Example

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

AE Feature Support

  • The script supports precomps, shapes, solids, images, null objects, texts
  • It supports masks and inverted masks. Maybe other modes will come but it has a huge performance hit.
  • It supports time remapping
  • The script supports shapes, rectangles, ellipses and stars.
  • Expressions. Check the wiki page for more info.
  • Not supported: image sequences, videos and audio are not supported
  • No negative layer stretching! No idea why, but stretching a layer messes with all the data.

Development

npm install or bower install firstnpm start

Notes

  • If you want to modify the parser or the player, there are some gulp commands that can simplify the task
  • look at the great animations exported on codepen See examples on codepen.
  • 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.

Adobe Bodymovin

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)
17 Jan 2021

Have you ever wondered how to render Lottie animation? Follow those few easy steps from processing the prepared Illustrator file to exporting the JSON file.

Let’s start with Bodymovin plugin

Bodymovin Adobe Animate

Bodymovin is an After Effects extension for exporting the animation to a JSON file, which you can use on your website or in your Android or iOS app.

You can download it for free here or here, where you can show your love to the creators and pay any price you want.

After downloading Bodymovin, you’ll get bodymovin.zxp file (Adobe zip Format Extension Package file) that you can install with Adobe’s Extension Manager or use a zxp installer.

Get your design into Adobe After Effects

Your tools are ready, now let’s animate! To be as efficient as possible, it’s good to have a nicely prepared design file. You can save a lot of time by preparing the design in advance. If you don’t know how to prepare the design file, check our previous blog.

Import your Adobe Illustrator file

Import the design file into Adobe After Effects. Select File” in the top bar and choose Import option. (File > Import)

When importing your organized .ai file into the Adobe After Effects, make sure the Import As option is selected as Composition – Retain Layer Sizes. With this option chosen Adobe After effects will import the layers exactly as they are saved in Adobe Illustrator.

Convert .ai layers to shape layers

The great thing about Lottie is that it works well with vectors, and that’s the magic why JSON files are so tiny.

Converting the layers from Illustrator file into After Effects vector shapes is fairly straightforward. Select all layers, right-click and select Create and then choose Create shapes from Vector layer option.

Bodymovin would export the layers as raster images without this step and increased the JSON file size.

After creating the shapes, you can delete or hide original .ai layers.

Adobe

Set your composition settings

Go to Composition and select Compositions Settings to adjust your Width and Height, Duration of an animation, or Frame Rate. Lottie animations support up to 60 fps.

Set Background Color (black in our case) will not be rendered into your Lottie animation; the background will be transparent. To see the transparency of the document, click on the Toggle Transparency Grid”.

Pro tip

When you work with Ai files in Adobe After Effects more often as we do, we highly recommend the Overlord plugin; it will save your time.

With Overlord, you can send the Illustrator layers into the Adobe After Effects with one click. It will import Adobe After Effects shape layers and preserve layer names and position. Overlord can further export guides, color palettes, gradients & editable text layers as well.

Create animation

Adobe

When it comes to animating itself, try to use only basic features – scale, position, rotation, opacity, or animate paths. If you want to use some advanced Features, always check Supported After Effects Features first.

We advise you not to use raster files (it affects the file size) and any effects from the Effects panel; most of them are not supported by Lottie.

Export the JSON file

Adobe BodymovinAdobe Bodymovin

Once you have created your animation and are satisfied with the result, navigate to Window, select Extensions, and choose Bodymovin option. (Window > Extensions > Bodymovin)

Now select a composition or multiple compositions that you want to render.

When you go to the Settings in the Bodymovin dialog, you can see a few different options you can choose from. Each option is well explained, but you might not know what GUIDED layers are. Plugins create those layers for rigging characters like Duik or RubberHose, so if you are using such a plugin, make sure to select the option.

If you like to see your Lottie animation implemented in the HTML file, you can quickly test if the animation works as designed and select Demo in the Export Modes section. Another option to test your animation is using our Lottie Preview, where you can drag and drop your JSON file.

Save the settings and hit Render.

Final animation

That’s it! Your Lottie animation is ready to be implemented on your website or in your app to improve the experience and delight your users.

Looking for ready to use animations?

Not every company has the assets to hire an animator to create custom Lottie animations. In this case, we are providing an out-of-the-box solution in the form of ready to use animations. Check out our library of pre-made animations.