v0.1.0

日期:

2020年10月21日

这是Manim Community从3b1b/manim分支后的第一个版本。因此,开发者们专注于清理和重构代码库,同时尽可能保持向后兼容性。

新特性

命令行

  1. “manim –help”的输出已改进。

  2. 使用rich库和logger对象实现日志记录,而不是简单的打印输出。

  3. 添加了--dry_run标志,该标志不写入任何媒体文件。

  4. 允许使用python3 -m manim运行Manim。

  5. 重构了Tex模板管理。现在您可以使用--tex_template命令行参数来使用自定义模板!

  6. 重新添加--save_frames标志,该标志会将每一帧保存为PNG图像。

  7. 重新引入Manim功能,如果您将减号(-)作为文件名传递,则可以在stdin中输入Manim代码。

  8. 添加了--custom_folders标志,该标志会生成更简单的输出文件夹结构。

  9. 使用-i标志重新实现GIF导出(使用此标志只输出.gif文件,不输出.mp4文件)。

  10. 添加了--verbose标志。

  11. 您可以使用--log_to_file将日志保存到文件中。

  12. 如果--tex_template未指定,则从配置文件读取tex_template

  13. 添加实验性JavaScript渲染,使用--use_js_renderer

  14. 添加-q/--quality [k|p|h|m|l]标志,并移除了-m/-l标志。

  15. 移除了--sound标志。

配置系统

  1. 实现了一个manim.cfg配置文件系统,该系统整合了全局配置、命令行参数解析以及constants.py中定义的一些常量。

  2. 添加了用于操作Manim .cfg文件的实用工具。

  3. 添加了一个子命令结构,以便更轻松地使用管理.cfg文件的实用工具。

  4. 此外,一些变量已从constants.py移至新的配置系统。

    1. FRAME_HEIGHT改为config["frame_width"]

    2. TOP改为config["frame_height"] / 2 * UP

    3. BOTTOM改为config["frame_height"] / 2 * DOWN

    4. LEFT_SIDE改为config["frame_width"] / 2 * LEFT

    5. RIGHT_SIDE改为config["frame_width"] / 2 * RIGHT

    6. self.camera.frame_rate改为config["frame_rate"]

Mobject对象、场景和动画

  1. Matrix Mobject对象添加可自定义的左右括号,并为矩阵Mobject对象添加set_row_colors方法。

  2. 添加AddTeXLetterByLetter动画。

  3. 增强了GraphScene。

    1. 现在可以为坐标轴添加箭头尖端。

    2. 在坐标轴的起点和/或终点稍微延伸。

    3. 使坐标轴不可见。

    4. 高亮显示两条曲线之间的区域。

  4. ThreeDScene现在支持3dillusion_camera_rotation。

  5. 添加z_index用于操作场景中对象的深度。

  6. 添加VDict类:VDict之于VGroup,如同dict之于list

  7. 添加了场景缓存功能。现在,如果您的代码中的部分电影文件未更改,则不会再次渲染![极不稳定,我们正在努力;)]

  8. 大多数get_set_方法已被移除,取而代之的是实例属性和特性。

  9. Container类改为了抽象基类,即无法实例化。请改用其子类之一。

  10. TextMobjectTexMobject对象因其令人困惑的名称已被弃用,取而代之的是TexMathTex。但是,您仍然可以继续使用TextMobjectTexMobject,尽管会有弃用警告不断提醒您切换。

  11. 添加了一个Variable类,用于显示持续更新以反映Python变量值的文本。

  12. TexMathTex对象允许您使用template关键字参数指定自定义Tex模板。

  13. VGroup现在支持打印包含Mobject对象的类名,而VDict支持打印Mobject对象的内部字典。

  14. 添加了所有标准缓和函数。

  15. Scene现在在调用Scene.render()时渲染,而不是在实例化时渲染。

  16. ValueTracker现在支持使用+=运算符进行增量(除了已有的increment_value方法)。

  17. 添加了PangoText用于使用Pango渲染文本。

文档

  1. 添加了更清晰的安装说明、教程、示例和API参考 [正在进行中]

修复

  1. 目录的初始化已移至config.py,并修复了许多与文件结构生成相关的错误。

  2. 非功能性文件media_dir.txt已移除。

  3. 非功能性if语句已从scene_file_writer.py中移除。

  4. 修复了一个错误,即尝试渲染示例场景而不指定场景时会显示库中的所有场景对象。

  5. 许多Exceptions已被更具体的异常子类取代。

  6. 修复了ArcBetweenPoints中的几个细微错误。

对开发者感兴趣的

  1. 现在通过使用black工具强制执行Python代码格式化。

  2. PR现在需要社区开发者的两次批准代码审查才能合并。

  3. 添加了测试以确保提交之间不会出现问题(面向开发者)[使用Github CI和Pytest]。

  4. 添加了贡献指南(面向开发者)。

  5. 添加了使用sphinx和autodoc/autosummary自动生成的文档[正在进行中]。

  6. 使Manim内部使用相对导入。

  7. TexTemplate类引入以来,文件tex_template.texctex_template.tex已被移除。

  8. 增加了日志测试工具。

  9. 增加了以JSON格式保存日志的功能。

  10. 迁移到Poetry。

  11. 颜色已迁移到枚举。

其他更改

  1. 清理3b1b特定文件。

  2. 将包名从manimlib重命名为manim。

  3. 将所有导入移至__init__,因此from manim import *取代from manimlib.imports import *

  4. 已移除全局目录变量处理。取而代之的是,如果需要,initialize_directories会在运行时覆盖cfg文件中的值。