All Projects → reanimate → Reanimate

reanimate / Reanimate

Licence: unlicense
Haskell library for building declarative animations based on SVG graphics

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Reanimate

Plutovg
Tiny 2D vector graphics library in C
Stars: ✭ 141 (-75.73%)
Mutual labels:  2d, svg
Picasso
Picasso is a high quality 2D vector graphic rendering library. It support path , matrix , gradient , pattern , image and truetype font.
Stars: ✭ 205 (-64.72%)
Mutual labels:  2d, svg
Cax
HTML5 Canvas 2D Rendering Engine - 小程序、小游戏以及 Web 通用 Canvas 渲染引擎
Stars: ✭ 1,864 (+220.83%)
Mutual labels:  2d, svg
Pathanimator
Moves a DOM element along an SVG path (or do whatever along a path...)
Stars: ✭ 251 (-56.8%)
Mutual labels:  svg, animations
Compress Images
Minify size your images. Image compression with extension: jpg/jpeg, svg, png, gif. NodeJs
Stars: ✭ 331 (-43.03%)
Mutual labels:  svg, gif
Svg.skia
An SVG rendering library.
Stars: ✭ 122 (-79%)
Mutual labels:  2d, svg
Unity Aseprite Importer
An aseprite-file importer for unity written in C#, built upon the experimental AssetImporter API
Stars: ✭ 177 (-69.54%)
Mutual labels:  2d, animations
Quick Media
media(audio/image/qrcode/markdown/html/svg) support web service (多媒体编辑服务, 酷炫二维码, 音频, 图片, svg, markdown, html渲染服务支持)
Stars: ✭ 612 (+5.34%)
Mutual labels:  svg, gif
Spine Runtimes
2D skeletal animation runtimes for Spine.
Stars: ✭ 3,171 (+445.78%)
Mutual labels:  2d, animations
Lottieuwp
UWP port of Lottie(https://github.com/airbnb/lottie-android)
Stars: ✭ 276 (-52.5%)
Mutual labels:  2d, animations
Pyecharts Snapshot
renders the output of pyecharts as png, jpeg, gif, svg, eps, pdf and raw base64
Stars: ✭ 142 (-75.56%)
Mutual labels:  svg, gif
Govips
A lightning fast image processing and resizing library for Go
Stars: ✭ 442 (-23.92%)
Mutual labels:  svg, gif
React Native Svg Animations
SVG Animations wrapper for react-native.
Stars: ✭ 117 (-79.86%)
Mutual labels:  svg, animations
Zrender
A lightweight graphic library providing 2d draw for Apache ECharts
Stars: ✭ 5,122 (+781.58%)
Mutual labels:  2d, svg
Nuxt Optimized Images
🌅🚀 Automatically optimizes images used in Nuxt.js projects (JPEG, PNG, SVG, WebP and GIF).
Stars: ✭ 717 (+23.41%)
Mutual labels:  svg, gif
Wechart
Create all the [ch]arts by cax or three.js - Cax 和 three.js 创造一切图[表]
Stars: ✭ 152 (-73.84%)
Mutual labels:  2d, svg
Optimizt
CLI image optimization tool
Stars: ✭ 594 (+2.24%)
Mutual labels:  svg, gif
Libvips
A fast image processing library with low memory needs.
Stars: ✭ 6,094 (+948.88%)
Mutual labels:  svg, gif
game-map-editor
game-map-editor
Stars: ✭ 17 (-97.07%)
Mutual labels:  animations, 2d
Boxes
Boxes.py - laser cutting boxes and more
Stars: ✭ 429 (-26.16%)
Mutual labels:  2d, svg

Hackage packagename on Stackage LTS packagename on Stackage Nightly Build Status Documentation Status Platforms GitHub repo size API docs coverage Docker Cloud Build Status Discord

Reanimate

Reanimate is a library for programmatically generating animations with a twist towards mathematics / 2D vector drawings. A lot of inspiration was drawn from 3b1b's manim library.

Reanimate aims at being a batteries-included way of gluing together different technologies: SVG as a universal image format, LaTeX for typesetting, ffmpeg for video encoding, inkscape/imagemagick for rasterization, potrace for vectorization, blender/povray for 3D graphics, and Haskell for scripting.

In more practical terms, reanimate is a library for turning code like this:

main = reanimate $ docEnv $ playThenReverseA drawCircle

... into animations like this:

Draw Circle

If you like what you see, boost reanimate's visibility with a star ⭐ or consider becoming a sponsor ❤.

What is reanimate good at?

Vector graphics and math

Tangent/Normal Fourier

Mapping and tracing

Geo JSON Object tracing

Mathematical typesetting and effects

LaTeX Stars

2D physics and 3D graphics

2D Physics 3D graphics

Prerequisites

Reanimate is built using the Haskell Tool Stack. For installation instructions, see: https://docs.haskellstack.org/en/stable/README/

Optionally, you can install one or more of these programs to enable additional features:

I highly recommend that you install at least 'ffmpeg' and 'latex'.

Getting started / Running an example

Reanimate offers stack templates for getting started with a minimal example and automatic code reloading. Running the commands below will put a one-line animation in the 'animate' folder and then display the animation in a browser window. You can then edit the animation source code and watch the animation update in real time:

$ stack new animate github:reanimate/plain
$ cd animate/
$ # both 'cabal repl' and 'stack repl' can be used here:
$ cabal repl
:cmd reanimateLive

Running examples from the repository

Reanimate has a large collection of small examples which are both used for regression testing and for GIFs in the API reference documentation. You can run these examples by first cloning the repository and then running the examples as if they were executables:

$ git clone https://github.com/reanimate/reanimate.git
$ cd reanimate/
$ stack build
$ stack ./examples/doc_drawCircle.hs

This should render the doc_drawCircle example in a new browser window. Automatic code reloading will not be enabled unless you run :cmd reanimateLive from a GHCi session.

Running examples from the repository using Cabal

It's also possible to use cabal instead of stack:

$ git clone https://github.com/reanimate/reanimate.git
$ cd reanimate/
$ cabal v2-build
$ # Workaround for a cabal bug: https://github.com/haskell/cabal/issues/6235
$ export reanimate_datadir=`pwd`
$ cabal v2-exec -- runhaskell examples/doc_drawCircle.hs

Using Nix

If you'd rather use nix to build an environment with all of the system dependencies mentioned previously do:

$ git clone https://github.com/reanimate/reanimate.git
$ cd reanimate/
$ nix-shell
[nix-shell:./reanimate]$ cabal v2-build --write-ghc-environment-files=always

If you have cachix available run cachix use cdodev before you drop into the nix shell. This will significantly speed things up!

This will write a file in the working directory like .ghc.environment.x86_64-linux-8.8.3 which will enable commands like runhaskell to pick up reanimate.

Now, still within the nix-shell you can run:

[nix-shell:./reanimate]$ reanimate_datadir=. runhaskell examples/doc_drawCircle.hs

Documentation

Features

  • [x] Cross-platform. Official support for Linux, MacOS, and Windows.
  • [x] Well-documented. API reference documentation include GIFs to illustrate behavior, and in-depth tutorial/explanation articles are hosted on readthedocs.io.
  • [x] Advanced type-setting via LaTeX.
  • [x] Voice control: Align animation timings with a transcript.
  • [x] 3D graphics: Built-in support for integrating povray and blender.
  • [x] Mapping: Built-in support for GeoJSON and map projections.
  • [x] Online playground for toying with reanimate scripts.

Roadmap

  • Easy-to-use font selection when using latex/xelatex/luatex.
  • Polygon morphing framework with support for several algorithms, including: linear interpolation, as-rigid-as-possible interpolation, and intersection-free interpolation.
  • Built-in tools for creating presentations.

Authors

  • David Himmelstrup.
  • Jan Hrcek.

License

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

Acknowledgments

  • Huge thanks to 3b1b's manim which inspired this library.
  • Thanks to svg-tree for their SVG library.
  • Thanks to CthulhuDen/chiphunk for making a 2D physics library easily available.
  • Thanks to Peter Johnson for reserving the 'reanimate' organization on GitHub.

YouTube

Completed animations are uploaded to the Reanimated Science channel.

Animation snippets are uploaded to the Reanimated Science Shorts channel.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].