器之心分析師網絡
作者:李媛媛
編輯: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 Animated Hand。這部動畫模擬了他自己的左手,被視為 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 萬美元獎金。可見,五毛錢的特效可能隨處可見,但好的特效,不僅費時費力,還很值錢。
作者介紹:李媛媛,幾次轉行,本科國際貿易,研究生轉向統計,畢業后留在比利時,選擇從事農用機械研發工作,主要負責圖像處理,實現計算機視覺算法的落地。欣賞一切簡單、優雅但有效地算法,試圖在深度學習的簇擁者和懷疑者之間找到一個平衡。我追求生活的寬度,這也是為什么在工作之外,我也是機器之心的一名技術分析師。希望在這里和大家分享自己對于技術的理解,通過思想的碰撞拓寬思路和眼界。
有玩過Switch的同學可能會聽說過八位堂推出的一款USB無線適配器,它可以讓PS4或者Xbox的無線手柄連接到Switch主機上,從而讓同時擁有多平臺主機的玩家,能夠在Switch上使用其他無線手柄來操作,省去了購買其他專業游戲手柄的麻煩。
近日這款專門從事懷舊電子產品的設計和研發的公司,又宣布了一款最新的藍牙無線手柄M30。這款復古手柄擁有時尚圓潤平滑的外型,也繼承了經典16位游戲機世嘉MD為靈感的復古元素造型。它專為動作或者格斗游戲打造,售價為28美元,將于2月28日上市。
從外觀上看這款定制手柄擁有經典的十字鍵,但去在表面添加了啞面磨砂紋理,不懼汗手。同時圓潤的倒角和經典的六鍵位 橫向布局。讓你在長時間搓招或玩其它動作游戲時手指不再疼痛。
別看這款手柄長的十分復古,這款手柄的內部可以說是用上了如今所有的數碼流行元素。比如,USB-C接口,有獨立配對按鈕,自定義按鍵連發功能,并兼容 Windows, Android, macOS, Steam, Switch 等平臺。
圖片說明
最后,八位堂還宣布了一款適配于世嘉MD游戲機的藍牙接收器。玩家們可以通過適配器在MD 上面使用無線手柄。兼容八位堂系列手柄,Switch手柄,Xbox 藍牙手柄,PS3/PS4 手柄,Wii U Pro 等。游戲機平臺兼容 MD 一代,二代以及美版 Genesis手柄等,售價預計為25美元。
APP商店搜索中關村在線,看2018年最新手機、筆記本評價排行