很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

摘要:大家新年好!Manim Community Edition (CE) 刚刚发布了里程碑式的 v0.20.0 版本。 如果你觉得以前写 updater(更新程序)太啰嗦,或者每次渲染随机场景结果都不一样让你抓狂,那么这次更新绝对是为你准备的!
大家新年好!Manim Community Edition (CE) 刚刚发布了里程碑式的 v0.20.0 版本。 如果你觉得以前写 updater(更新程序)太啰嗦,或者每次渲染随机场景结果都不一样让你抓狂,那么这次更新绝对是为你准备的! 本次更新不仅重构了核心组件,还带来了一些超甜的“语法糖”。 下面我们来看看这次升级的亮点,以及它们如何改变你的编码方式。 ✨ 亮点一: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 脚本里 hack random.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 的“命名组”特性。 这意味着,当你把公式拆分成不同部分进行着色或变换时,出错的概率大大降低了。
阅读全文