Learning by Example¶
SquareToCircle¶
example_scenes.py contains simple examples that we can use to learn about manim.
Go ahead and try out the SquareToCircle scene by running it with $ manim example_scenes.py SquareToCircle -p
in manim directory.
1 2 3 4 5 6 7 8 9 10 11 12 13 | from manimlib.imports import *
class SquareToCircle(Scene):
def construct(self):
circle = Circle()
square = Square()
square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
circle.set_fill(PINK, opacity=0.5)
self.play(ShowCreation(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))
|
Note
The flag -p plays the rendered video with default video player.
Other frequently used flags are:
-lfor rendering video in lower resolution (which renders faster)
-sto show the last frame of the video.
Run manim -h all the available flags (python -m manim -h if you installed it to a venv)
Let’s step through each line of SquareToCircle
3 | class SquareToCircle(Scene):
|
You create videos in manim by writing Scene classes.
Each Scene in manim is self-contained. That means everything
you created under this scene does not exist outside the class.
4 | def construct(self):
|
construct() specifies what is displayed on the screen
when the Scene is rendered to video.
5 6 | circle = Circle()
square = Square()
|
Circle() and Square() create Circle and Square.
Both of these are instances of Mobject subclasses, the base class for objects in manim. Note
that instantiating a Mobject does not add it to the
Scene, so you wouldn’t see anything if you were to render
the Scene at this point.
7 8 9 | square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
circle.set_fill(PINK, opacity=0.5)
|
flip() rotate() set_fill() apply various modifications to the mobjects before animating
them. The call to flip() flips the
Square across the RIGHT vector. This is equivalent
to a refection across the x-axis.
The call to rotate() rotates the
Square 3/8ths of a full rotation counterclockwise.
The call to set_fill() sets
the fill color for the Circle to pink, and its opacity to 0.5.
11 12 13 | self.play(ShowCreation(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))
|
To generated animation, Animation classes are used.
Each Animation takes one or more Mobject instances as arguments, which it animates
when passed to play(). This is how video is typically
created in manim.
Mobject instances are automatically
added to the Scene when they are animated. You can add a
Mobject to the Scene manually
by passing it as an argument to add().
ShowCreation draws a Mobject to the screen.
Transform morphs one Mobject into another.
FadeOut fades a Mobject out of the Scene.
Note
Only the first argument to Transform is modified,
the second is not added to the Scene. Transform
only changes the appearance but not the underlying properties.
After the call to transform() square is still a Square instance
but with the shape of Circle.