Estimated time to finish it: 1 year
Syllabus
- Introduction
- Requirements
- How to ask your questions
- Basic elements
- How Manim works
- Introduction to Mobjects and Animations
- Watchexec with Manim
- Work environment setup
- Mobjects/VMobjects Generalities
- Positioning
- Transformations
- VMobject attrs
- Miscellaneous (V)Mobjects topics
- Rendering Settings
- With .cfg files (only ManimCE)
- With Manim CLI
- With CONFIG dict (only ManimCE)
- With
tempconfig
(only ManimCE)
- Rate functions
- Layers
- Import Assets
- Raster images
- SVGs
- Sounds
- CSV
- Groups, VGroups and PGroups
- Submobjects
Group
VGroup
PGroup
- Text and
$\TeX$ - Text
$\TeX$
-
Transform
animationsTransform
ReplacementTransform
TransformFromCopy
TransformMatchingShapes
TransformMatchingTex
MoveToTarget
ApplyFunction
- More useful Mobjects and their methods
- Code
- Lines
- Arcs
- Braces
- Polygons
- NumberLine
- Tables
- Matrix
- Boolean Mobjects
- 2D plots
- Cartesian plots
- Polar plots
- 3D plots
- 3D scene
- 3D axes
- Plots
- Basic Updaters
- Functions as updaters
ValueTracker
DecimalNumber
-
.become
method always_redraw
-
alpha
updaters- Allowed
alpha
values -
.save_state()
technique
- Allowed
- Custom animations
-
__init__
method _setup_scene
-
begin
method - With
interpolate_mobject
- With
interpolate_submobject
- With both
clean_up_from_scene
-
-
dt
updaters- Problems with updaters
- Animations into
dt
updaters
- Custom Mobjects
-
AnimationGroup
lag_ratio
AnimationGroup
LaggedStart
- With custom animations
- Moving Camera and Zoom Scenes (ManimCE only)
MovingCameraScene
ZoomedScene
- ImageMobjects in depth
- Pixel manipulation
- Pixel interpolation
- Filters
LinearTransformationScene
- Vector fields
- Interactive scenes
Manim Professional Course | ManimCE-GL crash course | |
---|---|---|
Theory | β | β |
Pro-tips | β | β |
Examples | β | β |
Exercises | β | β |
ManimGL topics (v1.2) | β | β |
Free | β | β |
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.
- CMD (Windows): https://www.youtube.com/watch?v=qnXe1gecux
- Bash on Windows with Git Bash: https://www.youtube.com/watch?v=iGutIN5t9Mo
- Terminal for Mac: https://www.youtube.com/watch?v=aKRYQsKR46I
- Git and GitHub: https://www.youtube.com/watch?v=tRZGeaHPoaw
- Makefiles (you need to install gcc and make): https://www.youtube.com/watch?v=yWLkyN_Satk
Although the video is from last year it is still valid.
- Manim with
watchexec
- Share the code in markdown format, here's a quick tutorial. Please DO NOT share code on images.
- Your question must be accurate, the code should not be longer than 30 lines.
- Format the code so that it is easy to read, it must be in English and indented with descriptive names.
1. Discord: https://discord.com/invite/bYCyhM9Kz2
2. Stackoverflow: Use the manim
tag.
3. Reddit: https://www.reddit.com/r/manim/
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.
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