《阿凡达:水之道》背后的水之技术

Wētā Digital(现已并入Unity)开发的工具和解决方案让《阿凡达:水之道》的世界生动地呈现在了观众面前。本次,我们希望探讨下“水之道”背后的水体CGI技术。若您有兴趣第一时间上手相同的工具,可以前往我们的网站注册参加Unity Wētā Tools的beta测试。

詹姆斯·卡梅隆(James Cameron)对水并不陌生。除了《泰坦尼克号》,他还曾在2012年打破了单人潜水的记录,驾驶一艘潜水艇下潜到马里亚纳海沟近11公里深的海底,地球上海拔最低的地方。正如他在2014年的纪录片《深海挑战3D》(Deepsea Challenge 3D)里说的,“在下边你能感受到大自然强大的想象力要比我们的伟大得多。”
若真是如此,那么卡梅隆靠自己的想象呈现出整个潘多拉星球及其壮美的风景绝对是一件了不起的事。

卡梅隆在续集里设想了一片由水生的Metkayina族建立的礁石村,以及占据庞大篇幅的带水场景。实现这些想法需要用到大量的视觉特效。
用于制作这些视觉特效(包括获奖的水体效果)的工具和解决方案都是由Wētā Digital,Unity旗下部门开发的。
为了让角色与水的互动尽可能逼真,一支由Unity和Wētā水体模拟专家Alexey Stomakhin、Steve Lesser、Joel Wretborn和Sean Flynn组成了“水之特工队”。团队的水体工具集最近赢得了视觉效果协会(VES)奖的新兴技术奖,受到了业界的认可。
小队极度关重视细节,与新西兰的国家水与大气研究学会(NIWA)合作探索了制作CGI水体的最佳方法,将潮汐、风力和海床对水生环境的影响纳入了考虑范围。

《阿凡达:水之道》有2225个镜头使用了水体效果,部分效果花了整整八天才模拟出想要的高分辨率图像。
有许多场景还需要一镜拍摄水与超过50种生物的互动,即包含占据大片水域的巨型生物,又有皮肤上薄如一层膜的水效果,如此规模为模拟的精确性带来了挑战。
创建单一表示的水体系统从运算量上来说过于庞大而不可行,因此小队开发了一套独特的解算器来尽可能降低运算时间。
“Loki水状态机在交付影片庞大的水镜头上起到了关键作用。在典型的使用大量视觉特效的电影中,也少有这种复杂程度的水效果镜头,就算要做也需要依靠大量资深艺术家迭代数次、建立多条渲染通道。然而,状态机方法只需要一条渲染通道就能产出非常不过的成果,就算是刚入行的特效艺术家也能轻松驾驭。”——Sean Flynn,模拟负责人,Unity x Wētā Digital
大部分的水体工具都基于Wētā专利性的模拟框架“Loki”打造。该技术可以解算多种水体状态,包括程序化的波浪(water waves)、大型水体(bulk water)、喷雾(spray)、水雾(mist)、特写气泡( hero bubbles)、扩散气泡( diffuse bubbles)、泡沫(foam)、毛细表面波(capillary surface waves)、水膜(thin film)和残余湿度(residual wetness)。
状态机
Loki状态机是一套含气流喷洒系统,其中包含了大部分解算器。水的状态还带有周围空气的状态,状态间的转换会保留水的质量和动力。
Loki状态机并不会采用单独一种解算方法,而是同时运行多种解算器。每一种解算器都能在相应的状态下产生优化后的细节,包括大型水体、喷雾和水雾,不仅高效地模拟大型水体,还能捕捉到每一滴喷雾和水雾的互动。
所有状态,包括周围空气的模拟都由一条模拟通道完成。每个解算器都能正确地运算出相互间的物理互动,营造出电影里那般自然又逼真的水体互动。
在SIGGRAPH 2019期间,我们展示了一种在角色上模拟近距离水体互动的实用方法,将重点放在了水体流过皮肤时的表面张力和附着效果。团队以《阿丽塔:战斗天使》(同样由卡梅伦担任编剧)的场景为例,用一层水覆盖了角色全身,展示了效果精细的分辨率(可精细至几毫米)和优秀的性能。
该方法采用了“胞中粒子法”(FLIP/APIC)解算技术来捕捉小规模的“水体-固体”互动。《阿凡达:水之道》进一步拓展了这项技术,用于处理角色“出水芙蓉”的场景。
“此种解决方案并不便宜,我们需要以次毫米级模拟水的动态,模拟成果通常要花费数天的运算。只有保证解算技术的扩展性、稳固性和可靠性,才能开箱就产出符合物理的图像,让艺术家不必做太多调整。”——Alexey Stomakhin,首席研究工程师,Unity x Wētā Digital

为了实现令人信服的水下动态(比如《阿凡达:水之道》角色在水下的场景),团队使用了一条围绕关注点的水流来模拟水下气泡。气泡本身以两部分呈现:特写和扩散。
主体部分捕捉了带破裂和扰流现象的气泡本身,在一片欧拉网格(Eulerian grid)上用两段式的纳维-斯托克斯(Navier-Stokes)算式解算,气流阶段使用FLIP/APIC粒子表示气泡,以保存气泡体积、精确跟踪接触面。
扩散部分则以小于欧拉网格的分辨率来捕捉小型气泡。团队开发了一种新技术来把散开的气泡粒子配对到大片液体上,同样的技术还能用于沙砾、头发、衣物等其他半浸入的多孔物体。
为了提升水面模拟的图像细节,Wētā Digital和IST Austria的团队开发了一种新的后处理方法,以水体模拟作为输入,在此基础上模拟出精细的拉格朗日水波(Lagrangian water waves),从表面上提升分辨率。
团队还将线性波浪理论拓展应用到了非平面的水域,水域带有拉格朗日波包(wave packet),波包被捆绑到几条样条曲线上,曲线会随流体表面的变化而演变。此种方法所产出的高频率涟漪带有向外扩散的类波浪现象,还可根据底层的流体模拟进行定制。
团队开发了一种逼真的水下气泡模拟方法:气泡由水流带动,在浮到水面时转化成浮沫。这一技术在《阿凡达:水之道》的每一处水体场景都发挥了重要作用。
基于网格的纳维-斯托克斯(Navier-Stokes)模拟程序(一般只用在大片流体的动作捕捉上)从根本上受到网格分辨率的限制,无法很好地应用到破浪时产生的喷雾或水雾这类小规模现象。这些白色的海水通常使用独立的拉格朗日粒子进行模拟。
“我们白色海水模拟的一个重要方面就是两种解算器的互动:一种基于网格、配有气泡的流体解算器,以及一种绑定在水面的浮沫SPH解算器。Loki一眼就能看明白的解算器框架使我们能在制作期间建立并维持这些复杂的系统,无需从零开始开发新的解算器。”——Joel Wretborn,资深研究工程师,Unity x Wētā Digital
当今大多数解算器都会忽视关键的整体效果:一群气泡合起来的浮力更大,上浮速度要比单个气泡快,大量聚集的气泡可以极大地影响水体的运动。
新技术从两个方面来模拟气泡,并考虑了周围的流体,突破了原先的局限。它能有效地捕捉总的气泡效果,营造出更为连贯的气泡及流体运动。气泡在到达表面后会转变成水面上“湿润的”浮沫,并根据平缓粒子流体动力学(SPH)向外散开,最终产生的白色海水运动从近处或远处拍摄都十分逼真。
“特攻队”使用的模拟技术由Wētā Digital现任和前任员工,以及来自Wētā FX和多家学术机构的合作伙伴们开发而成,他们有:Alexey Stomakhin、Joel Wretborn、Kevin Blom、Gilles Daviet、Steve Lesser、John Edholm、Noh-Hoon Lee、Eston Schweickart、Xiao Zhai、Sean Flynn、Andrew Moffat、Gary Boyle、Tomas Skrivan、Andreas Soderstron、John Johansson、Christoph Sprenger、Ken Museth和Chris Wojtan。请在这里详细了解Unity Wētā Tools的beta测试。