在 Manim 中,相机(Camera)负责将场景中的 Mobject 转换为屏幕上的像素,决定了观众看到的画面范围、视角和投影方式。camera 目录下提供了多种相机模块,以满足不同的动画需求。以下是各模块的介绍:
camera
介绍:这是最基本的相机模块,定义了 Camera 类。它负责管理场景的渲染设置(如背景色、分辨率、抗锯齿),以及如何将 2D 对象投影到画布上。Camera 是其他所有相机类的基类,支持简单的平移、缩放和旋转(仅对 2D 对象),但视角始终垂直于屏幕(正交投影)。在普通场景中,默认使用的就是这种相机。
mapping_camera
介绍:该模块提供了一种能够对场景进行空间映射变换的相机,例如实现图像扭曲、鱼眼效果或自定义的坐标映射。它允许开发者定义从世界坐标到屏幕坐标的映射函数,从而创造出非线性的视觉特效。核心类为 MappingCamera,通过重写 get_mobject_rect 等方法实现坐标变换,适用于艺术化展示或特殊视觉需求的动画。
moving_camera
介绍:该模块提供了 MovingCamera 类,它继承自 Camera,并增加了可移动和变焦的能力。MovingCamera 拥有一个矩形框架(frame),可以随着动画平滑地移动、缩放,从而改变观察区域。开发者可以通过操作框架来控制相机的运动,常用于跟踪对象、展示细节或实现镜头推拉效果。需要配合 MovingCameraScene 使用。
multi_camera
介绍:此模块实现了多视角相机 MultiCamera,它可以将同一个场景分割成多个视口(viewports),每个视口可以拥有独立的相机参数(位置、缩放、旋转)。例如,可以同时展示整体布局和局部放大视图,或在同一画面中呈现不同角度(如三维物体的正面和侧面)。适用于分屏演示、对比展示或复杂的视觉效果。
three_d_camera
介绍:该模块提供了 ThreeDCamera 类,专为三维场景设计。它支持在三维空间中自由移动和旋转,并模拟透视投影(近大远小),使立体对象更具真实感。ThreeDCamera 通常与 ThreeDScene 配合使用,允许围绕物体旋转、拉近拉远、调整视角等操作,是创作三维动画的核心工具。
实践出真理。