Latest Release Python version PyPI - Downloads

Manim Slides

Tool for live presentations using either manim or manim-community.

NOTE: This project is a fork of manim-presentation. Since the project seemed to be inactive, I decided to create my own fork to deploy new features more rapidly.

Install

pip install manim-slides

Usage

Use the class Slide as your scenes base class:

from manim_slides import Slide

class Example(Slide):
    def construct(self):
        ...

call self.pause() when you want to pause the playback and wait for an input to continue (check the keybindings).

Wrap a series of animations between self.start_loop() and self.stop_loop() when you want to loop them (until input to continue):

from manim import *
from manim_slides import Slide

class Example(Slide):
    def construct(self):
        circle = Circle(radius=3, color=BLUE)
        dot = Dot()

        self.play(GrowFromCenter(circle))
        self.pause()

        self.start_loop()
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.end_loop()

        self.play(dot.animate.move_to(ORIGIN))
        self.pause()

        self.wait()

You must end your Slide with a self.play(...) or a self.wait(..).

To start the presentation using Scene1, Scene2 and so on simply run:

manim-slides Scene1 Scene2...

Keybindings

Default keybindings to control the presentation:

Keybinding Action
Right Arrow Continue/Next Slide
Left Arrow Previous Slide
R Re-Animate Current Slide
Spacebar Play/Pause
Q Quit

You can run the configuration wizard with:

manim-slides wizard

Alternatively you can specify different keybindings creating a file named .manim-slides.json with the keys: QUIT CONTINUE BACK REWIND and PLAY_PAUSE.

A default file can be created with:

manim-slides init

NOTE: manim-slides uses cv2.waitKeyEx() to wait for keypresses, and directly registers the key code.

Run Example

Clone this repository:

git clone https://github.com/jeertmans/manim-slides.git
cd manim-slides

Install manim and manim-slides:

pip install manim manim-slides

Render the example scene:

manim -qh example.py

Run the presentation

manim-slides Example

Below is a small recording of me playing with the slides back and forth.

Comparison with original manim-presentation

Here are a few things that I implemented (or that I'm planning to implement) on top of the original work:

  • Allowing multiple keys to control one action (useful when you use a laser pointer)
  • More robust config files checking
  • Dependencies are installed with the package
  • Only one cli (to rule them all)
  • User can easily generate dummy config file
  • Config file path can be manually set
  • Play animation in reverse #9
  • Handle 3D scenes out of the box
  • Can work with both community and 3b1b versions (not tested)
  • Generate docs online
  • Fix the quality problem on Windows platforms with fullscreen flag

Contributions and license

The code is released as Free Software under the GNU/GPLv3 license. Copying, adapting and republishing it is not only consent but also encouraged.