合集-manim动画
摘要:manim是基于python语言开发的开源框架,是由 3blue1brown 开发的。 本来是他们自己用来制作数学视频用的,因为其友好的API和漂亮的UI效果,在开源之后,立刻流行起来。 原先开源的地址是: 后来托管给了社区,现在安装最新的版本请从这里下载: 改版之后,命令行更加清晰,简单。 支持的
阅读全文
摘要:制作数学视频时,各类几何图形是使用最频繁的。 一般来说,常用的几何图形包括:点,线,圆以及多边形。 1. 点 点是最简单图形,也是其他所有图形的基础。 绘制其他任何图形时,都是用点来定位的。 manim中生成一个点很方便,只要给定一个坐标即可。 这里的坐标包含 [x, y, z]3个维度,如果绘制二
阅读全文
摘要:没有引入坐标系之前,在绘制图形时,也有一个隐含的坐标系,它和屏幕的像素相关。 比如,我们之前示例中的各个图形,屏幕的中心就是坐标原点([0, 0]), 横轴坐标的范围大概是 [-3.5, 3.5],纵轴的坐标范围大概是 [-4, 4],这个范围与设置的视频分辨率有关,分辨率设置的越高的话,坐标范围越
阅读全文
摘要:文本的样式主要指颜色和字体相关的属性设置。 对于manim的两个文本对象 Text和 Tex来说, Text对象有更多的属性可以调整样式,相对来说,由于 Tex主要用来显示数学公式,所以关于样式的属性要少一些。 下面介绍一些我在视频制作时最常用的一些颜色和字体相关的属性。 1. 颜色相关 颜色设置主
阅读全文
摘要:manim中提供了两种方式来表示文字信息,一种是 Text系列,一种是 Tex系列。 从目前我自己的使用的体验来看, Text系列在显示文字信息方面,提供了更多的的属性来调整显示效果。如果有大段的文字要排版,或者对文字的显示效果要求高的话,建议使用 Text。 而 Tex系列最大的优势是支持 Lat
阅读全文
摘要:manim绘制图形时,除了上一节提到的那些必须的参数,还有一些可选的参数, 这些参数可以控制图形显示的样式。 绘制各类基本图形(点,线,圆,多边形等)时,每个图形都有自己的默认的样式,比如上一节的图形, 有的默认是白色,有的默认是红色。 控制图形样式的参数最常用的有以下四个: stroke_widt
阅读全文
摘要:相机(Camera)在二维的场景下使用不多,一般在3D场景中提及的比较多。 相机相当于我们看动画的视角,简单来理解的话,相当于我们的眼睛(实际情况会复杂一些,相机还有其他一些辅助功能)。 默认的相机焦点在屏幕的中心位置,相机默认是以俯视的视角查看所有的元素。 之前的介绍的常用动画效果和高级动画效果,
阅读全文
摘要:在常用的动画效果中,介绍了一些元素的创建,销毁,移动和变换的方法,这些方法都是针对单个动画的。 如果需要多个动画互相关联,或者元素需要有更复杂的运动方式,那么,仅仅依靠常用的动画效果可能就无法满足要求了。 本篇的高级动画效果主要介绍一些更加灵活的元素运动方式,如何组合多个动画,以及如何联动多个动画的
阅读全文
摘要:manim的主要功能就是制作动画,因此它提供了各类丰富的动画效果, 本篇主要介绍其中最常用的几种动画效果。 至于特殊的动画效果,以及自定义动画效果的方法以后再另外介绍。 1. 创建效果 展示某个元素或者文字时,一下子就全显示出来会显得比较突兀,通过创建效果的动画,让各个元素的出现更加的自然。 常用的
阅读全文
摘要:概要 manim 是一个做数学视频的 python 库,这个库功能非常强大。具体可以参考官方介绍:https://github.com/ManimCommunity/manim/ 它本身只是封装数学相关的几何体和一些基础动画,所以,制作视频时,需要进一步封装更复杂的动画来满足视频的要求。最近做的一个
阅读全文
摘要:概要 前端时间做尺规作图相关的动画的时候,封装了一个圆规的动画,顺便研究了下 manim 库的动画函数。 manim 本身就是做动画的库,所以,基于它封装自定义的动画非常方便。 动画原理 对于单个的元素,manim本身就提供了非常多的动画函数。 比如:创建/消除的动画,移动元素的动画,旋转元素的动画
阅读全文
摘要:概要 最近,结合视频剪辑工具剪映制作短视频时, 如果不是数学相关的内容,使用视频剪辑工具配置字幕,添加图片等等比 manim更加方便。 所以,用 manim封装一个目录的动画,用来配合剪辑工具中的其他资源。 代码封装 基于manim封装一个目录显示的 class。 主要属性就是 titles,也就是
阅读全文
摘要:Manim是一个强大的数学动画制作库,它能够帮助我们创建出令人惊叹的动画,无论是用于教学还是娱乐。 不过,对于初学者来说,Manim的内部工作机制可能显得有些复杂。 本文将从整体上简单介绍Manim的内部结构,希望能帮助你更好地理解它是如何工作的。 1. Manim是什么? Manim是一个基于Py
阅读全文
摘要:ManimCE作为一个强大的动画制作框架,它为创作者提供了丰富多样的动画效果,无论是文字、图形还是其他元素,都能通过这些动画效果呈现出生动、有趣的视觉体验。 本文将详细总结ManimCE(v0.19.0版本)中常见的动画效果,并分析它们的应用场景和带来的视觉效果,以及我们在制作数学动画时如何选择动画
阅读全文
摘要:在ManimCE中,除了上一篇介绍的丰富的动画效果外,变换效果也是制作精彩视觉内容的重要工具。 变换效果主要用于改变对象的形状、大小、颜色或位置,让对象在动画中呈现出动态的变化。 本文详细总结了 ManimCE 中常见的变换效果,并分析它们的应用场景和带来的视觉效果,最后还会给出一些选择变换效果的建
阅读全文
摘要:Manim是一个强大的动画制作库,它能够将简单的Python代码转化为精美的动画视频。 你是否好奇过,当你运行Manim代码时,背后的魔法是如何发生的呢? 今天,将重点介绍渲染过程中的三个关键步骤:Scene.setup()、Scene.construct()和Scene.tear_down(),揭
阅读全文
摘要:在Manim中,.animate语法是一个非常实用的功能,它能让你的动画代码变得更加简洁和直观。 本文将详细介绍.animate语法,看看它是如何让动画制作变得更加简单又有趣,即使是编程新手也能轻松上手。 1. .animate是什么? 在Manim中,.animate是一个特殊的语法糖,它允许你将
阅读全文
摘要:在 Manim 库中,FunctionGraph、ImplicitFunction 和 ParametricFunction 都是用于绘制函数图像的类,但它们的适用场景、输入形式和实现方式有显著区别。 以下是详细对比: 1. FunctionGraph 用途:绘制 显式函数 ($ y = f(x)
阅读全文
摘要:在制作数学动画时,我们常常希望动画的速度能够根据需要进行调整,以更好地展示数学概念的演变过程。 Manim框架中的ChangeSpeed类就是这样一个强大的工具,它能够帮助我们轻松地控制动画的速度变化,让动画更加生动和富有表现力。 1. 主要作用 ChangeSpeed类的主要作用是改变动画的播放速
阅读全文
摘要:Manim 中所有“看得见”的元素——从一条直线到复杂的 3D 曲面——都继承自同一个根基:Mobject(Math Object)。 我整理了一个手册,以“类”为骨架,逐一拆解 Manim 预置的常用 Mobject 及其子类,帮你把庞杂的 API 变成随时可查的“速查表”。 每个条目包含: 一句
阅读全文
摘要:数学的美,藏在动态的逻辑里——而 Manim,正是那个能把抽象公式变成「会说话的动画」的神器。 今天,给大家推荐一门我自己录制的从零开始的Manim入门课,哪怕你是编程小白,也能跟着一步步画出属于自己的数学动画! 这门课程适合谁? 如果你是以下任意一类人,这门课就是为你准备的: ▸ 数学爱好者:想亲
阅读全文
摘要:你在制作Manim动画时,是否遇到过这样的困境? “代码写得天衣无缝,运行流畅,出来的动画却总觉得哪里不对劲?” 虽然物体确实从 A 移动到了 B,但看起来就像是老旧的工业机器人在干活——僵硬、死板,甚至有点无聊。 其实,你的动画离 “丝滑” 和 “专业”,往往只差这一个参数的距离:rate_fun
阅读全文
摘要:做Manim动画久了,你是否厌倦了那万年不变的黑色虚空? 很多初学者(甚至老手)都想给动画加个背景图,但往往会遇到两个问题: 怎么加? 是把图片放进去,还是设置相机? 看不清! 背景花里胡哨,前面的文字公式瞬间“隐身”了。 今天,我们就来揭开Manim动画中一个简单却强大的技巧--为动画添加背景。
阅读全文
摘要:大家好!Manim 社区刚刚发布了 v0.19.1 版本(发布于 12 月 1 日)。虽然这是一个小版本号更新,但里面可是藏着几个非常实用的新功能! 无论你是刚入坑的新手,或者已经被某些痛点折磨过的老手,这篇更新速览都值得一看。 1. 🌟 亮点一:终于可以“固定”随机颜色了! 以前我们在使用 ra
阅读全文
摘要:
大家新年好!Manim Community Edition (CE) 刚刚发布了里程碑式的 v0.20.0 版本。 如果你觉得以前写 updater(更新程序)太啰嗦,或者每次渲染随机场景结果都不一样让你抓狂,那么这次更新绝对是为你准备的! 本次更新不仅重构了核心组件,还带来了一些超甜的“语法糖”。
阅读全文
大家新年好!Manim Community Edition (CE) 刚刚发布了里程碑式的 v0.20.0 版本。 如果你觉得以前写 updater(更新程序)太啰嗦,或者每次渲染随机场景结果都不一样让你抓狂,那么这次更新绝对是为你准备的! 本次更新不仅重构了核心组件,还带来了一些超甜的“语法糖”。
阅读全文
摘要:
这次发布的是一个“补丁版本”,距离上次的大版本发布只有几天。 主要修改部分是: ✅ Bug 修复(MathTex 解析、DashedLine 动画、AnimationGroups 检测等) ✅ 小优化(Docker 镜像、警告静音) ✅ 文档补充 如果你正在使用 Manim 制作数学动画,建议尽快升
阅读全文
这次发布的是一个“补丁版本”,距离上次的大版本发布只有几天。 主要修改部分是: ✅ Bug 修复(MathTex 解析、DashedLine 动画、AnimationGroups 检测等) ✅ 小优化(Docker 镜像、警告静音) ✅ 文档补充 如果你正在使用 Manim 制作数学动画,建议尽快升
阅读全文
摘要:
这些错觉以清晰而明确的方式告诉我们:我们并非直接体验这个世界。 我们常常相信“眼见为实”,但知觉错觉告诉我们:事实并非如此。 我们的大脑并非直接复制世界,而是在构建一个基于经验与期望的“最佳猜测模型”。 今天,我们将通过 5 种经典的知觉错觉,来探索视觉的奥秘。 前三种是静态图像错觉,后两种则是动态
阅读全文
这些错觉以清晰而明确的方式告诉我们:我们并非直接体验这个世界。 我们常常相信“眼见为实”,但知觉错觉告诉我们:事实并非如此。 我们的大脑并非直接复制世界,而是在构建一个基于经验与期望的“最佳猜测模型”。 今天,我们将通过 5 种经典的知觉错觉,来探索视觉的奥秘。 前三种是静态图像错觉,后两种则是动态
阅读全文
摘要:
大家好,今天想和大家分享一个在制作Manim动画时非常实用的话题:如何动态计算两条直线的交点。 对于动点问题,比如初中数学中经典的“时钟模型”或“将军饮马”及其变种等等,硬编码坐标肯定不行,因为交点坐标是随动点变化的。 下面,我们结合 Python 的符号计算库 SymPy 和 Manim 的更新器
阅读全文
大家好,今天想和大家分享一个在制作Manim动画时非常实用的话题:如何动态计算两条直线的交点。 对于动点问题,比如初中数学中经典的“时钟模型”或“将军饮马”及其变种等等,硬编码坐标肯定不行,因为交点坐标是随动点变化的。 下面,我们结合 Python 的符号计算库 SymPy 和 Manim 的更新器
阅读全文
摘要:
很多刚开始学习 ManimCE 的同学,在兴致勃勃地想要制作中文数学动画时,都会遇到同一个“拦路虎”:一旦在公式里输入中文,程序直接报错,红一片! 比如你想写“勾股定理”,直接这样写: # 错误示范 ❌ tex = MathTex("勾股定理:a^2+b^2=c^2") 运行后,你会得到一堆 LaT
阅读全文
很多刚开始学习 ManimCE 的同学,在兴致勃勃地想要制作中文数学动画时,都会遇到同一个“拦路虎”:一旦在公式里输入中文,程序直接报错,红一片! 比如你想写“勾股定理”,直接这样写: # 错误示范 ❌ tex = MathTex("勾股定理:a^2+b^2=c^2") 运行后,你会得到一堆 LaT
阅读全文
摘要:
在制作数学动画时,我们经常需要突出显示公式中的某一部分。 比如勾股定理 $ a^2 + b^2 = c^2 $,我们可能想把 $ a^2 $ 标成黄色,$ b^2 $ 标成绿色,$ c^2 $ 标成红色,以便观众可以直观地理解对应关系。 在 ManimCE 中,实现这一目标主要有两种思路:“Mani
阅读全文
在制作数学动画时,我们经常需要突出显示公式中的某一部分。 比如勾股定理 $ a^2 + b^2 = c^2 $,我们可能想把 $ a^2 $ 标成黄色,$ b^2 $ 标成绿色,$ c^2 $ 标成红色,以便观众可以直观地理解对应关系。 在 ManimCE 中,实现这一目标主要有两种思路:“Mani
阅读全文
摘要:
在我们制作数学动画时,经常会遇到多个动作同时发生的情况。 比如:坐标轴出现的同时,标签也跟着浮现;或者一个图形变色的同时,它也在移动。 今天,我们就来聊聊 ManimCE 中同时执行多个动画的那些事儿。 实现多动画的三种方法 方法一:使用 add() 方法(最简单直接) 这是最基础的方法,适合初学者
阅读全文
在我们制作数学动画时,经常会遇到多个动作同时发生的情况。 比如:坐标轴出现的同时,标签也跟着浮现;或者一个图形变色的同时,它也在移动。 今天,我们就来聊聊 ManimCE 中同时执行多个动画的那些事儿。 实现多动画的三种方法 方法一:使用 add() 方法(最简单直接) 这是最基础的方法,适合初学者
阅读全文
摘要:
下面是我正在做的一个抛物线演示动画。 需求很简单:展示一个二次函数 $ y = x^2 - 2x - 1 $ 的图像,并在上面标注几个关键点。 问题来了: 当我想调整函数参数时(比如把 $ -2x $ 改成 $ -3x $),所有点的坐标都要手动重算 计算 $ x=1.5 $ 时的函数值?掏出计算器
阅读全文
下面是我正在做的一个抛物线演示动画。 需求很简单:展示一个二次函数 $ y = x^2 - 2x - 1 $ 的图像,并在上面标注几个关键点。 问题来了: 当我想调整函数参数时(比如把 $ -2x $ 改成 $ -3x $),所有点的坐标都要手动重算 计算 $ x=1.5 $ 时的函数值?掏出计算器
阅读全文
摘要:
我们在做数学公式推导的视频时,比如,想展示一个因式分解: $ x^2+2x+1 $ 变成 $ (x+1)^2 $ 的,或者反过来因式展开,都需要手动计算分解或展开后的结果。 然后再做一个切换动画。 expr1 = MathTex("x^2 + 2x + 1") expr2 = MathTex("(x
阅读全文
我们在做数学公式推导的视频时,比如,想展示一个因式分解: $ x^2+2x+1 $ 变成 $ (x+1)^2 $ 的,或者反过来因式展开,都需要手动计算分解或展开后的结果。 然后再做一个切换动画。 expr1 = MathTex("x^2 + 2x + 1") expr2 = MathTex("(x
阅读全文
摘要:
大家好,你有没有试过在 Manim 里做导数定义的动画? 就是那个经典的场景:画一条曲线,再画一条割线,然后让割线上的一个点无限逼近另一个点,最后变成切线。 这个过程的核心是计算割线的斜率 (f(x+h) - f(x)) / h,并观察当 h 趋近于 0 时,这个斜率是如何变化的。 听起来很简单,但
阅读全文
大家好,你有没有试过在 Manim 里做导数定义的动画? 就是那个经典的场景:画一条曲线,再画一条割线,然后让割线上的一个点无限逼近另一个点,最后变成切线。 这个过程的核心是计算割线的斜率 (f(x+h) - f(x)) / h,并观察当 h 趋近于 0 时,这个斜率是如何变化的。 听起来很简单,但
阅读全文
摘要:
大家好!不知道你有没有过这样的经历:为了给别人讲解定积分的几何意义,你决定用 Manim 制作一个黎曼和(Riemann Sum)动画。 当你兴致勃勃地开始编码时,却发现要手写一堆循环来计算每个矩形的高度、宽度,还要处理复杂的积分上下限。 更头疼的是,当函数稍微复杂一点,比如 sin(x)*cos(
阅读全文
大家好!不知道你有没有过这样的经历:为了给别人讲解定积分的几何意义,你决定用 Manim 制作一个黎曼和(Riemann Sum)动画。 当你兴致勃勃地开始编码时,却发现要手写一堆循环来计算每个矩形的高度、宽度,还要处理复杂的积分上下限。 更头疼的是,当函数稍微复杂一点,比如 sin(x)*cos(
阅读全文
摘要:
做数学动画时,我经常遇到这样一个问题: 辛辛苦苦画好了两条曲线,y = sin(x) 和 y = x/2,想让它们交点的位置亮起一个发光点,标注出坐标。结果发现:我根本不知道交点到底在哪。 你可能会怎么做? 方案 A:用 NumPy 生成一堆点,然后暴力遍历找最接近的位置。 方案 B:打开 Desm
阅读全文
做数学动画时,我经常遇到这样一个问题: 辛辛苦苦画好了两条曲线,y = sin(x) 和 y = x/2,想让它们交点的位置亮起一个发光点,标注出坐标。结果发现:我根本不知道交点到底在哪。 你可能会怎么做? 方案 A:用 NumPy 生成一堆点,然后暴力遍历找最接近的位置。 方案 B:打开 Desm
阅读全文
摘要:
做物理模拟动画时,我遇到过一个坑。 当时想做一个弹簧振子的 Manim 动画:一个小球连接在弹簧上,在平衡位置附近往复振动。 我一开始的思路是——手动写欧拉法迭代。 # 当时写的“玩具级”数值积分代码 x = 1.0 # 初始位移 v = 0.0 # 初始速度 dt = 0.02 # 时间步长 k
阅读全文
做物理模拟动画时,我遇到过一个坑。 当时想做一个弹簧振子的 Manim 动画:一个小球连接在弹簧上,在平衡位置附近往复振动。 我一开始的思路是——手动写欧拉法迭代。 # 当时写的“玩具级”数值积分代码 x = 1.0 # 初始位移 v = 0.0 # 初始速度 dt = 0.02 # 时间步长 k
阅读全文
摘要:
如果你想绘制一个参数曲线,比如:极坐标玫瑰线 r = cos(5θ)。 那么思路很简单:算出曲线上的点,用 Create 一笔画出来。 但是,写完代码一渲染,问题来了: 花瓣尖端“唰”地一下就过去了,中间部分却慢吞吞的。整条曲线的绘制节奏忽快忽慢,看起来十分别扭。 问题的根源:我让参数 $ \the
阅读全文
如果你想绘制一个参数曲线,比如:极坐标玫瑰线 r = cos(5θ)。 那么思路很简单:算出曲线上的点,用 Create 一笔画出来。 但是,写完代码一渲染,问题来了: 花瓣尖端“唰”地一下就过去了,中间部分却慢吞吞的。整条曲线的绘制节奏忽快忽慢,看起来十分别扭。 问题的根源:我让参数 $ \the
阅读全文
摘要:
你在用 Manim 制作一次函数图像的对比动画时,是不是也遇到过这种麻烦:想直观展示不同斜率 k 和截距 b 对直线的影响,但每改一个参数,都得重新手算两端点坐标、重新算与坐标轴的交点,甚至要凭感觉“拉长”线段保证它贯穿画面。 改三组参数,工作量就翻三倍。 今天这篇文章,就是要彻底解决这个体力活。我
阅读全文
你在用 Manim 制作一次函数图像的对比动画时,是不是也遇到过这种麻烦:想直观展示不同斜率 k 和截距 b 对直线的影响,但每改一个参数,都得重新手算两端点坐标、重新算与坐标轴的交点,甚至要凭感觉“拉长”线段保证它贯穿画面。 改三组参数,工作量就翻三倍。 今天这篇文章,就是要彻底解决这个体力活。我
阅读全文
摘要:
做 Manim 动画时,我想让抛物线 $ y=x^2+bx+2 $随着系数 b 的变化,自动、精准地显示它与 x 轴的交点。 手写求根公式不仅繁琐,还要自己处理判别式为负的情况,稍不注意 math.sqrt 就会让整个动画崩溃。 本文我们就用 SymPy 彻底解决这个痛点。 1. 痛点场景还原 假设
阅读全文
做 Manim 动画时,我想让抛物线 $ y=x^2+bx+2 $随着系数 b 的变化,自动、精准地显示它与 x 轴的交点。 手写求根公式不仅繁琐,还要自己处理判别式为负的情况,稍不注意 math.sqrt 就会让整个动画崩溃。 本文我们就用 SymPy 彻底解决这个痛点。 1. 痛点场景还原 假设
阅读全文
摘要:
做 Manim 动画演示三角形全等判定定理时,我需要根据给定的边长或角度条件,在坐标系中精确放置三角形的三个顶点。 手动调整点的位置来凑 SSS、SAS 这些条件,反复试错、坐标对不齐,根本没法精确展示“给定条件后三角形唯一确定”这个核心结论。 这篇文章用 SymPy 把几何约束转化为代数方程,自动
阅读全文
做 Manim 动画演示三角形全等判定定理时,我需要根据给定的边长或角度条件,在坐标系中精确放置三角形的三个顶点。 手动调整点的位置来凑 SSS、SAS 这些条件,反复试错、坐标对不齐,根本没法精确展示“给定条件后三角形唯一确定”这个核心结论。 这篇文章用 SymPy 把几何约束转化为代数方程,自动
阅读全文
摘要:
做追及问题动画时,需要根据题意列方程求出相遇时间,再手动计算两个物体在每个时刻的坐标。 题意中速度、初始距离、出发时间差这些参数一改变,就得重新手算一遍,整个过程繁琐且易错。 本文用 SymPy 把列方程和求解都自动化,直接得到相遇时间和运动轨迹,动画代码只需拿到结果去画图。 1. 痛点场景还原 假
阅读全文
做追及问题动画时,需要根据题意列方程求出相遇时间,再手动计算两个物体在每个时刻的坐标。 题意中速度、初始距离、出发时间差这些参数一改变,就得重新手算一遍,整个过程繁琐且易错。 本文用 SymPy 把列方程和求解都自动化,直接得到相遇时间和运动轨迹,动画代码只需拿到结果去画图。 1. 痛点场景还原 假
阅读全文
摘要:
大家好,今天要解决一个痛点是关于 因式分解公式 的。 直接说问题: 用 Manim 展示 $ x2 + 5x + 6 = (x+2)(x+3) $ 的“十字相乘”面积模型,你需要先想好怎样把大矩形拆成四块$ (x^2)、(2x)、(3x)、(6) $,再手动计算每一块的边长和位置。 换成 $ x^2
阅读全文
大家好,今天要解决一个痛点是关于 因式分解公式 的。 直接说问题: 用 Manim 展示 $ x2 + 5x + 6 = (x+2)(x+3) $ 的“十字相乘”面积模型,你需要先想好怎样把大矩形拆成四块$ (x^2)、(2x)、(3x)、(6) $,再手动计算每一块的边长和位置。 换成 $ x^2
阅读全文

浙公网安备 33010602011771号