如何做出3blue1brown的动画视频
相信很多人都知道3Blue1Brown,這是一個由斯坦福大學的數學系學生Grant Sanderson 創建的YouTube 頻道。該頻道從獨特的視覺角度解說高等數學,內容包括線性代數、微積分、神經網絡、黎曼猜想、傅里葉變換以及四元數等等。
B站主要是一群漢化組的小伙伴在翻譯視頻并且上傳,視頻質量當然是非常高而且特色鮮明。因為他的視頻不是用pr剪輯出來的,而是用程序寫出來的。如果你用心去看幾個視頻你會發現門檻并不高,至少作為科普視頻來說只要用心看和體會的確會有一些意想不到的收獲。
為了能用可視化的方式讓大家體會到數學中的幾何之美,他自己寫了做視頻中的動畫的腳本。過于有趣的π醬成功激發了我想在本地嘗試運行動畫腳本的想法,全網目前沒有很好的系列學習manim引擎的入門教程,但在知乎和CSDN上還是有不少人在學習并且總結,安裝教程還是可以找到滴。
文章目錄
- 環境依賴
- 必要配置
- 動畫制作引擎manim
- miktex
- ffmpeg
- 配置環境變量
- 命令行測試
- 創建manim
- 跳轉到manim的根目錄
- 實例測試
環境依賴
Windows 10
Anaconda3
python 3.8.5
必要配置
動畫制作引擎manim
manim下載到本地,之后解壓后到一個合適的位置,即可使用(此為manim動畫引擎所包含的全部文件)。
miktex
miktex直接安裝即可,安裝路徑中不要包含中文!此為windows平臺下的Tex套件,TeX 是一種排版語言,主要用于處理視頻中包含的文字信息。
ffmpeg
ffmpeg同樣直接安裝,解壓后將…/bin/目錄添加進用戶環境變量(此為音視頻流處理軟件)。
配置環境變量
對anaconda、ffmpeg的bin目錄配置環境變量。
命令行測試
右擊"Anaconda Prompt"-“更多”-“以管理員身份運行”
分別輸入命令,
python --version
latex --version
xelatex --version
ffmpeg -version
當均輸出正確的版本號則配置成功。否則檢查文件的路徑等問題。
創建manim
打開前面下載并解壓后的 manim 文件夾,該文件夾的路徑就稱為 manim的根目錄,在該根目錄中新建一個空白文件夾media,并在該根目錄中新建一個名字為MEDIA_DIR的.txt文件。
打開MEDIA_DIR.txt,輸入剛剛新建的media文件夾所在的路徑并保存。
跳轉到manim的根目錄
cd <manim 的根目錄>
之后安裝一些必要的第三方庫
python -m pip install -r requirements.txt
實例測試
python -m manim example_scenes.py SquareToCircle -pl
效果如下
python -m manim example_scenes.py WarpSquare -pl
python -m manim example_scenes.py WriteStuff -pl
python -m manim example_scenes.py UpdatersExample -pl
class OpeningManimExample(Scene):def construct(self):title = TextMobject("This is some \\LaTeX")basel = TexMobject("\\sum_{n=1}^\\infty ""\\frac{1}{n^2} = \\frac{\\pi^2}{6}")VGroup(title, basel).arrange(DOWN)self.play(Write(title),FadeInFrom(basel, UP),)self.wait() ?transform_title = TextMobject("That was a transform")transform_title.to_corner(UP + LEFT)self.play(Transform(title, transform_title),LaggedStart(*map(FadeOutAndShiftDown, basel)),)self.wait() ?grid = NumberPlane()grid_title = TextMobject("This is a grid")grid_title.scale(1.5)grid_title.move_to(transform_title) ?self.add(grid, grid_title) # Make sure title is on top of gridself.play(FadeOut(title),FadeInFromDown(grid_title),ShowCreation(grid, run_time=3, lag_ratio=0.1),)self.wait() ?grid_transform_title = TextMobject("That was a non-linear function \\\\""applied to the grid")grid_transform_title.move_to(grid_title, UL)grid.prepare_for_nonlinear_transform()self.play(grid.apply_function,lambda p: p + np.array([np.sin(p[1]),np.sin(p[0]),0,]),run_time=3,)self.wait()self.play(Transform(grid_title, grid_transform_title))self.wait()參考文章:https://www.zhihu.com/question/57357012/answer/723888621
總結
以上是生活随笔為你收集整理的如何做出3blue1brown的动画视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机驱动打不开,驱动人生打不开怎么办
- 下一篇: CAD图纸管理,CAD图纸高效的管理解决