Motive Animation System
 All Classes Functions Variables Pages
Motive Animation System

Overview

Motive is a cross-platform animation system. It's designed to be,

  • performant – data is stored centrally and processed in bulk so that we can take advantage of SIMD and multi-threading opportunities.
  • compact – spline data is preferred over sampled data, so animation data requires less memory.
  • expandable – new animation algorithms can be registered and executed without touching central code. Motive is distributed as portable C++. It has been tested on Android, Windows, OS X, and Linux.

Motivation

Static objects may look good in screenshots, but motion is what brings a scene to life. If done well, even simple motion along one axis can add character and charm to your game.

The difficulty is in doing the motion well. There is a lot of subtly to motion. There's a lot that can look ok, but not great, for reasons that are not obvious.

For these two reasons, a simple animation library is valuable–just as valuable, perhaps, as a simple rendering or audio library.

Features

The v1.0 release of Motive is feature light. It's focused primarily on procedural animation and simple hand-tunable motion. It is suitable for the animation of props, cameras, GUI elements, and simple rigs.

Downloading

Motive can be downloaded from GitHub or the releases page.

Important: Motive uses submodules to reference other components it depends upon so download the source using:

git clone --recursive https://github.com/google/motive.git

Dependencies

Motive depends upon:

  • MathFu – used internally; you can substitute your own vector types in the external API.
  • FplUtil – C++ allocator libraries.

Motive has optional features that depend upon:

  • FlatBuffers – allow animation data to be defined in json and then compiled to a small binary format.

The Motive performance benchmark application also uses:

  • SDL – for crossplatform graphics rendering

Tracking on Google Play

For applications on Google Play that integrate this tool, usage is tracked. This tracking is done automatically using the embedded version string in kVersion. Aside from consuming a few extra bytes in your application binary, it shouldn't affect your application at all. We use this information to let us know if Motive is useful and if we should continue to invest in it. Since this is open source, you are free to remove the version string, but we would appreciate if you would leave it in.

Feedback and Reporting Bugs