VR/AR背后的弄潮儿(3):微分几何之曲面映射理论
顾险峰 (纽约州立大学石溪分校终身教授,清华大学丘成桐数学科学中心访问教授,计算共形几何创始人)
VR/AR的应用往往需要更快更逼真的实时渲染,这只能仰仗功能强大的图形处理单元(GPU)。更进一步,动画渲染的质量在很大程度上取决于像素渲染器(Pixel Shader)的纹理贴图功能(Texture Mapping)。Pixel Shader和Texture Mapping技术需要将曲面映射到平面区域,同时尽量减小映射带来的几何畸变。微分几何中曲面映射理论为这些技术提供了坚实的基础,指明了算法的发展方向。
GPU的 Pixel Shader 之父
2016年5月27日,老顾有幸见到了一位高科技领域的传奇人物―― 彭亮 博士。彭博士师从国际著名计算机图形学领域的奠基人,Radiosity渲染算法的发明人――康奈尔大学的Greenberg教授。后来彭博士入职英伟达(nVidia),一次和Pixar科学家们交流的头脑风暴激发了他的灵感,产生了 像素渲染系统(pixel shader) 的想法。在与英伟达同事的合作下,彭博士发明了图形处理器(GPU)中像素渲染系统(pixel shader)。从概念的提出到体系结构的设计,彭博士都是核心团队中的真正灵魂人物。可以毫不夸张地讲,彭亮博士是GPU的Pixel Shader之父,历史上他首次将可编程架构引入图形处理器像素渲染系统!
所有做计算机图形学的学者都清楚地知道Pixel Shader这一发明对于计算机图形学革命性的意义。如果没有GPU,没有Pixel Shader,那么现代意义下的电子游戏工业、动漫动画电影工业、VR/AR工业都将不复存在。今天,每时每刻,在地球的每个角落都有年轻人在打电子游戏,绚丽奇诡的画面都是由Pixel Shader 动态生成的。自从有了Shader Model(包括Vertex Shader和Pixel Shader)之后,图形卡便被正式叫做GPU。之后他又数次代表团队参与同微软的合作,将Shader Model引入到D3D的API中立下汗马功劳。这样能让Windows的每一个使用者都享受到Pixel Shader带来的物理逼真的渲染体验。正是在这之后,图形处理器GPU的提法开始普遍被人接受了。
这个奠基工作不仅是GPU史上的一个里程碑,而且还为以后基于GPU的大规模的并行计算领域GPGPU(General Purpose GPU)的发展,甚至当今热门的人工智能深度学习的巨大发展做了坚实的铺垫。彭博士非常谦虚而低调,直至在无意闲聊中偶然提到他的成就,让老顾惊喜交加,无比钦佩。
从历史上来看,彭博士发明的Pixel Shader促进了“计算共形几何”这一新兴领域的诞生和发展。从而在2000年左右,GPU的出现,特别是Pixel Shader的发明,使得工业界对于离散曲面参数化技术的需求变得极其迫切。在计算机中,曲面的信息被分解成两部分,分别用不同的数据结构来表示:曲面的几何信息被表示成三维的离散多面体网格,我们称之为三角网格;曲面表面的颜色纹理、局部的皱褶、物理光学反射特性都被表示成二维的图像,我们称之为纹理图像。参数化算法将三维网格展开到二维图像平面上,也可以被视作把二维图像粘贴到三维网格上面。Pixel Shader将三维网格曲面逐点画到屏幕上,每点的颜色由其几何位置和对应的纹理信息共同决定。参数化为Pixel Shader提供了寻址手段。
传统的计算机图形学大量使用线性代数,特别是矩阵求逆和特征分解。但是参数化需要大量微分几何的知识。正因为Pixel Shader的发明,使得工业界对参数化技术提出要求,这使得微分几何开始在图形学领域粉墨登场。
那个时代,老顾正在攻读博士。在SIGGRAPH的会议上,老顾得知法国计算机科学家应用保角变换来参数化曲面。但是当时的算法只能处理拓扑简单的曲面,换言之,具有一条边界的拓扑圆盘。众所周知,陈省身大师是整体微分几何之父(Father of Differential Geometry in Large),在他之前的微分几何只能处理拓扑圆盘曲面,他将局域微分几何和代数拓扑相融合,创立了整体微分几何。作为陈先生的徒孙,老顾敏锐地意识到应该存在全局参数化方法。恰如法国科学家对于起源于法国数学家蒙日的最优传输理论具有强烈的民族自豪感,中国学者对于整体微分几何也有责无旁贷的使命感。老顾在计算机上将一张人脸用黎曼映照保角地映到平面圆盘上,然后显示给丘成桐先生并向丘先生求教。丘先生异常激动,因为复几何一直是丘先生的终生挚爱,这是他头一次看到复几何的理论能够转换成实际的算法,并在计算机上得以实现。他不加思索地告诉老顾,全局参数化的算法应该可以被实现,其理论基础在于黎曼面理论和共形几何。在那个阳光灿烂的日子,在遍地枫叶的哈佛校园,计算共形几何正式诞生。
纹理贴图
在计算机图形学中,曲面参数化是指将曲面映射到平面区域,为曲面指定一个参数的过程。如图1所示,三维人脸曲面被映射到平面圆盘之上。
图1 曲面参数化
纹理贴图 是将平面纹理图像借助参数化贴到三维曲面之上的技术,渲染的视觉效果既依赖于曲面的几何也依赖于纹理图像。如图2所示,相较灰度纹理而言,彩色纹理得到的渲染效果更具有视觉冲击力。
图2 借助曲面参数化的纹理贴图技术
纹理贴图技术也可以用于表示曲面的法向量信息,如图3所示。怪兽的曲面被映射到单位圆盘上面,曲面每点的法向量用伪彩色表示成一幅图像,被称为是曲面的法向量图(normal map)。Normal map在动画游戏中具有至关重要的作用。
图3 曲面的normal map
图4 具有几何细节的曲面
如图4所示,老人的面部曲面具有繁复的几何细节,这些细节都是用大量三角面片描绘而成(简称为高模曲面)。GPU的渲染速度反比于三角面片的个数,因此这种曲面无法在游戏中直接使用。通常,人们将曲面简化以降低三角面片个数(简称为低模曲面),提高渲染速度,同时将原始曲面的法向量存入normal map,用简化的网格加上normal map来渲染。如果GPU的pixel shader功能强大,那么这种技术解决方式可以达到高质量高速度的实时渲染效果。
图5 曲面normal map的渲染效果
如图5所示,左帧是扫描的原始曲面,具有四百万三角面片的高模曲面;中帧是简化后的低模曲面,只有500个三角面片;右帧是用简化的低模曲面加上原始高模曲面生成的normal map渲染得到的效果。我们看到曲面的几何细节被精确保留。因此,Normal map可以用于增强简单曲面的局部细节。
现代的GPU支持纹理贴图的压缩算法,彭亮博士对其中S3TC算法实现也有所贡献。
曲面映射理论
曲面间的映射非常复杂,基于对这一问题不同层面的考察,微分几何领域建立了许多领域,彼此之间的关系也错综复杂。在计算机科学领域,已经被应用了的微分几何中曲面映射理论包括:调和映照、共形映射、拟共形映射、最优传输理论等,所用的工具更加五花八门,有坚实理论基础的包括流场的李导数、微分形式的Hodge分解、里奇曲率流、非线性凸优化等等。这些方法各有千秋,无法彼此取代,而是根据实际应用,选择不同的方法。
给定两个带有黎曼度量的曲面,它们之间的映射记为。考察源曲面上的一条曲线,它被映成目标曲面上的一条曲线,我们定义推前切向量如下:
,
由此,我们可以定义 拉回度量 如下:假设给定两个切向量,则, 那么映射诱导的拉回度量给出的内积满足
。
如果映射保持度量,换言之保持测地距离,,则映射被称为是 等距变换 。例如我们把一张纸蜷成一个圆筒,就是等距变换。等距变换保持高斯曲率不变。一般的映射不可避免地会带来一些畸变。主要的畸变有两类:角度畸变和面积(面元)畸变。我们可以保持角度,或者保持面元,如果同时既保角又保面元,则映射必为等距变换。如果拉回度量和初始度量彼此相差一个标量函数,,则映射是 保角变换 。如果拉回度量和初始度量具有相同的行列式,,则映射是 保面元的映射 。
图6 保角变换
图6显示的是从女孩人脸曲面到平面单位圆盘间的保角变换。这种变换保持局部形状不变,把曲面上的无穷小圆映成平面上的无穷小圆。这种变换有无穷多种,并且构成一个群,但是这个群是有限维的,因此容易控制。
图7 保面元变换
图7显示的是从女孩人脸曲面到平面单位圆盘间的保面元变换。这种变换保持局部面积不变,把曲面上的无穷小椭圆映成平面上的无穷小圆。这种变换有无穷多种,并且构成一个群,但是这个群是无穷维的。
保角变换的计算方法很多,有线性方法和非线性方法,在工业界中被广泛采用。保面元的方法主要是基于流体力学的李导数方法和最优传输映射,这些方法都是非线性方法。目前,工业界还没有开始使用。
图8 怪兽模型
图9 保角变换和保面积变换
图8和图9显示了怪兽模型的保角变换和保面积变换。我们看到保角变换有时会使得面积变化率过大,整个翅膀收缩到只有几个像素的大小,这会使得纹理贴图的渲染效果受到严重损害。相反的,保面积映射严格保持面元,因此渲染质量会得以保证。在纹理贴图应用中,很多时候保面积变换比保角变换更为适用。
另一方面,利用保角变换,我们可以将三维曲面的三角剖分网格化转换到二维平面上。通常高质量的三角剖分由Delaunay剖分算法得到,Delaunay三角剖分的最主要特征就是极大化剖分的最小内角。因此,保角变换保持Delaunay三角剖分。在网格生成应用中,保角变换比保面积更为适用。
图10 佛像模型,中间是局部参数化方法,右侧是全局参数化方法。
图11 单值化定理
目前在工业界,大多数参数化方法依然是局部方法,就是将整个曲面切成许多碎片,每个碎片是拓扑圆盘。然后将每个碎片保角映射到单位圆盘。这种方法可以减小面积畸变,但是代价就是碎片的边界极不规则,难以拼接。我们可以基于单值化定理来计算曲面整体的参数化,省去切割和拼接的步骤。这对于曲面注册等计算机视觉方面的应用是至关重要的。单值化的计算最为强有力的算法是Ricci 曲率流:
这里是曲面的欧拉示性数,是初始曲面总面积。Hamilton的理论保证这种Ricci曲率流收敛到常值曲率。保面元映射最终可以归结为求解蒙日安培方程:
。
这些方法最终都归结为几何凸优化问题,传统的有限元方法无法求解,必须发展新型的离散算法。这些算法的发明严重依赖于对于这些问题的几何洞察。
总结
VR/AR的应用依赖于快速的GPU硬件,GPU中的Pixel Shader依赖于曲面参数化技术,而曲面参数化归结为计算曲面间的映射。曲面间的映射有两个极端,保角变换和保面元变换,需要求解非线性几何偏微分方程。传统的方法对此无能为力,基于内在的几何洞察,在学术层面上现在这些问题已经解决,但是工业界还停留在使用相对原始的方法,没有及时跟进。我们相信,在不久的将来,依随VR/AR技术的蓬勃发展,这些基于现代几何的算法会被广泛应用。
后记
Pixel Shader之父彭博士和老顾以前虽未谋面,但是神交已久。两人坐在长岛岸边,面对夕阳大海,品尝着龙虾,感喟着人生。两人都在年轻的时候幸运地得到世外高人的垂青,奠定了坚实的专业基础;在职业发展的过程中,博采众长,掌握了某些方面的绝技;都在风华正茂的时候幸运地赶上了科技浪潮的澎湃汹涌;两人都遇到了图形学领域发展中的关键瓶颈,更为幸运的是他们都解决了这些问题。不同的是,彭博士在工业界,他的发明早已广泛传播,时刻造福着全人类;老顾留在学术界,不懈地奠定理论基础,他的发明依然没有广为人知。两人用不同的方式,表达了对自然,对数学,对工程由衷的热爱和终生的激情。希望他们的工作能够超越世俗和金钱,超越他们生活的时代,由恒久的历史来评判。
注:文本作者顾险峰教授将于2016年7~8月在清华大学丘成桐数学科学中心讲授《计算共形几何》课程,将会用计算机科学的语言诠释现代几何。课程免费公开,欢迎前来研习探讨,共同提高。详情请戳“ 阅读原文 ”。
延伸阅读
① VR/AR背后的弄潮儿(1):微分几何之逼近理论
② VR/AR背后的弄潮儿(2):微分几何之数据压缩理论
③ Magic Leap 核心技术揭秘
投稿、提供新闻线索、转载授权请联系: iscientists@126.com
商务合作事宜请联系: dll2004@163.com
更多精彩文章:您可以回复"年份+月份",如201510即可 获取月度文章, 或返回主页点击子菜单获取最新文章、往期文章或直达赛先生微博。谢谢!
微信号: iscientists