老兵说事 發表於 2026-3-2 10:05:00

ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升

<p>这次发布的是一个“补丁版本”,距离上次的大版本发布只有几天。</p>
<p>主要修改部分是:</p>
<p>✅ Bug 修复(MathTex 解析、DashedLine 动画、AnimationGroups 检测等)</p>
<p>✅ 小优化(Docker 镜像、警告静音)</p>
<p>✅ 文档补充</p>
<p>如果你正在使用 <code>Manim</code> 制作数学动画,建议尽快升级以获得更稳定的体验。</p>
<p>以下是本次更新的核心内容整理及代码示例。</p>
<h1 id="-核心亮点与代码示例">🚀 核心亮点与代码示例</h1>
<h2 id="1-mathtex-双大括号解析修复">1. MathTex 双大括号解析修复</h2>
<p>在之前的版本中,<code>MathTex</code> 在处理 LaTeX 原生的双大括号 <code>}}</code> 时可能会错误地触发分割逻辑,导致公式渲染失败或显示异常。v0.20.1 修复了这一问题,现在你可以更放心地在公式中使用集合或嵌套括号。</p>
<p><strong>示例:正确使用双大括号</strong></p>
<pre><code class="language-python">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()
</code></pre>
<h2 id="2-零长度-dashedline-支持">2. 零长度 DashedLine 支持</h2>
<p>曾经,如果你尝试创建或动画化一个起点和终点重合(零长度)的 <code>DashedLine</code>,Manim 可能会抛出错误。新版本修复了 this 边缘情况,使得动态调整线段长度变得更加鲁棒。</p>
<p><strong>示例:动态变化的虚线</strong></p>
<pre><code class="language-python">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()
</code></pre>
<h2 id="3-嵌套-animationgroups-与-z-index-修复">3. 嵌套 AnimationGroups 与 Z-Index 修复</h2>
<p>对于复杂动画,特别是嵌套的 <code>AnimationGroup</code> 中包含带有 <code>z_index</code> 属性的 mobjects 时,移动对象检测曾存在问题。这可能导致图层顺序混乱或动画追踪失败。本次更新修复了嵌套组中的对象检测逻辑。</p>
<p><strong>示例:嵌套动画组</strong></p>
<pre><code class="language-python">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()
</code></pre>
<h2 id="4-laggedstartmap-参数传播控制">4. LaggedStartMap 参数传播控制</h2>
<p>修复了 <code>LaggedStartMap</code> 中 kwargs 意外传播给所有子对象的问题。现在你可以更精确地控制传递给每个映射对象的参数,避免不必要的属性污染。</p>
<h1 id="-开发者体验优化">🛠 开发者体验优化</h1>
<p>除了用户可见的功能修复,v0.20.1 还在底层做了不少改进,让开发和使用过程更顺畅:</p>
<ul>
<li><strong>Docker 镜像优化</strong>:优化了 Docker 镜像的构建流程和运行时占用空间,对于使用容器化部署的用户来说,拉取和运行速度将更快。</li>
<li><strong>FFmpeg 警告静音</strong>:当系统中缺少 ffmpeg CLI 时,不再弹出烦人的 <code>pydub</code> 导入警告,控制台输出更干净。</li>
<li><strong>类型提示增强</strong>:为 <code>manim/_config/utils.py</code> 添加了类型注解,有助于 IDE 提供更好的代码补全和错误检查。</li>
<li><strong>TipableVMobject 清理</strong>:修复了可变默认参数问题及 <code>assign_tip_attr</code> 的拼写错误,提升了代码内部稳定性。</li>
</ul>
<h1 id="-文档更新">📚 文档更新</h1>
<ul>
<li><strong>本地安装指南</strong>:新增了将 Manim 作为本地包手动安装的文档说明,方便需要定制开发的用户。</li>
<li><strong>可访问性提升</strong>:为 README.md 中的所有图片添加了替代文本(alt text),使文档对屏幕阅读器更友好。</li>
</ul>
<h1 id="-如何升级">📥 如何升级</h1>
<p>你可以通过 pip 轻松升级到最新版本:</p>
<pre><code class="language-bash">pip install --upgrade manim
</code></pre><br><br>
来源:https://www.cnblogs.com/wang_yb/p/19657845
頁: [1]
查看完整版本: ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升