与manim之间的往事

最近刚到大学报到完,恰巧有些闲暇时间
闲来无事,来记录一下自己与一步一步推动我走到现在的manim之间的故事(指流水账
这篇虽然叫「与manim之间的往事」,但是里面很多都和manim无关(逃

一切的起点

现在的一切还要从初中开始说起(因为小学时期就是一直在玩,很少考虑学习的事情)
上了初中,关注了很多没营养的公众号 —— 初中数学、初中英语、初中物理 等等一整个系列
其中有一个很特别的公众号就是初中化学,总是会转载一些很有趣的实验视频
有一次它就转载了 @真·凤舞九天疯狂化学两期视频
当时看得我大受震撼,于是就顺着链接爬到了贴吧

正好萌凤开始制作DEC(实验室的魔法日常)了,然后就在贴吧上每一期都找到来看
逐渐我发现这些视频发布的平台都是一个粉色小网站
“那我既然每期都从贴吧翻到哔哩哔哩来看这些视频,那我为什么不直接在这个网站上等待更新呢?”
凭着这个想法,我注册了B站

初入B站

所以真正带我来B站的,是大萌凤(
当时的入站考试还很严格,问题也都很有趣,极大地吸引了我的兴趣
起昵称的时候突然想到 凤舞 和我名字里的 鹤翔 还挺搭配的,所以就顺势补全起了个昵称“鹤翔万里

刚入B站也只是每周看看更新的DEC
然后逐渐逛着逛着就发现了这里深藏着的一堆一堆宝藏,一点一点关注了很多up主

其中,在某个评论区,看到了有人推荐up主 @3Blue1Brown,就去看了一看
结果也是大受震撼,他可以将一个知识讲得直白易懂、又不缺乏严谨性,更重要的是动画也顺滑舒适好看

初识manim

在看了3b1b的视频后,就一直非常好奇这样的视频是怎么做的
在疑问了很久之后(已经到了初三),我终于看视频简介了(x
发现这是使用一个叫做manim的东西制作的
百度一搜索,结果搜到了 @Solara570专栏

一看发现,竟然是编写代码制作的,感觉很神奇
而且里面的代码看起来也好好看(其实就是Consolas等宽+普通高亮
所以也就很想学着做一做

所以就打算先跟着教程试着安装一遍,结果果然
处 处 碰 壁

安装什么都会卡住一下,特别是LaTeX,总是出问题,而且很难解决
当时正是初三中考复习,而且家里也限制用电脑,所以就只好先放下了
但当时就确立了我的一个目标:

我要学会使用manim

踏上编程的不归路

当时在教程中了解到,这里面的代码是python语言,所以就决定要先放下manim好好学一学python(注入怨念:这恰恰是不少人做不到的,很多零基础的人盲目只是要用manim,然后即使没有python基础也要硬着头皮安装,结果出现了各种问题,而且还到处问

在中考完的暑假中,我买了一本《Python编程:从入门到实践》,在极短的假期(因为高中创新班开学早)中不惜推掉部分衔接课程完整地刷了一遍书,甚至还做了一小本笔记
也凭借着部分网络资源,我学会了简单的python语法以及有关计算机的很多知识,也觉得这些东西确实挺有意思的
这时我又尝试安装了一遍manim,中途的错误少了很多,但还是卡在了安装LaTeX上
高中已经开学,所以我又不得不放下了manim

上了高中,因为是创新班,所以会推荐选择一两门竞赛来学习,为了学到更多的计算机知识,报名了信息竞赛
发到了教材之后我就开始疯狂看,甚至自习晚自习,只要是有空闲时间了就拿出来看,这样一个多月学了C++的基础语法
当时班主任发现了还比较不高兴,要求我一直保持年级前二十,但是很显然这是保持不住的

在高一的NOIp2018后,我发现学长们都不太会使用Linux以及bash,而考试的系统还是NOI Linux
所以就决定干脆做几个视频放在B站上供大家参考(都是黑历史)
就这样,我成为了一名up主

在超前学了信息竞赛课的内容之后,我开始用那个时间来研究安装manim
为了解决LaTeX的报错问题,我试过很多方法,最后使用docker成功安装了环境(为此还花了一段时间了解docker)
在做出了第一个带有文字的动画之后很是激动

这样在2019年寒假的时候我抽了点时间来练习练习manim,制作了我的第一个manim视频「动态规划-01背包问题」
慢慢的,在每天自习的信息竞赛课上我又学了不少计算机方面的知识
当时想要做一个自己的博客,在学markdown时发现数学公式也是用LaTeX写的
而且了解到这个东西可以排出很好看的文档,所以就干脆又从零学了LaTeX
学了LaTeX之后manim安装就不再出现无法解决的问题了,也就可以顺利安装了

在高一下高二上,我也是凭着兴趣做了几个视频,从中也逐渐地发掘了manim的一些简单用法,也尝试看了一些manim源码
当时还觉得那些源码都还是很远的东西,觉得自己能看懂一部分就很好了

在2019年年末,我发现了同是使用manim的up主 @cigar666
一段时间后,他建立了manim的交流群,这个群也逐渐地发展壮大
在这个群里我也学到了很多知识,教了很多人入坑manim,也认识了好多好多全国各地的朋友

高二的寒假,我计划做了FFT算法那期视频,在那期间,我非常活跃地在群里回答各种问题
有一次我给出了一个很复杂的解决办法,而manim源码中其实是有轮子的
这时S570说了一句“还是源码看的不够”,我也就从此提高了目标:

我要看懂manim源码

成立MK

高二的寒假,疫情突如其来,假期也随之延长
而当时大部分人也都在假期中,为了更好地交流代码,我在GitHub上建立了组织,并且投票选举出了名称manim-kindergarten
之后在群友的合作之下又进行了很多资料的完善
为了方便回复一些常见的问题,我也编写了《manim常见问题》这个文档,在一年多的完善后,它已经迭代到了3.1版本

同时我也顺势做了很多比较短的视频,参加了一些活动,也被妈咪叔转发了,获得了不少粉丝,也拿到了知识领域优质up主的认证
而且MK内部也组织了几次联合投稿,共同完成了一些视频
其中我们突发奇想,尝试了使用manim来制作manim教程,结果还蛮不错
所以我也就单独在这个系列下完成了几个视频

在制作这个视频时,我也在逐渐深入地阅读源码,感觉没有那么晦涩难懂,代码思路还是很清晰
正好有MK成员开了一个文档的repo来汇总一些网上的文档,我也就正好把里面的内容归纳归纳,保留了一些有价值的内容,也补充了部分中文的文档字符串,就这样完成了一大半中文文档

疫情期间,我也加入了manim的discord频道,在里面也帮助了很多人解决了manim上的问题
我发现discord上manim channel的管理员是eulertour,而且他在GitHub上也是manim的collaborator,同时还做了很多项目
当时就在mk的QQ群里表达了一下对他的仰慕,然后就有一个群友说了句:

“其实你也可以”

成为合作者

疫情期间在学校机房脱产的时候也经常会读一读manim,还顺便把一直容易出现的Text问题修复了一下
当时Grant正在开发基于OpenGL的manim,所以这些pull request一直是eulertour来merge的,但是在他加入了ManimCommunity之后就已经打算将3b1b/manim荒废掉,很少来管issue和pr,甚至有用的pr也只会让交到ManimCommunity里
但是我觉得这比较不好,毕竟还有很多人正在使用3b1b/manim,所以我就在暑假的时候抱着试一试的心态给Grant写了一封信来申请3b1b/manim存储库上的权限

结果几天后Grant真的回复了,他同意给我manim上的write权限,但是要先和eulertour沟通一下
几个月后的十一假期,我收到了Grant发来的成为collaborator的邀请(其实中间一直没有回复是因为我的邮件跑到了Grant的垃圾信箱里

在成为collaborator后,我merge了一些有用的pull request,关掉了一些没用的/已解决的/老旧的issue
同时我也大致了解了新ManimGL的大致逻辑,也向Grant提了好几项改进的建议,他也采纳了很多部分

在开学了之后,为了复习高考,也基本放下了manim上的活动(还收到了来自Grant的祝福)
在2021年寒假,又因为疫情上了一段时间网课,我也又抽时间来玩一玩manim了
那时ManimGL已经基本完工,在一些准备之后,shaders分支被合并到了master分支成为了正式版本
我也为之写了全新的中英文文档(虽然还是很不完善)
在那之后我也对manim做了一些改善,关闭了一些过时的pull request,打开了disscussion,发布新的python包等等

嗯,然后就是开学->复习->高考

高考发挥的还算比较好,成功进入了ZJU-Turing
为了更好地汇总信息,在假期里我又为mk写了官方网站:manim.org.cn
然后就是开学到现在了

后记

是manim在一步一步推动着我前进
从想要用manim到想要看懂源码到想要为它做出点贡献
从一个什么都不会的初中生变成了manim的collaborator
这仅仅是三年啊(

所以,那么接下来继续努力吧

写的太水了,反正就随便写写,想到哪写到哪了,没想到你还真的看到这了_(:з」∠)_

作者

TonyCrane

发布于

2021-08-23

更新于

2021-08-24

许可协议