来源:Python数据之道 (ID:PyDataLab)

作者:阳哥

01写在前面

最近几个月,我在微信视频号「价值前瞻」和「Python数据之道」发布了一些视频,有不少同学问到这些视频是怎么做的,用什么工具制作的。

在文章 用 python 制作高逼格的数学动画 中,我跟大家介绍了 Manim 这个视频制作工具,以及以及案例演示。

不少同学觉得这个工具不错,问到有没有完整的使用教程或者相关书籍。据我所知,目前应该是没有专门的书籍来介绍这个工具的。至于教程,不同版本的Manim有一部分文档,其中 Manim社区版的文档相对而言要完善些。

本次,我将基于 Manim社区版(Manim Community)给大家分享Manim入门的第一部分,基础形状的使用。

本次使用的版本为 Manim Community v0.14.0,文中介绍的基础形状如下:

02Manim的安装与运行

安装

如何安装社区版Manim,参见下面的官方链接:

https://docs.manim.community/en/stable/installation.html

如何运行 Manim

Manim 绘制图形,首先需要引入 Manim 库,然后将需要绘制的内容封装到一个 类(class) 里面。

社区版的导入代码如下:

from manim import *

对于 编辑好的程序文件( XXXX.py 文件),需要在同一个文件夹下运行命令来运行程序,命令格式如下:

manim -pql XXXX.py DemoSquare

上面的命令行中:

  • manim 是社区版Manim运行程序的主要标志用语;

  • p 表示程序运行后会进行预览(图片或视频);

  • ql 表示低质量(quality low), 其他的选项有 -ql, -qm, -qh, -qk, 分别表示 低质量、正常质量、高质量、4K质量;

  • XXXX.py 是py代码文件;

  • DemoSquare 是 py代码文件中的一个类;

演示过程录屏如下:

命令行中,还有其他许多参数可以设置,可以通过社区版的支持文档来进一步了解:

https://docs.manim.community/en/stable/tutorials/configuration.html#command-line-arguments

03Manim 的基础形状介绍

通用属性

Manim 中基础形状有些属性和方法,对于大部分形状是通用的,因此在介绍具体的形状之前,在这里通过 正方形 来讲解下形状的基础用法。

在下面的案例中,实现了对正方形的边框颜色设置、线宽度设置、填充颜色、旋转、大小变换等。

# manim -pql manimce-intro-01.py DemoSquare
class DemoSquare(Scene):def construct(self):WaterMark.construct(self)r = 1sq1 = Square(side_length=2 * r,color=BLUE,)sq1.to_corner(UL,buff=2)self.add(sq1)self.wait()sq2 = Square(side_length=2 * r,color=BLUE,stroke_width=10,  # 设置边框线的粗细)sq2.next_to(sq1,RIGHT,buff=1)self.add(sq2)self.wait()sq3 = Square(side_length=2 * r,color=BLUE,fill_color=ORANGE,  # 设置填充颜色fill_opacity=0.5,  # 设置透明度)sq3.next_to(sq2,RIGHT,buff=1)self.add(sq3)self.wait()# 形状大小变换sq4 = sq1.copy()sq4.scale(0.6) # 缩小到 60%sq4.next_to(sq1,DOWN,buff=0.5)self.add(sq4)self.wait()# 形状旋转sq5 = sq2.copy()sq5.rotate(45*DEGREES)  # 旋转45度sq5.next_to(sq2,DOWN,buff=0.5)self.add(sq5)self.wait()

演示效果如下:

对于 , manim 中目前有几种不一样的形状可以来展示,包括:

  • Dot

  • AnnotationDot

  • LabeledDot

class DemoDot(Scene):def construct(self):WaterMark.construct(self)g = Group(# 点Dot(color=PINK),AnnotationDot(stroke_color=YELLOW, fill_color=BLUE,fill_opacity=1),# 带文字标签的点LabeledDot(Tex("2022", color=RED)),LabeledDot(MathTex("a", color=GREEN)),LabeledDot(Text("Python数据之道", color=BLUE)).scale(0.3),LabeledDot("Lemon"),)g.arrange(RIGHT,buff=0.5).scale(1.5)g[:2].move_to(UP*1.5)g[2:].next_to(g[:2],DOWN,buff=1)for shape in g:self.add(shape)self.wait(0.5)

演示效果如下:

线

在这里,线 的形状,包括 直线、虚线、箭头、双箭头、弯曲的箭头等,如下:

  • Line

  • DashedLine

  • Arrow

  • DoubleArrow

  • CurvedArrow

class DemoLine(Scene):def construct(self):WaterMark.construct(self)g = Group(# 线Line(0.5*LEFT,0.5*RIGHT,color=YELLOW),# 虚线DashedLine(0.5*LEFT,0.5*RIGHT,color=TEAL),# 箭头Arrow(color=BLUE), Arrow(color= BLUE, tip_shape=ArrowCircleFilledTip), #  ArrowCircleTipArrow(color= BLUE, tip_shape=ArrowSquareTip),# ArrowSquareFilledTip# 双箭头DoubleArrow(color=BLUE),# 弯曲的箭头CurvedArrow(LEFT,RIGHT,angle=90*DEGREES,color= BLUE), )g.arrange(RIGHT,buff=0.5)g[:3].move_to(UP*1.5)g[3:].next_to(g[:3],DOWN,buff=1)for shape in g:self.add(shape)self.wait(0.5)

演示效果如下:

圆形

圆形包括 圆、圆环、扇形、椭圆、弧形等,如下:

  • Circle

  • Annulus

  • Ellipse

  • Sector

  • Arc

  • ArcBetweenPoints

class DemoCircle(Scene):def construct(self):WaterMark.construct(self)g = Group(# 圆形Circle(radius=0.8,color=YELLOW,fill_color=BLUE,fill_opacity=1),# 圆环Annulus(inner_radius=0.7, outer_radius=1,fill_color= DARK_BLUE, stroke_color=YELLOW, stroke_width=4), # 椭圆Ellipse(color= BLUE),# 扇形Sector(inner_radius=0.7, outer_radius=1,fill_color= BLUE, stroke_color=YELLOW, stroke_width=4),# 弧形Arc(radius=1.3, start_angle=-PI/8, angle=PI,color= BLUE),ArcBetweenPoints(start=2 * RIGHT, end=2*LEFT, stroke_color=BLUE) ,)g.arrange(RIGHT,buff=0.5)g[:3].move_to(UP*1.5)g[3:].next_to(g[:3],DOWN,buff=1)for shape in g:self.add(shape)self.wait(0.5)

演示效果如下:

下面的这个视频,就是基于 扇形(Sector)来制作的。

矩形

矩形类的形状,是咱们经常使用到的一类图形,在 manim 中包括:

  • Rectangle

  • RoundedRectangle

  • Square

class DemoRect(Scene):def construct(self):WaterMark.construct(self)g = Group(# 矩形Rectangle(width=1,height=0.6,color=BLUE,fill_color=ORANGE,fill_opacity=1),Rectangle(width=1,height=0.6,color=BLUE,grid_xstep=0.5,grid_ystep=0.2),# 圆角矩形RoundedRectangle(corner_radius=0.3,width=1,height=0.6,fill_color=PURPLE,fill_opacity=1),# 正方形Square(side_length=1,color=BLUE,fill_color=ORANGE,  # 设置填充颜色fill_opacity=0.5,  # 设置透明度),)g.arrange(RIGHT,buff=0.5).scale(2)for shape in g:self.add(shape)self.wait(0.5)

演示效果如下:

多边形

多边形性,相对来说要复杂些,主要是需要设置边缘点的位置,在manim中有多种方式来表示多边形,包括:

  • Triangle

  • Polygon

  • RegularPolygon

  • Star

  • Polygram

  • RegularPolygram

class DemoPolygon(Scene):def construct(self):WaterMark.construct(self)g = Group(# 正三角形Triangle(radius=2,color=BLUE),# 三角形Polygon([-5, 1.5, 0], [-2, 1.5, 0], [-3.5, -2, 0]),# 多边形Polygon([-5, 1.5, 0], [-2, 1.5, 0], [-2.5, -2, 0], [-4.5, -1.5, 0]),#正多边形RegularPolygon(n=6,color=BLUE),# 星型Star(color=BLUE),#多边形Polygram([[0, 2, 0], [-np.sqrt(3), -1, 0], [np.sqrt(3), -1, 0]],[[-np.sqrt(3), 1, 0], [0, -2, 0], [np.sqrt(3), 1, 0]],),RegularPolygram(num_vertices = 7),RegularPolygram(5, radius=1),)g.arrange(RIGHT,buff=0.5).scale(0.7)g[:4].move_to(UP*1.5)g[4:].next_to(g[:3],DOWN,buff=1)for shape in g:self.add(shape)self.wait(0.5)

演示效果如下:

符号

在manim 中,也经常会用到 大括号等形状,如下:

class DemoCross(Scene):def construct(self):WaterMark.construct(self)# 十字叉cross = Cross(stroke_color = BLUE,stroke_width=20).scale(0.8)cross.to_corner(UL,buff=2)self.add(cross)self.wait(0.5)# 大括号br1 = Brace(Line(LEFT,RIGHT),color= BLUE)br1.next_to(cross,RIGHT,buff=0.5)self.add(br1)self.wait(0.5)# 带文字的大括号line=Line(LEFT,RIGHT) br2= BraceLabel(line, text= "14cm", color= YELLOW, buff=0.1) br2.submobjects[1].set_color(BLUE) self.add(VGroup(line,br2).next_to(br1,RIGHT,buff=0.5))self.wait(0.5)# 带弧度的大括号arc = Arc(radius=1,start_angle=0,angle=3*PI/4) br3 = ArcBrace(arc).set_color(BLUE)self.add(VGroup(arc,br3).next_to(VGroup(line,br2),RIGHT,buff=0.5))# self.add(arc,br3)self.wait(0.5)

演示效果如下:

04小结

相对而言,manim 中的基础形状,还是比较齐全的,在这些基础形状的基础上,自己可以进一步来组合其他的形状。


大家读完顺手点下右下角的  “在看” ,就是最大的鼓励和支持了。

往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

【Python】Python视频制作工具Manim入门,基础形状详细介绍相关推荐

  1. Python视频制作工具Manim入门,文本使用详细介绍

    来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 01写在前面 最近一段时间,我在微信视频号「价值前瞻」和「Python数据之道」发布了一些视频,有不少同学问到这些视频是怎么做的, ...

  2. Python 视频制作神器 -- Manim入门篇

    今天分享一篇文章,是关于如何使用 Manim 这个工具 Python 工具库来制作视频的. 据我所知,目前应该是没有专门的书籍和教程来介绍这个工具的.至于教程,不同版本的Manim有一部分文档,其中 ...

  3. Python视频制作引擎Manim安装教程2021版(科学概念可视化)

    Python视频制作引擎Manim安装教程2021版 0 写在前面 1 效果展示 2 安装教程(Windows) 2.1 安装ffmpeg 2.2 安装Latex 2.3 安装dvisvgm 2.4 ...

  4. 免费视频制作工具满足非专业用户的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕、自动剪辑等

    免费视频制作工具满足非专业用户的视频处理需求:压缩视频.转码视频.倒放视频.合并片段.根据字幕裁切片段.自动配字幕.自动剪辑等.有了它你也可以做出优秀的视频啦- Quick Cut 是一款轻量.强大. ...

  5. 凯旋直播间分享10款视频制作工具,凯旋直播剪辑软件

    软件在精不在多,我使用软件就两个,一个无他相机,一个是快剪辑,有些时候快剪辑我都不用,直接用无他相机拍摄完成我就上传了. [凯旋直播间分享10款视频制作工具,凯旋直播剪辑软件][凯旋直播kx3690] ...

  6. exe软件打包工具哪个好_小视频制作软件哪个好?推荐五款超赞小视频制作工具...

    我们每天都会刷很多小视频,你是否也想自己制作小视频?只要拥有一款视频制作利器,你也能快速做出获赞无数的小视频,本文给你介绍五款非常实用的,推荐一试! 小视频制作工具推荐 小视频制作工具推荐 蜜蜂剪辑 ...

  7. 苹果Mac延时摄影视频制作工具:Persecond

    Persecond 是Mac平台上的一款延时摄影视频制作工具.它的界面简洁精美,轻松导入图像序列,可以轻松制作延时摄影视频.Persecond提供的延时摄影是一种加速缓慢事件速度的摄影和视频技术.无论 ...

  8. 元引擎视频制作工具 一键生成原创视频软件

    元引擎视频制作工具提供了全自动的一键剪辑功能,让用户可以轻松地剪辑出快速成品,节省大量的时间和精力.那么,怎么利用元引擎视频制作工具批量生成短视频呢? 一.上传视频素材 这些素材包括图片和视频,这些素 ...

  9. Persecond for Mac(延时摄影视频制作工具)

    Persecond for Mac是Mac平台上的一款全新且极易使用的精美延时摄影视频制作工具.Persecond for Mac提供的延时摄影是一种加速缓慢事件速度的摄影和视频技术.无论是空中飘动的 ...

最新文章

  1. AndroidStudio项目打包成jar
  2. PyTorch 可视化工具 TensorboardX
  3. boost::mp11::mp_all_of相关用法的测试程序
  4. 表格存储TableStore全新升级,打造统一的在线数据存储平台!
  5. pluswell双机软件基本概述
  6. FastReport studio 动态加载数据集 (zhuan)
  7. java高级工程师面试题_java高级工程师面试题及答案解析
  8. 微型计算机原理考试试卷,微机原理试题集题库带答案
  9. k近邻算法的原理、示例与分析
  10. 二阶有源低通滤波电路的设计与分析
  11. error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h
  12. 一场CF的台前幕后(下)
  13. 十个设计师必备网站,解决你设计的所有难题
  14. 70行脚本实现促销信息微信通知
  15. 如何正确理解SEO优化与搜索引擎优化之间的关系
  16. 高仿网易评论列表效果之界面分析
  17. matlab去除大跳变,一种快速灰度校正算法(处理亮度不均等情况)(含MATLAB代码)...
  18. Document is missing mandatory uniqueKey field: id
  19. Vue3 新特性 内置组件 <Teleport>
  20. 个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构

热门文章

  1. 基于Maven管理的Mapreduce程序下载依赖包到LIB目录
  2. iOS关于RunLoop和Timer
  3. 禁用viewstate怎么还保存状态?
  4. iOS进阶 - iOS如何监控崩溃
  5. 01-sql优化及索引
  6. JavaScript中随着鼠标拖拽而移动的块
  7. 基于libUSB的USB设备固件更新程序(下载数据)(转)
  8. 多個excel文件合并到一個excel文件
  9. ASP.NET AJAX文档-ASP.NET AJAX 概述[翻译](1)
  10. 真实临床“生态”下实效性研究的挑战和意义