机械之心分析师网络
作者:李媛媛
编辑:H4O
随着2019年ACM 图灵奖授予盘算机图形学的两位学者Patrick M. Hanrahan和Edwin E. Catmull,人们也重新将眼光投向了 CGI 领域以及这一领域在印刷媒体、视频游戏、商业广告、互动多媒体等偏向上的应用。本文以时间为轴,以皮克斯影戏为重心,讲述了自上世纪50年月以来 CGI 的生长历程。
2019 ACM 图灵奖大奖出炉,最终花落盘算机图形学专家 Patrick M. Hanrahan 和 Edwin E. Catmull,以表彰他们在观点创新和软硬件方面的孝敬,以及对盘算机图形学所发生的根本性的影响。而上一次图灵奖颁给图形学领域的科学家,照样在 32 年前――1988 年盘算机图形学之父 Ivan Sutherland 依附其发现的 Sketchpad 而获得图灵奖。这种图形用户界面的早期版本直接影响了盘算机的用户交互方式,现在早已在小我私家盘算机中无处不在。它发现了一系列在今天的用户界面中被视为「基本操作」的功效:绘制水平线和垂直的线、将绘制的线组合成差别形状、调整图形巨细、旋转图形以及缩放窗口等。
本次获奖的 Patrick M. Hanrahan 和 Edwin E. Catmull,则从另一个角度深刻的改变了我们的生涯。作为皮克斯的首创人――Edwin E. Catmull 还曾是华特 ・ 迪士尼动漫事情室的总裁――他们的孝敬主要集中在从盘算机图形学生长出的电脑天生图像(Computer-generated imagery,CGI)手艺中,他们的研究成果展示了行使盘算机来绘制的故事影片能够如作甚影戏制作赋予新的灵感。
正如 Patrick M. Hanrahan 和 Edwin E. Catmull 自己的兴趣在影戏制作上,CGI 最广为人知的应用是在影视作品中缔造角色,又称「CGI 动画」,好比迪士尼动画影戏中的所有角色都是通过 CGI 手艺缔造出来的。但 CGI 在印刷媒体、视频游戏、商业广告、互动多媒体等偏向也有普遍应用,例如宜家 70% 以上的场景图都是在电脑中建模渲染完成的,而且 CGI 的商业应用还在呈逐年上升的趋势。若是我们跳出 CGI 的界说局限,进入它的父领域盘算机图形学(computer graphi,CG),那么应用该手艺的研究险些涉及到我们生涯中与盘算机有关的方方面面了,好比用户界面设计、渲染、光线跟踪、盘算机动画、3D 建模、着色器、GPU 设计等等。
为什么 CGI 应用云云普遍?直观来讲,CGI 的主要目的是提供足够真切的视觉效果。这种视觉效果,最直接的的作用就是提供更好的感官体验――好比用 CGI 手艺为电脑天生的图像加上一些「瑕疵」,使其更贴近我们在现实生涯观察到的形象。或者对一些纹理的渲染――毛发、皮肤、布料等,电脑直接天生的图像往往锐度过高而且不具有纹理。在一些现代医学治疗中,由于一些植入产物需要凭据患者的情形举行高度定制,CGI 已经成为制订手术设计的一部门,用以对患者的器官举行精准建模。类似地,行使 CGI 天生的 3D 修建模子比传统图纸更准确,而且可以提供交互式体验,从而为客户提供更好的概览,而且能够对细节、特殊的应用环境举行检测。由于交互式可视化可以动态展现数据,CGI 也可以允许用户从多个角度查看数据,好比对庞大机械结构的可视化。
在已往的半个世纪,CGI 以影戏行业为起点,简直悄然无息将其影响力扩散到了电子游戏行业和 VR、AR 等行业,包罗数据中央治理和人工智能在内的多个领域。在本文接下来的内容中,以皮克斯为中央,走过 CGI 半个世纪的生长,我们将看到 CGI 是若何从一些异常基础的应用,生长到今天这样的规模的。
1950 年月-1970 年月
这一阶段是 CGI 的首创生长期,一个「从无到有」的时期。
1958 年,阿尔弗雷德・希区柯克(Alfred Hitchcock)公布了首部应用 CGI 手艺的影戏 VERTIGO,在该片中,一个绿色的螺旋动画从一只眼睛中徐徐升起。这个「简朴」的特效,是天下上第一个盘算机动画。
影戏 VERTIGO 截图。泉源:youtube
在这一时代最主要的手艺之一当属由 N. Konstantinov 向导的一组苏联数学家和物理学家所研发的猫的运动的物理数学盘算模子。该算法是在 BESM-4 盘算机上编程的,使用时需要用盘算机打印出数百帧,以后再转换为胶片。他们使用的模子和其理论形成了今日动画影戏和盘算机游戏的基础手艺之一。
但整体来看,这十几年中有关 CGI 手艺 的研究寥若晨星,直到下一个十年的来临。
1970 年月-1980 年月
70 年月,Edwin E. Catmull 等大佬事情逐渐起步。那时照样犹他大学的学生的 Edwin E. Catmull 和 Fred Parke 互助,于 1972 年制作了天下上第一部 3D 多边形动画(polygonal 3D animation):A Computer AnimatedHand。这部动画模拟了他自己的左手,被视为 CGI 生长史上的 milestone 之一。
动画 A Computer Animated Hand 截图。泉源:youtube
1974 年,Fred Parke 在揭晓的论文中将他们的事情延伸到了人脸建模领域,这是天下上最早的高仿真人脸 3D 渲染作品之一。这两项事情最终于 1976 年搜集在了影戏 future world 中。由于 Edwin E. Catmull 和 Fred Parke 的卓越事情,犹他州立大学盘算机图形实验室吸引了来自各地的人,这些人随后散布在各行各业,缔造了许多我们意想不到的联络――好比慕名而来的约翰・沃诺克(John Warnock),他之后成立了 Adobe Systems。
影戏 future world 海报 泉源:https://en.wikipedia.org/w/index.php?curid=5819539
这一时期 CGI 手艺生长突飞猛进,大量现在使用的算法的雏形都在这一时期被缔造出来,而这之中,最主要的恐怕要数渲染(render)手艺在这一时期的突破了。在 CGI 手艺之中,一样平常在图像开端建立之后,就要举行渲染了,渲染效果将会直接决议模子与动画最终显示效果。简朴的来说,渲染涉及到若何将 3D 物体投射到 2D 图像中,并尽可能的符合在肉眼情形下我们会观察到的几何效果。
下图给出了一个简朴的例子――图左中,可以看到一组已经建模好的 3D 物体,每个物体的位置和形状都由几个极点界说,在这里极点之间仅简朴的通过直线毗邻,并形成了多个平面,以组成该物体的外面。很显然,在现实天下中,我们无法直接透视到物体被遮挡的部门。因此,渲染程序首先需要凭据界说好的视角来决议哪些外面可以被观察到、哪些则不能,也就是下图中所泛起的效果。随后,渲染程序可以在物体外面上举行着色,来进一步突出其外面纹理、物体位置等信息。在下图右中物体仅被填上了差别水平的灰色,没有涉及更多的步骤。在现实应用中,出于差别的目的,渲染程序可以将重点放在图像的差别特征上――为图片增添更厚实的色彩和亮度、为物体外面增添纹理、为物体外面增添凹凸升沉、模拟光照在差别环境(如雾)中散射的效果、增添阴影、增添反射、调整透明感、增添光的折射效应、模拟间接光源光照的效果、增添景深、运动模糊、不追求真实感而增强图像的艺术性等。
一个简朴的渲染示例 泉源:http://www.graphics.cornell.edu/online/tutorial/objrender/
更准确的界说的话,渲染是通过盘算机程序从 3D 模子天生 2D 图像。在这一界说中,模子是用语言或者数据结构举行严酷界说的三维物体或虚拟场景的形貌,它包罗几何、视点、纹理、照明和阴影等信息。如前文提到的,出于差别的目的,渲染程序可能会偏重差别的角度――被渲染物体自己的质感、纹理、透明度、真实感等。用盘算机语言来模拟这些历程,涉及到大量的几何原理、光学原理和数学盘算。皮克斯在今天的影戏动画中有云云主要的职位,很大水平上也源于他们在渲染领域中做出的突出孝敬。
那时,早期使用的光栅化渲染方式主要通过思量视角和被渲染物体之间的光线连线来确定物体在 2D 图像上的投影,但这种方式没有思量深度信息,因此无法确定重叠物体的遮挡情形。也就是说,在上例中,我们甚至无法完成从图左到图中的步骤。1974 年,Edwin E. Catmull 博士结业,在他的结业论文中,他形貌了深度缓冲算法(Z-buffering)用于治理盘算机图形学中图像深度坐标的方式。凭据他的算法,在举行物体渲染时,程序需要同时天生一个缓冲区用以保留天生的像素的深度。若是之后发现另一个物体所天生的像素与此有所重合,就凭据缓冲区中保留的深度举行选择,以到达较近的物体遮挡较远物体的效果。下图给出了深度缓冲算法图例。
深度缓冲算法图示(左):3D 场景(右):深度缓冲示意 图源:https://en.wikipedia.org/wiki/Z-buffering#/media/File:Z_buffer.svg
但带有深度的光栅化渲染方式仍然无法解决物体在光照下应该具有的反射、折射、阴影效果。几经生长后,1979 年,Turner Whitted 提出了极大影响了渲染手艺的光线追踪算法(ray tracing)。在这种算法中,当光线从视点发出并撞击到物体上时,会发生最多 3 种类型的光线:反射、折射和阴影。如下图所示,从相机发出的(红色)光线打到了球体上并发生了反射,若是反射光最终反射到了光源,凭据光线可逆原理,我们知道该光源可以照亮这个球体。而在球体的另一侧则处于阴影之中,由于在其和光源之间存在球体的其他部位,遮挡住了光源。
光线追踪图解 图源:https://upload.wikimedia.org/wikipedia/commons/8/83/Ray_trace_diagram.svg
光线追踪算法在今天也是一个十分活跃的研究领域,一个主要原因是光线追踪的盘算庞大度极高,一样平常都需要行使蒙特卡洛方式等求近似解。在游戏等产物上应用实时光线追踪直到几年前都是一个挑战,今年在英伟达 GTC GPU Technology Conference 上仍然有好几个 session 的主题是若何对光线追踪盘算举行加速。
1980 年月-2000 年月
从 80 年月最先,越来越多的影戏介入进了 CGI 手艺的使用中,其中今天我们耳熟能详的经典影戏多到令人目不暇接,这种繁荣在一定水平上也反哺了 CGI 手艺的生长。1982 年,在著名影戏星际迷航 II 中,「创世纪效应」(Genesis Effect)大放异彩――在影戏中,Carol Marcus 博士解释道创世纪项目是一种盘算机模拟的项目,旨在将不宜居住的天下转化或重塑为郁郁葱葱的天堂。
为在影戏中实现这种视觉效应,影戏首次使用了那时还在卢卡斯影业旗下的皮克斯缔造的 32 位 RGBA 绘画软件,并使用了分形天生的景观(fractal-generated landscape)和颗粒效果举行渲染。实在在那时,勇于应用 CGI 手艺的影戏除了科幻片以外,另有许多恐怖片――这倒也很合理,究竟这两者都需要厚实的想象力,需要缔造更多的「异形」,只不过那时使用 CGI 拍摄的恐怖影戏中流传到今天成为经典的较少。
影戏著名影戏星际迷航 II 中「创世纪效应」截图 图源:https://www.youtube.com/watch?v=QXbWCrzWJo4
光线追踪算法的提出,使 CGI 天生图像的真实感大大增添,由于它本质上是在试图模拟自然界中光线流传的历程。在此基础上,为了更进一步增强 CGI 天生的某些类型的图像的真实感,Hanrahan 于 1988 年提出了立体渲染手艺(volume rendering)。其背后的头脑主要是在自然界中有一些物质自己就是以一定体积存在的――如云、火、雾――用前文提到的那些几何渲染方式很难取得真切的效果。立体渲染手艺仍然致力于若何将 3D 物体投射到 2D 图像中,但更关注若何在体素(voxel)而非像素(pixel)水平上实现这种渲染,以及若何保证物体纹理质感的泛起,好比天生一副伤口的图像需要关注若何真实的示意肌肉的走向、纹理等。
1993 年,Hanrahan 还开发了行使次外面散射(subsurface scattering)描绘皮肤和头发、行使蒙特卡罗光线追踪来渲染庞大照明效果的手艺。次外面散射模拟的是光在穿透半透明物体时以不规则的角度在物体内部反射多次,然后再从差别角度脱离物体外面的效果。这种征象在大理石、皮肤、蜡等类型的材质上异常常见,因此要真切的渲染这种质料,首先必须模拟光的这种流传机制,下图左中给出了一个现实生涯中的例子――当光穿透手指时,会发生一种半透明、光明、毛茸茸的质感,图右则给出了盘算机凭据次外面散射算法渲染的图像。
人手的次外面散射征象。图源:By Davepoo2014 - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=39205630
盘算机渲染的次外面散射征象图源:By Piotrek Chwa a - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=7615927
也是在这一时期,3D 建模手艺最先初露头角。通过专用软件在三个维度上举行数学示意,3D 建模可以对被建模工具的任何外面举行建模。具体来说,3D 模子使用 3D 空间中的点聚集示意实体,点与点之间由三角形、直线(Polygonal modeling)、曲面(Curve modeling)等举行毗邻。这个点集可以由使用者手动建立、凭据已有算法建立、或者通过扫描实体建立。开端建模完成后,再通过纹理映射(texture mapping)手艺,对建模的物体外面举行优化。纹理映射――又是 Edwin E. Catmull 对 CGI 领域一个主要孝敬,由他在自己的博士论文中最早提出――主要是为物体外面着色的一种方式。
现实天下中的物体一样平常都具有异常厚实的颜色,即便是玄色的物体也不可能具有统一的玄色,要令电脑天生的图像足够真切,为图像上的物体添加这些多样的颜色必不可少,有无纹理的物体对比见下图所示。然而,若是程序要为图像中的每一个像素制订颜色,效率就太低了。纹理映射要做的,简朴来说,就是找到选择一个纹理/图像,然后将它「贴」到图像中制订的物体上。
图(1)没有纹理的 3D 模子(2)有纹理的 3D 模子图源:By Anynobody - Own work, CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=3441137
立体渲染手艺 3D 建模 纹理映射,为影戏业带来了新的革命。1995 年,皮克斯(首映影戏)与迪斯尼制片厂互助制作出了玩具总动员,这无疑也是对 CGI 手艺影响最大的影戏。这是第一部完全由盘算机动画(CG)制作的长篇影戏,也是全 3D 动画。在那时的电脑盘算能力下,每帧需要 4 到 13 个小时才气完成。在这部影戏刊行之前,盘算机图形(CG)通常用于短片或具有特殊效果的真人影戏的弥补,直到在 1990 年月中期,人们若干都以为用盘算机制作整个数字影戏是不切现实的。
在此片泛起后,CGI 展示了其伟大的潜力,盘算机动画影戏或多或少已成为新规范,并取代了传统的手绘动画影戏。皮克斯在这部影戏的制作中使用的自家软件 RenderMan 卖力 3D 建模和动画应用程序与渲染引擎之间的通讯,到今天,RenderMan 无疑成为了好莱坞工业中的尺度工具。据统计,在 47 部被提名了奥斯卡最佳艺术特效的影戏中,44 部使用了这一工具。
影戏玩具总动员 图源:https://zh.wikipedia.org/wiki/玩具总动员 #/media/File:Movie_poster_toy_story.jpg
在影戏行业之外,CGI 手艺的影响也逐渐扩展到了视频游戏中。1992 年,在 Sega Model 1 街机系统板上运行的 Virtua Racing 奠基了全 3D 赛车游戏和在更普遍的受众中普及实时 3D 多边形图形的基础。
影戏玩具总动员 图源:https://zh.wikipedia.org/wiki/玩具总动员 https://en.wikipedia.org/w/index.php?curid=60308343
渲染一直是对盘算资源要求很高的一类算法,很难不以为渲染手艺的生长对电脑的盘算资源的生长没有起到推动作用,两者至少一直是紧密结合的。也是在 90 年月,在现在深度学习中最为主要盘算资源的 GPU 最先盛行,并将这一趋势连续到了今天。90 年底后期,Hanrahan 和他的学生扩展了 Renderman 着色语言,使得其可以在那时刚打入市场的 GPU 上实时运行。Hanrahan 和他的学生为 GPU 开发的编程语言带动了商业版着色语言的开发(包罗 OpenGL),从而彻底改变了电子游戏的程序编写。
1999 年,英伟达公布了具有开创性的 GeForce 256,这是第一张被称为图形处置单元或 GPU 的家庭视频卡,盘算机使用通用的图形处置框架――例如 DirectX 和 OpenGL――的老例也是在那时建立起来。正是由于功效更壮大的图形硬件和 3D 建模软件,盘算机图形才变得加倍详细和真切。这十年中,AMD 占有的市场份额也不停增添,最终形成了我们今天所熟悉的「双寡头」市场。
2000 年月至今
进入千禧年后,CGI 手艺的生长仍然异常快,其中不乏图形处置单元的连续增长和日益成熟带来的推动力――到了此时,3D 图形 GPU、3D 渲染功效已成为台式盘算机的尺度设置。CGI 最先变得无处不在――CGI 影戏激增,诸如冰河世纪和马达加斯加等传统动画动画片影戏以及诸如《海底总动员》等众多皮克斯产物在该领域的票房中占有主导职位;在视频游戏中,索尼 PlayStation 2 和 3,Microsoft Xbox 系列游戏机以及 Nintendo 的产物(例如 GameCube)和 Windows PC 都吸引了大量的追随者,诸如超级侠盗猎车手,刺客信条,最终幻想,生化奇兵,王国之心,镜之边缘。CGI 在这两个领域的乐成生长将盘算机图形学的影响力流传到了主流领域,并逐渐引入其他领域,好比电视广告。
软件方面,OpenGL 也变得更成熟,它与 DirectX 有了很大的改善。在这一十年中,第二代着色器语言 HLSL 和 GLSL 最先盛行。
影戏冰河世纪。图源:合理使用, https://zh.wikipedia.org/w/index.php?curid=294080
游戏最终幻想。图源:合理使用,https://zh.wikipedia.org/w/index.php?curid=3621086
这一时期,在影戏制作中大量应用了另一异常主要的手艺:动作捕捉(motion capture)。运动捕捉,又称运动捕捉或运动捕捉,是纪录物体或人的运动的历程。最早在 1978 年的影戏指环王中实在就有用到,但由于那时的手艺限制,还不能做到对演员的脸色等细节举行捕捉。2009 年,阿凡达(Avatar)以使用运动捕捉手艺为其角色举行动画而不是使用软件来手工绘制/建立角色而著名。另外,阿凡达(Avatar)是最早使用「Simulcam」的影戏之一。这款特殊的摄像机能够将 CGI 动画图像叠加在实时拍摄的实时图像之上(Outlaw)。
影戏阿凡达。图源:By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=23732044
到了 2010 年后,CGI 在视频中险些无处不在,预渲染的图形在科学上险些是真实照片级的。这时期的事情主要集中在集成更庞大的多阶段的图像天生。纹理映射也已经生长为一个庞大的多阶段历程,使用着色器(shader)将纹理渲染、反射手艺等多种算法集成到一个渲染引擎中的操作并不少见。
阻碍 CGI 手艺,特别是渲染手艺,生长的一大瓶颈仍然是盘算,在深度学习、人工智能火爆的今天,AI 也为 CGI 在这方面的突破助了一臂之力。几天前英伟达公布的 DLSS 2.0(deep learning super sampling),凭据官方宣传,可以保证渲染程序在较低分辨率下对游戏画面举行实时光线追踪,而 DLSS 2.0 则会将渲染后的画面举行 4 倍超采样,从而保证细节与帧率的兼顾。也就是说,在 DLSS 2.0 下,要运行实时 4k 游戏,渲染程序只需要在 1080k 的分辨率下举行盘算。「要在游戏中的每一帧上运行一个神经网络」,像这样疯狂的想法另有许多,很难想象 AI 和渲染结合起来将会把 CGI 天生图像带到什么偏向上。
至此,CGI 手艺从一最先只能对一些简朴的形状举行建模的研究,逐渐生长成了一个子研究极端厚实的复合学科,其对其他盘算机科学领域的影响数不胜数,涉及到 CGI 的跨学科领域也习以为常。正如 ACM 主席 Cherri M. Pancake 所说:「Hanrahan 和 Catmull 做出的孝敬解释,盘算机某个专业领域的希望能够对领域内其他学科发生深远影响」。
在这一小苗发展为一颗参天大树的历程中,始终有 Patrick M. Hanrahan 和 Edwin E. Catmull 的介入,他们也因此获得了 ACM 大奖。Patrick M. Hanrahan 和 Edwin E. Catmull 的乐成对所有正在从事自己所热爱的事情的人都是一个伟大的激励,由于他们证明晰小我私家在自己的研究领域内的坚持和孝敬,不仅可以推动该单个领域的提高,甚至还可以改变天下。我们所生涯的天下真正由我们的双手亲自缔造。颁奖典礼预期 6 月在美国旧金山举行,Patrick M. Hanrahan 和 Edwin E. Catmull 将分享 100 万美元奖金。可见,五毛钱的特效可能随处可见,但好的特效,不仅费时艰苦,还很值钱。
作者先容:李媛媛,几回转行,本科国际贸易,研究生转向统计,结业后留在比利时,选择从事农用机械研发事情,主要卖力图像处置,实现盘算机视觉算法的落地。浏览一切简朴、优雅但有效地算法,试图在深度学习的蜂拥者和嫌疑者之间找到一个平衡。我追求生涯的宽度,这也是为什么在事情之外,我也是机械之心的一名手艺分析师。希望在这里和人人分享自己对于手艺的明白,通过头脑的碰撞拓宽思绪和眼界。
关于机械之心全球分析师网络 Synced Global Analyst Network
机械之心全球分析师网络是由机械之心提议的全球性人工智能专业知识共享网络。在已往的四年里,已有数百名来自全球各地的 AI 领域专业学生学者、工程专家、营业专家,行使自己的学业事情之余的闲暇时间,通过线上分享、专栏解读、知识库构建、讲述公布、评测及项目咨询等形式与全球 AI 社区共享自己的研究思绪、工程履历及行业洞察等专业知识,并从中获得了自身的能力发展、履历积累及职业生长。
感兴趣加入机械之心全球分析师网络?点击阅读原文,提交申请。