皮克斯高階科學家解釋數學在電影和遊戲中的應用

發表於2013-03-26

英文原文:The verge ,編譯:果殼 MathChief

3月6日晚,皮克斯動畫工作室的資深科學家託尼•德瑞斯(Tony DeRose)在紐約市的數學博物館(The Museum of Mathematics)做了一場演講,分享電影中的數學。我們編譯了網路科技媒體“The Verge”的資深主筆兼記者 Tim Carmody 發回的現場筆記,並做了評註。致我們所愛的電影和遊戲裡的數學。

託尼•德瑞斯穿了件花哨的皮克斯T-shirt,緩步在紐約的數學博物館演講廳的座席間,乍眼一看,他橫豎也不像個科學家。他頻頻向坐在位子上的未來小技術宅致意,以及向隨這些小技術宅同來的各位家長和老師問好。聽眾中也不乏年長的數學死宅及其基友。還有個二十幾歲的哥們,他曾經是《汽車總動員2》的龍套演員(他的動作捕捉被作為製作動畫的藍本),他帶來了他娘,因為他老孃想見識下這些幕後的電影工作者是怎麼把他兒子的動作搬上熒幕的。

託尼•德瑞斯開始發話:“看到男女老少都來聽這個講座真好。”隨即他問:“你們都看過皮克斯的電影嗎?” 可以預料的是,全場的人都舉起了手。他接著問,“看過3部的舉手,5部呢?全部的呢?”最後演講廳裡面幾乎1/4的觀眾舉起了手。託尼•德瑞斯讚歎道:“牛啊。”他一邊向全場觀眾微笑,一邊在心裡想:“集(Gig)會在此,無比(bit)贊也。”(譯註:原文為“This gig is not a bit bad”,相當有水平的雙關使用,gig 本是現場表演的意思,直譯“這次演出一點也不賴”,但同時gig也是 Gigabyte/Gigabit 平時在英文中的簡寫,對技術宅來說這句話就是“這一個G一個bit的壞道都沒有”。)

託尼•德瑞斯(Tony DeRose)

託尼•德瑞斯今天的演講題目是“電影中的數學”(Math in the Movies)。主題就是他的工作——怎麼把代數和幾何融入軟體之中,從而渲染出各式各樣的物體,或者驅動複雜的物理引擎。託尼解釋說,這套流程,全世界的電腦動畫工作室和電子遊戲製作者都在用。他來這裡演講的目的之一,就是告訴大家,動畫師和遊戲設計師若有大志,那麼數學功底一定要過硬。

身為皮克斯的資深科學家,託尼•德瑞斯數學功底何止過硬,簡直是太硬——美國加州大學伯克利分校的計算機博士,專攻計算物理學,然後又在華盛頓大學當了十多年的計算機工程的教授。託尼•德瑞斯的這場演講,是數學博物館在曼哈頓新園區開設的 “數學奇遇記” 系列演講的第一場。在這之前,他已經做過多次類似的演講,每次都會帶來皮克斯的科學家如何讓技術更進一步的故事,以及大家喜聞樂見的電影製作祕聞。

在計算機制作的動畫中,頭髮、衣服、流體和氣狀物(比如雲、煙、火),都有自己專屬的物理引擎。而到了具體的電影中,這每一大類的專屬模擬引擎又會根據情況得到進一步增強,表現出更加炫目的效果。託尼•德瑞斯說:“模擬水很簡單;難點在於,用什麼方法模擬出來的水,怎樣才像真的水,能被引導往某個方向流動。”(譯註:在尤拉座標系下水流模擬需要的計算機資源太多,而使用拉格朗日座標系進行的追蹤每個格點的模擬需要資源較少,但實際上是在模擬黏性不大不可壓縮的固體。)

<embed>
皮克斯新作《勇敢傳說》片段

託尼•德瑞斯舉了《勇敢傳說》(Brave)裡面的例子:梅莉達一頭蓬鬆捲曲的紅髮,便是用了全新的物理引擎模擬出來的。(譯註:傳統的頭髮模擬是使用類似漿糊的體積模擬,而不是一絲一絲的進行碰撞模擬,漿糊裡面每一個點的波動會傳播到周圍的點,並且有一定的傳播速度和衰減程度,最後這一大塊漿糊被賦予頭髮的絲狀材質。而梅莉達的蓬鬆捲髮則更類似於多體的彈性和非彈性碰撞,故而傳統的頭髮模擬引擎派不上用場。)託尼•德瑞斯和皮克斯動畫師團隊絞盡腦汁,終於製作出來梅莉達那一頭得比真的還真、極具表現力的秀髮模型——當然,這頭秀髮的模擬計算量還要我們的超級計算機能承受。

託尼•德瑞斯繼續解釋:“真實世界裡面,頭髮無時無刻都在彼此發生著碰撞。梅莉達的頭髮有10萬個單獨的有限元,而n個物體在下一時刻有 n種碰撞可能,10萬個元就會有100億種可能,如何製作一個能快速模擬出100億種碰撞可能的引擎?這裡,我們使用了特別的資料結構,使得這些碰撞可能性被去粗取精,沒用的碰撞可能性就被剔掉了。打個比方來說,如果對比‘傻而快’的MP3或者JPEG壓縮演算法,我們創造的則是頭髮模擬界的FLAC或者PNG的壓縮演算法。”(譯者:主流MP3的壓縮演算法通過刪除掉高頻率的聲波減少資料量。JPEG壓縮演算法和MP3類似,首先進行空間到頻率域上的變換,再削掉高頻部分,高對比度的邊緣被平滑後產生的色塊便是壓縮的痕跡。FLAC的壓縮則是在頻率分離之後進行線性預測,簡單說來,就是聲音有多少頻率,就把多少頻率吸納進來,再進行Colomb碼的進一步數字層面的壓縮;這種過程是可逆的,所以產生的壓縮是無損的。)

皮克斯高階科學家解釋數學在電影和遊戲中的應用
再來一張梅莉達的近照,重點看那圓臉——哦,不——看那比真實更真的頭髮。來源:Pixar

皮克斯高階科學家解釋數學在電影和遊戲中的應用
捲髮絲模擬中用彈簧彎曲對比不用彈簧彎曲,在受力之後3幀的區別。來源:Pixar

託尼•德瑞斯又提到,CG動畫製作經常需要模擬超大規模、尺度精細的物理模型,較之物理學家平時所需的科學計算是有過之而無不及。託尼•德瑞斯的工作,就是為這些物理模擬尋找更優的演算法,保證模擬之尺度的同時又不失微小細節。德瑞斯風趣的說:“導演總是說‘這些都是小問題啦’,這裡我負責地告訴大家——導演都撒謊了。” 如果哪天皮克斯的導演突然有了新點子,導致片中角色或者其相關的物體的物理性質發生了根本改變,電影的物理模擬需要重新來過,那皮克斯全部4個團隊一起幹,都別想一年製作出一部片來。

曲面細分法

託尼•德瑞斯對CG動畫製作界最為重要的貢獻,就是引入了高還原度的曲線/曲面的生成演算法:如何將複雜的形狀分解成電腦可以生成的多邊形。多年以來,電腦動畫和電子遊戲製作都在致力於用多邊形來表示一個真實世界的三維物體。但是,使用多邊形的問題就在於,仔細一看,還是看得出來多邊形的稜角的。CG業界的趨勢是用“平滑”曲面代替多邊形,這些“平滑”曲面會經過原來多邊形頂點所在的位置。數學家針對此方,發明了各種快速生成“經過固定點的‘平滑’曲面”的方法。

例如曲面細分,將原本一個多邊形按照曲面的曲率拆解成多個多邊形,並且不斷重複該過程直到達到允許的自由度上限。從曲線的角度來看,連線曲線經過的始點和終點的線段是對曲線的“模擬”,如果細分的話,加入曲線上的中點,分別連線始點和終點成為兩條線段,這是對該曲線更好的“模擬”,而這個過程可以不斷進行下去。(譯註:原文說“平滑”曲面可以做到任意放大仍然光滑,實際上計算機是做不到這點的,只能達到人眼解析度沒法分辨的程度。)

曲面細分第一次在皮克斯製作動畫時被大量使用,可追溯到1997年的奧斯卡最佳短片《棋逢敵手》(Geri’s Game)。這部電影相對於以往基於粗網格多邊形的動畫,那簡直就是驚天地泣鬼神的飛躍,一舉奠定“皮式風格”。

1997年奧斯卡最佳短片獎《棋逢敵手》(Geri’s Game)。皮克斯在製作該片時首次大量應用了曲面細分演算法,精緻的細節模擬開創了“皮克斯風格”。

皮克斯高階科學家解釋數學在電影和遊戲中的應用
《棋逢敵手》的主人公 Geri 頭部的三維曲面細分。來源:Pixar

託尼•德瑞斯當時將他在學術界的研究成果和多維曲面上的小波計算,應用到皮克斯的曲面生成演算法中(譯者注:小波變換的一大優勢,在於可進行多尺度多解析度的計算分析)。《棋逢敵手》中 Geri 鼻子的複雜幾何曲面,還有隨風飄動的衣褶;幾年後《超人總動員》(The Incredibles)裡,每一個建築、每一扇窗戶,所有物體的所有細節都是曲面細分的產物。現在幾乎每個皮克斯動畫製作專案都會用到曲面細分。從計算幾何的學術界到個別的動畫短片嘗試,而今曲面細分算飯已然成為CG動畫的行業標準。

託尼•德瑞斯和他的研究團隊製作電影同時,仍然不忘在學術界灌水論文,並且關注學術界最新進展,方能將最新的成果用到皮克斯的動畫渲染引擎中來,不過,現在皮克斯的研發部門和渲染軟體已經不像幾年前那樣領先業界數個身位了。以前,一個角色模型的光照和著色,還有定義各種動作的引數首先是數學上的難題,接著是寫程式碼上的難題;但現在,像 Blender 一樣的開源軟體,也能比肩皮克斯自主研發的軟體。2012年夏天,皮克斯發揚網際網路的分享精神,將他們的曲面細分程式碼庫開源,放到了網站 GitHub 上。對於這一舉動,託尼•德瑞斯解釋說:“我們曾經領先業界十年,不過現在更得益於讓大家來一起參與開發。”

皮克斯最大的競爭優勢,在於其超卓之駕馭新科技的能力,這些新科技又是基於最新的數學研究,不但能更好得模擬出物理,渲染出更漂亮的圖形,也為更好得講故事服務。託尼•德瑞斯和皮克斯並沒有滿足於現在的成就,託尼•德瑞斯告訴講堂裡未來的技術宅小朋友:“世界的某個角落,肯定有天才技術宅兒童和宅友正在擺弄著類似Blender一樣的工具,而他們,將是下一個皮克斯。”

相關文章