如何伪造 UFO 着陆

作者:Dan Sawyer

一架飞碟降落在一个开阔的田野上,着陆时扬起周围的尘土。如果这发生在地球停转之日的重制版中,没有人会眨眼。但想象一下,你观看的不是用大预算影片的精确度和细心制作出的宏大而美丽的图像,而是看起来像是从女巫布莱尔的剪辑室地板上掉下来的东西。你不是在当地电影院舒适的放映室里看到这个,那里的画面干净、清晰、比真人还大,而是你站在当地科幻大会的展位周围。播放视频的人不是制片人。他甚至不是独立电影制作人。他只是一个真正相信这段视频无法伪造的人。他说,如果可以伪造,那么漏洞就会显露出来,而将这段视频给他的人确实记录了政府掩盖的外星人来访的证据,并且通过公开展示这段视频,他正在冒着巨大的风险。但是,他觉得他必须揭露政府和外星人对毫无戒心的公民犯下的欺诈行为!

这种情况听起来可能像是从X 档案的垃圾桶里爬出来的,但随着 VisualFX 技术变得越来越廉价和普及,伪造这样的视频变得毫无问题。当然,这需要大量的专业知识和奉献精神才能使色彩、阴影和反射匹配得令人信服。人们会认为,让运动与摄影师手持拍摄时的奔跑和变焦相匹配将是等式中最困难的部分。曾几何时,这是真的。

过去,实现像这样的效果所需的运动精度的唯一方法是将摄像机放在运动控制装置上,并让计算机记录现场的运动,然后在后期制作工作室中精确地重现它们(尽管规模较小),在那里拍摄人工元素(在我们的例子中,是飞碟和尘土)。除了非常笨重和昂贵之外,这种方法还严重限制了特效艺术家可以制作的镜头类型,仅限于那些可以通过电动万向节和定焦镜头再现的镜头。

现在不再是这样了。20 世纪 90 年代后期,计算机化匹配运动领域的研究和开发蓬勃发展——匹配不同视觉元素的运动,使它们看起来有机地存在于同一场景中。在匹配运动和合成阶段都加入计算机,比以前提供了更多的控制和自由。

为什么要使用匹配运动软件?

人类的视觉敏锐度不是地球上最好的,但它非常出色。稍加练习,坐在黑客帝国观众席上的普通人就可以发现那些过于仓促完成的镜头中的颗粒不匹配。我们的视觉皮层进行微分运算来告诉我们“这不属于这里”。由此可见,同样的心理机制也可以用来创造最初的诡计。对于大多数 VisualFX 工作,都有复杂的工具,然后是手工完成。像大多数其他人类努力领域一样,艺术家越优秀,他或她通常会依赖的辅助工具就越少。那么,为什么不手工进行匹配运动呢?

简短的答案是,在某些情况下,许多艺术家确实会这样做。其他时候,艺术家和匹配运动软件之间存在互动,艺术家选择点让软件跟踪,要么是因为工具没有检测到正确的点,要么是锁定了不合适的点,要么根本没有进行点检测。

然而,运动跟踪的艺术并非易事。尽管我们的视觉皮层非常擅长检测错误,但它们在向外投射完美方面却稍逊一筹。我们不会自然而然地创作出宏大而逼真的绘画——事实上,我们必须被教导以某种方式看待光线、阴影、形式等等,才能思考甚至尝试像布格罗或达芬奇那样工作。同样,我们实际区分不合适的运动的能力非常敏锐,尽管相比之下,我们创建完美运动路径的能力却很粗糙——这是我们在回放并看到即使是最仔细的手工跟踪也会出现漂移之后才注意到的。

当然,匹配运动程序并非总是能获得完美的跟踪,但优秀的艺术家与优秀的程序之间的互动可以带来一流的效果。

为什么要获得巫毒娃娃?

除了它是免费的事实之外,为什么在这个项目中使用 Voodoo?

事实是,Voodoo 并不能解决所有的匹配运动问题,即使排除那些更高端的匹配运动器处理得更好的超精细运动。匹配运动领域基本上分为两类:2D 运动跟踪和 3D 摄像机跟踪。

2D 运动跟踪是合成器中使用的技术,用于将新元素附加到帧中的特定点。用户通常会选择一个或两个特征点,然后计算机将随着对象在帧内移动而跟踪这些点。当跟踪器滑离选定的点时,艺术家会轻轻地纠正它,以防止轨迹漂移。这个过程的两个常见例子可以在警察!中模糊嫌疑人的脸部以及在棒球比赛中在内场墙上放置虚拟广告中看到。2D 跟踪仅跟踪对象在帧内的位置,这给它带来了一个双重阿喀琉斯之踵:视差和透视。

视差是前景物体似乎比背景物体移动得更快的现象。当你的视点移动时,你感知物体的角度会发生微妙的变化,这就是为什么你在开车下坡时会看到视差。使用 2D 跟踪,你的跟踪标记几乎就是你所得到的一切。例如,如果你在一个绿幕上移动,而数字布景应该在深度上延伸很远,这可能会成为一个问题。一旦你为横向运动添加深度,特别是当你的跟踪标记靠近摄像机时,你需要以 3D 方式工作,或者你必须手工伪造视差——这是一个可疑且困难的任务,很容易破坏你试图创造的幻觉。一个真正优秀的艺术家可以做到这一点,但这需要大量的练习。

透视是等式中的另一个未知因素。镜头看到的不是世界的本来面目。相反,每个镜头都以某些数学上可预测的方式扭曲世界。这种扭曲与焦距和光圈密切相关,准确测量扭曲对于正确跟踪镜头中的元素至关重要。当涉及到变焦(延伸镜头以获得更近的镜头)和推轨(将摄像机朝向拍摄对象移动)运动时,这个未知因素变得更加未知,这些运动涉及沿 Z 轴以一种或另一种方式不断变化的透视,而 Z 轴是 2D 运动跟踪无法应对的轴。透视变化也可以伪造,但这比伪造视差要困难得多,而且也更耗时。

这就是 3D 摄像机跟踪发挥作用的地方。计算机不是简单地跟踪某些用户选择的特征的位置以创建良好的 2D 跟踪,而是尝试根据素材猜测摄像机的位置和运动。俯仰、偏航、横滚和镜头长度都是仅根据完成的视频计算出来的(尽管你拥有的任何信息并且可以手动输入都将使其工作得更快)。准确重建所有这些参数的能力意味着视差和透视问题都得到了解决,即使在推轨和变焦移动期间也是如此。不用说,这是一个数学上复杂的过程,旨在考验即使是最热心的特效艺术家(如果他们不是大学的计算机科学或光学专业)的思维。尽管如此,实现这一目标的算法是众所周知的,并且包含在大多数摄像机跟踪软件包中。

尽管大多数 2D 运动跟踪器都内置于现有的合成系统(例如 After Effects)中,但 3D 摄像机跟踪器以独立方式运行,并将其数据——摄像机设置和运动,以及“点云”——导出到各种 3D 程序,而魔法就发生在 3D 程序中。3D 程序还提供了超出跟踪器本身允许的额外控制和改进措施,因为你可以调整摄像机动画曲线。

我之前说过,20 世纪 90 年代看到了大量资金投入到创建这样的软件中。嗯,正如每个技术迷都知道的那样,研究经费在哪里,研究生也在哪里。感谢德国汉诺威的一群特别敬业的研究生,用于匹配三维摄像机运动的技术可供 Linux 和 Windows 用户免费使用——考虑到可比的商业软件包每个席位的价格高达数千美元,这非常划算。为了节省成本,你确实牺牲了一些微调镜头的精细程度,但对于大多数应用程序来说,Voodoo 表现得非常好。

所以,抓取一份副本,让我们为你出现在Art Bell节目中做好准备,兜售你最新的正品 UFO 视频 (tm)!

咒语

首先,访问 www.digilab.uni-hannover.de/download.html,并下载适合你系统的软件包。请注意,没有源代码包——Voodoo 可能是免费软件,但它不是,并且可能永远不会是开源的。所以,抓取对你来说方便的二进制文件。请注意,没有 x86_64 二进制文件可用。如果你有 64 位系统,只需抓取 x86 软件包——它不依赖任何 32 位库来工作,并且不会在执行时崩溃。

打开命令窗口,并使用tar -xvzf打开存档。接下来,移动到生成的 voodoo-版本号 目录,然后进一步深入到 /bin 目录,并运行./voodoo.

放血

任何熟悉老罗杰·科曼电影的人都会意识到,放血是制作好巫毒娃娃的关键步骤。在这种情况下,你需要将你的视频打成碎片。Voodoo 不会处理视频,它只处理静止图像序列。

一个快速的 ffmpeg 调用将为你提供所需的图像序列

ffmpeg -i videofilename.avi -f image2 %03d.png

完成后,运行 Voodoo。

How to Fake a UFO Landing

图 1. Voodoo 界面

乍一看,界面很简单——两个下拉菜单和一个翻页书播放器。当你开始深入研究时,这种简单性被证明是相当虚幻的。摄像机跟踪很复杂,这里的工具箱很广泛,但任务的性质意味着你可以逐步学习,只需很少的工作就可以获得良好的初始跟踪。

首先,转到“文件”菜单并选择“加载”→“图像序列”,然后加载你刚刚创建的图像序列。务必设置运动类型和隔行扫描设置,否则你的跟踪将无法正确输出。使用翻页书播放器播放剪辑一次,以确保没有任何明显的错误。

现在,你需要加载摄像机设置(“文件”→“加载”→“初始摄像机”)。如果你希望跟踪正常工作,这至关重要,但如果你没有记录焦距、纵横比、胶片背板和(不太重要的)倾斜角度的现场笔记,则很难正确设置。如果你没有保留正确的笔记,请输入你最好的猜测并从那里开始,你总是可以在以后进行调整。

How to Fake a UFO Landing

图 2. 摄像机设置窗口

从这里开始的工作流程非常简单。播放剪辑以确保整个序列加载正确,然后按“跟踪”。计算机会选择几十个跟踪点,并在整个剪辑期间跟踪它们。根据剪辑的复杂性和长度,此过程可能需要几秒钟到几小时不等。

跟踪完成后,再次播放它,特别注意不同点的运动路径。如果你看不到任何漂移,那么你就成功了——你可以跳到导出步骤。如果跟踪不足,有很多方法可以调整它。你可以通过调整“视图”→“控制”菜单中的跟踪算法来改进,然后重新运行跟踪,在呈现给你的对话框中选择“改进”而不是“放弃”,以增强你已经创建的跟踪。通过调整摄像机设置,你可以做大致相同的事情,但如果你这样做,你最好从头开始运行跟踪。

还有许多其他改进工具可用。你可以拉起建模框(“视图”→“建模工具”)并使用它来添加跟踪蒙版和 3D 图元,以帮助你发现漂移,并且它(以及 Fpoint 轨迹编辑器)允许你手动删除、更改或添加新的跟踪点,这样你就可以指导跟踪器观看正确的东西,并使其忽略错误的东西,例如前景中的人或汽车。完成后,再次运行跟踪,再次选择“改进”而不是“放弃”。

你可以在 3D 查看器窗口中观看重建的摄像机运动,并在一定程度上对其进行操作,该窗口可通过“视图”菜单获得。

当你获得你满意的跟踪时,转到“文件”→“保存”,然后选择你的导出格式。务必导出所有 Fpoint——拥有它们有助于你进行任何复杂的交互,因为它们将帮助你指导你放置 Alpha 蒙版等的位置——就像你选择在你的 3D 程序中进行一些蒙版处理一样。

插入图钉

在 Blender 中,导入你的跟踪数据将为你提供如图 3 所示的内容。

How to Fake a UFO Landing

图 3. 导入 Voodoo 跟踪并显示点云的 Blender 文件

点云是来自 Voodoo 的跟踪点在 3D 空间中的表示,并且摄像机已将所有动画数据(俯仰、偏航、横滚、位置和镜头长度)应用于它,以重新创建原始摄像机进行的运动。导入时,你可能需要重新调整场景的某些部分的方向,但如果你正确完成了你的工作,那么现在需要做的就是完成你的 3D UFO(纹理、动画等),并使用你的粒子引擎创建你的尘云。将这些元素与跟踪素材结合在一起是你的合成器的工作——Blender 内置了一个功能非常强大的合成器,我在 2007 年 10 月的Linux Journal 中对其进行了深入报道。

How to Fake a UFO Landing

图 4. 完成的镜头

通过一点练习,你将拥有自己的伪造 UFO 视频,适合发布在 YouTube 上或愚弄媒体评论员。与任何事情一样,摄像机跟踪需要练习才能正确,但 Voodoo 提供的工具集使任何愿意学习一些光学知识并花一些时间训练眼睛的爱好者都可以掌握这项技术。经常参考在线帮助——Voodoo 是少数具有内置优秀文档的免费软件产品之一。

在出现同等精度的开源摄像机跟踪器之前,Voodoo 很可能仍然是 Linux 唯一免费的摄像机跟踪器——至少在最终用户可以承受的价格范围内。向德国汉诺威大学的研究生及其导师致敬。让我们希望他们的出色工作在可预见的未来仍然可以免费使用!

Dan Sawyer 是 ArtisticWhispers Productions (www.artisticwhispers.com) 的创始人,ArtisticWhispers Productions 是旧金山湾区一家小型音频/视频工作室。自 20 世纪 90 年代后期他创立 Blenderwars 电影制作社区 (www.blenderwars.com) 以来,他一直是自由和开源软件的热情倡导者。他目前是文化评论播客“The Polyschizmatic Reprobates Hour”和科幻选集播客“Sculpting God”的主持人。作者联系信息可在 www.jdsawyer.net 上找到。

加载 Disqus 评论