专栏名称: 算法爱好者
算法是程序员的内功!伯乐在线旗下账号「算法爱好者」专注分享算法相关文章、工具资源和算法题,帮程序员修炼内功。
目录
相关文章推荐
九章算法  ·  极简是大厂SD最好的方式 ·  3 天前  
九章算法  ·  UT学子恭喜了!这些人可以提前拿offer! ·  昨天  
九章算法  ·  一年被裁两次,一个底层码农的大落大起 ·  3 天前  
九章算法  ·  拿到小公司offer,想躺平了 ·  5 天前  
九章算法  ·  给找工码农,下一剂”狠药“ ·  6 天前  
51好读  ›  专栏  ›  算法爱好者

迪斯尼的华丽海洋动效算法,是如何实现的?

算法爱好者  · 公众号  · 算法  · 2017-06-30 11:31

正文

(点击上方公众号,可快速关注)


编译: 伯乐在线 - Panblack

如有好文章投稿,请点击 → 这里了解详情


【伯乐在线导读】:《海洋奇缘》讲述了作为航海世家后代的波里尼西亚公主莫阿娜,为了找寻传说中的神秘之岛,独自踏上了航海之旅的故事。本文并没有详细介绍具体的动画技术,而是迪斯尼如何用心拍摄了一部感人至深的作品。



早期,当电影还是个新鲜事物的时候,拍摄海洋是个疯狂的想法。


海面的波浪当然没问题,但是,捕捉摇曳多姿的海底物种群、游泳的鱼和海底大理石般烁烁生辉的阳光?人们的普遍观点是:做不到。


事实上,这可以做到。一个世纪前,船长 Williamson 的两个儿子 John Ernest 和 George 愿意证明这一点。Williamson 兄弟俩求助于他们的父亲给潜水员设计的一项用于水下维修和救援用的技术。这个装置是一串柔韧的同心管(美国国会图书馆是这么描述的:“….联锁在一起的一串铁环,伸展开了就像一个手风琴” ),悬垂在一艘特制的船上,潜水员可以通过它下到一个密封舱内。管道的一头是水面上的船,另一头是潜水屋。


John Ernest 和 George 被父亲的这个机器迷住了。透过管道上的大玻璃窗,他们可以观察到红鲷鱼、鰤鱼、胖胖的鲶鱼,还有其他亮晶晶的海底生物在巴哈马群岛珊瑚礁中穿行。他们决定下次来要带上相机。之后,他们发表的报纸上的照片——包括一条模糊的鲨鱼和朦胧的海草——产生了轰动。



顺时针方向左起:Williamson 兄弟海底拍摄的鲨鱼、潜水挖金币的男孩、巴哈马群岛“海洋伊甸园”、兄弟俩中的一个坐在装置的球层内。这些照片1914年7月发表在《巴尔的摩太阳报》(Baltimore Sun)上。


最终,Williamson 兄弟的管状装置——配备了新的特制球形观察舱,还有一个巨大的漏斗形的窗——1916年被用来拍摄电影《海底两万里》的水下场景。“我管它叫魔法窗,” 电影在展现一片灰暗如乌云的海底画面前,幕间旁白这样写道:“我们注视到的场面,你也许会觉得上帝从未打算让我们看到。”


在那时,这些镜头是非同寻常的,电影空前成功。


《海底两万里》(1916)中的海洋镜头


从那以后,电影制作者们使用科技手段不断推近描绘海洋的极限,不仅仅限于真人电影。最近,迪斯尼卡通片《海洋奇缘》(Moana)让观众为之倾倒。这部片子讲述了太平洋岛屿上的一个少女沿着祖先的足迹踏上探险之旅的故事。


《海洋奇缘》的导演,Ron Clements 和 John Musker,几十年来一直迷恋与海洋有关的故事。他们在1989年拍摄了《小美人鱼》(The Little Mermaid)。Clements 是受 1940 年的电影《木偶奇遇记》(Pinocchio)——其中有著名的巨鲸扑浪镜头 —— 的激励,开始追求在动画事业上有所作为。不过,那些电影中的海洋画面与观众在《海洋奇缘》中看到的无法同日而语,《海洋奇缘》就像是 1916年的《海底两万里》一样具有开创性。


“制作水的特效总是很难。” 《海洋奇缘》的联合动效主管 Marlon West 说,“通常一部动画片会有十几个水的镜头,非常难做。” 但《海洋奇缘》的大部分情节与水有关,而且海洋并不仅仅是个场景,所有情节就发生在水上,这增加了另一层复杂度。除此之外,《海洋奇缘》的太平洋有时候是拟人化的,就像是詹姆斯卡梅隆的《深渊》里那个海水的远房表亲。


迪斯尼的软件团队搞出了一个工具软件,叫 Splash(类似制作《冰雪奇缘》的软件 Matterhorn),来自动化处理水在不同镜头下的行为。Splash 是第三方 3D 动画软件 Houdini 的“流体解算器”插件。用这款解算器,视效专业人员可以定义需要模拟的区域,比如动画小船周围的水域。然后用一个设定值来决定从什么样的海水条件开始。在这个基础上,他们在预定义的海面运行模拟器,来确定那片水面如何跟小船互动。模拟的输出,即“几百万的粒子”,实际上就是几百万的新动画数据点,被平滑处理到影片最后的渲染中。


《海洋奇缘》的技术团队花了差不多一年来给片中的船开发自动航迹系统


Splash 还引进了一系列模拟水花、漩涡和航迹的算法。软件的浮力算法让片中巨大的领航帆船在波浪中上下拍打的动作非常逼真。(好多镜头中,许多帆船一齐出现在水中,互相挨得很近,带来了更多动画制作的挑战。)


“作为特效艺术家,在制作流体时,你不会总能预料到你的模拟会出来什么效果。” 本片的视效主管 Erin Ramos 说,“对水来说最难的是,如果不对劲,你一眼就能看出来,哪怕是作为背景。”


“莫阿娜与海洋的亲密接触” Eric Goldberg 的铅笔动画稿


迪斯尼的特效专业人员告诉我,他们可以在约80%的时间成功地自动化处理关键的海洋活动细节——就是说,可以找一个助理简单地运行一个脚本就生成了船只的航迹。“运行脚本来生成动画,艺术家们可以有更多精力去专注镜头的艺术性,” Ramos对我说,“所以他们才有时间创造这些叹为观止的镜头,而且得以让海洋表现得像一个角色。”


《海洋奇缘》里的大海是个拟人化的力量,在莫阿娜的旅途中经常起到推动作用,只不过这个角色既没有脸,也不会说话。(“在这个意义上说,它有些像迪斯尼《阿拉丁》里那个动画魔毯。”《海洋奇缘》制作人 Osnat Shurer 对我说。)因此,迪斯尼的视效专业人员和动画师们始终在矛盾中权衡:一方面让水看起来、动起来像真正的水,同时又要展现出魔力。


“这是个很大的挑战。” West 说,“他们要把海洋做得像一个袜子玩偶,我们要把它举起来,往里面灌满了泡泡和液体,或者做一个模拟计算给它充满了水,好让它看上去更加水汪汪的。”


对于如何把海洋从平常状态转换为角色,动画师和视效专业人员同制片方之间照旧有很多争论。“是什么让海洋角色在一个人看来像普通的水,在另一个人看来却过于躁动和咄咄逼人?” West 说,“我们的海洋角色突现在蹒跚学步的莫阿娜或莫阿娜的奶奶面前时,你绝不能让人担忧她们的安危,你要让人感到不可思议。”



为了达到这样的感觉,动画师们先是创建了海洋的动作,视效专业人员运行模拟器,添加上水的真实特性,然后照明专业人员补上附加的细节。


最后,平衡这两种预期——真实的海洋,同时像个角色一样传达暖意和鼓舞——意味着当水作为一个角色时,让它表现出部分超自然的光滑和圆润。还有些时候忽略物理定律,以便于观众更加关注角色。“因为我们要讲故事,” West 对我说,“这是个非写实的世界。我们力求创造出存在于你的心中和脑海中的水的形象。”


接着面临的问题时如何展现可信的海洋——不是物理上写实,而是文化上真实。迪斯尼为此成立了“大洋洲故事基金会”,由来自太平洋岛屿上的一群文化业者组成,作为影片的顾问。基金会成员参与到影片的方方面面,从哈卡战舞到纹身的设计到半神毛依的头发。(毛依的初稿是光头,基金会成员说不应该,于是迪斯尼给了他华丽的头发。)


影片制作者第一次考察之旅去了斐济,见到了“天使”Jiujiua Bera,一个熟练的探路人。“他带着强烈的个人感情谈论大海,” 《海洋奇缘》制片人Osnat Shurer 对我说。“他真的会非常轻柔地拍打海水,还告诉我们对海洋讲话也要轻柔。他说:‘海洋什么都知道。’ 清晨他会问候海洋,就像问候自己的家人。这让我们印象深刻。”


让 Shurer 和同事大为触动的是,他们见到的太平洋岛民之间更加广泛的纽带联系,而且很多海岛文化认为海洋和陆地是浑然一体的。(比如在古代夏威夷,这个理念形成了 ahupuaʻa  的概念,即从山顶连绵到海里的陆地区块单位。)还有一些文化认为海洋本身就是一个纽带。“在太平洋上,我们不认为水是一种阻隔。”人类学家、大洋洲故事基金会成员 Dionne Fonoti 在《海洋奇缘》特别收录版中接受迪斯尼采访时说道。“把我们连接在一起的并不仅仅是海岛文化和居民,还有海洋。”


然而,当制片项目开始的时候,迪斯尼团队还不知道该如何描绘这么复杂事物——即使是从技术角度。更不用说另一个相关的挑战:制作人性化的火山岛。


制作《海洋奇缘》的 Te Kā 所需的多个动效层:烟、火、岩浆、闪电和水


“我对我们的工作成果充满期待,” West 对我说。“当我看到最终的电影,我觉得没有什么能让我畏缩不前,从来没有。”


这个项目也改变了动画师和视效专业人员们看待真实海洋的角度。视效主管 Ramos 说她用了一年半以上的时间制作逼真的海岸线动画。即使现在,她只要去了海滩就会留意那些参与《海洋奇缘》之前从未考虑过的细节。


“要知道,去海滩对我来说是件艰难的事情,” 她说。“只要去了那儿,我就会观察泡沫是如何消散的,海水如何渐渐退回大海,海浪短暂停顿的韵律和节奏。我会观察沙滩如何成型为礁岩浪型,光线如何影响水的外观、清澈度、颜色。脑子里要过的东西太多了。”


“我不觉得这是坏事,” 她补充道。“我觉得这美妙无比。”



觉得本文有帮助?请分享给更多人

关注「算法爱好者」,修炼编程内功