|
皮克斯動畫工作室的資深科學家托尼•德瑞斯(Tony DeRose)在紐約市的數(shù)學博物館(The Museum of Mathematics)做了一場演講,分享電影中的數(shù)學。托尼•德瑞斯穿了件花哨的皮克斯T-shirt,緩步在紐約的數(shù)學博物館演講廳的座席間,乍眼一看,他橫豎也不像個科學家。他頻頻向坐在位子上的未來小技術(shù)宅致意,以及向隨這些小技術(shù)宅同來的各位家長和老師問好。聽眾中也不乏年長的數(shù)學死宅及其基友。還有個二十幾歲的哥們,他曾經(jīng)是《汽車總動員2》的龍?zhí)籽輪T(他的動作捕捉被作為制作動畫的藍本),他帶來了他娘,因為他老娘想見識下這些幕后的電影工作者是怎么把他兒子的動作搬上熒幕的。
# y4 x- j- B. F% O' e托尼•德瑞斯今天的演講題目是“電影中的數(shù)學”(Math in the Movies)。主題就是他的工作——怎么把代數(shù)和幾何融入軟件之中,從而渲染出各式各樣的物體,或者驅(qū)動復(fù)雜的物理引擎。托尼解釋說,這套流程,全世界的電腦動畫工作室和電子游戲制作者都在用。他來這里演講的目的之一,就是告訴大家,動畫師和游戲設(shè)計師若有大志,那么數(shù)學功底一定要過硬。身為皮克斯的資深科學家,托尼•德瑞斯數(shù)學功底何止過硬,簡直是太硬——美國加州大學伯克利分校的計算機博士,專攻計算物理學,然后又在華盛頓大學當了十多年的計算機工程的教授。
4 P4 d0 R) u9 z9 O6 |- C0 W1 G. P K( W% B( y; ^
在計算機制作的動畫中,頭發(fā)、衣服、流體和氣狀物(比如云、煙、火),都有自己專屬的物理引擎。而到了具體的電影中,這每一大類的專屬模擬引擎又會根據(jù)情況得到進一步增強,表現(xiàn)出更加炫目的效果。托尼•德瑞斯說:“模擬水很簡單;難點在于,用什么方法模擬出來的水,怎樣才像真的水,能被引導往某個方向流動。”(在歐拉坐標系下水流模擬需要的計算機資源太多,而使用拉格朗日坐標系進行的追蹤每個格點的模擬需要資源較少,但實際上是在模擬黏性不大不可壓縮的固體。) 8 R3 G1 F, X& b4 v! ^
7 f4 V3 R' z; p. ?+ J) f托尼•德瑞斯舉了《勇敢傳說》(Brave)里面的例子:梅莉達一頭蓬松卷曲的紅發(fā),便是用了全新的物理引擎模擬出來的。(傳統(tǒng)的頭發(fā)模擬是使用類似漿糊的體積模擬,而不是一絲一絲的進行碰撞模擬,漿糊里面每一個點的波動會傳播到周圍的點,并且有一定的傳播速度和衰減程度,最后這一大塊漿糊被賦予頭發(fā)的絲狀材質(zhì)。而梅莉達的蓬松卷發(fā)則更類似于多體的彈性和非彈性碰撞,故而傳統(tǒng)的頭發(fā)模擬引擎派不上用場。)托尼•德瑞斯和皮克斯動畫師團隊絞盡腦汁,終于制作出來梅莉達那一頭得比真的還真、極具表現(xiàn)力的秀發(fā)模型——當然,這頭秀發(fā)的模擬計算量還要我們的超級計算機能承受。
" D0 G: C! _- _- ~9 y2 b/ v6 t) [: h7 p
托尼•德瑞斯繼續(xù)解釋:“真實世界里面,頭發(fā)無時無刻都在彼此發(fā)生著碰撞。梅莉達的頭發(fā)有10萬個單獨的有限元,而n個物體在下一時刻有 n2 種碰撞可能,10萬個元就會有100億種可能,如何制作一個能快速模擬出100億種碰撞可能的引擎?這里,我們使用了特別的數(shù)據(jù)結(jié)構(gòu),使得這些碰撞可能性被去粗取精,沒用的碰撞可能性就被剔掉了。打個比方來說,如果對比‘傻而快’的MP3或者JPEG壓縮算法,我們創(chuàng)造的則是頭發(fā)模擬界的FLAC或者PNG的壓縮算法。”2 j- I* h* w2 f' n* ^& ]' c3 Y: g* M: l
# G: Q( Z4 |; V4 u, B
托尼•德瑞斯又提到,CG動畫制作經(jīng)常需要模擬超大規(guī)模、尺度精細的物理模型,較之物理學家平時所需的科學計算是有過之而無不及。托尼•德瑞斯的工作,就是為這些物理模擬尋找更優(yōu)的算法,保證模擬之尺度的同時又不失微小細節(jié)。9 Y8 ^7 |9 J" j
托尼•德瑞斯對CG動畫制作界最為重要的貢獻,就是引入了高還原度的曲線/曲面的生成算法:如何將復(fù)雜的形狀分解成電腦可以生成的多邊形。多年以來,電腦動畫和電子游戲制作都在致力于用多邊形來表示一個真實世界的三維物體。但是,使用多邊形的問題就在于,仔細一看,還是看得出來多邊形的棱角的。CG業(yè)界的趨勢是用“平滑”曲面代替多邊形,這些“平滑”曲面會經(jīng)過原來多邊形頂點所在的位置。數(shù)學家針對此方,發(fā)明了各種快速生成“經(jīng)過固定點的‘平滑’曲面”的方法。" Z/ }( l- m% Y% c% W% w' E& Z
例如曲面細分,將原本一個多邊形按照曲面的曲率拆解成多個多邊形,并且不斷重復(fù)該過程直到達到允許的自由度上限。從曲線的角度來看,連接曲線經(jīng)過的始點和終點的線段是對曲線的“模擬”,如果細分的話,加入曲線上的中點,分別連接始點和終點成為兩條線段,這是對該曲線更好的“模擬”,而這個過程可以不斷進行下去。
( i) d' x3 P! C( k! o) e! n: `3 L5 z6 i& q, z& Q0 Y
托尼•德瑞斯當時將他在學術(shù)界的研究成果和多維曲面上的小波計算,應(yīng)用到皮克斯的曲面生成算法中(小波變換的一大優(yōu)勢,在于可進行多尺度多分辨率的計算分析)。《超人總動員》里,每一個建筑、每一扇窗戶,所有物體的所有細節(jié)都是曲面細分的產(chǎn)物。現(xiàn)在幾乎每個皮克斯動畫制作項目都會用到曲面細分。而今曲面細分算法已然成為CG動畫的行業(yè)標準。* e3 S6 v; @" E9 t) K- ~
+ k. k0 Q* M4 v+ Z/ X9 c; n托尼•德瑞斯和他的研究團隊制作電影同時,仍然不忘在學術(shù)界灌水論文,并且關(guān)注學術(shù)界最新進展,方能將最新的成果用到皮克斯的動畫渲染引擎中來,不過,現(xiàn)在皮克斯的研發(fā)部門和渲染軟件已經(jīng)不像幾年前那樣領(lǐng)先業(yè)界數(shù)個身位了。以前,一個角色模型的光照和著色,還有定義各種動作的參數(shù)首先是數(shù)學上的難題,接著是寫代碼上的難題;但現(xiàn)在,像 Blender 一樣的開源軟件,也能比肩皮克斯自主研發(fā)的軟件。2012年夏天,皮克斯發(fā)揚互聯(lián)網(wǎng)的分享精神,將他們的曲面細分代碼庫開源,放到了網(wǎng)站 GitHub 上。對于這一舉動,托尼•德瑞斯解釋說:“我們曾經(jīng)領(lǐng)先業(yè)界十年,不過現(xiàn)在更得益于讓大家來一起參與開發(fā)。” o, y9 p: o7 s }8 U# b" K6 q
|
|