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

本文介绍了Python库Manim的文本使用,包括安装、运行,详细讲解了纯文本、标记文本、LaTex文本和代码文本的创建、样式设置,如颜色、大小、字体等,并展示了各种应用案例。
摘要由CSDN通过智能技术生成

今天分享一篇文章,是关于如何使用 Manim 这个工具 Python 工具库来制作视频的。

据我所知,目前应该是没有专门的书籍和教程来介绍这个工具的。至于教程,不同版本的Manim有一部分文档,其中 Manim社区

版的文档相对而言要完善些。

本次仅介绍 Manim 中 文本 的使用,使用的版本为 Manim Community v0.14.0,本文内容主要如下:
在这里插入图片描述

01Manim的安装与运行

安装

如何安装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

02文本使用介绍

在 Manim社区版中,文本的使用可以分为几个大类,分别是:

•纯文本

•标记文本

•LaTex 文本

•代码文本

2.1 纯文本

纯文本是最常见的一类文字,在视频中使用的标题、正文等,都可以使用纯文本,在Manim 中,纯文本可以通过 Text() 对象来实现。

比如要输出 文字 “Python数据之道”,核心代码如下:

Text("Python数据之道")

效果如下:
在这里插入图片描述

设置文本大小

对于文本而言,设置文本在屏幕中显示的大小,是经常要做的一个事情,Text() 对象可以通过多种方法来实现:

•设置 scale 属性值;

•设置 set_width 属性值;

•设置 font_size 参数值;

python学习交流Q群:906715085###
# 设置文本大小
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 实例 就没有实现渐变效果。

设置文本样式

文本样式的设置,包括文本加粗、斜体文本、文本字体设置、文本透明度设置、文本换行以及行距设置等。

演示案例的代码如下:

python学习交流Q群:906715085###
# 设置字体样式
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)
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值