mirror of
https://github.com/reanimate/reanimate.git
synced 2026-09-10 23:52:22 +00:00
107 lines
4.8 KiB
Markdown
107 lines
4.8 KiB
Markdown
[](http://hackage.haskell.org/package/reanimate)
|
|
[](https://dev.azure.com/lemmih0612/reanimate/_build/latest?definitionId=1&branchName=master)
|
|
[](https://reanimate.readthedocs.io/en/latest/?badge=latest)
|
|

|
|
|
|
# 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:
|
|
|
|
```haskell
|
|
main = reanimate $ docEnv $ playThenReverseA drawCircle
|
|
```
|
|
|
|
... into animations like this:
|
|
|
|
[](examples/doc_playThenReverseA.hs)
|
|
|
|
# What is reanimate good at?
|
|
|
|
## Vector graphics and math
|
|
[](examples/demo_tangent.hs)
|
|
[](examples/tut_glue_fourier.hs)
|
|
|
|
## Mapping and tracing
|
|
[](videos/map-projection/gif.hs)
|
|
[](examples/tut_glue_potrace.hs)
|
|
|
|
## Mathematical typesetting and effects
|
|
[](examples/tut_glue_latex.hs)
|
|
[](examples/demo_stars.hs)
|
|
|
|
## 2D physics and 3D graphics
|
|
[](examples/tut_glue_physics.hs)
|
|
[](examples/tut_glue_povray.hs)
|
|
|
|
# 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:
|
|
* [ffmpeg](https://www.ffmpeg.org/), enables rendering animations to video files.
|
|
* [latex](https://www.latex-project.org/), enables mathematical typesetting.
|
|
* [inkscape](https://inkscape.org/)/[imagemagick](https://imagemagick.org/index.php), enables SVG->PNG convertions.
|
|
* [potrace](http://potrace.sourceforge.net/), enables PNG->SVG tracing.
|
|
* [povray](https://www.povray.org/), enables raytracing.
|
|
* [blender](https://www.blender.org/), enables 3D graphics.
|
|
|
|
I highly recommend that you install at least 'ffmpeg' and 'latex'.
|
|
|
|
# Installing / Running an example
|
|
|
|
Reanimate ships with a web-based viewer and automatic code reloading. To get a small demo
|
|
up and running, clone the repository, run one of the examples (this will install the library),
|
|
and wait for a browser window to open:
|
|
|
|
```console
|
|
$ git clone https://github.com/Lemmih/reanimate.git
|
|
$ cd reanimate/
|
|
$ stack build
|
|
$ stack ./examples/doc_drawCircle.hs
|
|
```
|
|
|
|
This should render the `doc_drawCircle` example in a new browser window. If you then change the
|
|
animation source code, the browser window will automatically reload and show the updated animation.
|
|
|
|
# Documentation
|
|
|
|
* API reference: https://hackage.haskell.org/package/reanimate/docs/Reanimate.html
|
|
* Core concepts: https://reanimate.readthedocs.io/en/latest/introduction/
|
|
* Design overview: https://reanimate.readthedocs.io/en/latest/glue_tut/
|
|
* Gallery with source code: https://reanimate.readthedocs.io/en/latest/gallery/
|
|
|
|
# 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](https://github.com/3b1b/manim) which inspired this library.
|
|
* Thanks to [svg-tree](https://github.com/Twinside/svg-tree) for their SVG library.
|
|
* Thanks to [CthulhuDen/chiphunk](https://github.com/CthulhuDen/chiphunk) for making a 2D physics
|
|
library easily available.
|
|
* Thanks to [Peter Johnson](https://github.com/missinglink) for reserving the 'reanimate' organization on GitHub.
|
|
|
|
# YouTube
|
|
|
|
Completed animations are uploaded to the [Reanimated Science](https://www.youtube.com/channel/UCbZujyI7i6JbI-I0shPvDgg) channel.
|
|
|
|
Animation snippets are uploaded to the [Reanimated Science Shorts](https://www.youtube.com/channel/UCL7MwXLtQbhJeb6Ts3_HooA) channel.
|