“蕩氣回腸”!UCLA蔣陳凡夫萬字長文回顧:從轉(zhuǎn)系生到圖形學(xué)終身教授的十二年
“字里行間無不在透露著蔣陳凡夫?qū)D形學(xué)的熱愛與浪漫”
金磊 轉(zhuǎn)載整理自 知乎
量子位 | 公眾號 QbitAI
這是一篇由UCLA應(yīng)用數(shù)學(xué)副教授蔣陳凡夫所撰寫的萬字長文,回顧了他在圖形學(xué)物理模擬領(lǐng)域里十二年來的點點滴滴。
于人,于事,于學(xué)術(shù),字里行間無不在透露著蔣陳凡夫?qū)D形學(xué)的熱愛與浪漫,感動了無數(shù)的網(wǎng)友。
在文中被他稱為“少年英雄”的胡淵鳴,在看完后甚至直呼“蕩氣回腸”。
目前已經(jīng)攬獲近3000的贊。
(注:本文經(jīng)授權(quán)轉(zhuǎn)載,以下為原文)
最近評上tenure(終身教授),有人來祝賀:”Now you can freely decline review requests!”。我想了想,似乎對心態(tài)上的改變確實如此而已。又想到也許可以寫個什么紀(jì)念一下。那這19歲到31歲,有什么拿來回味的沒有?好像有很多,但不整理一下的話,又不知從何說起。那還是直接寫一點吧。從物理本科,到CS PhD,CS教職,又在數(shù)學(xué)tenure,這看似曲折的十二年竟是在做同樣的研究,一年都沒有浪費。一路走來,有很多東西值得緬懷和總結(jié),也許能幫助思考未來。順便把這一路干過的牛逼的事,和遇到過的牛逼的人都寫下來,看著應(yīng)該很舒爽。
- 第〇章:我的三叉戟
- 第一章:緣起
- 第二章:一炮炸出來兩個坑
- 第三章:雪與海的浪漫
- 第四章:摩擦摩擦,在光滑的路上,摩擦
- 第五章:少年英雄胡淵鳴
- 第六章:與Timestep結(jié)緣
- 第七章:摩擦碰撞的第三次戰(zhàn)役,IPC魔童降世
- 第八章:下一個“Timestep”
第〇章:我的三叉戟
十二年來摸爬滾打地給計算機圖形學(xué)做了些物理模擬相關(guān)的科研。拿的出手的代表方向有三:物質(zhì)點法(Material Point Method: MPM),仿射粒子元胞法(Affine Particle In Cell: APIC),和增量勢能接觸法(Incremental Potential Contact: IPC)。每個方法的人和事下面的章節(jié)再去回憶,這一章,先籠統(tǒng)概括一下。
第一個方向:MPM。說到物質(zhì)點法,按照慣例,或許得提一下自己多多少少參與了的冰雪奇緣。2012年發(fā)掘MPM后我去做了些別的事情,組里其他同學(xué)拿MPM驗證了雪;我在早期沒有去參與最初的SIGGRAPH工作。迪士尼工作室的代碼很臃腫,遠遠不止99行,而且迪士尼的律師可不是吃素的,向來有荒島求生畫米奇一說。既然不能描繪太多代碼的事情,那就只放好看的劇照:
MPM擅長做雪在短期內(nèi)成為了一個刻板印象。于是我決定花一些功夫來重塑一下MPM的形象。從技術(shù)層面上來說,MPM只是一個基本的Galerkin空間架構(gòu),物理過程數(shù)值模擬的真正技術(shù)點在于時間和空間的離散算法、本構(gòu)模型的設(shè)計、性能的加速、以及巧妙求解偏微分方程數(shù)值解的不同手段。MPM是一塊高品質(zhì)的畫布,這些技術(shù)點的創(chuàng)新才是真正的筆法(stroke)。但是技術(shù)點是里子,MPM是面子。
于是從面子上看到的,便是我與一干志趣相投之士用MPM去平A物理的世界的各種固體和流體:巧克力,果凍,面包,牙膏,冰淇淋,泡沫,泥土,巖漿,牛排,東坡肉,橘子,西瓜,肌肉,骨骼,內(nèi)臟,布料,毛衣,頭發(fā),雪山,沙海,冰川,河流,無人機,炸藥,等等。這里有固體,有牛頓流體,有非牛頓流體,有粒狀體,有固液混合體,還有人體。大到山川河流,小到雨露甘霖,MPM從一個鐵頭功,逐漸被擴寫成了一本七十二絕技。
后來跟人合開了公司,寫了一個實用的MPM特效解算器。最近Autodesk買下并放進了Maya,相信未來的幾年,更多的電影里會看到MPM的應(yīng)用場景。
第二個方向:仿射粒子元胞法(APIC)。這是我2015年得意的文章,是2014年的圣誕節(jié)獨自一人在迪士尼的大帽子studio里加班完工的。迪士尼所在的Burbank是大洛杉磯地區(qū)一個荒漠城市,我卻在荒漠和大海結(jié)了緣。于是那一年,APIC給海洋奇緣里的水提升了許多豐富的細節(jié)。
時間快進到2017年,有一位氣血翻騰的胡姓少年來訪問我,一起把APIC和MPM系列工作推到了高潮:Moving Least Squares MPM(MLS-MPM)。那之中與后來太極圖形的淵源和MPM在可微分模擬領(lǐng)域的拓展,已有好文記錄。
第三個方向:IPC。2020年12月31日,賓夕法尼亞大學(xué)計算機圖形學(xué)中心,23點59分,手里的咖啡還燙。有一塊補天的石頭,它吸滿了天地靈氣日月精華,突然炸裂開了。增量勢能接觸法IPC橫空出世。王婆賣瓜自賣自夸:我竊以為,IPC改良了固體模擬,啟動了“工業(yè)革命”,把連續(xù)固體的仿真科學(xué)(不只在圖形學(xué))帶入了“蒸汽機時代”。2022年,它的衍生故事還在不斷上演:
第一章:緣起
2010年,我遇到了改變了我一生的三個人。第一個人是我的妻子;這十二年,我們相戀五年,結(jié)婚七年,她挽著我踩下了每一個有深有淺的腳印。十二年來做過的每一個回頭來看無比正確的決定,大到職業(yè)道路,小到咬文嚼字,我的許多影響深遠的選擇背后都有她默默的付出不休不眠的時間陪我去抽絲剝繭和理性分析。
我在中科大少年班選的專業(yè)是等離子體物理,2010年在UCLA入學(xué)后想轉(zhuǎn)到計算機,如果沒有她絕對理性地安撫我的急躁和幫我規(guī)劃合理的步驟,我可能連第一學(xué)期都沒讀完就自暴自棄、不知所向。她還會陪我走很遠很遠。
2010年改變我命運的另兩個人,就是我讀PhD的聯(lián)合導(dǎo)師Demetri Terzopoulos和Joseph Teran。他們的成就是我一生奮斗的目標(biāo)。
我在UCLA CS系的導(dǎo)師Demetri是英國皇家學(xué)會的院士(并列于牛頓、本杰明富蘭克林、霍金等人),奧斯卡技術(shù)獎得主,他是1980年代計算機圖形學(xué)里第一個做物理仿真的人,可謂元宇宙物理引擎之父。他同時也是計算機視覺泰斗,發(fā)明了snake算法。他其實還跟Hinton一起在二十多年前就發(fā)表了世界上第一篇用神經(jīng)網(wǎng)絡(luò)做物理仿真的圖形學(xué)文章,似乎常常被人漏cite。
我在數(shù)學(xué)系的共同導(dǎo)師是Joseph,他是陶哲軒的同事(我現(xiàn)在也是了),Level Set發(fā)明人Stan Osher的徒孫和同事,曾被discover評為40歲以下最聰明的20個大腦之一(20 Best Brains Under 40),他是圖形學(xué)里最有名的做有限元固體仿真的人。
2010年秋天,我跟一個朋友一起聯(lián)系了Demetri,以及Joseph和朱松純老師。朱老師給出了很理性的不贊成我轉(zhuǎn)系的答復(fù)。(后來朱老師對我改觀,跟Osher一起加入了我的博士委員會,再后來通過摯友,如今北大智能學(xué)院的朱毅鑫教授,形成密切的學(xué)術(shù)合作關(guān)系,這是后話)。
Demetri和Joseph冒著很大的實驗室財務(wù)浪費的風(fēng)險,看著我一段蹩腳的彈簧模擬代碼(MATLAB寫的),但是考慮到我以前發(fā)表過相對論相關(guān)的論文應(yīng)該腦子不笨,給了我一個機會。我趕緊紅牛下肚,花了幾個通宵強行通讀了一本教材,并復(fù)現(xiàn)出了一篇有限元肌肉仿真的siggraph文章。諸如此行為,是impress圖形學(xué)教授最簡潔有效的手段。從此一發(fā)不可收拾。
寫代碼和圖形學(xué),我入門都很遲。胡淵鳴初中就寫剛體引擎小游戲了,我博一還在自學(xué)C++模板。跟許多有理想的圖形學(xué)或游戲愛好者一樣,從頭搭建一個自己的引擎是一個抑制不住的沖動。2012年初,補完所有計算機和應(yīng)用數(shù)學(xué)課程的我結(jié)合自己的物理背景,摸索出了一個長期目標(biāo):用物理仿真去重建這個世界。
Demetri也鼓勵我:你比誰都適合去close the gap between virtual reality and physical reality, 把虛擬世界跟物理世界給打通。那時候沒有元宇宙這個說法,但是我的兩個導(dǎo)師都是digital double虛擬人體的深度發(fā)燒友,這對我的科研興趣的影響不可謂不大?;氐轿锢硪孢@個構(gòu)想上,心動不如行動,這世界五顏六色千變?nèi)f化,那這引擎就叫魔方大,哦不,百變怪吧!于是ditto誕生了:
ditto里包含了幾個固體仿真和碰撞處理的練手項目,特別是隱式有限元的3D布料仿真。當(dāng)時有taichi語言的話,應(yīng)該寫出來能當(dāng)一次GAMES201大作業(yè)拿個A+。
可惜Ditto維持了半年后,我投入一篇siggraph文章的具體工作中,便沒有再更新了。后來2018年z-emotion/ZelusFX公司的CEO突然聯(lián)系我,說他2012年跟我要的ditto代碼幫助他弄出來一個布料設(shè)計軟件的公司,現(xiàn)在有很多用戶。我開心了很久。
第二章:一炮炸出來兩個坑
我博士期間花了兩年時間合作的第一個項目,是物體破碎。網(wǎng)上有人說,計算機圖形學(xué)是程序員的三大浪漫之一(另兩個是操作系統(tǒng)和編譯原理),但那時的我還沒有看到浪漫,只看到了狂拽炫酷,只想在siggraph上播最帥的demo,做最靚的仔。
那時我學(xué)完了計算固體力學(xué)。跟許多做仿真的初學(xué)者一樣,一切都是從模擬果凍開始,畢竟果凍是最典型的彈性體,并且往往很軟,不會給ODE(常微分方程)的時間步離散格式帶來過分stiff從而要么dt小,要么系統(tǒng)難解的這個數(shù)值問題。于是在彈塑性固體里面,我找到一個想要模擬的案例:子彈射穿果凍。那時乃至今日看來,都沒有多少比這更炫酷的實拍視頻:
現(xiàn)在教職期間,我常告訴自己的學(xué)生,想做什么科研,在大致調(diào)研相關(guān)工作并確定學(xué)術(shù)品位和潛在影響力之后,可以直接開始擼代碼,不要太擔(dān)心techinical contribution不夠。因為你開始做之后,很快就會遇到你之前多半沒預(yù)料到的問題,解決它們將成為你文章的最主要contribution。
我們用有限元去寫果凍破碎,不到半個月,就碰到了兩個重大的難題:(1)如何自然破裂,即不能在裂面看到三角形丑陋的樣子,和(2)如何穩(wěn)健地處理復(fù)雜碎片之間的摩擦碰撞。
拓撲變化哪家強,Level Set敢稱王。要實現(xiàn)自然破裂,結(jié)合有限元和level set方法是一個非常巧妙的思路。Level Set有非常強的靈活性,可以從各種自然的角度去分裂四面體,而且可以完全避免重新劃分網(wǎng)格(remesh)。
Level Set方法的發(fā)明人Stan Osher在UCLA,給了我們一些寶貴的建議,很快,破裂的問題便迎刃而解了。
這篇文章,我更主要負責(zé)的是做摩擦碰撞。建模破裂之后,這順其次成為最頭疼的事情。Level Set的marching tetrahedra切割法帶來了無數(shù)形狀“惡心”的果凍碎片:在裂面上,有的三角形瘦如一道閃電,有的扁如一張大餅。計算幾何上,這些奇特的三角形被稱作是“ill conditioning”,想要用普通幾何方法去搞定它們的碰撞,不說碰撞算法本身的case難以窮舉,光是浮點數(shù)精度帶來的千變?nèi)f化的誤判就足以讓人望洋興嘆。我花一年時間試了很多算法,皆以宣告失敗。
最值得講的一個算法,是一個非常大膽的idea。我把解算完的固體投射到一個規(guī)則的網(wǎng)格上,然后讓網(wǎng)格假裝看到的是不可壓流體,求解一個泊松方程,把速度場變成無散的,再插值回到固體上。這竟給出了非常漂亮的不穿透解!但是缺點在于,物體的運動被變的太像流體一般輕盈靈動了,缺少了那份固體特有的執(zhí)拗。我便去問我的導(dǎo)師Joseph,有沒有類似于這個解流體方法的解固體的方法,我想拿來在碰撞上試一試。他回憶良久,說出了我一個我隨后持續(xù)專注十年的名稱:MPM。
MPM是1995年在美國的國家實驗室發(fā)明的。它是一個混合拉格朗日粒子和歐拉網(wǎng)格的固體解算方法。往前追溯到1960年代的Particle-In-Cell(PIC法,最初用于求解等離子體物理的麥克斯韋方程)和1980年代的Fluid-Implicit-Particle-Method?(FLIP法,用于流體結(jié)算,張心欣的導(dǎo)師Robert Bridson,我的師叔,于2005年引入圖形學(xué))。它像流體一樣,自動防止了材料間的穿透,又可以漂亮地求解固體的方程。把MPM拿過來做碰撞處理,在當(dāng)時的我看來,再合適不過了:
終于,我交了一份目前回頭看來遠遠不夠完美的答卷:
這顆子彈大的有點夸張,更像一枚炮彈。它被評為了SCA 2013的Best Paper Award。它也炸開來兩個MPM帶來的學(xué)術(shù)大坑:拓撲變化的多材料,和自動處理的摩擦碰撞。我和MPM被湊到了一起,從曖昧到沉迷。
彩蛋:文章里還首次用刑了一只犰狳,引起了許多論文讀者的不適。但后來這個場景,竟多次被別的研究者作為benchmark來follow,那可不怪我咯。
第三章:雪與海的浪漫
學(xué)習(xí)MPM的那幾個月,同組的俄國師兄Alexey也加入到粉絲小分隊中來,并主導(dǎo)了廣為流傳的“MPM snow”的那篇文章。一時間,我們組和迪士尼的聯(lián)姻傳為佳話。有我在內(nèi)的好幾個學(xué)生去迪士尼實習(xí)和參與寫作Production軟件代碼。在冰雪奇緣的慶功宴上,我第一次嘗到技術(shù)產(chǎn)業(yè)化的喜悅。
冰雪奇緣之后,迪士尼做了一個Big Hero 6超能陸戰(zhàn)隊。在那里,MPM被用在模擬一些奇怪的材料上,這是個未怎么宣傳過的信息。
△Disney’s Big Hero 6
時間隨之轉(zhuǎn)移到2014年。我打算博士畢業(yè)了,想做一些在MPM和PIC里面更數(shù)學(xué)更基礎(chǔ)的東西,又同時希望能在現(xiàn)有的FLIP流體和MPM固體上做出有應(yīng)用價值的變革。那么回顧一下,用FLIP做流體,和用MPM做固體,流程中的數(shù)學(xué)上有什么不合理的hack呢?內(nèi)行人一定會指出:是FLIP-PIC blending ratio。FLIP和PIC其實可以指代混合粒子網(wǎng)格法中,網(wǎng)格向粒子插值的那個步驟。
PIC直接做速度場的插值,但是會引入巨大的數(shù)值粘性,F(xiàn)LIP插值速度增量,但是會引入巨大的不穩(wěn)定性。于是圖形學(xué)的流體泰斗Robert Bridson教授在2005年就提出,把FLIP的結(jié)果乘以0.97,再把PIC的結(jié)果乘以0.03,然后把它們加起來。這個數(shù)字是一個用戶可調(diào)的參數(shù),但可調(diào)而不可控!不同的場景下,不同數(shù)字會給出非常不同的結(jié)果。它是藝術(shù)家的噩夢,是強迫癥的地獄。
于是我決定干一票大的,把這個東西除掉,因為我有一個信念:需要設(shè)置heuristic參數(shù)的仿真算法絕不可能是一個好算法的最終形態(tài)。
再結(jié)合對于角動量守恒方程的理論分析,跳過一些技術(shù)細節(jié),Affine Particle In Cell?(APIC)被誤打誤撞推導(dǎo)了出來。FLIP流體和MPM固體進入了一個新的篇章,藝術(shù)家們可以更輕松的得到它們需要的仿真結(jié)果粘稠度,無論是山川大河,還是巖漿滾滾。它們在我心中,是可以媲美冰雪的浪漫。
迪士尼非常高興,迫不及待地把APIC用進了海洋奇緣:
2015年夏天,我畢業(yè)和結(jié)婚?;槎Y在洛杉磯南邊的玻璃大教堂,有山有海有樹林。那年暑假的SIGGRAPH,我認(rèn)識了很多很多志同道合的朋友。印象最深的是在流體的session上,我看到一位風(fēng)流倜儻的銀發(fā)少年。他跑來問我,“今年的好文章眾多,能長久流傳的是哪幾個?”我隨便應(yīng)付了幾句。他說道:“今年的文章,有兩篇最diao,一篇是我的IVOCK,另一篇是你的APIC?!?/p>
我吃了一驚,連忙互換姓名。原來這位霸氣的少年,叫張心欣,他現(xiàn)在帶領(lǐng)“澤森科工”在為中國特效打天下。那時純粹的我們,在對方雙眸反光里,都看到了一個勇者,持各自打造的巨劍,浴血挑戰(zhàn)著一頭叫做數(shù)值耗散的惡龍。自那天起,我們也開始了迄今長達七年的并肩合作。
畢業(yè)之后,我繼續(xù)深耕MPM固體和流體。學(xué)術(shù)界的人其實蠻喜歡立flag。我就一直盡量堅持去貫徹一個基本原則:即使我的仿真文章是投在圖形學(xué)會議和期刊上,我也絕不為了視覺效果去做任何不符合物理和數(shù)學(xué)原理的hack;我需要每個算法都普適到整個計算物理學(xué)。這個原則給后來教授期間的我?guī)砹撕芏嗟暮锰帲喊耍?)自然科學(xué)研究基金的青睞,(2) 在Nature子刊發(fā)表的MPM自然災(zāi)害預(yù)測技術(shù)(雪崩,山體滑坡,泥石流,冰川碎裂,海嘯):
以及(3)醫(yī)院十分喜愛的虛擬創(chuàng)傷和手術(shù)的仿真平臺:
它們也許沒有雪與海一樣浪漫,但卻更加真實和直接地影響到了這個世界,甚至幫忙拯救生命。這些工作也給圖形學(xué)里做物理仿真的同行在自然科學(xué)和醫(yī)學(xué)領(lǐng)域贏得了更多的尊重,糾正這些別的領(lǐng)域的人關(guān)于圖形學(xué)就是不斷引入他們做的東西的誤解。
畢竟很多圖形學(xué)論文喜歡把這個叫作contribution:“We introduce the XXX method to computer graphics.” 我想做的,是要物理學(xué)和數(shù)學(xué)的人發(fā)論文說同樣的這句話,但是把“to”改成“from”。最近遇到的一位做經(jīng)典力學(xué)的同事發(fā)出感嘆:“好一波反向輸出!”
既然想到固體仿真在醫(yī)學(xué)上的應(yīng)用,一縷額外的回憶又涌上心頭。2016年,我特別想把虛擬人體給產(chǎn)業(yè)化,也探索了很多不同的方向。其中比較有意思的,便是與lab師弟,也是好哥們的如今體素科技CEO丁曉偉討論的整形手術(shù)預(yù)測。當(dāng)時我跑了個隆胸動力學(xué)預(yù)測的demo(包含了對胸部軟組織、皮膚、和硅膠假體全方位的模擬),也在洛杉磯聊了一些整形醫(yī)生,但感覺市場需求度不夠大,所以沒有繼續(xù)下去。也不知道元宇宙跨領(lǐng)域越來越火熱的今天,這個方向現(xiàn)在怎么樣了。
第四章:摩擦摩擦,在光滑的路上,摩擦
前面說到,2012年我便用MPM的思路去嘗試處理了破碎仿真里的物體碰撞。但是那個算法只能對付不同碎片之間的碰撞,對自碰撞self collision無可奈何。MPM作為一個用粒子來描述物體的離散格式,畢竟天然最適合如冰雪沙土般像粒子一樣的物體。
布料和毛發(fā)則是每一個做固體仿真的人都想攻克的東西??茖W(xué)研究應(yīng)當(dāng)盡量以人為本,而布料和毛發(fā)跟人的關(guān)系真的太大了。處理摩擦碰撞的算法很多,它們做的好的地方都一樣優(yōu)秀,做的不好的地方卻五花八門。于是2017年,我重新回到摩擦碰撞這個戰(zhàn)場。跟MPM處在105度熱戀中的我,選擇了一個所有人都沒有想過的思路:用MPM塑性去挑戰(zhàn)這個課題。
那時我已經(jīng)學(xué)會了Druker-Prager塑性屈服面,并成功用它做出了MPM沙子。沙子的本構(gòu)模型有兩個要素:第一,它支持分開,不支持?jǐn)D壓;第二,它往邊上滑的時候,切向力和法向力要滿足庫倫摩擦定律。仔細回味一番,這兩個特性,明明不只是沙子所特有的?。〔剂?、毛發(fā)、橡皮、剛體等等,哪個常見固體的碰撞不是要遵循這兩個定律呢?
于是我決定拋棄傳統(tǒng)的基于點和三角形,邊和邊幾何相交特性的摩擦碰撞理念(ditto里實現(xiàn)過的那一套),而是采用MPM“連續(xù)介質(zhì)力學(xué)”的觀點。管他是布料還是毛發(fā),都是一些連續(xù)的空間占用而已。在這個觀點下,它們跟沙子唯一的區(qū)別便是,沙子是三維的“體”,而它們分別是三維空間中二維和一維的曲面。
想到這一點,一切便豁然開朗:如果Drucker-Prager塑性可以讓三維的MPM沙子滿足摩擦碰撞的性質(zhì),那么我只需要推導(dǎo)出二維和一維子空間上所對應(yīng)的類似的塑性,便可以讓MPM布料和毛發(fā)滿足同樣自動摩擦碰撞的性質(zhì)!
以布料為例,通過對形變梯度的QR分解,我們可以設(shè)計一個精巧的彈性能量和塑性屈服面來“管理”布料在法向上摩擦碰撞力所需要滿足的應(yīng)力條件。直觀上來講,在曲面方向,布料仿佛一束束被交織的沙礫,沿著布料的切向望去,滿布上都寫著兩個字“庫倫”。
意識到了這一點,處理一維二維曲面的摩擦碰撞便與處理三維沙子的摩擦碰撞別無二致。只需要將這新的本構(gòu)模型寫入曲面上的頂點,MPM便全自動地默默處理了剩下的一切。從布料到毛發(fā),從地毯到毛衣,一切傳統(tǒng)的碰撞檢測和碰撞處理都被拋棄,一把粒子,一架網(wǎng)格,便能生成一段美妙的動畫。這種顛覆式的建模方式,如今我回頭看,仍覺得是走出了魔鬼的步伐,是自己學(xué)術(shù)生涯最滿意的MPM論文。
那一年去siggraph 2017宣講物質(zhì)點法,抒發(fā)的情感只能用已故的李兆基老師的經(jīng)典臺詞來形容,“比我的初戀更加詩情畫意。”
這篇文章的2D版還在太極語言中被實現(xiàn)了出來(橘子貓:Taichi實現(xiàn)2D Anisotropic Elastoplasticity Cloth),代碼十分簡潔,妙不可言。后來第二年的SIGGRAPH2018,哥倫比亞大學(xué)殺出來一員猛將 Raymond Fei,把這套步法跟APIC結(jié)合起來,做了一份令人嘆為觀止的布料與水相互作用的工作(libwetcloth),一百分的賞心悅目。
參會SIGGRAPH 2017,我還有一個額外的目的:招納自己的第一個學(xué)生。開會時,我在賓夕法尼亞大學(xué)的助理教授生涯剛開始不久,孤苦伶仃。一場場燈紅酒綠的派對,一間間熙攘喧囂的酒吧,我在會場外面的夜搜尋著那個可以一起談笑風(fēng)生個幾年的小伙伴。高級的獵人都會偽裝成獵物。
在一個昏暗的角落,我看到一個熟悉的身影在月下獨酌,對我目送秋波。那不是一年前張心欣在烤肉店介紹給我的李旻辰嗎?我記得他!UBC的一個精壯帥小伙兒,跟張心欣做過一篇流體的文章。我點了兩杯火辣的蘋果馬提尼,搖搖晃晃地走了過去?!斑€記得我嗎?”“記得記得,來,搞一杯!”那一杯,給下一個不醉不歸的五年學(xué)術(shù)夜宴,拉開了序幕。
第五章:少年英雄胡淵鳴
2017年的夏季注定要遇到更多不平凡的人。話分兩頭,在酒吧初遇李旻辰之前的那一年早些時候,圖形學(xué)領(lǐng)域廣泛流傳著這么一個都市傳說。有一位策馬揚鞭的少年武士,他沒有發(fā)表過一篇SIGGRAPH論文,但他實現(xiàn)了一百篇;他沒有開源過一套代碼,但他有一百萬行張弓待發(fā);他接手的圖形學(xué)仿真實現(xiàn),可以在一夜之間效率提高十倍;他三天沒有睡覺,便重現(xiàn)了四年來的所有MPM論文,并且提出了一百種改進的方法。
他究竟是神仙的化身?還是地獄的使者?一時間流言四起,有人甚至說他要建立新的計算機圖形學(xué)秩序。還在默默想著MPM問題的我更是夜不能寐。這小子,是何方神圣?
他果不出所料地殺上門來了。如想象般翩若驚鴻的胡淵鳴,帶著一位比他更加神秘且靦腆的小伙伴,從清華殺到了我UPenn實驗室的門口?!拔覀儊砀阋黄鹱鯩PM。”他的話簡短有力。“好,開始吧?!蹦菚r的我們,不會寒暄客套,只需要看到一個共同的研究目標(biāo)便一切盡在不言中。那時他帶來的小幫手,叫方火奧,我去google,哦,方燠 yù。現(xiàn)實絕非一帆風(fēng)順,我們高速迭代經(jīng)歷了一些失敗的科研項目,才最后有了MLS-MPM的發(fā)明和后續(xù),簡潔而又精彩。
那時,我有一套自己的C++庫,遠超當(dāng)年的ditto。我的庫叫做“jixie”(機械)。胡淵鳴帶來了他的庫,叫做“taichi”(太極)。那時太極還是一個C++庫。兩個庫各有千秋,碰撞出許多熱烈的火花。胡淵鳴對我助理教授生涯的研究重心,尤其在對榨干計算機性能的追求上,起到了很大的啟發(fā)性作用。
英雄相惜,終須一別,胡淵鳴要遠赴MIT去做別的項目,我在披薩店餞別?!癕PM的發(fā)展將緩慢下來!”我悵然若失。他笑了笑,告訴我,仍有一個人跟我去打MPM多物理仿真的江山。我目光一瞥,才猛然驚醒,這段時間在刀光劍影里一起談笑風(fēng)生的,還有另一位比他更年輕的英雄少年!言辭不多的他,在科研的戰(zhàn)場上,雖不像胡淵鳴一樣耀眼的艷麗,卻散發(fā)出一股更加剛猛的熾熱。
方燠成為了我第二個學(xué)生。如果旻辰是一杯濃厚的酒,底蘊日漸成熟,方燠就是一把嗜血的刀,愈加鋒利兇殘。他在隨后的5年里,把舊論文的實現(xiàn)和新想法的嘗試這兩件事的速度都做到了像居合斬一般,一刀斷骨刀刀落命。
在那段日子里,在方燠、旻辰、和一干猛將的拼搏下,我們一直推進高性能的MPM多物理仿真,直到億萬粒子級別的仿真也變得輕松寫意。我們通過跟超算中心的合作,把MPM發(fā)展到了能進行Exascale computing的超算機上,每秒算10的18次方個浮點運算。這樣看來,對于高分辨率的追求,我們是認(rèn)真的。
后來,我的實驗室匯集了更大一批意氣風(fēng)發(fā)的孩子們,屈子吟(ziyin:北京電影學(xué)院發(fā)了一篇滿是數(shù)學(xué)公式的計算機頂會論文,并開源了其代碼)?,仇宇星,王鑫磊,李軒,陳宇諾,曹亞帝,等等,他們圍繞著方燠主導(dǎo)架構(gòu)的C++仿真引擎ziran(自然),在物理模擬的海洋里盡情嬉戲。他們飄逸的學(xué)術(shù)舞曲還在不斷被譜寫,有他們在身邊,我感覺自己永遠抓住了青春,每天都是學(xué)術(shù)上的“掰餅聚會”:
△To break bread is to affirm trust, confidence, and comfort with an individual or group of people.
在幫助人類打通虛擬世界和現(xiàn)實世界的歷史使命上,我們致力于仿真這一個點,用硬核的根基散發(fā)千萬的枝葉。下面的這些都是我的實驗室這些年研究過的方向。這些成果中也充滿了極其珍貴的如北京大學(xué)朱松純教授、陳寶權(quán)教授、以及浙江大學(xué)唐敏教授等前輩傳授的經(jīng)驗和給予的幫助。
第六章:與timestep結(jié)緣
步者乃一身之根基,運動之樞紐也?!短珮O拳十大要論》
在元宇宙的“基礎(chǔ)架構(gòu)”之中,如果建模是內(nèi)功,渲染是招式,那么物理仿真就是步法或身法。步法與時間和運動緊密綁定在一起,在時間上做微分和積分,從過去預(yù)測未來,用未來指引過去。(指引過去,靠的是可微分模擬。)不管是逍遙派的凌波微步,泰森的蝴蝶步法,還是奧拉朱旺的夢幻腳步,它們都反映了一個道理:有一套成熟的步法是一位集大成者立于不敗之地的一個可靠的保證。
在動力學(xué)物理仿真中,大家最常說的一個詞,就是timestep:時間步長,Delta t。正向物理仿真的過程,本質(zhì)上往往就是微分方程在時間軸上積分的過程,這個過程,又被稱為timestepping method;我愿譯其為“時間步法”。
現(xiàn)實中的時間是連續(xù)的,但仿真中的時間是離散的。對于一段24 FPS的動畫來說,每秒鐘的理想情況,是讓仿真算法從一個過去的時刻往前走24步,每步走1/24秒,生成24個幾何形態(tài)。除非希望對現(xiàn)實的逼近追求更加極致的準(zhǔn)確性,一個通用圖形學(xué)算法最好具備只需要走24步的能力。如果往前預(yù)測1秒需要走48步,或者240步、2400步,那就往往是成倍的效率降低。
可惜的是,直到2015年左右,甚至今日,仍然有無數(shù)的圖形學(xué)仿真算法需要走子步(substeps)。更令人痛苦的是,即使走了子步,它們中的絕大多數(shù)仍然不能保證數(shù)值的穩(wěn)定性,俗稱“爆了”:
放錯圖了。爆了的仿真其實長這樣:
仿真爆了就意味著得調(diào)節(jié)參數(shù)把程序重跑。我2011年在工業(yè)光魔ILM實習(xí),我那時的實習(xí)導(dǎo)師告訴我,ILM里在幫復(fù)仇者聯(lián)盟的綠巨人設(shè)計肌肉仿真算法,浩克一發(fā)力,程序就爆炸,重跑停不下來,delta t 小的不能再小了,機房空調(diào)費都要燒個上百萬。
為了能夠邁出1/24秒或更大的步子,我開始致力于研究基于優(yōu)化的時間步法。非線性非凸數(shù)值優(yōu)化是一個非常厲害的領(lǐng)域,如今整個神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)都靠它。這個宇宙最基本的物理規(guī)律:熱力學(xué)第二定律(熵增原理)本身也定義了一個優(yōu)化問題。因此,越來越多的應(yīng)用數(shù)學(xué)家開始用優(yōu)化和變分法的思路去重新思考動力學(xué)偏微分方程的數(shù)值解。
彈性體模擬的方程便是一個可以重新定義為尋求最小值的優(yōu)化問題!在此框架之下,時間步長可以邁的任意大,不會扯到蛋。
此間工作很多,圖形學(xué)里早期工作比較有代表性的,包括劉天添 2014年的巧妙投影動力學(xué)“Projective Dynamics: Fusing Constraint Projections for Fast Simulation” 及其2017年的擬牛頓法“Quasi-Newton Methods for Real-time Simulation of Hyperelastic Materials”(2019年(第八屆)中國科學(xué)技術(shù)大學(xué)《計算機圖形學(xué)前沿》暑期課程_嗶哩嗶哩_bilibili)(冰點藍:計算機圖形學(xué)前沿(2019) Towards Real-time Simulation of Deformable Objects),和我2015年參與的比較中規(guī)中矩的牛頓法“Optimization Integrator for Large Time Steps”。我的實驗室后來則在下面四個地方分點發(fā)力:
李旻辰在2019年把擬牛頓法跟domain decomposition結(jié)合了起來,打敗了一系列競爭對手,得到了一個非常高速度的有限元彈性體解決方案Decomposed Optimization Time Integrator “DOT”(點點有限元法):
王鑫磊則另辟蹊徑,考慮多尺度網(wǎng)格multigrid,讓MPM也走到了超大的時間步長上面,發(fā)明Hierarchical Optimization Time Integrator “HOT”(熱辣物質(zhì)點法),可以高效處理超級“硬”的彈塑性體,幫助工程力學(xué)設(shè)計的仿真:
方燠則跳出牛頓和擬牛頓的思路,以“快”為目的,把MPM的加速結(jié)合上了交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)上。這個方法被稱為“Silly Rubber”(愚人橡皮法),可以快速模擬各種MPM適合的材料,比如奶油:
我們最為得意的,也是最新搞出來的,便是李軒、李旻辰和我一起用幾支爛筆頭推導(dǎo)出來的SIGGRAPH 2022論文Energetically Consistent Inelasticity?(ECI)。這個工作在數(shù)值計算理論上,我認(rèn)為有很可觀的意義:它首次讓塑性力可以邁著同樣大的步伐,被真正隱式求解了!也就是說之前的方法,包括上面提到的,都不準(zhǔn),都對塑性力做了一個強相關(guān)于 delta t 的其實很不準(zhǔn)確的近似。
那算的準(zhǔn)有什么好處呢?當(dāng)然是去跟現(xiàn)實對照了。跟現(xiàn)實連定性的視覺效果都對不上的虛擬物體,步法不夠穩(wěn)健,不能叫數(shù)字孿生,永遠都只是游戲(沒錯, 這里說的的正是PhysX/PBD)。我們的堅持,是第一性原理,是我們希望一直盡力朝著真正的數(shù)字孿生方向前行的一些固執(zhí)的原則。
第七章:摩擦碰撞的第三次戰(zhàn)役,IPC魔童降世
開始的那些年,從最初level set fracture中的一炮雙響,到MPM布料,我一直在跟“摩擦碰撞”這個難題對干。每一場仗都打的很漂亮,但都還是存在很多Limitation。以2017年的MPM布料為例,作為它的締造者,我比任何人都能更清晰的看到它光芒下令我不堪面對的缺憾。作為一個MPM方法,它在隱式積分條件下性能非常差。
它對粒子和網(wǎng)格的依賴給幾何體強加了許多苛刻的要求:比如兩者的分辨率需要盡量吻合。同時,它又像一臺看似美好的特斯拉自動駕駛汽車,一不小心甩給你一個不大也不小的錯誤(數(shù)值粘性和偶爾的數(shù)值穿透),讓你在使用時總是心懷忌憚。比如正如下圖所示,MPM布料做毛衣雖然厲害,但是仔細看去,還是出現(xiàn)了許多穿透:
穿透會非常嚴(yán)重的影響仿真的精度和可信度。它不只是模型視覺上的錯誤,隨之而來的彈性力和摩擦力也會因穿透而變得離譜和虛幻。因此,長久以來,至少在布料這一個小方向上,我并沒有能夠把MPM從特效和游戲的應(yīng)用中打出去。換而言之,因我堅信元宇宙和游戲的最重要區(qū)別是對“準(zhǔn)”的把握上(這也是我不認(rèn)為NVIDIA的omniverse拿著一個基于不物理方法推導(dǎo)出來的PhysX引擎可以做成真正元宇宙物理引擎的根本原因),MPM在布料這個方向上要走的路還很長,還需要后來者的努力。
時鐘撥到2020年前夕,沒有征兆又似蟄伏許久的一件事情發(fā)生了。之前我把旻辰比作美酒,他便真的是這樣一個學(xué)生,在陳釀的千錘百煉中一不小心就飽滿豐厚,醇香持久。沒幾年,他便從一個學(xué)生瀟瀟灑灑地蛻變?yōu)橐粋€成熟的合作伙伴。
那晚,我鄭重的告訴旻辰,“你剛完成的這個叫做IPC的項目,把一個困擾了計算機圖形學(xué)和工程力學(xué)無數(shù)研究者幾十年的一個領(lǐng)域給終結(jié)掉了,完美本無法觸及,但IPC是我入行以來見過的,最接近完美的仿真技術(shù)。”在這一年后,旻辰以IPC斬獲SIGGRAPH年度最佳博士論文獎,毫無懸念。
IPC的全稱是Incremental Potential Contact,中文作增量勢能接觸,很拗口,還是就叫IPC吧。它的算法冗長而又毫不晦澀,剛猛而又不失優(yōu)雅。在數(shù)值優(yōu)化的框架下,IPC把所有基于mesh的物理仿真中“不許穿透”這個令學(xué)術(shù)界和產(chǎn)業(yè)界都為之癡迷的難題,從仿真問題的數(shù)學(xué)形態(tài)上就直接通過一個靈巧的定義給徹底斃掉了,其后的算法自然是如出入無人之境?!皬拇舜┠J锹啡?。”
技術(shù)上,IPC提出了一個嶄新而又巧妙的關(guān)于“碰撞”的數(shù)學(xué)描述方法:所謂碰撞,便是在動力學(xué)過程的最小作用量原理下,要求任何非鄰接幾何表面之間的歐氏距離在連續(xù)的時間軸上恒大于零。它正是又一個timestepping的時間步法!如此一來,我們得到了一個可以用數(shù)學(xué)完美描述的約束優(yōu)化問題。再配以些許精巧而不詭野的算法設(shè)計,最終的IPC技術(shù)在數(shù)學(xué)、算法和實現(xiàn)上都令人信服。毫不夸張的說,IPC是數(shù)值仿真自發(fā)明以來,唯一的把精確碰撞和摩擦這兩個要求完美解決掉的辦法。它唯一的缺點是計算效率不夠快;被我們后來攻克,按下不表。
IPC及其2021年后續(xù)工作賦能了無數(shù)之前計算機仿真界根本做不了的事情,以絕對的穩(wěn)定性、精確性、和數(shù)值收斂性涵蓋了三維柔性體(“百萬四面體的毛球”和“是繩子就堅持一百秒”):
二維布料(輕松處理打結(jié),和任意多層布料上身,這里只展示了四層,畢竟我們的建模制版技能點加的比較少):
二維薄殼(跟真實的一疊撲克牌的厚度完全吻合,沒有任何別的方法可以做到)(這是不是可以拿去開元宇宙賭場?):
以及首次有“不穿透保證”與“精準(zhǔn)摩擦力”兩個性質(zhì)的的一維細桿(面條、毛發(fā)):
旻辰向來沉穩(wěn)低調(diào),他宣傳IPC的文章(李旻辰:IPC: SIGGRAPH 2020開源有限元碰撞獨家處理方案)也跟他的人一樣靠譜實在。2020年1月,我在IPC的第一篇論文里,寫下過這么一段總結(jié)(中文意譯略有改寫):
IPC技術(shù)適用于所有基于網(wǎng)格的固體模擬。無論是自碰撞、外碰撞、甚至是來自于低維曲面的碰撞,IPC都是一個絕頂靈活、有效、和無條件保證成功的解決方案。IPC對圖形學(xué)和工程力學(xué)基于或不基于有限元的全部應(yīng)用都提供了有史以來第一個幾何不穿透,體積不反轉(zhuǎn)的可證明的直接保證。從此以后,跑固體仿真只需要輸入真實世界可以測量的物理參數(shù)和幾何參數(shù),而再不需要去調(diào)節(jié)所謂的數(shù)值參數(shù)。在此之上,IPC承諾必定能夠?qū)θ我鈴?fù)雜的狀態(tài)給出求解,并且這個解就是這個世界上現(xiàn)存所有算法能給出的,最接近真實世界摩擦碰撞結(jié)果的解。
幾年過去了,這個總結(jié)被圖形學(xué)、機械工程、以及機器人領(lǐng)域的同行不斷的引述和驗證。作為一個學(xué)者,我從未如此夸過一個工作,畢竟有吹牛皮之嫌。但是IPC不一樣,我不擔(dān)心,因為這個牛皮是鋼鐵鑄成,永遠也吹不破。
IPC這么完美,還有什么可以改善的呢?正如上文所說,它的計算效率存在一定的問題。在我們一籌莫展之際,一位老友突然與我們?nèi)〉昧寺?lián)系。此人名作陰陽(Yin Yang),繼胡淵鳴之后成為第二個讓我瞧見八卦圖頭像便能開懷之人??巳R姆森大學(xué)的楊垠教授(現(xiàn)在遷去了猶他大學(xué))姍姍來遲,他是降維仿真和GPU加速仿真的代表人物。我們一拍即合,開始建立深厚的革命友誼。自那天起,楊垠、旻辰和我開始了圍繞IPC技術(shù)的一系列深度合作項目。在我們的思維火花碰撞之下,浩如煙海的腦洞和研發(fā)項目撲面而來。以2022年為例,我們便讓IPC生態(tài)系統(tǒng)在剛體仿真和實時仿真兩個方向取得了不亞于原始IPC的嶄新成果。
第一個成果,是我們在剛體仿真上取得的重大成就。剛體與柔性體自古以來便被分開處理,求解它們的方法不能說是關(guān)系不大,只能說是幾乎毫無關(guān)系。在IPC的加持下,我們提出了嶄新的“Affine Body Dynamics?(ABD)” 仿射體動力學(xué),在淘汰傳統(tǒng)剛體模擬的路上直接飆到終點,讓剛體重新回歸成它們在真實世界中的樣子:即使最硬的物體,也會微小的形變,硬度是振金還是木頭,該是多少就是多少,不需要被假設(shè)成絕對剛體。在ABD技術(shù)的加持下,我們在擁有所有IPC優(yōu)點的同時,達到了媲美現(xiàn)有剛體引擎的速度和全方位碾壓的精度。高速而又精準(zhǔn)的機械體仿真首次成為可能。
真實碰撞驅(qū)動的齒輪:
及其受力分析:
帶傳動結(jié)構(gòu)的小車(含簡易氣缸):
及其傳動引擎的簡易氣缸運動的可視化(活塞運動帶動旋轉(zhuǎn)):
鐵鏈彈性波的傳播:
比較傳統(tǒng)的場景當(dāng)然也不在話下:
值得一提的是,ABD在機器人抓取的任務(wù)上,已經(jīng)被機器人領(lǐng)域的學(xué)界和工業(yè)界同行驗證,其成功率和對接觸力/摩擦力的準(zhǔn)確性上,已經(jīng)遠遠超過了PBD、Bullet、Mujoco等一眾現(xiàn)有剛體引擎;強化學(xué)習(xí)在我們的solver上,輕松訓(xùn)練出了真正可以轉(zhuǎn)化到物理世界的控制算法,誤差之小,模擬過程之愜意,非機器人業(yè)內(nèi)人士不可言喻:
英偉達Omniverse也宣傳了很多工業(yè)機器人的場景,它的技術(shù)仍然基于PhysX(PBD),那套簡單易學(xué)但毫無真實物理原則的手段。剩下的一切,還何須多言呢?也許在有些人心中,元宇宙只需要以假亂真,”看上去差不多就行了?!蹦敲?,就等時間給出“自然”選擇的答案。
我從方法論上表述我自己的觀點。我認(rèn)為,像PBD一類的技術(shù),以快為出發(fā)點,在當(dāng)年的低下算力和就是面向游戲的兩個前提下,無可厚非。但是由于對數(shù)學(xué)和物理原理的修改與簡化,使其在元宇宙的未來想要從快到準(zhǔn),路途難如蜀道。
與它們截然不同的是,IPC直接先把“準(zhǔn)”這一步做到了幾乎完美,那么在這個前提下,再做快有多難呢?在算數(shù)、算法、算力的三重加持下,IPC加速之路順暢無阻。舉例而言,我們2022年的第二個成果,便輕松地實現(xiàn)了多層布料的實時交互仿真,并且,沒有犧牲任何IPC在碰撞上所承諾的美好保證:
第八章:下一個“Timestep”
十二年,我從C++都不會寫的等離子體物理專業(yè)的學(xué)生,到拿到CS PhD,去常青藤做CS教授,再到UCLA應(yīng)用數(shù)學(xué)拿tenure,回想一下,這其中竟沒有一年被浪費,純粹跟著喜愛的研究走,順其自然。記得網(wǎng)上常有人討論@計算機圖形學(xué)的交叉學(xué)科本質(zhì)。我想我本人應(yīng)該就是一個不錯的活標(biāo)本吧。十二年的職業(yè)道路上,我也是無比幸運(畢竟射手座),遇到了太多牛逼的師長、同學(xué)、摯友、和學(xué)生,每個人都讓我學(xué)到了很多。
那下一個十二年,我應(yīng)該主要做些什么呢?思考了許久,不為立志,但求有一個計劃。我想, “closing the gap between virtual reality and physical reality”,這個目標(biāo)絕沒有變,圍繞物理仿真這一指引運動規(guī)律的軸心的原則也依舊在我心上打著思想鋼印。在此之外,我與攜有同樣想法的三個人(李旻辰,方燠,楊垠Yin Yang)一起成立了Timestep,致力于穩(wěn)健、精準(zhǔn)、高效、普適的物理仿真“步法”及它們在不同產(chǎn)業(yè)中的應(yīng)用,并在國內(nèi)以及世界多地積極打造和布局一個可持續(xù)發(fā)展的體系。萬水千山不停步,希望在下一個十二年,我們跟更多同道中人一起,通過有趣和有用的技術(shù)和想法把虛擬世界和現(xiàn)實世界真正打通。
《從轉(zhuǎn)系生到終身教授:十二年圖形學(xué)物理模擬的自我回顧》:
https://zhuanlan.zhihu.com/p/560415998
- 英特爾遭遇「災(zāi)難級」財報!裁員、砍業(yè)務(wù)、董事會主席辭職,甚至給不出2023業(yè)績預(yù)期2023-01-28
- 阿里賈揚清:新一輪AI爆發(fā)的推動機制是工程化和開源 | MEET20232023-01-30
- 未知物體也能輕松識別分割,效果可遷移 | DeepMind研究2023-01-26
- 基因療法讓小鼠剩余壽命翻倍,人類長生不老還遠么?2023-01-26