梦工厂动画《怪物史莱克3》:Linux 喂养食人魔
所有大型电影制片厂主要使用 Linux 进行动画和视觉效果制作。可能没有哪个商业 Linux 安装规模比梦工厂动画更大,它拥有超过 1,000 台 Linux 桌面和超过 3,000 个服务器 CPU。
梦工厂动画首席技术官 Ed Leonard 说:“对于《怪物史莱克3》,我们将消耗接近 2000 万 CPU 渲染小时来制作这部电影”。“我们的每一部电影都在不断突破可能性的极限,需要越来越强大的计算能力。” 众所周知,摩尔定律预测计算能力将每一年半翻一番。一个鲜为人知的推论是,动画长片卡通的 CPU 渲染小时数将每三年翻一番。2001 年,最初的《怪物史莱克》电影使用了约 500 万 CPU 渲染小时。2004 年,《怪物史莱克2》使用了超过 1000 万 CPU 渲染小时。而在 2007 年,《怪物史莱克3》正在使用 2000 万 CPU 渲染小时。
Leonard 说:“在任何给定时间,我们都在制作十几部以上的电影”。“这些电影中的每一部都有其自身的创意抱负,以突破 CG 电影制作的界限。” 梦工厂动画雇用了约 1,200 人,其中约三分之二在他们在格伦代尔的工作室,其余在他们在红木城 PDI 工作室,两地通过 2Gb 网络连接。(请注意,梦工厂动画是一家由 Jeffrey Katzenberg 领导的上市公司,并非与派拉蒙最近合并的史蒂文·斯皮尔伯格的梦工厂真人电影公司。)
Leonard 说:“这部电影在技术上取得了许多具体进展,包括在头发、服装、服饰和人群方面的进步,以及将次要角色动画[人群]提升到全新的表演水平”。大约 350 人正在制作《怪物史莱克3》,其中约 300 人在 PDI,50 人在格伦代尔。
在《怪物史莱克3》中,菲奥娜将一群经典的“拯救我”童话公主变成了动作人物,以保卫遥远王国免受篡位者白马王子的侵害。如何将睡美人的嗜睡症变成武器,或者让有洁癖的白雪公主弄脏她的指甲与坏人战斗,与所涉及的技术障碍相比,似乎都是小菜一碟。
Leonard 说:“梦工厂动画研发部门为世界一流的 CG 电影的创作提供工具、库和软件基础设施”。“我们为我们的电影开发和支持一套应用程序工具,包括专有的动画系统、灯光、渲染和合成工具,以及用于火焰、水、服装和人群等效果的工具,仅举几例。” Leonard 估计他们有数百万行自定义代码,主要用 C 语言(旧代码)和 C++ 语言(较新代码)编写。
Andrew Pearce 领导着位于 PDI 的梦工厂动画研发团队。“长发可能是《怪物史莱克3》中最大的技术进步”,Pearce 说。“在过去的所有动画中,你很少看到长发。” 视觉效果总监 Philippe Gluckman 指出,“《怪物史莱克2》中英雄头发的轻拂就花了几个月的时间”。“在《怪物史莱克3》中,头发无处不在。” 头发如何在肩膀上滑动看起来很容易,但建模却非常复杂。“头发的移动方式必须变得更加自动化”,Gluckman 说。动画师没有时间手动定位每一根头发。
Pearce 说:“在服装方面,我们有更多的互动,包括布料的撕裂”。“快速运动总是很困难。在现实世界中,你只能移动得那么快,但没有人告诉我们的动画师这一点。如果你在一秒钟内从 0 加速到 500 英里/小时,你可能会在现实世界中留下一些衣服。” 动画的现实性既是艺术又是物理学。
这不仅仅是动画一些服装的挑战,而是服装的数量。“我们在同一个镜头中有更多的角色”,《怪物史莱克3》联合导演 Raman Hui 指出。“《怪物史莱克3》有一个庞大的演员阵容,有 48 个角色”,《怪物史莱克3》导演 Chris Miller 说。“我们有大型人群场景,舞台上有 40 到 50 个角色,观众席上有 2,500 个角色。” Pearce 说:“人群的挑战在于,每个角色都需要看起来不同”。
角色技术指导主管 Lucia Modesto 说:“如果我们必须为每个角色设置一个,那将花费太长时间”。“我们采用通用角色并扭曲该角色。我们有 A 男、B 男和女人。你在人群场景中获得的最大变化是头发和帽子的轮廓。对于《怪物史莱克》中的角色,我们有一个通用男人,有三种变体,现在是 16 种。女人从五种变体增加到 25 种变体和 13 种发型。” 为了让像史莱克这样的知名角色看起来更好,但又不会看起来不同,做了很多工作。
Pearce 说:“全局照明是各地的灯光师都喜欢的东西”。“它可以将光线从所有表面反射回来。” 挑战在于全局照明(通常以光线追踪的形式实现)可能很昂贵。Pearce 说:“它对于建筑漫游非常出色,在建筑漫游中,光线是静态的,并烘焙到建筑物上”。“我们的问题是《怪物史莱克3》中的一切都在移动。” 梦工厂的软件“烘焙”(提前计算)不移动的部分,然后尝试有效地处理移动的部分。Pearce 说:“全局照明几乎出现在《怪物史莱克3》的每个场景中”。“场景复杂性是现在限制我们的因素,例如森林。那里的光线追踪是不合理的。” Linux 计算能力以及多核芯片和软件的进步正在推动渲染能力越来越高。
艺术部门制作设计师 Guillaume Aretos 说:“我们像摄影指导一样使用全局照明”。“我们使用反光板和彩色反光板。我们的电影制作过程与实景拍摄非常接近,在实景拍摄中,我们使用反射的光线。《怪物史莱克2》给人一种意大利南部的感觉,有点像比佛利山庄变成了意大利。” 《怪物史莱克3》摆脱了前两部电影的永恒春天,呈现出更具北欧风情的外观。Aretos 说:“用反射的背光获得阴天效果非常困难,而明亮的光线会穿透乌云”。
Nick Walker 说:“我是布局主管”,“这使我成为摄影指导”。布局小组负责确定虚拟演员在虚拟场景中的站位。“史莱克身高七英尺,全是躯干”,Walker 说。“史莱克在靠近亲吻时可能会吞下菲奥娜的头。穿靴子的猫和驴子这两个跟班大小不同。很难获得双人镜头。”
制作从故事和概念艺术作品开始,进入 3D 建模,最终进行渲染。梦工厂动画使用流行的 Linux Maya 商业软件包进行 3D 建模。布局确定角色在场景中的位置并确定整体照明。模型由角色技术指导“绑定”内部骨骼,然后交给场景动画师。由于其复杂性,《怪物史莱克3》的动画师被成对分配到数百个场景中的每一个场景。过去,每个场景只有一个动画师。添加照明和任何特殊效果,例如布料或火焰。然后,场景在 3,000 多个 CPU 的 Linux 渲染农场上逐帧渲染。
每个帧都由网格软件(使用 Platform LSF,一个商业 Linux 软件包)分配给渲染农场的不同节点,以便可以同时输出许多帧。使用 Avid 软件(不在 Linux 上)将帧编辑成电影。在过程的早期,手绘故事板图像被扫描,并且将草稿音轨编辑在一起,创建电影的粗略视频表示。随着每个序列的完成,它将替换粗略的故事板素材,逐场景构建完全渲染的电影。
生产技术主管 Darin Grant 说:“我们的主要生产流程完全在 Linux 上,这一事实非常有趣”。“我们使用 Linux 已经很多年了,但我仍然感到惊讶。回顾过去,当在《泰坦尼克号》期间使用 Linux 对于数字领域的渲染农场来说是一个激进的概念时,直到行业走向全心全意的采用并没有过去很久。” 数字领域工作室是 Grant 以前工作的地方,它为《泰坦尼克号》(1997 年上映)构建了第一个 Linux 渲染农场。Grant 现在在北加州 PDI 梦工厂工厂工作,每周通勤到格伦代尔,以确保他的跨站点团队同步。他还使用 VSC,一种由梦工厂动画开发的沉浸式视频会议系统,惠普后来将其推向市场,称为 Halo 会议室。HAVEN 是 DS3 45mbs Halo 视频交换网络,广泛用于连接梦工厂设施之间以及与惠普的桌面部门和 AMD 连接。
Grant 说:“维护大型基于 Linux 的流程与维护任何操作系统上的大型流程的问题相同”。“我们很久以前就在一个标准流程上统一了工作室,现在我们在所有时候都有所有制作使用相同的流程。他们在每个制作中以不同的方式强调、推动和开发流程。Linux 为我们提供了许多优势。对线程、NFS 和 LAMP 工具集的可靠支持对我们来说是很大的优势。随着 Linux 上可用的开发工具和 IDE 的质量逐年提高,管理开发人员变得越来越容易。”
数字运营主管 Derek Chan 说:“在桌面端,我们使用运行 RHEL 4 的惠普 xw9300 工作站”。“渲染农场使用惠普 DL145 G2 服务器。我们的内存标准是每个核心 2GB。服务器有四个核心,所以是 8GB。” Chan 说,梦工厂动画与红帽保持着良好的关系,密切合作以确保惠普工作站与红帽 Linux 配合梦工厂的工作。
Grant 说:“我们在《怪物史莱克3》中克服的一个挑战是将元数据集成到我们的流程中”。“在研发和生产技术部门的跨团队努力下,我们建立了一个系统,该系统在我们生成的每个文件中维护历史版本信息、渲染统计数据和其他真正有价值的数据。我们能够做到这一点表明了拥有专有工具集和文件格式的关键优势之一。” 梦工厂使用其自己的类似 TIFF 的文件格式,该格式基于 16 位二进制定点,一种有限的高动态范围 (HDR) 图像格式,颜色范围为 0 到 2.0。让图像比白色更白,为图像调整留出空间。
梦工厂动画技术分为三个核心小组:研发部门创建新技术,生产技术部门监督生产流程,数字运营部门负责计算、网络和存储基础设施。生产流程有数百个小工具和小程序,它们构成了其他粘合剂,使 200 人能够作为一个协调的团队工作。大多数旧流程代码是用 Perl 编写的,而大多数较新的代码是用 Python 编写的。Leonard 说:“我们很想全部使用 Python”,“但今天我们仍然有很多 Perl”。
Grant 说:“我们的团队一直在带头推动设施从 Perl 向 Python 的过渡”。“这主要有三个原因。创建 C++ 库的 Python 绑定非常容易,这使我们能够更快地在流程的其余部分中使用核心研发库。鉴于我们新的资产模型,Python 的面向对象特性非常有吸引力,并且应该使我们将来能够更轻松地更改该资产模型。而且,Python 是我们行业中使用的许多第三方软件应用程序中的一等公民。”
在上次于 2005 年举行的 Linux 电影大会(一个为电影技术专家举办的全天会议[我担任主席])上,工作室技术专家的共识是,渲染农场规模的限制是热量。“墙仍然是热量和电力”,Chan 说,“以及一点点占地面积”。梦工厂动画正在使用双核,并即将转向四核。“在接下来的八个月里,我们将切换到每台桌面八个计算核心”,Chan 说。该工作室对使用 GP-GPU 加速计算感兴趣。这有可能将渲染过程从过夜变为交互式。但是,GPU 编程非常陌生,并且图形卡上 CPU 和 GPU 之间的带宽受到限制,因此存在令人生畏的技术障碍。“可以获得显着的性能提升”,Chan 说,“特别是如果我们能够将其全部保留在带有 AMD 集成 GPU 的芯片上”。
《怪物史莱克3》消耗 24TB 的存储空间,在 30TB 的分配空间中。梦工厂喜欢将所有电影保存在大型旋转磁盘阵列上的近线存储中。“人们一直都在参考以前的电影”,Chan 说。“我们有三部《怪物史莱克》电影。《马达加斯加》正在制作续集。” 虽然一切都几乎保持在线,但梦工厂会将档案备份到磁带并异地发送以进行灾难恢复。
为什么电影制片厂不将他们数百万行的 Linux 代码贡献给开源?许多工作室开发了专有的 Linux 视频播放和编辑软件,而开源软件在这方面存在不足。他们可以将这些提供给开源吗?当今危险的专利环境是一个障碍,但除此之外还有维护它的成本。例如,ILM 发现开放 OpenEXR 图像格式比预期的工作量更大。制片厂正忙于制作电影。
电影行业有时会赞助外部开源工作,例如 1999 年对 GIMP 的深度绘图支持。不幸的是,16 位/通道绘图从未作为 GIMP 的一部分发布。它后来确实以 CinePaint 的形式重见天日[我领导的一个 OSS 项目]。但是,梦工厂动画、迪士尼和皮克斯没有使用 CinePaint 并重新培训 Photoshop 用户,而是向 CodeWeavers 提供了一些资金,以使 Windows Photoshop 在 2003 年在 Wine 下在 Linux 上工作。
电影行业可能不喜欢过于接近其领域的免费软件。由皮克斯前雇员开发的免费软件渲染器 BMRT 作为 2002 年皮克斯和 NVIDIA(后者从 Exluna 公司收购了更复杂的 BMRT 渲染技术以支持 Cg GPU 渲染)之间侵权和解的一部分而被停止。
Leonard 说:“CG 电影制作是技术与电影制作艺术紧密结合的少数几个领域之一”。“技术正在以前所未有的方式实现艺术家的愿景。我们将继续大力投资渲染技术,例如全局照明,以使照明更好、更轻松。最初的《怪物史莱克》电影没有使用任何全局照明。《怪物史莱克2》在非常有限的范围内使用了它,而《怪物史莱克3》在整部电影中广泛使用了它。结果是更好的照明,从而实现更好的故事讲述。”
Leonard 说:“从 2009 年开始,我们将以原生立体 3D 形式发布我们所有的电影”。“我们的电影将从一开始就考虑到 3D 立体制作。结果将在影院带来全新的体验。” 《大战外星人》(暂定名)和《驯龙高手》将是新的 3D 流程制作的首批 3D 电影。自《怪物史莱克3》以来,工作室构建了一个新的系统,用于从一开始就以 3D 形式数字化创建所有故事板。
梦工厂动画拥有的 Linux 极客比大多数 Linux 公司或开源项目都多。如果您有兴趣在电影行业的 Linux 领域工作,梦工厂正在招聘 Linux 技术专家,包括系统架构师、高级系统管理员、高级系统开发人员、系统工程师、动画工具软件工程师、核心库软件工程师和软件工程师经理。
Robin Rowe 是 Comic Strip Network 的执行制片人。他是 LinuxMovies.org 的创始人,也是 CinePaint.org 的项目经理。在周末,他在好莱坞为 ScreenplayLab 举办活动,ScreenplayLab 是一个由 1,400 名编剧、演员和电影制作人组成的团体。他曾是梦工厂动画工作室的技术专家。