流体模拟是在现代计算机游戏开发中生成逼真流体动画的计算机图形技术。本书解读了并不需要高深物理或数学知识就能开发丰富视觉特效的流体动画技术,讲述了如何通过计算机代码以有趣的方式创建如水、烟雾、火焰和爆炸等效果的流体动画。
书中介绍了驱动流体动画技术发展的众多概念,以及流体计算的历史背景,涵盖了许多研究领域,包括稳定的流体模拟、曲面流和流的控制。对有抱负的程序员来说,本书非常适合作为学习流体动画程序开发的起点。
展现流体动画的计算艺术,把高深莫测的流体计算拉下神坛!流体物理仿真领域泰斗、奥斯卡奖获得者教你真实再现灵动飘逸的影片级流体运动!
推荐序一
在计算机科学的各个分支中,恐怕只有计算机图形学(computer graphics)和如此多的、初看起来不相关的、领域跨度又很大的学科(如果将艺术也看作学科的话)密切相关。这里说的不是对其他领域的一般性的了解和交叉,而是需要深入理解或具有很深的造诣。
20世纪60年代,最初由波音公司的研究人员提出计算机图形学的名词时,指的是计算机生成图像(computer generated image)的技术,它涉及将三维工件投影到二维平面上的方法,用于计算机辅助设计。到20世纪80年代,越来越多的研究关注自然场景的逼真生成和显示(realistic image synthesis),这显然是受到快速发展的计算机仿真、计算机辅助训练、计算机动画、电影、广告、游戏、虚拟现实和增强现实等的需求影响。1974年开始的一年一度的ACM SIGGRAPH 学术会议成为最受关注的学术会议,每次都吸引上万人参加,会议上不断给出令人惊艳的计算机生成的图像,极大地促进了计算机图形学的发展,也使计算机图形学成功地应用于计算机动画、电影和游戏软件中。
要使计算机生成的图像能逼真漂亮地再现自然场景,尤其是动态的自然场景,需要对自然物体、光线传播、运动规律等建立准确的物理模型。最初的研究集中在物体建模,包括曲线和复杂曲面的建模、物体表面的光反射特性和纹理特性等。但当涉及动态物体尤其是非刚体如流体的视频图像合成时,就要涉及复杂的流体及流体与周围其他物体相互作用(如海浪拍打岩石)的动力学建模。
在本书作者Jos Stam在ACM SIGGRAPH’99上发布的“稳定流体”论文前,虽然许多电影特效中已经有一些流体的计算机合成,但或者是合成的图像不够“漂亮”和“真实”,或者在图像合成时需要大量的人工干预和制作时间。Jos Stam的论文及合成的流体运动图像震撼了计算机图形学界。Jos Stam的工作既基于他对流体动力学的深入理解,又根据艺术再现的需要对模型做出最恰当的简化,从而能方便地、全自动地“真实”再现一大批灵动飘逸的流体运动。Jos Stam的工作甚至可以在一般的手机上实现。他最近十多年来在流体的计算机仿真方面做了大量的工作,本书对此做了系统阐述,尽量避免过于理论化的数学描述,把一个在计算机图形学中最难实现的、作者原创的流体动画技术通俗完整地呈现给读者。
计算机图形学是计算机科学还是艺术?作者谦虚地说“功劳应该全部归功于那些在电影中创造视觉效果的艺术家,我们只是提供了作为工具的画笔而已”。但这种画笔和我们通常意义上的画笔太不一样了,它不仅把“颜料”刷到画布上,而且要使画出来的东西既是“美”的,又有“真实感”。也许,“真实”的就是美的,但也许,正如作者所说,“通常在计算机动画领域,我们的座右铭是:如果它看起来不错,那就很好”。“真实”指的是符合客观的物理规律,“看上去美”是人的主观意识。作者的工作给我们带来的启示之一就是:如何实现“真实”和“主观感受”间的折中,使计算机图形学既是计算机科学,又是一门艺术;使计算机图形学的研究者既是科学家,又是艺术家。
马颂德
2018年4月16日于北京
推荐序二
本书译者叶军涛博士邀请我为他和杨旭波教授共同翻译的这本书写几句话。首先祝贺如此精彩的书在他们的努力下与中国读者见面!
本书的原作者Jos Stam博士是流体物理仿真领域的泰斗级人物。由于我们在国内从事该课题研究也算起步较早,对他的工作自然比较关注。而真正能够感受到Jos Stam博士的学术造诣与人格魅力的还是来自与他两次印象深刻的直接接触与交流。第一次接触是2012年3月,在由新加坡南洋理工大学媒体创新研究所(IMI/NTU)主任Nadia Magnenat-Thalmann教授组织的《三维交互数字媒体》的专家讲座论坛上,我有幸与Jos Stam一起受到邀请,并在第一天早餐时与他巧遇而单独交谈。我们自然地聊起了他的研究工作,特别是他在SIGGRAPH’99上发表的Stable Fluids论文,这篇论文是该领域的开山之作。跟许多步入该领域的研究者一样,我们深深受惠于他的研究工作:我的研究生柳有权从21世纪初以此为基础开展了基于GPU的流体仿真研究,以大规模城市场景的任意边界流体实时仿真的成果参加了SIGGRAPH’04的“基于GPU通用计算”的开创性研讨会SIGGRAPH’04 GP2(后来称为GPGPU)。我亦代表柳有权受邀在日内瓦大学第17届CASA’04年会上做了大会特邀报告(机缘巧合,Jos Stam正是在日内瓦大学获得的学士学位)。然而当他谈起自己的这篇著名论文时,却令人惊愕地告诉我,该论文评审时只得了平均分2分左右。我大为惊诧,他却平静而面带微笑,未谈及其他的细节。我想那都不重要了,是金子总是要发光的,而且是在最耀眼的场合——有人慧眼识珠,那才是最重要的。
在那次讲座论坛上,Jos Stam博士没有讲他的流体仿真与动画艺术课题,而是谈了数字媒体中的一些数学问题与想法。虽然我听得一知半解,但仍能感受到他极其开阔的思路与创造性的思维,恰如阅读该书时所能领略到的开阔学术视野与睿智。Jos Stam人高马大,但无论何时他总是那么亲近平和,见不到不少大家所惯有的居高临下的傲气。我记得在讲座中,我讲的主题是仿真某些自然物体基于物理与生物的建模与演化,是对我们工作的照本宣科,Jos Stam从头到尾认真聆听,使我倍受感动与鼓舞。这种亲切与随和读者也可以从该书中深刻地感受到。
第二次接触与交流是在澳门的SIGGRAPH Asia 2016会议之后,Jos Stam受邀在澳门大学图形组访问了一天,做了学术报告并与我的学生进行座谈。其报告与本书密切相关,演示了他在Autodesk的MAYA软件中实现的精彩流体运动艺术以及介绍了相关软件的开发成果。在这方面,记得很多年前计算机艺术的第一次浪潮是基于分形几何与混沌集的数学公式生成各种奇幻图案与动画,但是其应用范围十分有限。以Jos Stam为代表的基于物理的流体动画艺术将物理/数学计算生成的艺术变成可交互控制的、具有高度真实感的视觉享受以及工业应用的典范,而演绎这种精彩之顶峰的正是像Jos Stam这样的大师。
书中穿插着众多的物理/数学界前辈的历史典故,妙趣横生,使读者在无穷乐趣中既欣赏到了艺术的画面,又学到了多方面的知识。令我印象最深刻的是介绍家喻户晓的达·芬奇,他不仅留下了千古名作《蒙娜丽莎》,而且作为流体计算的祖师爷之一留下了流体仿真的画面。他所绘制的三维流体流线画作,即使以今天的标准来看也是矢量场可视化的上乘佳作,实在叹为观止!
该书不仅对大众读者是难得的科技读物,而且对于该领域的专业读者来说也是难得的好书。全书并未追求数学的严谨与系统,却将流体动画的生成原理与物理/数学基础描述得相当清楚。初学者如果在学习那些满是公式的数理教科书之前先来读一读本书,一定受益匪浅。比如书中对于流体计算核心内容之一的Helmholtz-Hodge (HH) 理论的介绍,既通俗易懂而又点出了问题的实质:它完全跳过了流场散度与旋度的概念,避免初学者陷入雾障之中。
Jos Stam博士既是理论的杰出探索者,又是实实在在的实践者。他的研究工作,包括本书中展示的动画艺术,他常常既是设计者,又是编程实现者。这使我联想起我所熟知的图形学界的另外两位大师:Nelson Max 教授与 Nishita 教授。他们都是SIGGRAPH 成就奖的获得者,但是人过中年,仍然勤奋努力,亲自动手编程。他们是那种“既上得了殿堂,又下得了工房”的天才与杰出耕耘者,其勤奋与努力尤其让人钦佩!
Jos Stam在澳门大学访问的一天中,从报告到座谈忙碌了一整天,第二天还要赶往香港。最让我感动的是:直到下班他才告诉我,他的腿部有些伤走路不便,能否去药店买些药,于是我赶忙开车带他去药店购药。正值下班高峰时段,氹仔城区根本无法停车,开到药店时让他先下车购药,我则继续转圈再回来载他回宾馆。这一幕使我想起Jos Stam在他书中讲述的一个与他本人有关的诙谐故事:有专家质疑他在流体动画仿真中取消压力项的作法,他不无幽默地回答,那没有影响到流体动画的美观效果,而压力项只不过是一个拉格朗日乘子而已。在氹仔小城这个千万人车流动的流场中,每辆车顺流而动,恰恰是为了避免产生这个“拉格朗日乘子”。而无论它在局部是否产生,也都无关整个流场不可压缩特性的宏旨,不是吗?乐哈其成,如者斯也!
谨以此文向Jos Stam博士表达我的敬意与祝贺!
吴恩华
2018年5月18日
推荐序三
《流体动画的计算艺术》让程序员也变成艺术家。
本书的译者叶军涛博士邀请我给该书写一句推荐的话,以上是我的推荐语。
按说这样就完成任务了,但翻看这本书之后,我却欲罢不能。这本书勾起了我对计算机图形学发展历史的回忆。原著作者Jos Stam于1999年在洛杉矶召开的SIGGRAPH会议上作为唯一作者发表了题为《稳定流体》(Stable Fluids)的论文,他在报告中演示实时流体模拟,像太极大师一样让流体在投影屏上纵横飘逸,艳惊了现场观众。SIGGRAPH大会在当年有4万多人参加,技术“码农”和艺术“嬉皮”毫无违和感地聚集在一起,不失为视觉技术与艺术的狂欢节。1999年的SIGGRAPH大会是一个特别的事件,那年埋下了太多的种子,于技术、于人,但这不是我现在要说的。这里值得交代的是,Stam在6年后获得了图形学领域的最高奖,并于2005年和2008年两次获得奥斯卡技术奖。在电影里引人入胜的风暴、海浪、烟雾、爆炸十有八九是用计算机模拟的,而这些很有可能和Stam的技术有关。
那年我博士答辩,之后去临近的纽约大学库朗数学所(Courant Institute of Mathematical Sciences)做博士后。库朗数学所在数值模拟领域有一批世界顶级的学者。合作导师让我尝试流体模拟方面的研究,我其实有点为难。我之前的研究课题是数据可视化,很多可视化的数据来自科学模拟计算不假,但数据往往由其他领域的合作科学家提供。硬着头皮,我开始阅读这方面的文章,也和库朗数学所的教授和博士生交流,我很快得到的结论是,这个领域水太深了!一篇博士论文,可能只是对一个已知的流体现象改变边界条件。作为门外汉的我,对这个领域立马充满了敬畏。但听了Jos Stam在SIGGRAPH 上的报告之后,感觉流体计算这一高深的领域,在他那里似乎变得那么简单,甚至好玩。我便开始尝试他的方法并和他进行邮件交流。我这个门外汉就这样很快地也实现了他神奇的“稳定流体”,但采用不同的程序语言并嵌入了库朗的“秘密”插件。这是Jos所倡导的,换一种语言实现,能帮助你真正理解算法的内涵。
但Jos在书里自称门外汉,这是Jos特殊的表达方式,并不是为了表示谦虚,其实反映了他对传统方法的一种挑战。他把高深莫测的流体计算拉下“神坛”,让其返璞归真,这源于他对数学方法的透彻理解。针对计算机动画的现实需求,他能有创意地设计最轻便的求解方案,甚至能在苹果手机上实现实时流体模拟计算。这本书充满了这样的创意,包括对问题的描述和解释,也体现了Jos特有的幽默,书中有不少幽默但充满哲理的句子。如果你和Jos熟识,读着那些句子会发笑。
Jos自称叛逆者,这个我同意,只是他不是一般意义上的叛逆者。他不迷信那些花哨的东西,他很较真,绝对不追逐哗众取宠的东西。他毕业于多伦多大学。Geffory Hinton(深度学习奠基人,人工智能领域的三巨头之一)也是那所大学的教授,看来多伦多这个寒冷的地方盛产顶级学者。
我们现在处在一个信息极为发达的时代,热点形成和传播都很快。每天网络上充满了爆炸性新闻,媒体配合产业的发展把技术革新变成了T台上的时装走秀,一场发布会便诞生了一代新的“神”科技,把科学家变成摇滚明星。Jos这样的学者永远不会愿意成为摇滚明星,尽管他的打扮有些像。现在深度学习大行其道,学生们趋之若鹜地贴深度学习的标签,寄希望于用数据去学习而不是自己真正理解问题的本源和规则。这些同学应该好好读读这本书,即使你不做这方面的研究。Jos总是讲一些大实话:你可以糊弄你的同事和朋友,但糊弄不了计算机。
最后,中国在计算机图形学研究方面,做物理模拟研究的人还太少。去年成立的北京电影学院未来影像高精尖创新中心成立了专门小组开始这方面的研究,希望有更多的学生加入这方面的研究中来。在中国有Jos这样的数学头脑的人不罕见,但同时具备他的艺术头脑的人可能就寥寥无几了。读这本书的收益之一是让你能体会到这两者是如何和谐地结合在一起的。
在2017年的最后一天写这篇序,正好作为迈向2018年的自我告诫,stay cool!像那位两米高的巨人那样。而且,2018年肯定请他来交流一下,前提是,他坐着,我站着。
陈宝权
2017年12月31日于青岛
译者序一
一提到“计算流体力学”这个词,即使是理工科专业背景的人,首先想到的往往是含混晦涩的偏微分方程,或者一尘不染的超算中心,这看似很高的门槛曾让很多技术爱好者虽有热情也只能望而却步、敬而远之。然而不管你是否注意到,计算流体力学已经走进了我们的日常生活,大到投巨资制作的电影,小到手机中的视频游戏,逼真的流体特效越来越常见。这很大程度上得益于最新的流体动画生成技术,而在这方面,Jos Stam博士做了开拓性工作。Stam博士将自己的这段科研经历整理成The Art of Fluid Animation一书,我们将这不可多得的入门级教程的英文原著翻译成中文,取名《流体动画的计算艺术》,以飨读者。
Stam博士是一个身高超过两米的大个子,即使在有数万人参会的SIGGRAPH会场你也无法忽视他的存在;而更令人无法忽视的是他在计算机图形学领域的成就,他是图形学发展史上的一座丰碑。由于在细分曲面和流体模拟方面的贡献,他曾获SIGGRAPH计算机图形学成就奖及两度奥斯卡技术成就奖。他在十几年前播下的那颗流体动画的种子已经成长为参天大树,如今有成千上万的人在从事流体动画相关工作,创造出了电影中炫酷吸睛的流体特效。除了上述两项成就之外,Jos(/j.:s/,对,发音听起来像“钥匙”)后来又攻坚另一个难题——布料模拟,他为MAYA软件研发的Nucleus求解器被众多电影工作室用来生成服装动画特效(我认为这项成就应该为他赢取第三尊奥斯卡小金人)。Jos在全球有众多粉丝,他也曾数次来到中国,除了参加学术会议和与Autodesk(中国)进行工作沟通外,还曾作为SIGGRAPH的特使在深圳与多家当地动漫公司进行互动交流。他对中国文化和文字有着浓厚的兴趣,还为自己起了中文名字叫“尤士丹”。
本书用通俗易懂的语言讲解了流体力学的本质,并试图教会程序员写出第一个流体模拟的程序。Stam著书时坚持的一条原则就是“以非数学的语言来描述数学原理”。本书的前半部分更像是一部简要数学史,很多读者耳熟能详的数学家依次出场,述说着他们对流体计算的直接或间接贡献。透过历史的画卷,流体动画技术中的众多概念被深入浅出地做了解释。读过之后你会发现掌握流体动画技术其实并不需要高深的物理或数学技能。本书后半部分主要阐述了如何通过计算机代码以有趣的方式创建流体动画,如水、烟、火和爆炸效果等。书中的很多内容是Stam在世界各地做报告时针对听众所提问题的解答、阐述以及后续思考。本书包含了计算机代码,除了供读者运行外,更是为了鼓励读者对书中描述的流体技术做进一步扩展。对有抱负的程序员来说,这些代码只是创建自己的流体动画程序的一个起点。本书的定位是普及型读物而不是学术型专著,我们希望更多对计算机动画技术感兴趣的大学生甚至中学生成为本书的读者。当然,对于专业从事流体模拟的研究人员来说,阅读本书可以带你体验作者当年完成这项开拓性工作的心路历程。
2015年秋天,Pacific Graphics会议在清华大学举行,Stam是程序委员会的主席。那时The Art of Fluid Animation一书刚刚定稿但尚未开印,他身穿一件胸前印有本书封面图案的黑色T恤为自己的新书做宣传。2016年夏天,我借到加拿大旅行之机顺便访问了在多伦多的Autodesk公司分部,获得Jos的赠书,期间谈到中国有众多流体动画的爱好者,应该使他们能以更低的成本获得本书。在我就引进影印版版权的事宜跟国内出版社咨询后,得知目前存在诸多障碍,无奈之下只好考虑翻译这条路。由于该书语言优美,轻松幽默,口语化风格犹如Jos在娓娓道来,我认为翻译后的效果恐怕要打折扣,因此迟迟未下决心。上海交通大学的杨旭波教授得知此事后表示愿意参与翻译工作,这是我求之不得的。杨老师在流体动画领域深耕多年颇有建树,有他坐镇把关我便不再忐忑。在翻译过程中,译者跟Jos进行了多次邮件往来,力求精确翻译每个微妙的表达,也发现并更正了原文的几处错误。鉴于原文中众多的口语化英语和夹杂的法语与意大利语、中外文化差异以及译者的理解水平,恐难原汁原味地传递原文的本意,不足之处敬请广大读者批评指正。
中国科学院自动化研究所的研究生陈岚和上海交通大学的研究生张锐参与了本书的翻译工作。马颂德研究员、吴恩华教授、陈宝权教授为本书倾情作序,傅红波教授、李维博士和许铭俊先生等人鼎力推荐,使本书增色不少。在此对他们表示衷心感谢。最后要感谢电子工业出版社,在行业普遍追求经济效益的大气候下,牢记自己的社会责任,为传播知识而支持了本书的出版。
叶军涛
2018年5月2日于北京
译者序二
2016年12月初,我在澳门参加ACM SIGGRAPH Asia大会,带了两名博士生去听流体动画论文报告,见到了两米高的分会主席Jos Stam。和他的身高一样,Jos的技术成就也令人难以望其项背。Jos是ACM SIGGRAPH计算机图形学成就奖得主,并两次获得奥斯卡技术成就奖,他是流体动画的开拓者和大师级先驱,他1999年在SIGGRAPH上发表的Stable Fluids一文,是流体动画研究者必读的经典开山之作。
在主持报告结束之后,巨人Jos手持小小的平板电脑,热切地向我推荐了他呕心沥血写成的一本新书The Art of Fluid Animation,希望有更多中国读者能读到他的书。中国科学院自动化所的叶军涛老师也在场,邀请我一起将这本书翻译成中文。我翻看了一下这本书的英文原著,欲罢不能,遂欣然应允。于是,前后花了一年时间,和叶老师共同负责并由张锐等同学协助,完成了这本书的中文翻译,并定名为《流体动画的计算艺术》。
烟雾、水等流体的飘逸灵动是自然界十分令人着迷的现象,也是很多科学家和艺术家所青睐的研究对象,如何用计算机去表现流体动画是人们孜孜以求的目标之一,但流体动画背后的物理、数学和计算原理又常让人感觉深奥莫测、望而却步。
Jos的书揭开了这一神秘面纱,从其个人视角写了一本引领读者进入流体动画领域的科普作品和技术史话。在书中,Jos以诙谐幽默的口吻,对流体动画的相关人物、历史和技术发展娓娓道来,如数家珍,向我们展现了计算机、数学、物理和艺术是如何巧妙地融合在一起,最后绘制出绚丽动人的流体动画效果的。这本书很适合因被流体艺术所吸引登堂入室,且对数学、物理、计算、编程有浓厚兴趣的读者阅读。本书围绕着流体动画的计算艺术,讲述了一个个让人难忘的故事。
希望这本书能给大家带来一段愉悦的科学和艺术之旅,领略到流体动画的计算之美和编程之美。
是为序。
杨旭波
2018年1月1日于上海