博客 / 詳情

返回

ManimCE v0.20.1 發佈:LaTeX 渲染修復與動畫穩定性提升

這次發佈的是一個“補丁版本”,距離上次的大版本發佈只有幾天。

主要修改部分是:

✅ 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 意外傳播給所有子對象的問題。現在你可以更精確地控制傳遞給每個映射對象的參數,避免不必要的屬性污染。

🛠 開發者體驗優化

除了用户可見的功能修復,v0.20.1 還在底層做了不少改進,讓開發和使用過程更順暢:

  • Docker 鏡像優化:優化了 Docker 鏡像的構建流程和運行時佔用空間,對於使用容器化部署的用户來説,拉取和運行速度將更快。
  • FFmpeg 警告靜音:當系統中缺少 ffmpeg CLI 時,不再彈出煩人的 pydub 導入警告,控制枱輸出更乾淨。
  • 類型提示增強:為 manim/_config/utils.py 添加了類型註解,有助於 IDE 提供更好的代碼補全和錯誤檢查。
  • TipableVMobject 清理:修復了可變默認參數問題及 assign_tip_attr 的拼寫錯誤,提升了代碼內部穩定性。

📚 文檔更新

  • 本地安裝指南:新增了將 Manim 作為本地包手動安裝的文檔説明,方便需要定製開發的用户。
  • 可訪問性提升:為 README.md 中的所有圖片添加了替代文本(alt text),使文檔對屏幕閲讀器更友好。

📥 如何升級

你可以通過 pip 輕鬆升級到最新版本:

pip install --upgrade manim
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.