moving_camera_scene¶
一个摄像机可以移动的场景。
另请参阅
示例
示例: ChangingCameraWidthAndRestore ¶
from manim import *
class ChangingCameraWidthAndRestore(MovingCameraScene):
def construct(self):
text = Text("Hello World").set_color(BLUE)
self.add(text)
self.camera.frame.save_state()
self.play(self.camera.frame.animate.set(width=text.width * 1.2))
self.wait(0.3)
self.play(Restore(self.camera.frame))
class ChangingCameraWidthAndRestore(MovingCameraScene):
def construct(self):
text = Text("Hello World").set_color(BLUE)
self.add(text)
self.camera.frame.save_state()
self.play(self.camera.frame.animate.set(width=text.width * 1.2))
self.wait(0.3)
self.play(Restore(self.camera.frame))
示例: MovingCameraCenter ¶
from manim import *
class MovingCameraCenter(MovingCameraScene):
def construct(self):
s = Square(color=RED, fill_opacity=0.5).move_to(2 * LEFT)
t = Triangle(color=GREEN, fill_opacity=0.5).move_to(2 * RIGHT)
self.wait(0.3)
self.add(s, t)
self.play(self.camera.frame.animate.move_to(s))
self.wait(0.3)
self.play(self.camera.frame.animate.move_to(t))
class MovingCameraCenter(MovingCameraScene):
def construct(self):
s = Square(color=RED, fill_opacity=0.5).move_to(2 * LEFT)
t = Triangle(color=GREEN, fill_opacity=0.5).move_to(2 * RIGHT)
self.wait(0.3)
self.add(s, t)
self.play(self.camera.frame.animate.move_to(s))
self.wait(0.3)
self.play(self.camera.frame.animate.move_to(t))
示例: MovingAndZoomingCamera ¶
from manim import *
class MovingAndZoomingCamera(MovingCameraScene):
def construct(self):
s = Square(color=BLUE, fill_opacity=0.5).move_to(2 * LEFT)
t = Triangle(color=YELLOW, fill_opacity=0.5).move_to(2 * RIGHT)
self.add(s, t)
self.play(self.camera.frame.animate.move_to(s).set(width=s.width*2))
self.wait(0.3)
self.play(self.camera.frame.animate.move_to(t).set(width=t.width*2))
self.play(self.camera.frame.animate.move_to(ORIGIN).set(width=14))
class MovingAndZoomingCamera(MovingCameraScene):
def construct(self):
s = Square(color=BLUE, fill_opacity=0.5).move_to(2 * LEFT)
t = Triangle(color=YELLOW, fill_opacity=0.5).move_to(2 * RIGHT)
self.add(s, t)
self.play(self.camera.frame.animate.move_to(s).set(width=s.width*2))
self.wait(0.3)
self.play(self.camera.frame.animate.move_to(t).set(width=t.width*2))
self.play(self.camera.frame.animate.move_to(ORIGIN).set(width=14))
示例: MovingCameraOnGraph ¶
from manim import *
class MovingCameraOnGraph(MovingCameraScene):
def construct(self):
self.camera.frame.save_state()
ax = Axes(x_range=[-1, 10], y_range=[-1, 10])
graph = ax.plot(lambda x: np.sin(x), color=WHITE, x_range=[0, 3 * PI])
dot_1 = Dot(ax.i2gp(graph.t_min, graph))
dot_2 = Dot(ax.i2gp(graph.t_max, graph))
self.add(ax, graph, dot_1, dot_2)
self.play(self.camera.frame.animate.scale(0.5).move_to(dot_1))
self.play(self.camera.frame.animate.move_to(dot_2))
self.play(Restore(self.camera.frame))
self.wait()
class MovingCameraOnGraph(MovingCameraScene):
def construct(self):
self.camera.frame.save_state()
ax = Axes(x_range=[-1, 10], y_range=[-1, 10])
graph = ax.plot(lambda x: np.sin(x), color=WHITE, x_range=[0, 3 * PI])
dot_1 = Dot(ax.i2gp(graph.t_min, graph))
dot_2 = Dot(ax.i2gp(graph.t_max, graph))
self.add(ax, graph, dot_1, dot_2)
self.play(self.camera.frame.animate.scale(0.5).move_to(dot_1))
self.play(self.camera.frame.animate.move_to(dot_2))
self.play(Restore(self.camera.frame))
self.wait()
示例: SlidingMultipleScenes ¶
from manim import *
class SlidingMultipleScenes(MovingCameraScene):
def construct(self):
def create_scene(number):
frame = Rectangle(width=16,height=9)
circ = Circle().shift(LEFT)
text = Tex(f"This is Scene {str(number)}").next_to(circ, RIGHT)
frame.add(circ,text)
return frame
group = VGroup(*(create_scene(i) for i in range(4))).arrange_in_grid(buff=4)
self.add(group)
self.camera.auto_zoom(group[0], animate=False)
for scene in group:
self.play(self.camera.auto_zoom(scene))
self.wait()
self.play(self.camera.auto_zoom(group, margin=2))
class SlidingMultipleScenes(MovingCameraScene):
def construct(self):
def create_scene(number):
frame = Rectangle(width=16,height=9)
circ = Circle().shift(LEFT)
text = Tex(f"This is Scene {str(number)}").next_to(circ, RIGHT)
frame.add(circ,text)
return frame
group = VGroup(*(create_scene(i) for i in range(4))).arrange_in_grid(buff=4)
self.add(group)
self.camera.auto_zoom(group[0], animate=False)
for scene in group:
self.play(self.camera.auto_zoom(scene))
self.wait()
self.play(self.camera.auto_zoom(group, margin=2))
类
这是一个场景(Scene),它具有特殊的配置和属性,使其适用于摄像机需要移动的情况。 |