- Haskell 95.8%
- Elm 3.9%
- Nix 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| data | ||
| examples | ||
| gifs | ||
| server | ||
| src/Reanimate | ||
| viewer | ||
| web | ||
| azure-pipelines.yml | ||
| BAKER_SCRIPT.md | ||
| ChangeLog.md | ||
| README.md | ||
| reanimate.cabal | ||
| Setup.hs | ||
| stack.yaml | ||
| test_latex.tex | ||
reanimate
Reanimate is a reactive framework for creating non-interactive animations from SVG images. This package consists of a set of combinators, a renderer (using ffmpeg), and a web-based previewer. Inline latex code is supported when 'latex' and 'dvisvgm' are installed.
Nothing about the API is stable at this point.
Live coding playground: https://lemmih.github.io/reanimate/
YouTube
Completed animations are uploaded to the Reanimated Science channel.
Animation snippets are uploaded to the Reanimated Science Playground channel.
Getting started
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:
$ git clone https://github.com/Lemmih/reanimate.git
$ cd reanimate/examples/
$ ./latex_color.hs
This should render the latex_color 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.
TODO
website for live codingbounding boxesUse svg-tree instead of lucid-svgcrossplatform file watching- Improve bounding box approximations
- Select desired FPS in web previewer
- Download rendered animations in web previewer
- Alignment and positioning combinators
- Consistent caching framework
- Figure out why performance doesn't scale linearly with more cores
- diagrams are slow because they are rendered as a bytestring and then parsed as SVG. Find a way to shortcut.
- Test-suite: Compile and render all the example animations on the build servers. The SVG output should be stable.
- API for generating slides.
- Warn if 'group' nodes are found in 'clippath's.
- Driver:
Command line options for rendering videos.- Flags for selecting fps in web viewer
- Command for validating tools: latex, dvisvgm, ffmpeg. Warn of old versions of ffmpeg that don't render SVGs correctly.
- Use GHC.Environment to find own source code.
- Generate interleaved frames (1fps, 2fps, 4fps, etc)
- Flag for generating youtube videos (ffmpeg options preset).
- Viewer:
- Keys for pausing, moving frame-by-frame, resetting.
- Fix race conditions.
Examples
The example gifs are displayed at 25 fps. The source code for many of these examples are available on the live coding playground.















