v0.1.0

Date:

2020年10月21日

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

新功能

命令行

  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. 重新实现GIF导出,使用-i标志(使用此标志仅输出.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_HEIGHTconfig["frame_width"]

    2. TOPconfig["frame_height"] / 2 * UP

    3. BOTTOMconfig["frame_height"] / 2 * DOWN

    4. LEFT_SIDEconfig["frame_width"] / 2 * LEFT

    5. RIGHT_SIDEconfig["frame_width"] / 2 * RIGHT

    6. self.camera.frame_rateconfig["frame_rate"]

Mobjects、场景和动画

  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 关键字参数指定自定义的 TexTemplate。

  13. VGroup 现在支持打印包含的mobjects的类名,VDict 支持打印mobjects的内部字典

  14. 添加所有标准的缓动函数

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

  16. ValueTracker 现在支持使用 += 运算符进行增量操作(除了已经存在的 increment_value 方法之外)

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

文档

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

修复

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

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

  3. scene_file_writer.py中的非功能性if语句已被移除

  4. 修复了一个错误,该错误发生在尝试渲染示例场景时,如果没有指定场景,则会显示库中的所有场景对象

  5. 许多Exceptions已被更具体的异常子类替换

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

开发者感兴趣的内容

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

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

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

  4. 添加贡献指南(针对开发者)

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

  6. 使manim内部使用相对导入

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

  8. 添加了日志记录测试工具。

  9. 增加了将日志保存为json的能力

  10. 转向诗歌。

  11. 颜色已移至枚举

其他变更

  1. 清理3b1b特定文件

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

  3. 将所有导入移动到__init__,以便from manim import *替换from manimlib.imports import *

  4. 全局目录变量处理已被移除。如果需要,initialize_directories会在运行时覆盖配置文件中的值。