Tool for live presentations using manim
Project description
Manim Slides
Tool for live presentations using either manim-community. Currently, support for 3b1b's manim is not planned.
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 |
V | Reverse 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
usescv2.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
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file manim-slides-3.1.0.tar.gz
.
File metadata
- Download URL: manim-slides-3.1.0.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0583e911ac0e2aed7da64b7a325de7190f1c7a13b66ea41429d53c46f5e7ff19 |
|
MD5 | 99117c1e97c198a522f0c5c39b642dba |
|
BLAKE2b-256 | 91e7c1a68e4d6b7e26615b48cc95160264bb6cd2fe4221e55b594a01adde8d7e |