流体模拟技术

The Science of Fluid Sims

By Mike Seymour           September 15, 2011

流体模拟已成为众多电影视觉效果中十分重要的一部分,但大多数普通的设计师仍然不能很好地理解其中的奥妙。我们试着解释一下流体模拟背后的技术,并在我们的朋友Exotic Matter的帮助下,特别地关注其中的一种:Naiad。

引言

Weta Digital在 “X战警-第一战” 中使用了流体模拟技术

在对现实世界的模拟中,流体模拟是最重要也最常用的领域之一。从倾倒水流到海洋远景,导演和设计师已经开始依靠计算机模拟的水与类似的流体了。流体动力学是一个复杂的领域,流体模拟也以计算量巨大而著称,但是一旦它出了效果就能提供巨大的产品价值以及叹为观止的视觉效果。

流体模拟并不仅限于流体,它可以用来得到火焰和火苗——场景中所模拟的流体就是空气本身(一种气体)。空气与液体之间的主要区别在于,相比较气体,液体存在一个自由表面,并且体积是守恒的,除非你正在处理二相或多相流,在同一个动力系统中模拟两种以上的流体。油和水,或者空气和水就是二相流的一些例子。

流体模拟在视觉效果以外也有很多应用。计算流体力学或者流体模拟的技术在60年代中期以来就用于工程问题中。流体中的公式和数学也被用来描述学术与商业上的许多事物的物理规律。比如,它们可以用来对空气、洋流、管子中的水流以及机翼附近的空气流等。

历史

在计算机图形产业涉及之前,流体模拟早在20世纪50和60年代就被积极地用数学进行建模。追溯到60年代,有一个研究机构——洛斯阿拉莫斯的T3小组曾引起很大的轰动。James Harlow是小组的领袖。Harlow和他的小组发明了很多现今我们和一些企业用到的技术,包括下文中我们要解释的一些技术,如stagered Marker-And-Cell (MAC)网格结构,以及Particle In Cell (PIC)方法,也就是现在的FLIP,MPM以及其他一些混合方法的前身。

不幸的是,大多真实世界的计算流体力学方法对于模拟流体的视觉效果来说过于复杂,并且扩展性差。在计算机图形学领域,计算不可压缩以及自由表面流,最重要的先驱是Nick Foster和Dimitris Metaxas。正如我们在下面略述的,与很多人的直觉相违背的是,可压缩性是一个关键,它使得一些方法变得可行。在Nick Foster和Dimitris Metaxas之前,大多数水的视觉效果用的是非物理的方法,基本上是二维的或者是凹凸贴图等技巧,Alis | wavefront 的Jos Stam也曾为不可压缩的气态流体做出非常重要的贡献。在他1999年的Siggraph论文中,他解释了为什么模拟相对于关键帧动画要重要得多。

Physical models, unlike key frame or procedural based techniques, (fluid sims) permit an animator to almost effortlessly create interesting, swirling fluid-like behaviors. Also, the interaction of flows with objects and virtual forces is handled elegantly. Jos Stam. (1999). Stable Fluids, SIGGRAPH 1999 Conference Proceedings: SIGGRAPH Annual Conference Series. pp. 121-128.

所有这些发生在90年代的一些关键的地方,比如Pacific Data Images (PDI)以及Alias (3D)。正如早期的努力在一些电影中,如未来水世界泰坦尼克号中所展示的,CG的水面图片可以达到很高的真实度,但是真实度仍然大多限制于相对平静,宽广的海面场景。Rhythm and Hues (R&H)的首席图形学家Jerry Tessendorf,在水的发展上做出了伟大的工作,并且在2008年与他的三位R&H的同事一起分享了研究院的技术成就奖,因为他们在计算流体力学中开发的自定义流体动态工具。

Stanely Osher开创了level set方法,来表示动态的表面,而之后他的博士学生Ron Fedkiw将level set引入到了图形学,并发明了Particle Level Set (PLS) 方法,这种方法通过在流体的表面撒上粒子,获取那些原本会丢失的亚网格质量,从而减弱了质量损失的问题。Fedkiw的工作会变得极其重要。他获得了电影艺术与科学学院颁发的技术成就奖。现在他是斯坦福大学计算机科学的副教授,
在那发表了超过80篇计算物理、流体以及视觉相关的研究论文。在过去的10年中,他是Industrial Light & Magic (ILM)的顾问,因此他的工作也用在了屏幕作品中,如终结者3:机器的崛起,星战前传3:西斯的复仇,海神波塞冬和冒牌天神。

Robert Bridson
又是Ron Fedkiw的博士学生,与ILM合作,在Fedkiw的管理下作为PhysBAM项目的原始参与者。PhysBAM保留了ILM的物理模拟代码库的主干部分。

Bridson20世纪60年代早期回到研究工作中,回到了重要学者,比如Harlow的研究中,并且使得PIC/FLIP适用于不可压缩流,同时将他自己的FLIP方法引入到图形学中。FLIP方法以及其变体,在流体模拟的运输阶段近乎没有数值扩散,因为所有的数值都是通过粒子,而不是网格来运输的。

连同
PhysBAM一起,BridsonILM还为星战前传2:克隆人的进攻中所用的布料模拟的代码做出了贡献。Bridson后来转到英国,为Double Negative合作完成了Squirt流体模拟器,在他们很多的电影中可以看到烟雾,水,火,云,水中的墨水,包括哈利波特与混血王子,2012,海盗电台,墨水心,量子危机,黑暗骑士地狱男孩2:金色军队。

也就是在英国,
Bridson遇到了另一位业界传奇——Marcus Nordenstam,他们在2008成立了Exotic MatterExotic MatterNaiad流体模拟软件的制作者,Naiad出现在迄今为止最为震撼的一些流体效果中,包括阿凡达,纳尼亚传奇3:黎明踏浪号,X战警:第一战,哈利波特与死亡圣器2,加勒比海盗4:陌生的潮汐,猩球崛起,以及许多在fxguide.com中出现的。

NordenstamVFX R&D以及特效模拟已经有了超过15年的经验。他合作发明了漩涡-噪声,开创了FLIP在火焰模拟中的运用,并与Bridson共同授权”Squirt”流体模拟器。在成立Exotic Matter之前,MarcusILM是高级工程师职位,在那,他还曾是Zeno最早的程序员之一。他的屏幕作品包括星战前传2,蜘蛛侠2,地狱男孩2,墨水心,哈利波特与混血王子以及阿凡达

Exotic Matter有一种工作方式,Nordenstam和他的其他同事将他们自己嵌入到其他的大公司中,特别是公司早期的时候。更重要的是,这发生在新西兰惠林顿的Weta Digital,他们作为R&D的一部分为一些电影工作了10个月,比如阿凡达

随着Naiad的巨大成功,说它代表了流体模拟的最高水准也并不为过。然而没有一种模拟器可以完成所有的东西,Naiad以其可扩展性,可信度以及真实感,深受欢迎。

现在,在流体模拟领域中有几家著名的公司。位于慕尼黑的Scanline Productions(由Stephen Trojansky领导)以及他们备受赞誉的Flowline软件,例如它帮助Moving Picture Company (MPC) 让流体充满了波塞冬的内部,效果令人信服,并且帮助了Scanline完成了2012中巨大的冲刷场景,还为Clint Eastwood从今以后重塑了恐怖场景。同样也存在一些现成的流体工具,比如 Maya,Houdini中的一些,以及来自其他专业公司的和小组的,比如Blender 3DRealFlowFumeFXDynamiteICE (作为Softimage/XSI的一部分)PhyFluids3D以及其他,但在这篇文章中,我们会审查Naiad的技术来提供一个视野,了解最高水准背后的技术。

基本概念

一些流体模拟基于或者关注表面的属性。比如,早期的海水的模拟,就是产生基本平坦的海面即可。而新的模拟方法会涉及到水体,比如说一股水流,或者冲上固体的洪水之类,也涉及到比如水下的地面高度如何影响水面——比如地面倾斜的方式使得在海滩上出现海水的碎浪等。

上面的第二类的流体模拟方法的一些根本性问题如下:

·质量守恒。按字面上说就是水在模拟过程中不会消失(或者在数学建模中)
·动量或能量守恒。
·体积守恒——不可压缩性——不同于真实的水,这假设看上去有些怪(声音不就是可以在水中传播吗?),但是为了做视觉效果,这个假设已经足够接近真实,并且将数学模型极大地简化。
·可合并的加速度(空间决定了加速度,比如,当水蔓延开来或者流进漏斗,有两种主要的力施加在其上)假设流体受到重力和它本身(压力)的作用,我们甚至在一两个段落中用数学将他表示了出来(见下文)。
·我们在处理大多数的流体时省略了黏性(当然也不是全部),黏性在模拟中作用很小,我们直接忽略不计。
·边界条件(最后一点是关键)流体的边缘非常重要,它是一个表面或者一个边界。Bridson在他的书《Fluid Simulation for CG(2008)》中提到“most of the, ahem, “fun” in numerically simulating fluids is in getting the boundary conditions correct.”,有三种类型——墙壁,无边界或者自由移动的表面,还有最复杂的,另一种流体(最后一种在电影里几乎看不到)。

要理解水体的模拟,需要将施加在‘流体’上的力简单地理解为:将流体从压强大的地方移动到压强小的地方。在水中或者流体模拟中,每一处都有一个从压强大的地方指向压强小的地方的梯度,而这个“向量场”定义了流体在一个合适的时间间隔中的运动。

模拟 —— 求解Navier-Stokes方程

Navier-Stokes是一组描述多种流体(包括气体)的方程。Navier-Stokes方程已经深入人心几百年了,但正如上文中所提到的,它是视觉效果产业最关心的几个共同问题之一,这些问题都带有一些关键的假设。

Navier-Stokes方程的结果不是一个像42这样的数,它的输出是一个速度场——或者是一个复杂的向量。Navier-Stokes方程描述的不是位置而是速度。这是一个使很多人困惑的一个重点——那些向量不是空间中的位置,甚至也不是速度。我们得到的是一个平流方程,这就是分子,或者在计算机图形学中的术语——粒子的移动所按照的速度场。

Navier-Stokes方程以Claude-Louis Navier和George Gabriel Stokes命名的,描述了流体物质的运动。用半科技词汇来说,这些方程的来由就是将牛顿第二定理运用在流体上,(F=ma)并考虑到流体的压强的假设,比如,流体的运动方向,就是一个扩散粘性项(正比于速度的梯度)的总和乘上一个压力项。

这个方程很有用,因为它描述了学术上商业上很多事物的物理规律。他可以用来给天气,洋流,水管中的水流以及机翼周围的气流建模。Navier-Stokes方程以完整或者是简化的形式运用于飞机和汽车的设计,血流的研究,发电站的设计,污染的分析以及其他很多领域。

Naiver-Stokes的一个解被称作一个速度场或者流场,它描述了流体在给定的时间下,在空间中一点上如何移动。一旦求解了速度场,我们为了场景效果所关心的其他东西,比如流量,阻力等都能求出。



(未完待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值