Python视频制作工具Manim入门,文本使用详细介绍 |
您所在的位置:网站首页 › 竖屏代码运行视频教程 › Python视频制作工具Manim入门,文本使用详细介绍 |
来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 01写在前面大家好,我是阳哥。 最近一段时间,我在微信视频号「价值前瞻」和「Python数据之道」发布了一些视频,有不少同学问到这些视频是怎么做的,用什么工具制作的。 在文章 用 python 制作高逼格的数学动画 中,我跟大家介绍了 Manim 这个视频制作工具,以及以及案例演示。 不少同学觉得这个工具不错,问到有没有完整的使用教程或者相关书籍。据我所知,目前应该是没有专门的书籍来介绍这个工具的。至于教程,不同版本的Manim有一部分文档,其中 Manim社区版的文档相对而言要完善些。 我将基于 Manim社区版(Manim Community)给大家分享Manim入门的内容,当前已有的教程包括: 01-基础形状 说明:Manim 社区版,经常缩写为 manimce,英文全称是 Manim Community Edition 本次介绍 Manim 中 文本 的使用,使用的版本为 Manim Community v0.14.0,本文内容主要如下: ![]() 如何安装社区版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 03文本使用介绍在 Manim社区版中,文本的使用可以分为几个大类,分别是: 纯文本 标记文本 LaTex 文本 代码文本 3.1 纯文本纯文本是最常见的一类文字,在视频中使用的标题、正文等,都可以使用纯文本,在Manim 中,纯文本可以通过 Text() 对象来实现。 比如要输出 文字 “Python数据之道”,核心代码如下: Text("Python数据之道")效果如下: ![]() 对于文本而言,设置文本在屏幕中显示的大小,是经常要做的一个事情,Text() 对象可以通过多种方法来实现: 设置 scale 属性值; 设置 set_width 属性值; 设置 font_size 参数值; # 设置文本大小 class Demo2(Scene): def construct(self): WaterMark.construct(self) s = "Python数据之道" t1 = Text(s) t1.to_edge(UP,buff=0.5) t2 = Text(s).scale(2) t2.next_to(t1,DOWN) t3 = Text(s).set_width(10) t3.next_to(t2,DOWN) t4 = Text(s,font_size=40) t4.next_to(t3,DOWN) self.add(t1) self.play(Write(t2)) self.play(Create(t3)) self.play(Write(t4)) self.wait()上述代码的实现效果如下: ![]() 文本颜色设置包括指定某种颜色以及渐变颜色设置,通常情况下,颜色通过 color 参数来设置,渐变颜色通过 gradient 参数来设置。 演示案例的代码如下: # 设置文本颜色 class Demo3(Scene): def construct(self): WaterMark.construct(self) s = "Python数据之道" t1 = Text(s,color=BLUE) t1.to_edge(UP,buff=2) t2 = Text("一份价值,一份收获",gradient=[BLUE,YELLOW,RED]).next_to(t1,DOWN) t3 = Text("Hello World",gradient=[BLUE,YELLOW,RED]).next_to(t2,DOWN) t4 = Text("@Python数据之道",gradient=[BLUE,YELLOW,RED],font_size=30,fill_opacity=0.8) t4.next_to(t3,DOWN) t5 = Text("Python数据之道",gradient=[BLUE,YELLOW,RED]).next_to(t4,DOWN) # 当英文和汉字混合时, 当前的manim社区版,使用 gradient 时会出现 bug self.add(t1) self.play(Write(t2)) self.play(Create(t3)) self.play(Write(t4)) self.play(Write(t5)) self.wait()上述代码的实现效果如下: ![]() 需要注意的是,当英文和汉字混合时, 当前的manim社区版,使用 gradient 时可能会出现 bug,没有渐变的效果,上述案例中的 变量 t5 实例 就没有实现渐变效果。 设置文本样式文本样式的设置,包括文本加粗、斜体文本、文本字体设置、文本透明度设置、文本换行以及行距设置等。 演示案例的代码如下: # 设置字体样式 class Demo4(Scene): def construct(self): WaterMark.construct(self) t1 = Text("Python数据之道",font="Alibaba PuHuiTi") t1.to_edge(UP,buff=0.5) t2 = Text("Python数据之道",color=BLUE,font="Times") t2.next_to(t1,DOWN) t3 = Text("Python数据之道", weight=BOLD) t3.next_to(t2,DOWN) t4 = Text("Python数据之道", slant=ITALIC) t4.next_to(t3,DOWN) t5 = Text("Python数据之道", fill_opacity=0.5) t5.next_to(t4,DOWN) t6 = Text("Hello\nPython", line_spacing=0.5) t6.next_to(t5,DOWN,buff=1).shift(LEFT) t7 = Text("Hello\nPython", line_spacing=2) t7.next_to(t6,RIGHT,buff=1) self.add(t1) self.play(Write(t2)) self.play(Write(t3)) self.play(Write(t4)) self.play(Write(t5)) self.add(t6,t7) self.wait() |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |