微积分的力量
上QQ阅读APP看书,第一时间看更新

从计算机动画到面部手术

阿基米德的遗产 Archimedes’s legacy: Rorres, Archimedes in the Twenty-First Century.直到今天仍然熠熠生辉。想想孩子们爱看的计算机动画电影 computer-animated movies: For the math behind computer-generated movies and video, see McAdams et al., “Crashing Waves.”,《怪物史莱克》、《海底总动员》和《玩具总动员》中的角色之所以看起来栩栩如生,部分原因在于它们体现了阿基米德的一个洞见:任何平滑表面都可以令人信服地用三角形来逼近。

我们使用的三角形越小和越多,逼近效果就越好。正如阿基米德用无穷多个三角形碎片来代表光滑的抛物线弓形,今天梦工厂的动画师用几万个多边形创造出史莱克 Shrek: DreamWorks, “Why Computer Animation Looks So Darn Real,” July 9, 2012, https://mashable.com/2012/07/09/animation-history-tech/#uYHyf6hO.Zq3.圆滚滚的肚子和可爱的喇叭状小耳朵。在创作史莱克与当地暴徒搏斗的场景时,每一帧都要用到不少于4 500万个多边形 forty-five million polygons: Shrek, production information, http://cinema.com/articles/463/shrek-production-information.phtml.。但在成片中,它们又毫无踪迹可寻。正如无穷原则教给我们的那样,有直边和尖角的形状可以模拟光滑的曲线形状。

近10年后,也就是2009年《阿凡达》 Avatar: “NVIDIA Collaborates with Weta to Accelerate Visual Effects for Avatar,” http://www.nvidia.com/object/wetadigital avatar.html, and Barbara Robertson, “How Weta Digital Handled Avatar,” Studio Daily, January 5, 2010, http://www.studiodaily.com/2010/01/how-weta-digital-handled-avatar/.上映时,它使用的多边形层级甚至多到了“奢侈”的程度。在导演詹姆斯·卡梅隆的坚持下,对于虚构的潘多拉星球上的每一株植物,动画师都使用了大约100万个多边形。考虑到影片发生在一片草木茂盛的虚拟丛林中,这意味着有许许多多的植物,以及需要使用海量的多边形。难怪《阿凡达》的制作成本高达3亿美元,它可是第一部使用了数十亿个多边形的电影。 first movie to use polygons by the billions: “NVIDIA Collaborates with Weta.”

相比《阿凡达》,最早用计算机制作的电影使用的多边形则少得多。尽管如此,计算量在当时看来也是十分惊人的。以1995年上映的《玩具总动员》 Toy Story: Burr Snider, “The Toy Story Story,” Wired, December 1, 1995, https://www.wired.com/1995/12/toy-story/.为例。那时候,一位动画师要花一周的时间来同步一个8秒的镜头。整部电影花了4年的时间才全部制作完成,其中计算机制作的时间长达80万个小时。正如皮克斯公司的联合创始人史蒂夫·乔布斯对《连线》杂志说的那样:“在电影史上,参与制作这部电影的博士人数比其他任何一部电影都多。” “more PhDs working on this film”: Ibid.

《玩具总动员》上映后不久,《棋逢敌手》 Geri’s Game: Ian Failes, “‘Geri’s Game’ Turns 20: Director Jan Pinkava Reflects on the Game-Changing Pixar Short,” November 25, 2017, https://www.cartoonbrew.com/cgi/geris-game-turns-20-director-jan-pinkava-reflects-game-changing-pixar-short-154646.html.The movie is on YouTube at https://www.youtube.com/watch?v=gLQG3sORAJQ (original soundtrack) and https://www.youtube.com/watch?v=9IYRC7g2ICg (modified soundtrack).就接踵而至,这是第一部以人类为主角的计算机动画电影。这部有趣而悲伤的影片讲述了一位孤独的老人在公园里跟自己下棋的故事,它获得了1998年的奥斯卡最佳动画短片奖。

和计算机制作的其他角色一样,《棋逢敌手》的主人公格里也是由有角的形状构成的。皮克斯公司的动画师用一个复杂的多面体来塑造格里的头部,这个多面体是三维宝石状的,包含大约4 500个角,角与角之间是平面。动画师通过反复分割这些平面,进行越来越多的细节刻画。与以前的方法相比,这种细分过程 subdivision process: DeRose et al., “Subdivision Surfaces.” Explore subdivision surfaces for computer animation interactively at Khan Academy in collaboration with Pixar at https://www.khanacademy.org/partner-content/pixar/modeling-character.Students and their teachers might also enjoy trying the other lessons offered in “Pixar in a Box,” a “behind-the-scenes look at how Pixar artists do their jobs,” at https://www.khanacademy.org/partner-content/pixar.It’s a great way to see how math is being used to make movies these days.占用的计算机内存要少得多,从而大大提升了动画制作的效率。当时,这是计算机动画的一次革命性进步,但实质上,它继承了阿基米德的思想和方法。回想一下,为了估算圆周率,阿基米德先从一个六边形着手,然后分割它的每一条边,并将这些边的中点外推到圆上,形成一个12边形。经过又一次分割,12边形变成了24边形,然后是48边形,最后是96边形,每一次都越来越接近目标——极限圆。同样地,创造格里的动画师也是通过反复分割一个多面体,去逼真地模拟他那布满皱纹的额头、隆起的大鼻子和颈部的皮肤褶皱。通过足够多次地重复这个过程,他们就可以使格里的样子符合他的角色设定,即一个能够传递各种人类情感的木偶般的形象。

几年后,皮克斯的竞争对手梦工厂在现实主义和情感表达方面又向前迈出了好几步,讲述了一个关于臭烘烘、脾气暴躁但很英勇的怪物史莱克的故事。

虽然史莱克并不存在于计算机之外的现实世界中,但它似乎就是一个活生生的人,部分原因在于动画师非常用心地再现了人体解剖结构。在史莱克的虚拟皮肤之下,他们建构了虚拟的肌肉、脂肪、骨骼和关节。一切都如此地忠于事实,以至于当史莱克开口说话时,它脖子上的皮肤会形成一个双下巴 double chin: DreamWorks, “Why Computer Animation Looks So Darn Real.” facial surgery: Deuflhard et al., “Mathematics in Facial Surgery”; Zachow et al., “Computer-Assisted Planning”; and Zachow, “Computational Planning.”

还有一个领域能证明阿基米德的多边形逼近理念的有效性,那就是为有严重覆、下颌骨错位或其他先天性畸形的患者施行的面部手术。2006年,德国应用数学家彼得·杜夫哈德、马丁·维泽尔和斯特凡·扎豪,报告了他们利用微积分和计算机建模来预测复杂的面部手术效果的相关研究结果。

这个团队做的第一项工作,就是绘制患者面部骨骼结构的精确示意图。为此,他们通过CT或MRI扫描得到患者面颅骨的三维结构信息,并据此建立起患者面部的计算机模型。这个模型不仅在几何学上是精确的,在生物力学上也是精准的,它包含了对皮肤和软组织(比如脂肪、肌肉、肌腱、韧带和血管)的材料特性的合理估计。在计算机模型的帮助下,外科医生可以给虚拟病人做手术,就像战斗机飞行员在飞行模拟器中强化飞行技能一样。面部、下颌和头颅的虚拟骨骼都可以被切割、置换、加强或者完全移除,而计算机可以算出为应对新的骨骼结构产生的压力,面部背后的虚拟软组织应该如何移动和重构。

这类模拟结果在很多方面都大有帮助。它们会提醒外科医生注意手术有可能对脆弱结构造成的不利影响,比如神经、血管和牙根等。它们也会展示出患者术后的样子,因为这个模型可以对患者痊愈后软组织的重置情况做出预测。它们还有一个优点:外科医生可以根据模拟结果为实际的手术做更充分的准备,患者也可以更理智地决定是否接受手术。

当研究人员用大量的三角形为颅骨的平滑二维表面建模时,阿基米德方法就开始起作用了。然而,软组织的几何结构非常复杂。和颅骨不同,软组织形成了全三维体积,它填充了颅骨之前和面部皮肤之后的复杂空间。于是,研究团队使用了几十万个四面体(三角形的三维对应体)来代表软组织。在图2–26中,颅骨表面使用了25万个三角形(它们太小了,根本看不清),而软组织则使用了65万个四面体。

图2-26

这些四面体可以帮助研究人员预测出患者的软组织在术后会如何变形。粗略地讲,软组织是一种可变形但有弹力的材料,有点儿像橡胶或弹力纤维。如果你捏自己的脸颊,它会变形;而当你松开手时,它又会恢复正常。自19世纪起,数学家和工程师就开始利用微积分为不同材料建模,研究当这些材料以各种方式被推挤、拉拽或剪切时,它们会如何伸展、弯曲和扭曲。这种理论在工程学的一些更传统的领域中得到了极大的发展,被用于分析桥梁、建筑物、飞机机翼和很多其他由钢、混凝土、铝等硬质材料构建的结构中的应力与应变。三位德国的研究人员将这种传统方法应用于软组织,并且发现它的效果很好,对外科医生和患者来说都有价值。

他们的基本思路是:把软组织想象成由四面体相互连接而成的网状物,这些四面体就像用弹性线串起来的珠子,每个珠子都代表很小的一部分软组织。它们的连接之所以有弹性,是因为软组织中的原子和分子其实是由化学键连接在一起的。化学键要抵抗拉伸和压缩,这种功能赋予了它们弹性。在虚拟手术中,外科医生切割虚拟面部中的骨头,并将一些骨段移到别处。当一块骨头被移至一个新位置时,它会拉拽与它相连的组织,而这些组织又会拉拽它们的邻近组织。由于级联效应,网状物会自我重构。当某些组织移动时,通过拉伸或压缩与邻近组织间的化学键,它们会改变对邻近组织施加的力。那些受影响的邻近组织也会自行重新调整,以此类推。记录所有的合力和移位是一项庞大的计算任务,只有计算机才能胜任。算法会逐步更新关于力的大量数据,并据此移动那些微小的四面体。最终,所有力都实现了平衡,组织也进入了新的平衡状态。这就是模型预测出的患者面部的新形状。

2006年,杜夫哈德、维泽尔和扎豪利用大约30个手术病例的临床结果,对模型的预测结果进行了检验,并发现它相当有效。作为其成功的标志之一,模型准确地(误差范围在1毫米以内)预测出患者70%的面部皮肤的位置,只有5%~10%的皮肤与它预测的术后位置的偏差超过3毫米。换句话说,这个模型是可信的,而且它显然比盲目猜测好得多。

图2–27展示的是一个患者手术前后的样貌。4幅小图分别是他在手术前的侧面轮廓(左1)、他在手术前的面部计算机模型(左2)、预测的手术结果(右2)和实际结果(右1)。看看手术前后他的下颌位,结果不言而喻。

图2-27