学习CFD,没准还能成为电影艺术家

2017-02-09  by:CAE仿真在线  来源:互联网



计算机模拟的作品


流体所指的也不单单只是液体而已,还包含了火焰、烟雾、气体等。而烟雾跟液体最大的差别在于,液体会有固定的体积,气体则不是。从1960年代中期以来,流体动力学(CFD,computational fluid dynamics)或流体模拟的科学就开始在工程问题中得到应用。流体的方程式和数学原理可以用于建立诸如气象模型、天气预报、管道中水的流动和飞机机翼周围的气流这样的对象。

流体模拟已经成为众多特效电影的一个重要部分,即便如此,它还是没有被大多数普通艺术家很好地理解。我们对流体模拟背后的科学进行了解释,特别深入地研究了一个最具有代表性的一款流体模拟软件:Naiad(电影特效CFD软件)


发展史

  在电脑图形工业发展之前,早至20世纪50到60年代,流体模拟就已经被活跃地研究并且有了数学模型。回溯至60年代,一个起主要影响研究的开创者就是Los Alamos国家实验室的T3组织。James Harlow是这个组织的领导者,Harlow和他的团队研究出工业化应用的理论,包括我们在下面会解释的交错MAC(marker-and-cell)网格结构,和PIC(Particle In Cell)方法,而后者就是今天FLIP、MPM和其他复合方法的前身!

  可惜,多数用于真实世界的CFD方法对视觉特效流体模拟来说显得不必要地复杂,而且数量很少。在计算机图形学领域,重要的先锋有Nick Foster和Dimitris Metaxas,他们计算了不可压缩和自由表面流体。正如我们下面所要强调的可压缩性,是通向可行解决方案的一个关键途径,但许多人都不能直观地理解。在Foster和Metaxas之前,视觉特效中的水都没有用物理学方法,大多数是运用了2D或者位移和凹凸贴图这类小“诡计”。Alias Wavefront的Jos Stam对不可压缩气态流体所做的工作也十分显著。在他1999年的Siggraph论文中,阐述了为什么比起关键帧动画,模拟动画是如此地重要。

  与关键帧或过程依赖技术不同,物理模型(流体模拟)可以让一个动画师毫不费力地创造有趣的类似漩涡流体行为。而且,流体与物体和虚拟力之间的互动能被轻松处理。Jos Stam. (1999). Stable Fluids, SIGGRAPH 1999 Conference Proceedings: SIGGRAPH Annual Conference Series. pp. 121-128.

  在90年代早期,在Waterworld 和 Titanic这样的电影中,证明电脑合成的水图像是可以达到很高真实度,但是这种真实大都局限于平静、开阔的海洋镜头。Jerry Tessendorf, Rhythm and Hues (R&H)的首席图形科学家,在水特效的发展过程中做了大量的工作,因为他们研究的在CFD领域中传统流体动力学工具,他和R&H的其他三个成员一起获得了2008年学院奖的Technical Achievement 奖项。

  Stanely Osher做了开创性工作,使用层集方法表达动力学表面,后来他的博士生Ron Fedkiw将层集方法带入图形学并且创造了PLS( Particle Level Set )方法,这个方法通过沿流体表面种植粒子来保持其它方法可能损失的次网格质量,减少了纯层集方法的质量损失。Fedkiw的工作有极大的重要性,他获得了来自动态图像艺术与科学学院的技术成就学术奖。现在他是斯坦福计算机科学的副教授,发表了超过80篇计算物理、流体和视觉方面的论文。过去的十年中,他一直担任工业光魔(Industrial Light & Magic ,ILM)的顾问,在银幕上也有所成就,参与了 Terminator 3: Rise of the Machines(终结者3), Star Wars: Episode III – Revenge of the Sith(星球大战), Poseidon 和 Evan Almighty电影的制作。

  Robert Bridson,反过来又是 Ron Fedkiw的博士生,作为PhysBAM项目的创始人之一,在Fedkiw的管理下与工业光魔一起工作。PhysBAM延续了工业光魔物理模拟编程的主要工作。Bridson针对那些主要的研究者比如Harlow 追溯了20世纪60年代早期的研究,然后为不可压缩流体引入了 PIC/FLIP方法,同时也将不可压缩FLIP方法带入图形学。FLIP方法和它的变体在流体模拟的传递阶段有一个总数值扩散的近似缺陷,因为它将所有的数量都平流输送到粒子而不是网格上。

  在PhysBam项目中,Bridson帮助编写了布料模拟代码,这个使运用在工业光魔制作的Star Wars Episode II: Attack of the Clones(星球大战前传2)中。然后Bridson 到了英国为Double Negative合作设计了喷溅流体模拟器,在许多电影的烟、水、火、云、水墨特效中都可以见到,这包括Harry Potter and the Half-Blood Prince(哈利波特和混血王子)、2012、 The Boat that Rocked、 Inkheart、 Quantum of Solace(量子危机)、The Dark Knight 和Hell Boy II: The Golden Army(地狱男爵2)。

  正是在英国,Bridson 碰到了另一个业内传奇—— Marcus Nordenstam ,他们一起在2008年成立了Exotic Matter公司。Exotic Matter是Naiad流体模拟软件的制造者,这个软件参与了许多震撼的流体特效制作,包括Avatar(阿凡达)、Narnia: Voyage of the Dawntreader(纳尼亚传奇)、X-Men First Class、 Harry Potter and The Deathly Hallows Part 2(哈里波特和死亡圣器2)、Pirates of the Caribbean: On Stranger Tides(加勒比海盗:陌生的潮汐)、Rise of the Planet of the Apes(猩球崛起)等许多电影。Nordenstam现在有超过15年的VFX R&D和特效模拟经验。他联合研发了curl-noise,开创了火焰模拟中FLIP方法的运用,与 Bridson合作设计了喷溅流体模拟器。在参与组建Exotic Matter公司之前,Marcus在工业光魔有高级工程师的职位,在那里他是Zeno项目初始设计者之一。他在银幕上的贡献有 Star Wars Episode II、Spider-Man 2, Hellboy II、Inkheart、 Harry Potter and the Half-Blood Prince 和Avatar。

  作为Exotic Matter公司的一部分,Nordenstam 和公司的其他人深深地投入到关键方向之中,尤其是在公司早期的时候。最紧张之时,他们在新西兰威灵顿的Weta Digital做为R&D部门工作了十个月,制作了诸如Avatar这样的电影。

  Naiad软件获得了巨大的难以置信的成功,如今它有资格代表流体模拟艺术的发展现状。当然没有一个模拟器能做好每一个方面, Naiad因它的可扩展性、可信度和真实性广受欢迎。今天在流体模拟领域有几个主要的公司。Munich-based Scanline Productions (Stephan Trojansky领导) 和它们的获奖软件Flowline,帮助MPC(The Moving Picture Company )公司在Poseidon(海神号)电影中制作了逼真的海水,帮助Scanline冲垮了2012中的大部分建筑,还原了 Clint Eastwood的 Hereafter的恐怖。还有其他许多非定制流体工具,比如Maya、Hodini和其它专家公司或小组比如Blender 3D、 RealFlow、 FumeFX、Dynamite、ICE (Softimage/XSI软件的一部分)、 PhyFluids3D等等许多。但在这个文章中,我们只对Naiad的科学进行试验,对Naiad艺术背后的科学进行深入的研究。


基本概念

  有些流体模拟是主要是关注于表面属性,比如在早期,海水模拟制作出来的半平坦的大洋。最近的模拟都关注于体积,这样既能表达一个倾泻镜头或者洪水在刚体周围冲击的镜头,也能表达水下位置的高度对水表面的影响,即在海滩上陆地降低造成的破碎波(Breaking waves)。上述关于体积的流体模拟底层的一些基本问题列出如下:

  • 质量守恒,即模拟过程(或者说算法)中水不会消失。

  • 动量或能量守恒。

  • 体积守恒->即不可压缩性->不像真实的水,这可能看上去很奇怪,声音不可以在水下传播吗?但对于视觉特效来说,这个假设已经足够接近真实,使数学运算极大地简化

  • 相关加速度(connective acceleration)—空间控制的加速度,例如水流出去或者灌入时作用于流体的主要有两种力,用一两段我们可以用数学把它们表示出来的话说,流体被认为受重力和它自己压力的影响。

  • 对于大多数流体我们忽略了粘度,但不是全部忽略,粘度影响小的时候我们忽略它

  • 边界情况——最后也是最关键的——流体的边界非常重要,那可能是一个表面或者一个分界。在Bridson的书Fluid simulation for CG (2008)中,提到“大多数数字流体模拟的‘趣味’就在于正确地得到边界情况。”有三种情况——固体面,或自由流动的表面,和最困难的,其他液体(最后一种情况在电影中很少见)。


模拟解算斯托克斯方程

  Navier-Stokes方程是一套描述多种流体(包括气体)行为的方程。Navier-Stokes方程已经出现了两百年左右,但如同我们上文中所做的规避,它是一套一般问题的子集,建立在一些特效工业最关注的关键性假设之上。Navier Stokes方程的解并不是一个42之类的数字,它解出一个速度场——或者说一个复合矢量。Navier Stokes方程不指示位置,而是速度。这点很重要,也困惑了很多人——这些矢量不是如同速度一样分布在空间中的点。我们得到的是一个层流等式,描述微粒或者用计算机图形学的术语来说——粒子——在速度场作用下的移动。

  Navier Stokes方程,因Claude-Louis Navier和 George Gabriel Stokes而命名,描述了流体物质的运动。在半技术术语中这些等式是将牛顿第二定律运用于流体运动中而得来(F=ma),但同时也使用了一个说法,流体“压强”,即流体运动趋向的方向,是一个扩散粘度项的综合(与速度梯度成正比),加上一个压力项。

  这个方程很有用处,因它描述了许多理论和经济上感兴趣的物理现象。它们可以用于建立天气模型,海洋涌流,管道水流和翅膀周围的气流模型。Navier–Stokes方程,以完整和简化形式用于航空器和车辆的设计、血流动力学的研究,发电站的设计、污染分析以及其它许多方面。

  Navier–Stokes的一个解叫做速度场或者流场,即描述了一种在一个给定的空间和时间的点流体流动的方法。只要解出速度场,与一个真实可信的镜头有关的其它事情,比如流动速度或者拖曳力就能够被得到。传统机械或者刚体模拟得出的解都是典型的粒子位置轨迹或者运动偏向,这与流体模拟不同。研究速度而不是位置使我们更加了解流体;无论怎样要达到视觉目的,这样都可以计算出不同类型轨迹。这里是一个极简数学模型——建立在上述假设之上,这个“不可压缩斯托克斯方程”就足够了。


学习CFD,没准还能成为电影艺术家cfx培训课程图片1


加速度+某东西+在压力与密度的改变=本体的力+动态的黏度

但是假定流体是不可压缩的话,黏度的计算就可以被忽略

加速度+0+在压力与密度的改变=本体的力+0

整理一下公式会得到:

加速度=本体的力-压力与密度的变化


  而密度又等于质量除以体积, 压力的改变又与体积有关, 流体的某一点的加速度=重力(外力)-压力,就是密度的改变,因此流体的加速度就与他所受到的力相关。流体的某一点的加速度=重力(外力)-压力或是密度的改变,流体的加速度就与他所受到的力相关。

  这样的公式要怎样实际导入到流体软件里面呢?如果直接把公式写成程序语言很简单,但是实际在计算的时候需要考虑产业需求,计算机运算时间。写实度往往必须跟速度达到平衡。因此实际上需要很多偷步的技巧才能满足不同流体状况。其中一种偷步技巧是Surface Tracking Euler method。他是用Height map来控制流体表面,但是忽略掉水面以下发生的事情。某些软件的解算法并不能满足所有尺度, 从小尺度的倒酒杯到大尺度翻滚海浪上的船。某些则是数学公式上面有缺陷,会导致流体会随着时间让体积越来越小, 例如在测试《加勒比海盗神鬼奇航:幽灵海》里面有一幕玻璃箱装载了美人鱼, 而Naiad则是解决了这方面的问题。

以下是可以在合理的时间里面计算出写实流体的一些关键技术点:

SPH(Smooth Particle Hydrodynamics)

一种用Navier-Stokes的粒子系统,仿真完后再把这些粒子变成polygon。这种方式对于倒酒的流体特效很适合,但是对于如海水般大量流体就会有困难。

学习CFD,没准还能成为电影艺术家cfx结果图片2


Volume Grid
  只有表面的流体, 又被称为Volume Fluids。例如在Houdini里面,可以很有效率地描述海洋波浪的高度与频率, 这种方法没有粒子, 对于小尺度的倒酒效果不合适. 这种方法通成被称为Euler法。

FLIP

FLIP解算法是粒子解算法与volume解算法两种的混合,《加勒比海盗神鬼奇航:幽灵海》美人鱼装在玻璃牢笼里面的流体, 就是用Naiad的FLIP模拟出来的。FLIP跟粒子或是SPH相比最大的优点在于每个Frame需要计算公式的次数不需要这么多,SPH解算法在计算的时候,每个Frame都要计算好几次,有点像是时间上的反锯齿计算,这样的公式往往必须要解算10-100次才有可能得到好效果,要不然很容易产生分子炸开的问题。Houdini也提供三种解算模式,包含了FLIP的方式。针对Houdini 11 Side Effects的资深数学家Jeff Lait说: ” 当FLIP流体被解算的时候, 会暂时产生速度场,粒子的速度场会被转移到grid里面。用来处理流体的弹射方向,这样可以避免粒子重迭,也可以避免它们都往同一个方向移动。FLIP流体的另外一个优点是不同的流体可以迭在一起,不会影响到系统的稳定度。SPH法当两个粒子很靠近的时候很容易就炸飞,对于FLIP来说,你可以添加新的粒子到流体里面,例如石头丢到水里面飞溅起来的分子。

学习CFD,没准还能成为电影艺术家cfx结果图片3



开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:学习CFD,没准还能成为电影艺术家 ansys-cfx流体分析培训 CFX培训 cfx技术教程 cfx资料下载 cfx视频教程 cfx学习资料 cfx软件下载 ansys cfx编程二次开发 CFX代做 CFX基础知识 Fluent、CFX流体分析 HFSS电磁分析 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com