而且只花了8个小时,6500个正则表达式!
我们先看一下结果:
可以看到动画基本还原了人物的所有动作,整体视频也非常流畅,画风也很像一款经典的像素风格游戏。
继 Bad Apple 对终端、游戏引擎和 ASCII 码进行各种改进后,Vim 编辑器也卷土重来!
难怪有网友说,这就是我们喜欢坏苹果的原因,它总是给我们带来更多的惊喜。
PS:如果你还不知道Bad Apple,这是一首来自《东方》的音乐MV,已经成为动画和科技圈的一个梗。不仅有各种二代视频,人们还会在各种硬件和软件上重现它。可以说“哪里有屏幕,哪里就有坏苹果”。
怎么做
网友Nolen也热情分享了用Vim制作Bad Apple的过程,主要分为以下四个步骤:
提取图片帧并将其转换为数组
第一步非常简单。使用用户库获取Bad Apple每一帧的数据。
该存储库包含原始视频和将视频转换为大约 6500 个 PNG 图像的命令,每个图像代表一个帧。
然后,Nolen 编写了一小段代码,将每个 PNG 文件转换为由 0 和 1 组成的二维数组(其中 1 代表黑色像素)。
视频原本是分辨率,诺伦在测量终端后将其缩小了。
使用Vim的高亮匹配功能绘制任意矩形
那么如何在Vim中绘制图形呢?
假设您在文本中创建了一个主要由 A 组成的网格,并在其中嵌入了 B 的绘图,这样,如果您搜索 B,您会看到一个小简笔画:
使用这种方法可以画图,但是仍然存在两个问题:
一个。蓝色突出显示(Vim 默认)看起来不太清楚。
Vim 允许用户自己配置突出显示功能。通过调用hi cterm=NONE =grey =grey,可以让它以相同的颜色突出显示匹配字符的前景和背景,这样就可以得到漂亮的方块:
b.第二个问题是,如何将矩形变成正方形像素。
诺伦终于找到了字体,这是一种最初为用户在终端玩游戏而设计的方形字体。在Vim中使用它可以画出非常漂亮的网格:
接下来就是分析每一帧的信息,生成主图形的正则表达式优化文件。
然后作者发现利用Vim自带的搜索功能可以生成连续的矩形。
Vim 搜索可以匹配特定的行号(和列号),并且您可以将多个此类搜索组合在一起。
例如,%>5c%4l%
而且,这个匹配模式还可以与其他 Vim 搜索进行 OR 运算,例如上面的公式与 - %>5c%4lcl%
这样,您可以使用单个搜索公式轻松在屏幕上绘制许多矩形。
将动画帧图形转换为矩形
接下来,您必须将图像网格(大约 10,000 像素)分成矩形。
诺伦首先尝试找到所有不同的矩形并生成一个长搜索字符串,或者将网格分割成填充最少的矩形,但这两次尝试都失败了。
最后他想出了一个非常简单的算法,其工作原理是这样的:首先找到图像第一行中所有连续的“1”部分。搜索完第一行后,查看第二行并找到与第二行中找到的部分重叠的部分。
如果将此重叠部分与第一行合并形成的矩形面积大于两行单独形成的矩形面积,则将它们合并为一个矩形。然后继续尝试将新找到的部分合并到之前的矩形中。
该算法通常表现良好。但当搜索字符串超过 10,000 个字符时,每秒的帧数会严重降低。
然后,诺伦又编写了两个解决方案(一个从左到右构建矩形的算法版本和一个仅查看各个行的简单 RLE),然后通过三个算法运行每个帧并选择最短的搜索模式。这种算法组合最终效果良好。 。
设置完Vim宏后,就可以在编辑器中播放动画了。
分解完图形后,最后一个问题是:如何在Vim中播放视频。具体步骤如下:
1. Vim 设置:顶部中心窗口播放视频,该文件包含 90 行,每行 120 个空格。左右两侧是用于图像居中的空缓冲区,底部窗口是大约 6500 个搜索模式的列表。
2.使用Vim宏播放视频:Vim宏可以记录一系列击键以便于重播。宏命令为“”ay$:let @/=@a^M+”,具体是对寄存器a进行操作,将其拖到行尾,将寄存器/的内容设置为寄存器a的内容,执行命令,然后移动到下一行的开头,这样设置宏可以让光标回到正确的位置,通过重复迭代可以实现重放。
3.优化:最有趣的优化操作是“let @/=@a”。与“/^Ra^M”操作相比,避免了查询操作过长导致的搜索窗口闪烁严重和帧率降低的问题。
4. 运行宏:可以运行“1500@q”(假设宏记录在寄存器q中)来播放宏1500次并快速运行1500帧。
这样,你终于可以得到开头的Bad Apple视频了!
作者还表示,由于该项目仅用了一天时间就完成了,所以还有很多细节可以改进,比如使用传统正则表达式而不是 Vim 的行/列搜索功能来创建结构良好的文件的能力,以及帧率这方面还可以进一步加强。
一切皆有可能
除了使用Vim编辑器之外,网友们对Bad Apple也一直充满想象力。可以说只有你想不到,没有网友做不到。 (总督)
比如有人用马里奥游戏重现:
还有一些方法可以通过在计算机终端中键入一些命令来运行:
甚至还包括一些奇奇怪怪的硬件,包括即将淘汰的老式电视机、电磁显示器,甚至还有实验用的示波器:
看来人类可能还没有开发出坏苹果的10%。期待以后看到更多的直播视频(搓手)
参考链接:
[1]
[2]
本站候鸟号已成立3年,主要围绕财经资讯类,分享日常的保险、基金、期货、理财、股票等资讯,帮助您成为一个优秀的财经爱好者。本站温馨提示:股市有风险,入市需谨慎。
暂无评论