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 不是必需的,并且会引发弃用警告。这将在未来的版本中删除。
新功能
- #1037 :从 3b1b/manim 添加了新的淡入淡出和变换动画 (
TransformMatchingShapes
,TransformMatchingTex
, )FadeTransform
添加了新的淡入淡出动画:FadeOutToPoint
添加FadeTransform
并FadeTransformPieces
用于使用淡入淡出变换 mobjects 和子对象 添加TransformMatchingShapes
并TransformMatchingTex
用于变换具有匹配部分的 mobjects 和 tex
添加了Unwrite
继承自Write
. 它通过传递反向速率函数自动反转动画Write
,但它还需要一个额外的布尔参数反向,如果为 False,则从左到右渲染动画(假设文本以通常的方式定向),但如果为 True,则渲染右到左。
- #1085:添加
Angle
和RightAngle
用于相交线
Angle
两者RightAngle
都接受两行作为输入。如果它们相交或共享一个公共顶点,则会在它们之间绘制一个角度。用户可以自定义角度的外观,也可以使用点直角。
增强功能
旋转称为 apply_points_function,它以前不是 OpenGLMobject 的子类 - 现在是。然后,顶点法线也可以更新。
此外,old_points 矩阵在旋转后会发生变化,使得旧点/新点测试变得不相关。这是通过 .copy 调用解决的。
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 位置存在问题,而不是恢复为默认配置。
修复了错误
- #1224:固定
ShowIncreasingSubsets
,,ShowSubmobjectsOneByOne
和AddTextLetterByLetter
- #1201:防止
embed()
空场景崩溃 - #1192 : 修复了缓存动画时,manim 无法合并部分影片文件的问题。
- #1193:修复了在
Animation
没有孩子的Mobject
情况下使用AnimationGroup
AnimationGroup 现在可以采用没有子 Mobject 的 Animation 对象,例如 Wait。
- #1170 : 修复了 SVG 解析的小错误
- #1159:添加了对同一 SVG 元素中的多个变换的支持
- #1156:修复
DrawBorderThenFill
以支持 OpenGL 并改进了某些函数的类型提示
DrawBorderThenFill
修复了一个导致Write
动画无法使用的错误OpenGLVMobjects
,并稍微改进了一些动画函数的类型提示OpenGLVMobject
。
- #1134:修复了-a 标志。
-a
/标志--write-all
已损坏。使用时,它会导致 Manim 在开始渲染第二个场景后崩溃。
- #1115:修复了错误
OpenGLMobject
并添加了ApplyMethod
支持
修复了未定义的变量并转换Mobject
为OpenGLMobject
. 另外,修复了ApplyMethod
.
- #1092:重构 cocod_systems.py,修复错误,添加
NumberPlane
测试
的默认行为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:添加了
Ellipse
、Polygon
、RegularPolygon
和Triangle
的示例RoundedRectangle
- #1195 : 从示例中删除了 SmallDot
- #1130:添加了运行 black 和 flake8 的预提交,相应更新了贡献文档
- #1138 : 将以前版本的变更日志移动到单独的文件中;添加了一个脚本来生成未来的变更日志
该脚本可以快速为发布者生成变更日志。
- #1190:在贡献指南中添加注释以阅读最新版本的文档
- #1188 : 在文档中添加了声音示例
- #1165:添加了在 Colab 上安装 Manim 的文档
- #1128:添加了
DashedLine
,TangentLine
,Elbow
,Arrow
,Vector
,的示例DoubleArrow
- #1177 : 将最新版本文档的链接替换为稳定版本
- #1077:添加了详细信息
get_critical_point()
- #1154:修复了一些输入提示。(整数转浮点数)
- #1036 : 添加
SurroundingRectangle
到示例库 - #1103:添加了方形、点、圆形和矩形的文档和示例
- #1101:添加文档
Mobject
- #1088 : 在文档和导入中添加了新的 svg 文件
特别是,SVGPathMobject、VMobjectFromPathstring 和 style_utils 函数作用于 manim 的命名空间。
- #1076:改进 GraphScene 的文档
更新了 manim/scene/graph_scene.py 下的 coords_to_point 和 point_to_coords,因为每个函数的 dosctring 混淆地描述了与其应该做的相反的事情。
有关测试系统的更改
由于 capture()未在正确的环境中生成子 shell,测试将失败,因此当调用 python 时,测试将无法找到必要的包。
- #1079 : 删除了test_version.py 中的硬编码值 manim
我们的开发基础设施的变化
- #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 中删除了“一行摘要”
代码质量改进和类似的重构
- 第# 1167
OpenGLMobject
章合并Mobject
- #1164 : 修复了 cairo_renderer.py 中的单一 PEP8 样式
- #1140:Flake8 兼容性和代码清理
-
删除了 的 三个 装饰器
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 添加了一堆很酷的测试