1.【manim动画教程】-- 安装
2.【manim动画教程】-- 基本图形
3.【manim动画教程】-- 坐标系
4.【manim动画教程】-- 文本样式
5.【manim动画教程】-- 文字和公式
6.【manim动画教程】-- 图形样式
7.【manim动画教程】--相机
8.【manim动画教程】--高级动画效果
9.【manim动画教程】--常用动画效果
10.【manim】之滚动字幕
11.【manim】之圆规动画
12.【manim】之目录动画
13.manim边学边做--DecimalNumber
14.manim边学边做--Integer
15.manim边学边做--Variable
16.manim边学边做--Title
17.manim边学边做--BulletedList
18.manim边学边做--SingleStringMathTex
19.manim边学边做--MathTex
20.manim边学边做--Tex
21.manim边学边做--Text
22.manim边学边做--Paragraph
23.manim边学边做--MarkupText
24.manim边学边做--Code
25.manim边学边做--Matrix
26.manim边学边做--Table
27.manim边学边做--点
28.manim边学边做--圆形类
29.manim边学边做--圆弧形
30.manim边学边做--直线类
31.manim边学边做--带箭头直线
32.manim边学边做--曲线类
33.manim边学边做--角度标记
34.manim边学边做--常用多边形
35.manim边学边做--通用多边形
36.manim边学边做--弧形多边形
37.manim边学边做--空心多边形
38.manim边学边做--图形间集合关系
39.manim边学边做--形状匹配
40.manim边学边做--无向图
41.manim边做边学--有向图
42.manim边做边学--数轴
43.manim边做边学--直角平面
44.manim边做边学--复数平面
45.manim边学边做--极坐标平面
46.manim边学边做--通用二维坐标系
47.manim边做边学--通用三维坐标系
48.manim边学边做--三维的点和线
49.manim边学边做--立方体和棱柱体
50.manim边做边学--圆锥
51.manim边做边学--球体
52.manim边做边学--圆环面
53.manim边做边学--圆柱体
54.manim边做边学--曲面
55.manim边做边学--多面体
56.manim边做边学--文字的创建与销毁
57.manim边做边学--图形的创建与销毁
58.manim边做边学--淡入淡出
59.manim边学边做--渐变生长
60.manim边学边做--突出显示
61.manim边学边做--旋转
62.manim边学边做--移动动画
63.manim边学边做--同伦变换
64.manim边学边做--改变动画速度
65.manim边做边学--动画轨迹
66.manim边做边学--动画组合
67.manim边做边学--动画更新
68.manim边做边学--动画联动
69.manim边做边学--缩放变换
70.manim边做边学--交替变换
71.manim边做边学--淡入淡出变换
72.manim边学边做--时针方向变换
73.manim边学边做--局部变换
74.manim边学边做--通用变换
75.manim边学边做--相机Camera简介
76.manim边学边做--标准相机
77.manim边学边做--场景Scene简介
78.
manim边学边做--局部缩放的场景类
在动画制作中,尤其是数学和科学可视化领域,有时我们需要将观众的注意力集中在场景的某个特定部分。
Manim
提供了一个强大的工具 ZoomedScene
,它允许我们在场景中创建一个独立的缩放视图,从而实现对局部细节的深入展示。
本文将详细介绍ZoomedScene
的作用、参数、方法,并通过实际示例展示其强大功能。
1. ZoomedScene概要
ZoomedScene
是Manim
中一个专门用于局部缩放的场景类。
其核心功能是允许我们在主场景中创建一个独立的“缩放窗口”,通过这个窗口,可以清晰地展示场景中某个部分的细节。
这种设计特别适用于以下场景:
- 数学公式推导:在展示复杂的数学公式时,可以使用
ZoomedScene
对公式中的关键部分进行放大,帮助观众更好地理解 - 科学实验演示:在展示微观现象(如细胞结构、分子运动)时,通过缩放功能,可以让观众更直观地观察细节。
- 工程设计展示:对于复杂的机械结构或电路设计,
ZoomedScene
可以帮助观众聚焦于关键部件 - 教育动画:在教学视频中,通过局部缩放,可以更有效地引导学生关注重点内容
1.1. 主要参数
ZoomedScene
的主要参数有:
参数名称 | 类型 | 说明 |
---|---|---|
camera_class | class | 用于定义场景的相机类,默认为MultiCamera 。它决定了场景的渲染方式 |
zoomed_display_height | float | 缩放窗口的高度,默认值为 3 |
zoomed_display_width | float | 缩放窗口的宽度,默认值为 3 |
zoomed_display_center | array | 缩放窗口的中心位置,默认为None ,表示自动计算 |
zoomed_display_corner | array | 缩放窗口在场景中的角落位置,默认为[1, 1, 0] ,表示窗口位于右上角 |
zoomed_display_corner_buff | float | 缩放窗口与角落的距离,默认值为 0.5 |
zoomed_camera_config | dict | 缩放相机的配置参数,例如背景透明度和边框宽度 |
zoomed_camera_image_mobject_config | dict | 缩放相机图像的配置参数 |
zoomed_camera_frame_starting_position | array | 缩放相机的初始位置,默认为[0, 0, 0] |
zoom_factor | float | 缩放比例,默认值为 0.15 。它决定了缩放窗口与主场景的比例关系 |
image_frame_stroke_width | float | 缩放窗口边框的宽度,默认值为3 |
zoom_activated | bool | 是否激活缩放功能,默认为False |
1.2. 主要方法
ZoomedScene
的主要方法有:
名称 | 说明 |
---|---|
activate_zooming | 激活缩放功能 |
get_zoom_factor | 获取当前的缩放比例 |
get_zoom_in_animation | 返回一个缩放动画 |
get_zoomed_display_pop_out_animation | 返回缩放窗口弹出的动画 |
2. 使用示例
为了更好地理解ZoomedScene
的功能,我们将通过四个实际示例展示其特点。
2.1. 公式的局部放大
视频中展示欧拉公式时,在另一个位置中展示公式的局部放大。
在讲解复杂的公式时,可以使用这个功能来突出显示其中的正在讲解的参数。
formula = MathTex("e^{i\\pi} + 1 = 0").scale(2)
self.add(formula)
self.activate_zooming(animate=True)
self.wait()
self.play(self.get_zoom_in_animation(run_time=2))
2.2. 不同图形的细节
这个示例交互式切换圆形 / 正方形的局部观察。
circle = Circle().shift(LEFT)
d1 = Dot(circle.get_center(), radius=0.1, color=RED)
square = Square(color=BLUE).shift(RIGHT)
d2 = Dot(square.get_center(), radius=0.1, color=BLUE)
self.add(circle, square, d1, d2)
self.activate_zooming(animate=True)
# 动态切换缩放目标
f = self.zoomed_camera.frame
self.play(f.animate.move_to(circle))
self.play(self.get_zoom_in_animation())
self.play(f.animate.move_to(square))
self.play(self.get_zoom_in_animation())
2.3. 切换不同的部分
这个示例演示逐步放大图中不同节点的过程。
nodes = VGroup(
Dot(color=GREEN),
Dot(color=YELLOW),
Dot(color=BLUE),
).arrange(RIGHT, buff=2)
self.add(nodes)
self.activate_zooming(animate=True)
f = self.zoomed_camera.frame
# 多阶段缩放展示
self.play(f.animate.move_to(nodes[0]))
self.play(self.get_zoom_in_animation())
self.play(f.animate.move_to(nodes[1]))
3. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(zoom.py
),
下载地址: 完整代码 (访问密码: 6872)
原创作者: wang_yb 转载于: https://www.cnblogs.com/wang_yb/p/18758176