- +1
計算機圖形學的發(fā)展歷程告訴你5毛電影特效有多難
原創(chuàng) Synced 機器之心
機器之心分析師網(wǎng)絡(luò)
作者:李媛媛
編輯:H4O
隨著2019年ACM 圖靈獎授予計算機圖形學的兩位學者Patrick M. Hanrahan和Edwin E. Catmull,人們也重新將目光投向了 CGI 領(lǐng)域以及這一領(lǐng)域在印刷媒體、視頻游戲、商業(yè)廣告、互動多媒體等方向上的應(yīng)用。本文以時間為軸,以皮克斯電影為重心,講述了自上世紀50年代以來 CGI 的發(fā)展歷程。
2019 ACM 圖靈獎大獎出爐,最終花落計算機圖形學專家 Patrick M. Hanrahan 和 Edwin E. Catmull,以表彰他們在概念創(chuàng)新和軟硬件方面的貢獻,以及對計算機圖形學所產(chǎn)生的根本性的影響。而上一次圖靈獎頒給圖形學領(lǐng)域的科學家,還是在 32 年前——1988 年計算機圖形學之父 Ivan Sutherland 憑借其發(fā)明的 Sketchpad 而獲得圖靈獎。這種圖形用戶界面的早期版本直接影響了計算機的用戶交互方式,現(xiàn)在早已在個人計算機中無處不在。它發(fā)明了一系列在今天的用戶界面中被視為「基本操作」的功能:繪制水平線和垂直的線、將繪制的線組合成不同形狀、調(diào)整圖形大小、旋轉(zhuǎn)圖形以及縮放窗口等。
本次獲獎的 Patrick M. Hanrahan 和 Edwin E. Catmull,則從另一個角度深刻的改變了我們的生活。作為皮克斯的創(chuàng)始人——Edwin E. Catmull 還曾是華特 · 迪士尼動漫工作室的總裁——他們的貢獻主要集中在從計算機圖形學發(fā)展出的電腦生成圖像(Computer-generated imagery,CGI)技術(shù)中,他們的研究成果展示了利用計算機來繪制的故事影片能夠如何為電影制作賦予新的靈感。
正如 Patrick M. Hanrahan 和 Edwin E. Catmull 本身的興趣在電影制作上,CGI 最廣為人知的應(yīng)用是在影視作品中創(chuàng)造角色,又稱「CGI 動畫」,比如迪士尼動畫電影中的所有角色都是通過 CGI 技術(shù)創(chuàng)造出來的。但 CGI 在印刷媒體、視頻游戲、商業(yè)廣告、互動多媒體等方向也有廣泛應(yīng)用,例如宜家 70% 以上的場景圖都是在電腦中建模渲染完成的,并且 CGI 的商業(yè)應(yīng)用還在呈逐年上升的趨勢。如果我們跳出 CGI 的定義范圍,進入它的父領(lǐng)域計算機圖形學(computer graphi,CG),那么應(yīng)用該技術(shù)的研究幾乎涉及到我們生活中與計算機有關(guān)的方方面面了,比如用戶界面設(shè)計、渲染、光線跟蹤、計算機動畫、3D 建模、著色器、GPU 設(shè)計等等。
為什么 CGI 應(yīng)用如此廣泛?直觀來講,CGI 的主要目的是提供足夠逼真的視覺效果。這種視覺效果,最直接的的作用就是提供更好的感官體驗——比如用 CGI 技術(shù)為電腦生成的圖像加上一些「瑕疵」,使其更貼近我們在現(xiàn)實生活觀察到的形象。或者對一些紋理的渲染——毛發(fā)、皮膚、布料等,電腦直接生成的圖像往往銳度過高并且不具有紋理。在一些現(xiàn)代醫(yī)學治療中,由于一些植入產(chǎn)品需要根據(jù)患者的情況進行高度定制,CGI 已經(jīng)成為制定手術(shù)計劃的一部分,用以對患者的器官進行精準建模。類似地,利用 CGI 生成的 3D 建筑模型比傳統(tǒng)圖紙更準確,并且可以提供交互式體驗,從而為客戶提供更好的概覽,并且能夠?qū)毠?jié)、特殊的應(yīng)用環(huán)境進行檢測。由于交互式可視化可以動態(tài)展現(xiàn)數(shù)據(jù),CGI 也可以允許用戶從多個角度查看數(shù)據(jù),比如對復(fù)雜機械結(jié)構(gòu)的可視化。
在過去的半個世紀,CGI 以電影行業(yè)為起點,的確悄然無息將其影響力擴散到了電子游戲行業(yè)和 VR、AR 等行業(yè),包括數(shù)據(jù)中心管理和人工智能在內(nèi)的多個領(lǐng)域。在本文接下來的內(nèi)容中,以皮克斯為中心,走過 CGI 半個世紀的發(fā)展,我們將看到 CGI 是如何從一些非常基礎(chǔ)的應(yīng)用,發(fā)展到今天這樣的規(guī)模的。
1950 年代-1970 年代
這一階段是 CGI 的創(chuàng)始發(fā)展期,一個「從無到有」的時期。
1958 年,阿爾弗雷德·希區(qū)柯克(Alfred Hitchcock)發(fā)布了首部應(yīng)用 CGI 技術(shù)的電影 VERTIGO,在該片中,一個綠色的螺旋動畫從一只眼睛中緩緩升起。這個「簡單」的特效,是世界上第一個計算機動畫。

在這一期間最重要的技術(shù)之一當屬由 N. Konstantinov 領(lǐng)導(dǎo)的一組蘇聯(lián)數(shù)學家和物理學家所研發(fā)的貓的運動的物理數(shù)學計算模型。該算法是在 BESM-4 計算機上編程的,使用時需要用計算機打印出數(shù)百幀,以后再轉(zhuǎn)換為膠片。他們使用的模型和其理論形成了今日動畫電影和計算機游戲的基礎(chǔ)技術(shù)之一。
但整體來看,這十幾年中有關(guān) CGI 技術(shù) 的研究寥寥無幾,直到下一個十年的來臨。
1970 年代-1980 年代
70 年代,Edwin E. Catmull 等大佬工作逐漸起步。當時還是猶他大學的學生的 Edwin E. Catmull 和 Fred Parke 合作,于 1972 年制作了世界上第一部 3D 多邊形動畫(polygonal 3D animation):A Computer Animated Hand。這部動畫模擬了他自己的左手,被視為 CGI 發(fā)展史上的 milestone 之一。

1974 年,F(xiàn)red Parke 在發(fā)表的論文中將他們的工作延伸到了人臉建模領(lǐng)域,這是世界上最早的高仿真人臉 3D 渲染作品之一。這兩項工作最終于 1976 年匯集在了電影 future world 中。由于 Edwin E. Catmull 和 Fred Parke 的杰出工作,猶他州立大學計算機圖形實驗室吸引了來自各地的人,這些人隨后散布在各行各業(yè),創(chuàng)造了許多我們意想不到的聯(lián)結(jié)——比如慕名而來的約翰·沃諾克(John Warnock),他之后成立了 Adobe Systems。

這一時期 CGI 技術(shù)發(fā)展突飛猛進,大量目前使用的算法的雛形都在這一時期被創(chuàng)造出來,而這之中,最重要的恐怕要數(shù)渲染(render)技術(shù)在這一時期的突破了。在 CGI 技術(shù)之中,一般在圖像初步創(chuàng)建之后,就要進行渲染了,渲染效果將會直接決定模型與動畫最終顯示效果。簡單的來說,渲染涉及到如何將 3D 物體投射到 2D 圖像中,并盡可能的符合在肉眼情況下我們會觀察到的幾何效果。
下圖給出了一個簡單的例子——圖左中,可以看到一組已經(jīng)建模好的 3D 物體,每個物體的位置和形狀都由幾個頂點定義,在這里頂點之間僅簡單的通過直線連接,并形成了多個平面,以組成該物體的表面。很顯然,在現(xiàn)實世界中,我們無法直接透視到物體被遮擋的部分。因此,渲染程序首先需要根據(jù)定義好的視角來決定哪些表面可以被觀察到、哪些則不能,也就是下圖中所呈現(xiàn)的效果。隨后,渲染程序可以在物體表面上進行著色,來進一步突出其表面紋理、物體位置等信息。在下圖右中物體僅被填上了不同程度的灰色,沒有涉及更多的步驟。在實際應(yīng)用中,出于不同的目的,渲染程序可以將重點放在圖像的不同特征上——為圖片增加更豐富的色彩和亮度、為物體表面增加紋理、為物體表面增加凹凸起伏、模擬光照在不同環(huán)境(如霧)中散射的效果、增加陰影、增加反射、調(diào)整透明感、增加光的折射效應(yīng)、模擬間接光源光照的效果、增加景深、運動模糊、不追求真實感而增強圖像的藝術(shù)性等。

更準確的定義的話,渲染是通過計算機程序從 3D 模型生成 2D 圖像。在這一定義中,模型是用語言或者數(shù)據(jù)結(jié)構(gòu)進行嚴格定義的三維物體或虛擬場景的描述,它包括幾何、視點、紋理、照明和陰影等信息。如前文提到的,出于不同的目的,渲染程序可能會側(cè)重不同的角度——被渲染物體本身的質(zhì)感、紋理、透明度、真實感等。用計算機語言來模擬這些過程,涉及到大量的幾何原理、光學原理和數(shù)學計算。皮克斯在今天的電影動畫中有如此重要的地位,很大程度上也源于他們在渲染領(lǐng)域中做出的突出貢獻。
當時,早期使用的光柵化渲染方法主要通過考慮視角和被渲染物體之間的光線連線來確定物體在 2D 圖像上的投影,但這種方法沒有考慮深度信息,因此無法確定重疊物體的遮擋情況。也就是說,在上例中,我們甚至無法完成從圖左到圖中的步驟。1974 年,Edwin E. Catmull 博士畢業(yè),在他的畢業(yè)論文中,他描述了深度緩沖算法(Z-buffering)用于管理計算機圖形學中圖像深度坐標的方法。根據(jù)他的算法,在進行物體渲染時,程序需要同時生成一個緩沖區(qū)用以保存生成的像素的深度。如果之后發(fā)現(xiàn)另一個物體所生成的像素與此有所重合,就根據(jù)緩沖區(qū)中保存的深度進行選擇,以達到較近的物體遮擋較遠物體的效果。下圖給出了深度緩沖算法圖例。

但帶有深度的光柵化渲染方法仍然無法解決物體在光照下應(yīng)該具有的反射、折射、陰影效果。幾經(jīng)發(fā)展后,1979 年,Turner Whitted 提出了極大影響了渲染技術(shù)的光線追蹤算法(ray tracing)。在這種算法中,當光線從視點發(fā)出并撞擊到物體上時,會產(chǎn)生最多 3 種類型的光線:反射、折射和陰影。如下圖所示,從相機發(fā)出的(紅色)光線打到了球體上并發(fā)生了反射,如果反射光最終反射到了光源,根據(jù)光線可逆原理,我們知道該光源可以照亮這個球體。而在球體的另一側(cè)則處于陰影之中,因為在其和光源之間存在球體的其他部位,遮擋住了光源。

光線追蹤算法在今天也是一個十分活躍的研究領(lǐng)域,一個主要原因是光線追蹤的計算復(fù)雜度極高,一般都需要利用蒙特卡洛方法等求近似解。在游戲等產(chǎn)品上應(yīng)用實時光線追蹤直到幾年前都是一個挑戰(zhàn),今年在英偉達 GTC GPU Technology Conference 上仍然有好幾個 session 的主題是如何對光線追蹤計算進行加速。
1980 年代-2000 年代
從 80 年代開始,越來越多的電影參與進了 CGI 技術(shù)的使用中,其中今天我們耳熟能詳?shù)慕?jīng)典電影多到令人目不暇接,這種繁榮在一定程度上也反哺了 CGI 技術(shù)的發(fā)展。1982 年,在著名電影星際迷航 II 中,「創(chuàng)世紀效應(yīng)」(Genesis Effect)大放異彩——在電影中,Carol Marcus 博士解釋道創(chuàng)世紀項目是一種計算機模擬的項目,旨在將不宜居住的世界轉(zhuǎn)化或重塑為郁郁蔥蔥的天堂。
為在電影中實現(xiàn)這種視覺效應(yīng),電影首次使用了當時還在盧卡斯影業(yè)旗下的皮克斯創(chuàng)造的 32 位 RGBA 繪畫軟件,并使用了分形生成的景觀(fractal-generated landscape)和顆粒效果進行渲染。其實在當時,勇于應(yīng)用 CGI 技術(shù)的電影除了科幻片以外,還有很多恐怖片——這倒也很合理,畢竟這兩者都需要豐富的想象力,需要創(chuàng)造更多的「異形」,只不過當時使用 CGI 拍攝的恐怖電影中流傳到今天成為經(jīng)典的較少。

光線追蹤算法的提出,使 CGI 生成圖像的真實感大大增加,因為它本質(zhì)上是在試圖模擬自然界中光線傳播的過程。在此基礎(chǔ)上,為了更進一步增強 CGI 生成的某些類型的圖像的真實感,Hanrahan 于 1988 年提出了立體渲染技術(shù)(volume rendering)。其背后的思想主要是在自然界中有一些物質(zhì)本身就是以一定體積存在的——如云、火、霧——用前文提到的那些幾何渲染方法很難取得逼真的效果。立體渲染技術(shù)仍然致力于如何將 3D 物體投射到 2D 圖像中,但更關(guān)注如何在體素(voxel)而非像素(pixel)水平上實現(xiàn)這種渲染,以及如何保證物體紋理質(zhì)感的呈現(xiàn),比如生成一副傷口的圖像需要關(guān)注如何真實的表示肌肉的走向、紋理等。
1993 年,Hanrahan 還開發(fā)了利用次表面散射(subsurface scattering)描繪皮膚和頭發(fā)、利用蒙特卡羅光線追蹤來渲染復(fù)雜照明效果的技術(shù)。次表面散射模擬的是光在穿透半透明物體時以不規(guī)則的角度在物體內(nèi)部反射多次,然后再從不同角度離開物體表面的效果。這種現(xiàn)象在大理石、皮膚、蠟等類型的材質(zhì)上非常常見,因此要逼真的渲染這種材料,首先必須模擬光的這種傳播機制,下圖左中給出了一個現(xiàn)實生活中的例子——當光穿透手指時,會產(chǎn)生一種半透明、光亮、毛茸茸的質(zhì)感,圖右則給出了計算機根據(jù)次表面散射算法渲染的圖像。


也是在這一時期,3D 建模技術(shù)開始初露頭角。通過專用軟件在三個維度上進行數(shù)學表示,3D 建模可以對被建模對象的任何表面進行建模。具體來說,3D 模型使用 3D 空間中的點集合表示實體,點與點之間由三角形、直線(Polygonal modeling)、曲面(Curve modeling)等進行連接。這個點集可以由使用者手動創(chuàng)建、根據(jù)已有算法創(chuàng)建、或者通過掃描實體創(chuàng)建。初步建模完成后,再通過紋理映射(texture mapping)技術(shù),對建模的物體表面進行優(yōu)化。紋理映射——又是 Edwin E. Catmull 對 CGI 領(lǐng)域一個重要貢獻,由他在自己的博士論文中最早提出——主要是為物體表面著色的一種方法。
現(xiàn)實世界中的物體一般都具有非常豐富的顏色,即便是黑色的物體也不可能具有同一的黑色,要令電腦生成的圖像足夠逼真,為圖像上的物體添加這些多樣的顏色必不可少,有無紋理的物體對比見下圖所示。然而,如果程序要為圖像中的每一個像素制定顏色,效率就太低了。紋理映射要做的,簡單來說,就是找到選擇一個紋理/圖像,然后將它「貼」到圖像中制定的物體上。

立體渲染技術(shù) + 3D 建模 + 紋理映射,為電影業(yè)帶來了新的革命。1995 年,皮克斯(首映電影)與迪斯尼制片廠合作制作出了玩具總動員,這無疑也是對 CGI 技術(shù)影響最大的電影。這是第一部完全由計算機動畫(CG)制作的長篇電影,也是全 3D 動畫。在當時的電腦計算能力下,每幀需要 4 到 13 個小時才能完成。在這部電影發(fā)行之前,計算機圖形(CG)通常用于短片或具有特殊效果的真人電影的補充,直到在 1990 年代中期,人們多少都認為用計算機制作整個數(shù)字電影是不切實際的。
在此片出現(xiàn)后,CGI 展示了其巨大的潛力,計算機動畫電影或多或少已成為新規(guī)范,并取代了傳統(tǒng)的手繪動畫電影。皮克斯在這部電影的制作中使用的自家軟件 RenderMan 負責 3D 建模和動畫應(yīng)用程序與渲染引擎之間的通信,到今天,RenderMan 無疑成為了好萊塢工業(yè)中的標準工具。據(jù)統(tǒng)計,在 47 部被提名了奧斯卡最佳藝術(shù)特效的電影中,44 部使用了這一工具。

在電影行業(yè)之外,CGI 技術(shù)的影響也逐漸擴展到了視頻游戲中。1992 年,在 Sega Model 1 街機系統(tǒng)板上運行的 Virtua Racing 奠定了全 3D 賽車游戲和在更廣泛的受眾中普及實時 3D 多邊形圖形的基礎(chǔ)。

渲染一直是對計算資源要求很高的一類算法,很難不認為渲染技術(shù)的發(fā)展對電腦的計算資源的發(fā)展沒有起到推動作用,兩者至少一直是緊密結(jié)合的。也是在 90 年代,在目前深度學習中最為重要計算資源的 GPU 開始流行,并將這一趨勢持續(xù)到了今天。90 年底后期,Hanrahan 和他的學生擴展了 Renderman 著色語言,使得其可以在當時剛打入市場的 GPU 上實時運行。Hanrahan 和他的學生為 GPU 開發(fā)的編程語言帶動了商業(yè)版著色語言的開發(fā)(包括 OpenGL),從而徹底改變了電子游戲的程序編寫。
1999 年,英偉達發(fā)布了具有開創(chuàng)性的 GeForce 256,這是第一張被稱為圖形處理單元或 GPU 的家庭視頻卡,計算機使用通用的圖形處理框架——例如 DirectX 和 OpenGL——的慣例也是在那時建立起來。正是由于功能更強大的圖形硬件和 3D 建模軟件,計算機圖形才變得更加詳細和逼真。這十年中,AMD 占據(jù)的市場份額也不斷增加,最終形成了我們今天所熟悉的「雙寡頭」市場。
2000 年代至今
進入千禧年后,CGI 技術(shù)的發(fā)展仍然非常快,其中不乏圖形處理單元的持續(xù)增長和日益成熟帶來的推動力——到了此時,3D 圖形 GPU、3D 渲染功能已成為臺式計算機的標準配置。CGI 開始變得無處不在——CGI 電影激增,諸如冰河世紀和馬達加斯加等傳統(tǒng)動畫動畫片電影以及諸如《海底總動員》等眾多皮克斯產(chǎn)品在該領(lǐng)域的票房中占據(jù)主導(dǎo)地位;在視頻游戲中,索尼 PlayStation 2 和 3,Microsoft Xbox 系列游戲機以及 Nintendo 的產(chǎn)品(例如 GameCube)和 Windows PC 都吸引了大量的追隨者,諸如超級俠盜獵車手,刺客信條,最終幻想,生化奇兵,王國之心,鏡之邊緣。CGI 在這兩個領(lǐng)域的成功發(fā)展將計算機圖形學的影響力傳播到了主流領(lǐng)域,并逐漸引入其他領(lǐng)域,比如電視廣告。
軟件方面,OpenGL 也變得更成熟,它與 DirectX 有了很大的改進。在這一十年中,第二代著色器語言 HLSL 和 GLSL 開始流行。


這一時期,在電影制作中大量應(yīng)用了另一非常重要的技術(shù):動作捕捉(motion capture)。運動捕獲,又稱運動捕捉或運動捕捉,是記錄物體或人的運動的過程。最早在 1978 年的電影指環(huán)王中其實就有用到,但由于當時的技術(shù)限制,還不能做到對演員的表情等細節(jié)進行捕捉。2009 年,阿凡達(Avatar)以使用運動捕捉技術(shù)為其角色進行動畫而不是使用軟件來手工繪制/創(chuàng)建角色而聞名。另外,阿凡達(Avatar)是最早使用「Simulcam」的電影之一。這款特殊的攝像機能夠?qū)?CGI 動畫圖像疊加在實時拍攝的實時圖像之上(Outlaw)。

到了 2010 年后,CGI 在視頻中幾乎無處不在,預(yù)渲染的圖形在科學上幾乎是真實照片級的。這時期的工作主要集中在集成更復(fù)雜的多階段的圖像生成。紋理映射也已經(jīng)發(fā)展為一個復(fù)雜的多階段過程,使用著色器(shader)將紋理渲染、反射技術(shù)等多種算法集成到一個渲染引擎中的操作并不少見。
阻礙 CGI 技術(shù),特別是渲染技術(shù),發(fā)展的一大瓶頸仍然是計算,在深度學習、人工智能火爆的今天,AI 也為 CGI 在這方面的突破助了一臂之力。幾天前英偉達發(fā)布的 DLSS 2.0(deep learning super sampling),根據(jù)官方宣傳,可以保證渲染程序在較低分辨率下對游戲畫面進行實時光線追蹤,而 DLSS 2.0 則會將渲染后的畫面進行 4 倍超采樣,從而保證細節(jié)與幀率的兼顧。也就是說,在 DLSS 2.0 下,要運行實時 4k 游戲,渲染程序只需要在 1080k 的分辨率下進行計算。「要在游戲中的每一幀上運行一個神經(jīng)網(wǎng)絡(luò)」,像這樣瘋狂的想法還有很多,很難想象 AI 和渲染結(jié)合起來將會把 CGI 生成圖像帶到什么方向上。
至此,CGI 技術(shù)從一開始只能對一些簡單的形狀進行建模的研究,逐漸發(fā)展成了一個子研究極度豐富的復(fù)合學科,其對其他計算機科學領(lǐng)域的影響數(shù)不勝數(shù),涉及到 CGI 的跨學科領(lǐng)域也屢見不鮮。正如 ACM 主席 Cherri M. Pancake 所說:「Hanrahan 和 Catmull 做出的貢獻表明,計算機某個專業(yè)領(lǐng)域的進展能夠?qū)︻I(lǐng)域內(nèi)其他學科產(chǎn)生深遠影響」。
在這一小苗成長為一顆參天大樹的過程中,始終有 Patrick M. Hanrahan 和 Edwin E. Catmull 的參與,他們也因此獲得了 ACM 大獎。Patrick M. Hanrahan 和 Edwin E. Catmull 的成功對所有正在從事自己所熱愛的工作的人都是一個巨大的鼓勵,因為他們證明了個人在自己的研究領(lǐng)域內(nèi)的堅持和貢獻,不僅可以推動該單個領(lǐng)域的進步,甚至還可以改變世界。我們所生活的世界真正由我們的雙手親自創(chuàng)造。頒獎典禮預(yù)期 6 月在美國舊金山舉行,Patrick M. Hanrahan 和 Edwin E. Catmull 將分享 100 萬美元獎金。可見,五毛錢的特效可能隨處可見,但好的特效,不僅費時費力,還很值錢。
作者介紹:李媛媛,幾次轉(zhuǎn)行,本科國際貿(mào)易,研究生轉(zhuǎn)向統(tǒng)計,畢業(yè)后留在比利時,選擇從事農(nóng)用機械研發(fā)工作,主要負責圖像處理,實現(xiàn)計算機視覺算法的落地。欣賞一切簡單、優(yōu)雅但有效地算法,試圖在深度學習的簇擁者和懷疑者之間找到一個平衡。我追求生活的寬度,這也是為什么在工作之外,我也是機器之心的一名技術(shù)分析師。希望在這里和大家分享自己對于技術(shù)的理解,通過思想的碰撞拓寬思路和眼界。
原標題:《走過半個多世紀,計算機圖形學的發(fā)展歷程告訴你5毛錢的電影特效究竟多難》
本文為澎湃號作者或機構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機構(gòu)觀點,不代表澎湃新聞的觀點或立場,澎湃新聞僅提供信息發(fā)布平臺。申請澎湃號請用電腦訪問http://renzheng.thepaper.cn。





- 報料熱線: 021-962866
- 報料郵箱: news@thepaper.cn
互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006
增值電信業(yè)務(wù)經(jīng)營許可證:滬B2-2017116
? 2014-2025 上海東方報業(yè)有限公司