跳转至

v0.5.0

2021 年 4 月 2 日

亮点

  • #1075 : 添加 OpenGL 渲染器

添加 OpenGLRenderer、OpenGLCamera、支持 OpenGL 的 Mobject 和标志--use_opengl_renderer。传递此标志后,您可以传递-p用于预览动画的标志、-w用于生成视频的标志以及-q用于指定渲染质量的标志。如果您没有通过 或-p标志-w,则不会发生任何事情。使用 OpenGL 渲染器渲染的场景必须使用支持 OpenGL 的 Mobject。

已弃用的类和函数

  • #1124:已弃用ShowCreation,有利于Create

  • 除 show_creation 布尔变量 vector_space_scene.py 外,已弃用ShowCreation以支持整个库Create

  • 在原始类中添加了弃用警告ShowCreation

  • #1110 : 已弃用 SmallDot + OpenGLSmallDot

SmallDot 不是必需的,并且会引发弃用警告。这将在未来的版本中删除。

新功能

添加了新的淡入淡出动画:FadeOutToPoint 添加FadeTransformFadeTransformPieces用于使用淡入淡出变换 mobjects 和子对象 添加TransformMatchingShapesTransformMatchingTex用于变换具有匹配部分的 mobjects 和 tex

添加了Unwrite继承自Write. 它通过传递反向速率函数自动反转动画Write,但它还需要一个额外的布尔参数反向,如果为 False,则从左到右渲染动画(假设文本以通常的方式定向),但如果为 True,则渲染右到左。

Angle两者RightAngle都接受两行作为输入。如果它们相交或共享一个公共顶点,则会在它们之间绘制一个角度。用户可以自定义角度的外观,也可以使用点直角。

增强功能

  • #1144:提高 GIF 的质量
  • #1157:调用时刷新三角测量apply_points_function()

旋转称为 apply_points_function,它以前不是 OpenGLMobject 的子类 - 现在是。然后,顶点法线也可以更新。

此外,old_points 矩阵在旋转后会发生变化,使得旧点/新点测试变得不相关。这是通过 .copy 调用解决的。

  • #1151:添加了参数函数支持OpenGLSurface
  • #1139:代码内配置[“预览”]支持
  • #1123:向 OpenGL 渲染器添加缓存、跳过和用户指定的背景颜色

OpenGL 播放逻辑已得到改进,支持使用-n 参数进行缓存和跳过(现在类似于 Cairo 播放逻辑)。OpenGLSurface 中的一个随机错误已修复,OpenGL 背景颜色现在可以通过 background_color 参数进行更改。

  • #1118 : 允许使用 .animate 语法传递动画参数

如果用户想要为单个.animate 调用指定动画参数,现在他们可以执行 obj.animate(run_time=2).method(arg)等操作,但仍然不能指定任何参数,如 obj.animate.method( arg)。

仅在访问.animate 后才允许直接传递动画参数,如果传递到其他地方,则会引发 ValueError 。

  • #718:旋转 y 轴上的数字

在“轴”中,y 轴将旋转 90 度,但数字也会旋转,但不应该旋转。修复此问题。

  • #1070 : 当无法找到通过指定的 .cfg 文件时引发 FileNotFoundError--config_file

引发错误将停止脚本执行并让用户知道–config_file 位置存在问题,而不是恢复为默认配置。

修复了错误

AnimationGroup 现在可以采用没有子 Mobject 的 Animation 对象,例如 Wait。

  • #1170 : 修复了 SVG 解析的小错误
  • #1159:添加了对同一 SVG 元素中的多个变换的支持
  • #1156:修复DrawBorderThenFill以支持 OpenGL 并改进了某些函数的类型提示

DrawBorderThenFill修复了一个导致Write动画无法使用的错误OpenGLVMobjects,并稍微改进了一些动画函数的类型提示OpenGLVMobject

-a/标志--write-all已损坏。使用时,它会导致 Manim 在开始渲染第二个场景后崩溃。

  • #1115:修复了错误OpenGLMobject并添加了ApplyMethod支持

修复了未定义的变量并转换MobjectOpenGLMobject. 另外,修复了ApplyMethod.

的默认行为rotate()是围绕 的中心旋转Mobject。仅当==NumberLine时才关于数字 0 处的点对称。理想情况下,旋转应与线上编号 0 的点重合。|x_min|``|x_max|

添加了回归测试并另外修复了#718中引入的一些错误。

  • #1078 : 从__main__.py 中删除了杂散的打印语句

使用 rich 的打印回溯,并修复了调用 manim –version 时两次打印版本的问题。

创建 Mobject 时缺少 line_spacing kwarg Text;这添加了它。

Torus当 minor_radius 不等于 1 时,绘制一个具有椭圆形横截面的曲面。此 PR 确保横截面始终是圆形。

与文档相关的更改

  • #1217:在我们的文档中复制编辑了有关测试的文档
  • #1206 : 添加文档字符串Mobject
  • #1218 : 从示例库中删除了 BezierSpline
  • #1219:更新了 Dockerfile(包括构建文档的依赖项),将文档移至主自述文件
  • #1209 : 添加 :ref_methods: 到 manim 指令

这允许在文档中链接类方法。查看代码下面的示例参考,了解如何使用它!

  • #1204:将旋转示例添加到示例库
  • #1137:添加了有关向 Sphinx 文档添加测试/文档的 GitHub Wiki 页面
  • #1114:添加了EllipsePolygonRegularPolygonTriangle的示例RoundedRectangle
  • #1195 : 从示例中删除了 SmallDot
  • #1130:添加了运行 black 和 flake8 的预提交,相应更新了贡献文档
  • #1138 : 将以前版本的变更日志移动到单独的文件中;添加了一个脚本来生成未来的变更日志

该脚本可以快速为发布者生成变更日志。

特别是,SVGPathMobject、VMobjectFromPathstring 和 style_utils 函数作用于 manim 的命名空间。

  • #1076:改进 GraphScene 的文档

更新了 manim/scene/graph_scene.py 下的 coords_to_point 和 point_to_coords,因为每个函数的 dosctring 混淆地描述了与其应该做的相反的事情。

有关测试系统的更改

  • #1160:启用 OpenGL 的 CI 测试
  • #1100:重写测试用例以在命令中使用 sys.executable 而不是“python”

由于 capture()未在正确的环境中生成子 shell,测试将失败,因此当调用 python 时,测试将无法找到必要的包。

我们的开发基础设施的变化

  • #1213 : 更新了 TinyTex 依赖项
  • #1187 : 将 CodeCov 添加到 Github 工作流程
  • #1166:CI:使用诗歌的缓存目录而不是 pip
  • #1071:启用基于 pytest-cov 的代码覆盖率

  • 将 pytest-cov 作为 python 模块包含在开发人员依赖项中

  • 在更新诗歌以包含 pytest-cov 时,manimpango 从版本 0.2.3 移至 0.2.4,并且需要在 Ubuntu 中安装 libpango1.0-dev。
  • 添加到 CI 工作流程 ( ci.yml ) 以创建和上传测试覆盖率。

  • #1073 : 从 PULL_REQUEST_TEMPLATE.md 中删除了“一行摘要”

代码质量改进和类似的重构

  • 第# 1167OpenGLMobject章合并Mobject
  • #1164 : 修复了 cairo_renderer.py 中的单一 PEP8 样式
  • #1140:Flake8 兼容性和代码清理
  • #1019:重构play()

  • 删除了 的 三个 装饰器play(),特别是:缓存逻辑和文件编写器逻辑现在包含在其中play()(以前这是不可能的,因为 scene.wait 和 scene.play 是两个不同的东西)。

  • 为 Wait 添加了 is_static_wait 属性。(<=> 如果 wait 是冻结帧)。
  • 重命名 scene.add_static_frame 并将其移动到 renderer.freeze_current_frame。
  • 现在,当调用不带动画的播放时,它会引发 ValueError 而不仅仅是警告。
  • 通过修改 renderer.update_skipping_status 修复了#874
  • 渲染器使用 scene.begin_animations 启动动画(scene.compile_animation_data 用于执行此操作)
  • 运行时和时间进度生成现在在 scene.play_internal 中完成,尽管渲染器稍后处理它会更有意义。
  • 由于模拟和新语法 scene.render 添加了一堆很酷的测试