Skip to main content

Tool for live presentations using manim

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manim-slides-3.0.0.tar.gz (22.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page