Skip to content

Elteoremadebeethoven/manim-ce-gl-crash-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 

Repository files navigation

Manim CE/GL crash course

Estimated time to finish it: 1 year

Syllabus

  1. Introduction
    • Requirements
    • How to ask your questions
  2. Basic elements
    • How Manim works
    • Introduction to Mobjects and Animations
    • Watchexec with Manim
    • Work environment setup
  3. Mobjects/VMobjects Generalities
    • Positioning
    • Transformations
    • VMobject attrs
    • Miscellaneous (V)Mobjects topics
  4. Rendering Settings
    • With .cfg files (only ManimCE)
    • With Manim CLI
    • With CONFIG dict (only ManimCE)
    • With tempconfig (only ManimCE)
  5. Rate functions
  6. Layers
  7. Import Assets
    • Raster images
    • SVGs
    • Sounds
    • CSV
  8. Groups, VGroups and PGroups
    • Submobjects
    • Group
    • VGroup
    • PGroup
  9. Text and $\TeX$
    • Text
    • $\TeX$
  10. Transform animations
    • Transform
    • ReplacementTransform
    • TransformFromCopy
    • TransformMatchingShapes
    • TransformMatchingTex
    • MoveToTarget
    • ApplyFunction
  11. More useful Mobjects and their methods
    • Code
    • Lines
    • Arcs
    • Braces
    • Polygons
    • NumberLine
    • Tables
    • Matrix
    • Boolean Mobjects
  12. 2D plots
    • Cartesian plots
    • Polar plots
  13. 3D plots
    • 3D scene
    • 3D axes
    • Plots
  14. Basic Updaters
    • Functions as updaters
    • ValueTracker
    • DecimalNumber
    • .become method
    • always_redraw
  15. alpha updaters
    • Allowed alpha values
    • .save_state() technique
  16. Custom animations
    • __init__ method
    • _setup_scene
    • begin method
    • With interpolate_mobject
    • With interpolate_submobject
    • With both
    • clean_up_from_scene
  17. dt updaters
    • Problems with updaters
    • Animations into dt updaters
  18. Custom Mobjects
  19. AnimationGroup
    • lag_ratio
    • AnimationGroup
    • LaggedStart
    • With custom animations
  20. Moving Camera and Zoom Scenes (ManimCE only)
    • MovingCameraScene
    • ZoomedScene
  21. ImageMobjects in depth
    • Pixel manipulation
    • Pixel interpolation
    • Filters
  22. LinearTransformationScene
  23. Vector fields
  24. Interactive scenes

πŸ“Œ Disclaimer

Manim Professional Course ManimCE-GL crash course
Theory βœ… βœ…
Pro-tips βœ… ❌
Examples βœ… ❌
Exercises βœ… ❌
ManimGL topics (v1.2) ❌ βœ…
Free ❌ βœ…

πŸ“Œ Requirements to take the course:

Req-0. See if it is really necessary for you to learn Manim, in this video I explain if it is worth it for you.

Is it worth learning Manim? (click in the image)

πŸ“ Req-1. Basic knowledge of the terminal, preferably Bash.

πŸ“ Req-2. Elementary knowledge of Git, Github and Makefiles, you can learn all this in one day.

πŸ“ Req-3. Basic knowledge of programming with Python:

πŸ“ Req-4. Basic knowledge of Object Oriented Programming (OOP) with Python:

πŸ“ Req-5. Know the Manim ecosystem and its different versions:

manim installation (click in the image)

πŸ“ Req-6. Install ManimCE and ManimGL:

Although the video is from last year it is still valid.

manim installation (click in the image)

πŸ“ Req-7. View the following videos in the order shown.

manim installation

manim installation

manim installation

  1. Manim with watchexec

manim installation

πŸ“Œ Where to ask questions:

🚦 Rules:

  1. Share the code in markdown format, here's a quick tutorial. Please DO NOT share code on images.
  2. Your question must be accurate, the code should not be longer than 30 lines.
  3. Format the code so that it is easy to read, it must be in English and indented with descriptive names.

2. Stackoverflow: Use the manim tag.

⚠️⚠️⚠️ I will not answer questions that are asked in the videos, nor in the issues of this repository ⚠️⚠️⚠️

πŸ“Œ ManimCE setup:

Install ManimCE last version:

$ mkdir mce
$ cd mce
$ virtualenv venv
(Mac/Linux)$ source venv/bin/activate
(Windows)  $ .\venv\Scripts\activate
$ pip install manim jupyter

Clone repo:

git clone https://github.com/Elteoremadebeethoven/manim-ce-gl-crash-course.git -b mce code

Select the virtual environment that you have created.

image

πŸ“Œ ManimGL setup:

Install ManimGL v1.2 version:

$ git clone https://github.com/3b1b/manim/ -b v1.2.0 mgl-v1.2 --depth=1
$ cd mgl-v1.2
$ virtualenv venv
(Mac/Linux)$ source venv/bin/activate
(Windows)  $ .\venv\Scripts\activate
$ pip install -e .

Remove unnecessary files:

rm -rf docs LICENSE.md logo MANIFEST.in manimgl.egg-info pyproject.toml README.md requirements.txt setup.*

Extra dependencies:

pip install python-dotenv

Enviroment variables (.env file):

RENDER_SCENE=Example1
RENDER_OPTIONS=om
OUTPUT_NAME=output
PROGRESS_BARS=False
FPS=
START_AT=

Makefile:

FILE=

run:
	watchexec \
	-w $(FILE) \
	-w ".env" \
	"python $(FILE)"

File example:

from manimlib import *

class Example1(Scene):
    def construct(self):
        t = RegularPolygon(10, color=TEAL)
        t.to_edge(RIGHT)
        self.add(t)
        self.wait()


# ========================================================
if __name__ == '__main__':
    from dotenv import load_dotenv
    from os import getenv
    load_dotenv()
    # ---
    SCENE = getenv("RENDER_SCENE")
    RENDER_OPTIONS = getenv("RENDER_OPTIONS")
    OUTPUT_NAME = getenv("OUTPUT_NAME")
    FLAGS = f"-{RENDER_OPTIONS} --file_name {OUTPUT_NAME}"
    if eval(getenv("PROGRESS_BARS")):
        FLAGS += " --leave_progress_bars"
    if getenv("FPS"):
        FLAGS += f" --frame_rate {getenv('FPS')}"
    if getenv("START_AT"):
        FLAGS += f" -n {getenv('START_AT')}"
    # ---
    script_name = f"{Path(__file__).resolve()}"
    COMMAND = f"manimgl {script_name} {SCENE} {FLAGS}"
    print(f"CMD:\033[1m manimgl \033[96m{script_name} \033[93m{SCENE} \033[94m{FLAGS}")
    os.system(COMMAND)

Clone repo:

git clone https://github.com/Elteoremadebeethoven/manim-ce-gl-crash-course.git -b mgl code

πŸ’Έ Suport this work on:

About

Manim CE/GL fast course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published