Manim是一个用来制作精美数学物理动画的软件。
具体的下载配置
主要需要配置的东西:mamba(封装python虚拟环境),miniforge(用来连接开源站方便下载),在manimce里面要下载ffmpeg(视频格式转换),miktex(配置latex环境),其中的一些下载已经过时,需要使用最新的版本。强烈建议对配置环境这种麻烦活具有丰富经验的人再继续(说实话几个小时配这个是真磨炼心性。。。)
顺带一提vscode里面有个十分方便的插件Manim sideview,可以预览视频效果。
一些教程和实现
在python框架下实现的代码,也会用到一些其他的库(如numpy),采用面向对象的方法实现。
一个不错的图文教程https://www.wolai.com/gargantua/uwhP7DTetSkovs2QutYoAr
基本结构
manim主要有含有三个对象:Scene、Animation、Mobject。
Scene的四个方法
1 | |
首先定一个类,再定义一个对象self,这样就布置好了一个Scene。
- add() :添加物体到场景中
- remove() :移除物体
- play() :展示动画效果
- wait() :中间等待几秒时间,不然会同时开始
Mobject
1 | |
在 Manim 中,Mobject 是所有图形对象的基类。以下是一些常见的 Mobject 子类:
VMobject:矢量图形对象的基类。Text:用于显示文本。Tex:用于显示 LaTeX 公式。Circle:圆形对象。Square:正方形对象。Polygon:多边形对象。Line:线段对象。Dot:点对象。Arrow:箭头对象。ImageMobject:图像对象。
这些 Mobject 子类可以组合、变换和动画化,以创建复杂的动画效果。像这样直接定义出了物体,同时配置了几个参数
- DrawBorderThenFill() 出现方式,先画边框再填充
- FadeIn() 出现方式,浮现出来
- Transform(s1,s2) 转换变形对象
- FadeOut() 退出方式,淡出视野
还有一些特殊的可调参数(其实也可以这么搞,等价表述)
1 | |
- fill_opacity 不透明度
- color 颜色
- fill_color 内部填充颜色
.animate syntax
- shift(填方向)
- rotate(PI角度)
- Rotate(对象,angle=角度,axis=旋转的坐标轴 , runtime=时间)
- next_to(对象,方向,buff=0.5)
文本操作
1 | |
坐标系统
- 添加一个二维网格plane= NumberPlane() self.add(plane)
- move_to([1,0,1],aligned_edge=方向) //一共八个方向,U , D , R , L , UL , UR , DL , DR
- set_x,set_y,set_z
- next_to(对象,direction=,)
- get_center() 获得中心坐标 //get_top() bottom left right x y z corner等等
数学公式变换
1 | |
Write(公式对象)是最简单的实现方法
**TransformMatchingTex() **和 **TransformMatchingShapes()**可以实现公式之间的转换,有些许的区别
ThreeDScene
创建三维场景(代价是渲染起来非常慢),要学会移动摄像机