python做动画视频教程_python中强大、灵活的动画引擎manim安装及使用

2023-10-07 13:40

本文主要是介绍python做动画视频教程_python中强大、灵活的动画引擎manim安装及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

manim是一个强大、灵活的python语言的动画引擎,尤其适合程序员使用编程方法来制作创意视频。

以下说明在 Windows操作系统中安装使用注意的问题。注意,是使用 manim源码的方式。请尽量使用源码,便于理解一些实现细节。

一.源码下载

官方下载地址:https://github.com/3b1b/manim.git

另外,因为官方源码更新原因,出现一些错误和文件缺失问题,我在使用中整理出一个版本(manim也有其它社区版)。

1.补充了一些缺失的图形文件,并做了一些修正。

2.把windows平台下需要安装的软件 FFmpeg,LaTeX,和模块pycairo下载好,放在./install-requirements/目录中,大家不用自己再到处去下载,直接安装即可。

3.包含我写的一些扩展代码,新增样条曲线类、文字处理类,以及几个我自己用到的视频动画。

4.在 example_scenes.py中加入更多例子,涵盖更全面的功能演示。

如果下载我整理的版本,请关注“优点英语app”公众号进入教程源码 - manim 文章获取下载地址。

这里没有直接给出下载地址,是因为我的视频教程中还有其它源码,为了便于管理,统一放在公众号中。

二.Windows操作系统中安装

1.【必需】[安装 FFmpeg]

这里已经下载了一个版本,保存在 ./install-requirements/.

这个软件不需要安装,相当于是一个绿色程序,把它解压到电脑上的一个位置。然后把它的bin目录设置到系统的环境变量 path中,使 ffmpeg能以命令的方式在命令行窗口中运行。

2.【必需】[安装 Cairo]

这个需要先下载安装文件再安装,才能安装成功。

这里已经下载了一个版本,保存在 ./install-requirements/.

可以直接运行下面的命令安装。

```sh

pip3 install ./install-requirements/pycairo-1.19.1-cp38-cp38-win_amd64.whl

```

也可以从下面这个网址下载一个合适的版本。

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycairo

3.【必需】安装 LaTeX

这个作用主要是为了处理带有公式的文本。manim中有两种文本对象。其中一种不使用公式,即普通的文本,可以不使用 LaTeX。

因为要运行里面的很多例子都有公式,所以这个程序必须安装。

这里已经下载了一个版本,保存在 ./install-requirements/.进入这个目录,双击安装程序,安装到电脑。

也可以从下面这个网址下载一个合适的版本。

[MiKTeX](https://miktex.org/download)

4. [安装 SoX]

这个可以不用安装。我的电脑没有安装这个,这里不做详细说明。

如果要安装,从下面的网址下载。

(https://sourceforge.net/projects/sox/files/sox/).

5.【必需】安装其他必须的模块。

其他的几个模块都能很顺利的使用 pip命令安装成功,这里不做详述。。

```sh

pip3 install -r requirements.txt

```

三.运行示例

示例的运行方法。

python manim.py example_scenes.py SquareToCircle -pl

执行后会生成一个视频文件,并立即打开播放。

四.manim使用逻辑概要。

manim使用逻辑很简单,配合例子只要几分钟就能掌握,剩下的在使用中再深入了解一些细节即可做出我们想要的效果。以下是我在使用中的一些总结,希望能让大家在初次使用时能对manim有个全局认识。

1. 所有的动画代码编写需要在场景类中完成。

1)首先新建一个场景类,这个场景类必须继承自 manim库中的场景类(Scene类或其子类)。

2)然后在这个新建场景类 construct方法中,创建一些对象,比如说坐标轴、文字、线条、三角形、立方体、曲面等等。

3)然后使用 play方法,对对象进行平移、旋转、转换等各种动画操作。

4)最后,统一使用下面的命令格式来执行代码程序,如上面第三条中示例的运行方法。

python       manim.py     代码所在的文件名      新的场景类名     -pl

运行完之后会直接生成一个视频文件。

2. 这个库所包含的对象类型特别广泛:

1)像素格式图片、svg矢量图形;

2)文字、公式;

3)点、线(直线、贝塞尔曲线、样条曲线);

4)三角形、矩形等二维图形;

5)立方体、球体、锥体等三维图形;

6)三维曲面;

7)使用自定义函数创建的特殊曲面、或者图形。

3. 照相机是场景中一个属性,不需要创建。可以通过改变照相机的角度、距离来转换场景的观察方向,在三维动画中很有用。

4. 颜色、线条粗细等都是通过 config 的形式设置。

5. example_scenes.py 中有各种各样的示例,通过学习这些例子即可初步掌握其使用原理。

五.不显示中文的问题

找到 ./manimlib/constants.py文件

在此文件中找到: TEX_USE_CTEX = False,把 False改为 True即可。

六.目录说明

1. ./from_3b1b/目录

这个目录中包含了官方的很多示例。但是因为版本更迭的问题导致有很多错误,还有一些图形文件缺失,我做了一些修改和补充。

2. ./ydyy/ 目录

这个目录中是我在制作一些视频的时候做的一些代码。

3. ./manimlib/ 核心库文件的存放目录。

4. ./assets/ 图片、图形文件的存放目录。

5. ./media/ 生成的视频文件存放目录。

七.使用自定义函数实现的效果展示

这个例子模拟的是三维波形图。波形图曲面的函数为:

z = 0.2 * np.sin(np.sqrt(x**2 + y**2))

是一个多变量函数,0.2是为了减小波峰与波谷的高差,让波纹显得平缓,以坐标(0,0,0)为中心。

代码文件位于:./ydyy/video_3.py 中的 Wave类。

2b27e15c6077

三维波形

编后语

近期在制作Python基础教程视频时,希望能让教程有些新意,原本想使用ppt、或者视频剪辑的方法来做一些特殊效果,经过一番尝试后发现有些功能很难实现。

偶然发现 manim这个模块,研究几个例子后,使用 manim做了一些片头和片尾的动画。确实功能强大、灵活,可以实现非常多的创意,尤其适合程序员使用编程方法来制作创意视频。

我们的Python基础教程通过讲解Python英语教程的方式来学习Python编程,让大家既能学习一种编程语言又能提高英语能力。

一方面,我们把编程作为一种英语使用环境,在编程中学习英语,提高英语学习效率。

另一方面,英语是编程不能回避的一道坎。大量的编程文档、函数的名称、函数的注释、类的名称、类的注释、新技术、新功能的发布等等,都使用英语。掌握好英语才能让我们在编程中游刃有余。

如果觉得本文有帮助请点赞、收藏。

如有疑问请在下面留言。

这篇关于python做动画视频教程_python中强大、灵活的动画引擎manim安装及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158109

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没