ManimCE v0.21.0 发布:Typst 排版支持与 Cairo 渲染性能大幅提升
Manim Community Edition 发布了 v0.21.0 版本(2026 年 8 月 10 日),这是继 v0.20.1 之后的又一次功能型版本更新。
本次更新包含 2 项破坏性变更,以及多项值得关注的新特性和性能优化。
其中 Cairo 渲染器在动画密集场景下提速超过一倍,NumPy 数组哈希的 CPU 耗时降低了 94%–98%。
如果你是 Manim 用户,这个版本值得认真了解一下。
核心亮点
1. Typst 排版渲染正式支持
这是本次更新最引人注目的新功能。
Manim v0.21.0 引入了 Typst 和 TypstMath 两个新的 mobject 类型,可以直接编译 Typst 标记和数学表达式为 SVG,无需安装 TeX 环境。
这意味着你可以在没有 LaTeX 工具链的机器上渲染公式和文本。
安装可选依赖:
pip install "manim[typst]"
使用示例:
class TypstExample(Scene):
def construct(self):
text = Typst(
"这是一个通过 Typst 渲染的文本",
font_size=48,
)
formula = MathTypst(
r"sum_(i=1)^n i = (n(n+1))/2",
font_size=56,
)
self.play(Write(text))
self.play(Transform(text, formula))
self.wait()
Typst 和 MathTypst 支持基于标签的子组选择、{{ ... }} 表达式分组,并与 Manim 现有的 label API 集成。
对于不想在本地配置 TeX 环境的用户来说,这是一个很实用的替代方案。
2. Cairo 渲染器提速 2.2 倍
对于使用 Cairo 渲染器制作动画密集型场景的用户,这个版本带来了显著的性能提升。
Cairo 路径构建现在使用向量化的子路径分割方式,同时像素数组处理避免了冗余拷贝,输出结果保持像素级一致。
需要注意的是,这一优化同时引入了破坏性变更:Camera.convert_pixel_array() 方法移除了 convert_from_floats 参数,现在始终将浮点数转换为相机的像素格式。
如果你之前显式传入了 True,直接省略该参数即可;
如果依赖旧的拷贝行为,可以改用 np.array(pixel_array)。
3. 并行 partial movie 编码
新版本引入了 max_inflight_encoders 配置项,允许 partial movie 编码与渲染过程重叠执行,同时限制编码器工作线程的数量。
使用方式:
manim render --max-inflight-encoders 4 --encoder-queue-size 8 scene.py Scene
其中 --encoder-queue-size 限制每个编码器持有的待处理帧缓冲区数量。
默认值为 1,保持串行行为;提高该值后,编码密集型基准测试的耗时降低了 56%,实际渲染场景也有约 8%–11% 的改善。
4. NumPy 数组哈希优化
场景缓存键中的 NumPy 数组不再以采样的 JSON 数据表示,改为使用完整逻辑内容的确定性哈希。
这避免了图像数据变化时出现陈旧的缓存命中,同时在代表性基准测试中将哈希 CPU 耗时降低了约 94%–98%。
破坏性变更
| 变更项 | 影响 | 迁移方式 |
|---|---|---|
Code 颜色处理委托给 Pygments |
paragraph_config={"color": ...} 不再生效 |
通过 formatter_style 传入自定义 Pygments Style 子类,配置 token 样式和 line_number_color;背景色仍可通过 background_config={"fill_color": ...} 覆盖 |
Camera.convert_pixel_array() 参数移除 |
convert_from_floats 参数不再存在 |
省略该参数;如需旧拷贝行为,使用 np.array(pixel_array) |
其他改进与文档更新
其他改进以易用性和稳定性为主:
GenericGraph 支持元组边查找,多个 mobject 方法支持链式调用,并减少 submobjects 拷贝;
字形不匹配时报错更清晰。
修复了OpenGL 崩溃、CyclicReplace/Swap、Angle 及动画组 z-index 排序等问题。
构建工具从 Hatchling 切换为 uv-build,并补充类型注解。
文档仅小幅修正术语,补充 Sphere、GenericGraph 和 MovingCameraScene 的说明。
总结
Manim v0.21.0 是一个“性能与能力并重”的版本。
Typst 的引入为不依赖 TeX 的渲染提供了新的选择,Cairo 渲染器的 2.2 倍提速和 NumPy 哈希 94%–98% 的 CPU 节省则直接改善了日常使用体验。
如果你经常渲染动画密集的场景,建议尽快升级体验。
需要注意 Code 的颜色配置方式有变化,升级时请检查相关代码。

浙公网安备 33010602011771号