The Camera
The camera decides what part of the picture you see: pan, zoom in, zoom out.
Zoom in and out
from pymations import *
class ZoomIn(MovingCameraScene):
def construct(self):
cells = VGroup(*[Square(side_length=0.8) for _ in range(24)]).arrange_in_grid(rows=4, buff=0.15)
target = cells[9]
self.play(FadeIn(cells))
self.play(target.animate.set_fill(YELLOW, opacity=0.8))
self.play(self.camera.frame.animate.scale(0.35).move_to(target), run_time=2)
self.wait()
self.play(self.camera.frame.animate.scale(1 / 0.35).move_to(ORIGIN), run_time=2)
self.camera.frame is the camera's view, as a rectangle in the picture. Animate it like any shape:
| Change | What you see |
|---|---|
frame.animate.scale(0.5) | Zooms in: the view is half as big, so everything looks twice the size |
frame.animate.scale(2) | Zooms out |
frame.animate.move_to(m) | Centres the view on m (or on a point) |
frame.animate.shift(RIGHT * 3) | Pans |
To go back to where you started, scale by one over the zoom and move to ORIGIN, as above.
Use MovingCameraScene instead of Scene for a scene that moves the camera, as Manim scripts do. In a short script without a class, the camera is camera.frame:
from pymations import *
dot = Dot(RIGHT * 3, color=YELLOW)
play(GrowFromCenter(dot))
play(camera.frame.animate.scale(0.4).move_to(dot), run_time=2)
The background
config.background_color = "#101820" (or self.camera.background_color in a scene) sets the colour behind everything. See Scenes and sections.
3D scenes
A ThreeDScene has a 3D camera that tilts, turns and zooms: set_camera_orientation, move_camera and a slow turn with begin_ambient_camera_rotation. See 3D.
Related
- Placing things
- Recording videos: the camera moves are in the video