Manim CE v0.20.0 发布:动画构建更丝滑,随机性终于“可控”了!

张开发
2026/4/5 3:06:29 15 分钟阅读

分享文章

Manim CE v0.20.0 发布:动画构建更丝滑,随机性终于“可控”了!
亮点一Mobject.always—— 告别繁琐的 Lambda在制作动画时我们经常需要让一个物体“永远”跟随另一个物体比如标签永远在点的上方。以前你需要使用add_updater配合lambda函数代码看起来又长又乱。v0.20.0引入了神奇的.always属性让这一切变得符合直觉。 对比示例让标签跟随方块❌以前的写法 (v0.19.x 及之前)你需要显式地添加一个更新函数或者写一个 lambda 表达式。s Square() label Text(我在这里) # 你必须这样写 label.add_updater(lambda m: m.next_to(s, UP)) # 或者这样写 def update_label(m): m.next_to(s, UP) label.add_updater(update_label)✅现在的写法 (v0.20.0)直接用always像说话一样自然s Square() label Text(我在这里) # 新语法永远.紧挨着(方块, 上方) label.always.next_to(s, UP)为什么好用这不仅减少了代码量还让代码的可读性大幅提升。 亮点二可复现的随机性对于制作数学或科学视频的人来说随机有时候是个麻烦。你想展示 10 个随机点但你不希望每次重新渲染视频时这 10 个点的位置都变了。v0.20.0终于引入了正式的Seed种子配置。 对比示例生成随机点❌以前的情况每次运行manim render随机生成的位置都会变化除非你自己手动在 Python 脚本里 hackrandom.seed。✅现在的情况你可以通过配置文件或命令行参数锁定“运气”。方式 1命令行参数# 只要种子是 42生成的画面永远一模一样 manim -pql scene.py MyScene --seed 42方式 2代码内配置from manim import * config.seed 123 # 在脚本开头锁定种子 class RandomDemo(Scene): def construct(self): # 无论运行多少次这个圆的位置都是固定的 dot Dot(point[np.random.random(), np.random.random(), 0]) self.add(dot) 亮点三MathTex 重构与更强的子结构控制公式是Manim的灵魂。v0.20.0重写了MathTex的底层逻辑。现在的MathTex在处理LaTeX拆分时更加健壮而且能够利用SVG的“命名组”特性。这意味着当你把公式拆分成不同部分进行着色或变换时出错的概率大大降低了。 示例精准控制公式颜色class MathUpdate(Scene): def construct(self): # 使用 {{ }} 将想要独立操作的字符包裹起来 # Manim 会自动把这些部分分离成独立的子对象(submobjects) equation MathTex(r{{a}}^2 {{b}}^2 {{c}}^2) # 现在 a 是独立的染色不会影响 ^2 equation.set_color_by_tex(a, BLUE) equation.set_color_by_tex(b, GREEN) equation.set_color_by_tex(c, RED) self.add(equation) self.wait(1)⚠️ 注意破坏性变更与修复升级前请留意以下变化你的老代码可能需要微调ImageMobject 的修复如果你以前对图片进行了 3D 旋转或翻转可能会发现行为变了——因为以前是错的现在修好了同时移除了一些不常用的重采样算法参数如lanczos。新颜色常量如果你是设计强迫症现在可以使用PURE_CYAN纯青、PURE_MAGENTA纯洋红和PURE_YELLOW纯黄。Table 修复修复了高亮表格单元格时可能导致的无限递归崩溃问题。 技术债务清理1. 减少对 SciPy 的依赖用 Python 标准库的math.comb替代了scipy.special.comb减少了外部依赖让安装更轻量。2. 类型提示系统完善为多个核心模块添加了类型注解rotation.pyimage_mobject.pyopengl_renderer.pypoint_cloud_mobject.py这对于使用 IDE 进行开发的用户来说是个好消息可以获得更好的代码补全和类型检查支持。3. 移除未来导入要求不再强制要求from __future__ import annotations简化了代码编写。 文档改进完善了RandomColorGenerator的文档改进了TransformFromCopy的文档字符串修复了损坏的外部链接更新了 Python 版本要求文档 如何升级准备好体验新功能了吗打开终端运行pip install --upgrade manim或者如果你使用 condaconda update manim快去试试那个超酷的.always属性吧 总结manimCE v0.20.0是一个注重稳定性和开发体验的版本。虽然有一些破坏性变更但带来的改进是值得的✅MathTeX更稳定可靠✅ 动画构建更直观✅ 代码质量更高✅ 文档更完善✅ 可复现的随机效果

更多文章