Manim 结构¶
Manim 目录结构¶
manim 的目录看起来很复杂,文件很多,但是结构非常清晰
下面是 manim 的目录结构:
manimlib/ # manim库
├── __init__.py
├── __main__.py
├── default_config.yml # 默认配置文件
├── config.py # 在这里处理命令传入的参数
├── constants.py # 一些定义的常量
├── extract_scene.py # 提取、运行场景
├── shader_wrapper.py # Shader 包装器
├── window.py # 反馈窗口
├── logger.py # 创建 Logger 实例
├── tex_templates/ # LaTeX模板
│ ├── tex_templates.tex # tex 模板(将使用 latex 编译,默认)
│ └── ctex_templates.tex # 支持中文的 tex 模板(将使用 xelatex 编译)
├── camera/ # 相机
│ └── camera.py # 包括 Camera 和 CameraFrame
├── scene/ # 场景
│ ├── scene_file_writer.py # 用于将 scene 写入视频文件
│ ├── scene.py # 最普通的场景
│ ├── three_d_scene.py # 三维场景
│ ├── sample_space_scene.py # 概率相关的样本空间场景
│ └── vector_space_scene.py # 向量场场景
├── animation/ # 动画
│ ├── animation.py # 动画的基类
│ ├── composition.py # 动画组
│ ├── creation.py # 和 Create 有关的动画
│ ├── fading.py # 和 Fade 有关的动画
│ ├── growing.py # 和 Grow 有关的动画
│ ├── indication.py # 一些用于强调的动画
│ ├── movement.py # 和移动有关的动画
│ ├── numbers.py # 实现对 DecimalNumber 数字的变化
│ ├── rotation.py # 和旋转有关的动画
│ ├── specialized.py # 一些针对特殊项目的不常用动画
│ ├── transform_matching_parts.py # 自动匹配部分的 Transform
│ ├── transform.py # 一些 Transform 变换
│ └── update.py # 从函数实现 update
├── mobject/ # 数学物品
│ ├── mobject.py # 所有mobject的父类
│ ├── types/ # 4种子类mobject
│ │ ├── dot_cloud.py # Dot cloud (PMobject 的一个子类)
│ │ ├── image_mobject.py # 插入图片
│ │ ├── point_cloud_mobject.py # PMobject (点集构成的 mobject)
│ │ ├── surface.py # ParametricSurface
│ │ └── vectorized_mobject.py # VMobject (向量化的 mobject)
│ ├── svg/ # 和svg有关的mobject
│ │ ├── svg_mobject.py # SVGMobject
│ │ ├── brace.py # 大括号
│ │ ├── drawings.py # svg 图像的一些特殊 mobject
│ │ ├── mtex_mobject.py # 依赖 LaTeX 实现的文字
│ │ ├── tex_mobject.py # 依赖 LaTeX 实现的文字
│ │ └── text_mobject.py # 依赖 manimpango 实现的文字
│ ├── changing.py # 动态变化的 mobject
│ ├── coordinate_systems.py # 坐标系统
│ ├── frame.py # 和 frame 有关的 mobject
│ ├── functions.py # 参数方程
│ ├── geometry.py # 几何图形的 mobject
│ ├── interactive.py # 可交互的物件
│ ├── matrix.py # 矩阵
│ ├── mobject_update_utils.py # 一些定义的更新程序
│ ├── number_line.py # 数轴
│ ├── numbers.py # 可以变化的数字
│ ├── probability.py # 和概率有关的 mobject
│ ├── shape_matchers.py # 适应其它物体大小的 mobject
│ ├── three_dimensions.py # 三维物体
│ ├── value_tracker.py # ValueTracker(存储数的 mobject)
│ └── vector_field.py # 向量场
├── event_handler/ # 处理交互事件(不常用)
│ ├── event_dispatcher.py
│ ├── event_listener.py
│ └── event_type.py
├── once_useful_constructs/ # 3b1b 为某些视频写的常用场景
│ └── ...
├── shaders/ # 渲染中使用的GLSL脚本
│ ├── simple_vert.glsl # 一个简单的对位置的 glsl 脚本
│ ├── insert/ # 需要插入到其他脚本中的脚本片段
│ │ ├── NOTE.md # 描述了如何插入脚本
│ │ └── ... # 一些常用的脚本
│ ├── image/ # 针对图像的 glsl
│ │ └── ... # 包含 vertex shader 和 fragment shader
│ ├── quadratic_bezier_fill/ # 针对二阶贝塞尔填充的 glsl
│ │ └── ... # 包含 vertex shader、fragment shader 和 geometry shader
│ ├── quadratic_bezier_stroke/ # 针对二阶贝塞尔线条的g lsl
│ │ └── ... # 包含 vertex shader、fragment shader 和 geometry shader
│ ├── mandelbrot_fractal/ # 针对M集的glsl
│ │ └── ... # 包含 vertex shader 和 fragment shader
│ ├── newton_fractal/ # 针对牛顿分形的 glsl
│ │ └── ... # 包含 vertex shader 和 fragment shader
│ ├── surface/ # 针对三维面的 glsl
│ │ └── ... # 包含 vertex shader 和 fragment shader
│ ├── textured_surface/ # 针对纹理面的 glsl
│ │ └── ... # 包含 vertex shader 和 fragment shader
│ └── true_dot/ # 对于一个点的 glsl
│ └── ... # 包含 vertex shader、fragment shader 和 geometry shader
└── utils/ # 一些实用的工具函数
├── bezier.py # 贝塞尔曲线
├── color.py # 颜色
├── config_ops.py # 处理 CONFIG
├── customization.py # 读取 custom_config.yml
├── debug.py # 在程序中 debug 的函数
├── directories.py # 读取配置文件中目录相关内容
├── family_ops.py # 处理 family 成员
├── file_ops.py # 处理文件目录
├── images.py # 读取图片
├── init_config.py # 自动配置指南
├── iterables.py # 和列表字典处理有关的函数
├── paths.py # 路径
├── rate_functions.py # 一些定义的 rate_function
├── simple_functions.py # 一些常用函数
├── sounds.py # 处理声音
├── space_ops.py # 空间坐标计算
└── tex_file_writing.py # 将字符串利用 LaTeX 写成 svg