资讯动态

Manim汉化实战指南:从安装到创作数学动画

发布时间:2026/8/7 10:04:16 来源:尧图企业网站定制
1. Manim汉化版安装指南第一次接触Manim时我被它强大的数学动画能力震撼了。这个由3Blue1Brown创始人Grant Sanderson开发的工具现在由Manim社区维护的版本对中文用户更加友好。下面分享我在Windows和MacOS系统上的实测安装经验。Windows系统安装最简步骤安装Python 3.8建议勾选Add to PATH打开CMD运行pip install manim安装FFmpeg并配置环境变量测试安装manim --versionMac用户更简单用Homebrew一键搞定brew install manim安装过程中最常见的坑是依赖冲突。我建议使用虚拟环境实测能解决90%的安装问题python -m venv manim_env source manim_env/bin/activate # Linux/Mac manim_env\Scripts\activate # Windows pip install manim2. 汉化环境配置技巧原版Manim的英文文档让很多中文开发者望而却步。经过社区努力现在已经有完善的汉化方案。我推荐三种汉化方式文档汉化访问Manim中文文档站manim.org.cn这是社区维护的最新文档界面汉化安装汉化包pip install manim-l10n错误提示汉化修改config.yml文件添加cli: locale: zh_CN我在项目中发现一个实用技巧使用Jupyter Notebook配合汉化插件可以实时预览中文效果。先安装pip install jupyter-manim然后在Notebook单元格中使用%%manim -v WARNING -qm ChineseScene class ChineseScene(Scene): def construct(self): text Text(中文测试, font思源黑体) self.play(Write(text))3. 第一个中文数学动画让我们用汉化环境创建一个勾股定理动画。新建pythagoras.py文件from manim import * class PythagoreanTheorem(Scene): def construct(self): # 创建直角三角形 triangle Polygon( [0, 0, 0], [3, 0, 0], [0, 4, 0], colorWHITE ) # 添加直角符号 right_angle RightAngle( Line([3,0,0], [0,0,0]), Line([0,0,0], [0,4,0]), length0.5 ) # 添加边标签 a_label MathTex(a, colorRED).next_to(triangle, DOWN) b_label MathTex(b, colorGREEN).next_to(triangle, LEFT) c_label MathTex(c, colorBLUE).next_to(triangle.get_center(), UR) # 动画序列 self.play(Create(triangle)) self.play(FadeIn(right_angle)) self.play(Write(a_label), Write(b_label)) self.wait(0.5) self.play(Write(c_label)) # 显示公式 theorem MathTex(a^2 b^2 c^2, colorYELLOW).to_edge(UP) self.play(Write(theorem)) self.wait(2)运行命令渲染动画manim -pql pythagoras.py PythagoreanTheorem这个例子展示了Manim的核心优势用代码精确控制每个几何元素的出现时机和运动轨迹。我特别喜欢MathTex对LaTeX公式的原生支持做数学课件特别方便。4. 高级技巧与性能优化当动画复杂度上升时渲染速度会成为痛点。经过多次测试我总结出这些加速技巧渲染参数调优manim -pqm --rendereropengl --formatwebm file.py Scene-qm中等质量--rendereropengl使用GPU加速--formatwebm输出更小的视频文件代码层面优化# 坏实践每次创建新对象 for i in range(10): circle Circle() # 重复创建消耗资源 self.play(Create(circle)) # 好实践复用对象 circle Circle() for i in range(10): self.play(circle.animate.shift(RIGHT))缓存机制 在config.yml中启用caching: enabled: True hash_func: md5 cachedir: ~/manim_cache对于包含大量公式的场景我推荐使用预渲染技术。先渲染静态公式为SVGformula MathTex(r\int_a^b f(x)dx F(b)-F(a)) formula.save_svg(formula.svg)然后在主场景中导入formula SVGMobject(formula.svg)5. 中文排版专项处理处理中文文本时有几个常见问题需要注意字体选择# 指定中文字体系统需安装对应字体 Text(中文, font思源黑体 CN)推荐字体思源黑体方正系列站酷酷圆混合排版技巧# 中英混排 chinese Text(勾股定理, font思源黑体) english Text(Pythagorean theorem, fontTimes New Roman) group VGroup(chinese, english).arrange(DOWN, buff0.5)竖排文字vertical_text Text(竖排文字\n测试, font思源宋体, line_spacing1.2, t2c{测试: RED}) vertical_text.rotate(PI/2)文本动画优化 普通写法会导致中文显示异常# 不推荐 self.play(Write(chinese_text)) # 推荐方式 self.play(ShowIncreasingSubsets(chinese_text))6. 项目实战制作微积分课件让我们综合运用所学创建一个导数概念的动画教学场景class DerivativeConcept(Scene): def construct(self): # 创建坐标系 axes Axes( x_range[0, 10], y_range[0, 100], axis_config{color: BLUE} ) # 绘制函数曲线 def func(x): return 0.1 * (x-5)**3 50 graph axes.plot(func, colorGREEN) # 添加标签 title Text(导数的几何意义, font思源黑体 CN).to_edge(UP) axes_labels axes.get_axis_labels( Tex(x).scale(0.7), Tex(y).scale(0.7) ) # 切线动画 def get_tangent_line(x): h 0.001 derivative (func(xh) - func(x))/h return Line( startaxes.c2p(x-1, func(x)-derivative), endaxes.c2p(x1, func(x)derivative), colorRED ) tangent_line always_redraw( lambda: get_tangent_line(tangent_point.get_value()) ) tangent_point ValueTracker(2) dot always_redraw( lambda: Dot( axes.c2p(tangent_point.get_value(), func(tangent_point.get_value())) ) ) # 动画序列 self.play(Write(title)) self.play(Create(axes), Write(axes_labels)) self.play(Create(graph)) self.play(FadeIn(dot)) self.play(Create(tangent_line)) # 移动切线演示 self.play( tangent_point.animate.set_value(8), run_time6, rate_functhere_and_back ) # 显示公式 derivative_formula MathTex( r\frac{df}{dx} \lim_{h \to 0} \frac{f(xh)-f(x)}{h} ).next_to(title, DOWN) self.play(Write(derivative_formula)) self.wait(3)这个场景展示了如何将抽象的数学概念可视化。实际教学中可以继续添加割线动画、面积元素等更多教学点。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价