Coder Social home page Coder Social logo

gsong-math / manim-slides Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeertmans/manim-slides

0.0 0.0 0.0 4.89 MB

Tool for live presentations using manim

Home Page: https://eertmans.be/manim-slides/

License: MIT License

Shell 0.56% Python 84.08% TeX 0.62% HTML 13.94% Dockerfile 0.80%

manim-slides's Introduction

Manim Slides Logo

Latest Release Python version PyPI - Downloads Documentation DOI JOSE Paper codecov

Manim Slides

Tool for live presentations using either Manim (community edition) or ManimGL. Manim Slides will automatically detect the one you are using!

Note

This project extends the work of manim-presentation, with a lot more features!

Installation

Manim Slides requires either Manim or ManimGL to be installed, along with their dependencies. Please checkout the documentation for detailed install instructions.

Usage

Using Manim Slides is a two-step process:

  1. Render animations using Slide (resp. ThreeDSlide) as a base class instead of Scene (resp. ThreeDScene), and add calls to self.next_slide() everytime you want to create a new slide.
  2. Run manim-slides on rendered animations and display them like a PowerPoint presentation.

The documentation is available online.

Basic Example

Call self.next_slide() everytime you want to create a pause between animations, and self.next_slide(loop=True) if you want the next slide to loop over animations until the user presses continue:

from manim import *  # or: from manimlib import *

from manim_slides import Slide


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

        self.play(GrowFromCenter(circle))
        self.next_slide()  # Waits user to press continue to go to the next slide

        self.next_slide(loop=True)  # Start loop
        self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
        self.next_slide()  # This will start a new non-looping slide

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

First, render the animation files:

manim-slides render example.py BasicExample
# or use ManimGL
manim-slides render --GL example.py BasicExample

Note

Using manim-slides render makes sure the use the manim (or manimlib) library that was installed in the Python same environment. Put simply, this is a wrapper of manim render [ARGS]... (or manimgl [ARGS]...).

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

manim-slides [OPTIONS] Scene1 Scene2...

In our example:

manim-slides BasicExample

Example GIF

For detailed usage documentation, run manim-slides --help, or go to the documentation.

Interactive Tutorial

Click on the image to watch a slides presentation that explains to you how to use Manim Slides.

Manim Slides Docs

More Examples

More examples are available in the example.py file, if you downloaded the git repository.

Comparison with Similar Tools

There exists a variety of tools that allows to create slides presentations containing Manim animations.

Below is a comparison of the most used ones with Manim Slides:

Project name Manim Slides Manim Presentation Manim Editor Jupyter Notebooks
Link GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars
Activity GitHub Repo stars GitHub Repo stars GitHub Repo stars GitHub Repo stars
Usage Command-line Command-line Web Browser Notebook
Note Requires minimal modif. in scenes files Requires minimal modif. in scenes files Requires the usage of sections, and configuration through graphical interface Relies on nbconvert to create slides from a Notebook
Support for ManimGL Yes No No No
Web Browser presentations Yes No Yes No
Offline presentations Yes, with Qt Yes, with OpenCV No No

F.A.Q

How to increase quality on Windows

On Windows platform, one may encounter a lower image resolution than expected. Usually, this is observed because Windows rescales every application to fit the screen. As found by @arashash, in #20, the problem can be addressed by changing the scaling factor to 100%:

Windows Fix Scaling

in Settings->Display.

Contributing

Contributions are more than welcome! Please read through our contributing section.

Reporting an Issue

If you think you found a bug, an error in the documentation, or wish there was some feature that is currently missing, we would love to hear from you!

The best way to reach us is via the GitHub issues. If your problem is not covered by an already existing (closed or open) issue, then we suggest you create a new issue. You can choose from a list of templates, or open a blank issue if your issue does not fit one of the proposed topics.

The more precise you are in the description of your problem, the faster we will be able to help you!

Seeking for help

Sometimes, you may have a question about Manim Slides, not necessarily an issue.

There are two ways you can reach us for questions:

Contact

Finally, if you do not have any GitHub account, or just wish to contact the author of Manim Slides, you can do so at: [email protected].

manim-slides's People

Contributors

jeertmans avatar pre-commit-ci[bot] avatar galatolofederico avatar dependabot[bot] avatar linusheck avatar ahmedsilat44 avatar tdadela avatar fairlight8 avatar taiyeoguns avatar bryanwweber avatar gsong-math avatar mikegillotti avatar edibotopic avatar elliotwutingfeng avatar wucheng98 avatar felipecocco avatar imgbot[bot] avatar robotboyfriend avatar yang-fighter avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.