ManimCE v0.20.1发布,LaTeX渲染修复与动画稳定性提升,能解决我的哪些问题?

摘要:这次发布的是一个“补丁版本”,距离上次的大版本发布只有几天。 主要修改部分是: ✅ Bug 修复(MathTex 解析、DashedLine 动画、AnimationGroups 检测等) ✅ 小优化(Docker 镜像、警告静音) ✅ 文
这次发布的是一个“补丁版本”,距离上次的大版本发布只有几天。 主要修改部分是: ✅ Bug 修复(MathTex 解析、DashedLine 动画、AnimationGroups 检测等) ✅ 小优化(Docker 镜像、警告静音) ✅ 文档补充 如果你正在使用 Manim 制作数学动画,建议尽快升级以获得更稳定的体验。 以下是本次更新的核心内容整理及代码示例。 🚀 核心亮点与代码示例 1. MathTex 双大括号解析修复 在之前的版本中,MathTex 在处理 LaTeX 原生的双大括号 }} 时可能会错误地触发分割逻辑,导致公式渲染失败或显示异常。v0.20.1 修复了这一问题,现在你可以更放心地在公式中使用集合或嵌套括号。 示例:正确使用双大括号 from manim import * class MathTexFixExample(Scene): def construct(self): # 之前版本可能会在这里解析出错 # 现在可以正常渲染包含 }} 的 LaTeX 公式 equation = MathTex(r"\{ x \in \mathbb{R} \mid x^2 \geq 0 \}") self.play(Write(equation)) self.wait() 2. 零长度 DashedLine 支持 曾经,如果你尝试创建或动画化一个起点和终点重合(零长度)的 DashedLine,Manim 可能会抛出错误。新版本修复了 this 边缘情况,使得动态调整线段长度变得更加鲁棒。 示例:动态变化的虚线 from manim import * class DashedLineZeroLength(Scene): def construct(self): start_point = ORIGIN end_point = RIGHT # 创建一个虚线 line = DashedLine(start_point, end_point) self.add(line) # 动画将终点移动回起点,形成零长度线段 # v0.20.1 修复了此类动画可能崩溃的问题 self.play(line.animate.put_start_and_end_on(start_point, start_point)) self.wait() 3. 嵌套 AnimationGroups 与 Z-Index 修复 对于复杂动画,特别是嵌套的 AnimationGroup 中包含带有 z_index 属性的 mobjects 时,移动对象检测曾存在问题。这可能导致图层顺序混乱或动画追踪失败。本次更新修复了嵌套组中的对象检测逻辑。 示例:嵌套动画组 from manim import * class NestedAnimationGroupFix(Scene): def construct(self): circle = Circle().set_fill(RED, opacity=0.5) square = Square().set_fill(BLUE, opacity=0.5) # 设置不同的 z_index circle.z_index = 2 square.z_index = 1 # 嵌套 AnimationGroup group_anim = AnimationGroup( AnimationGroup(circle.animate.shift(RIGHT)), AnimationGroup(square.animate.shift(LEFT)), lag_ratio=0.5 ) self.add(square, circle) self.play(group_anim) self.wait() 4. LaggedStartMap 参数传播控制 修复了 LaggedStartMap 中 kwargs 意外传播给所有子对象的问题。现在你可以更精确地控制传递给每个映射对象的参数,避免不必要的属性污染。
阅读全文