從轉(zhuǎn)系生到終身教授:十二年圖形學(xué)物理模擬的自我回顧【學(xué)術(shù)人生】
當(dāng)你初入江湖,迷茫不知道該干什么的時(shí)候,不妨去模仿前人是如何進(jìn)行科研的,并從中歸納出最適合自己的道路。為此,我們推出“學(xué)術(shù)人生”專欄,介紹科研的方法與經(jīng)驗(yàn),為你的科研學(xué)習(xí)提供幫助,敬請(qǐng)關(guān)注。
最近評(píng)上tenure,有人來(lái)祝賀:”Now you can freely decline review requests!”。我想了想,似乎對(duì)心態(tài)上的改變確實(shí)如此而已。又想到也許可以寫個(gè)什么紀(jì)念一下。那這19歲到31歲,有什么拿來(lái)回味的沒(méi)有?好像有很多,但不整理一下的話,又不知從何說(shuō)起。那還是直接寫一點(diǎn)吧。從物理本科,到CS PhD,CS教職,又在數(shù)學(xué)tenure,這看似曲折的十二年竟是在做同樣的研究,一年都沒(méi)有浪費(fèi)。一路走來(lái),有很多東西值得緬懷和總結(jié),也許能幫助思考未來(lái)。順便把這一路干過(guò)的牛逼的事,和遇到過(guò)的牛逼的人都寫下來(lái),看著應(yīng)該很舒爽。
第〇章:我的三叉戟
第一章:緣起
第二章:一炮炸出來(lái)兩個(gè)坑
第三章:雪與海的浪漫
第四章:摩擦摩擦,在光滑的路上,摩擦
第五章:少年英雄胡淵鳴
第六章:與timestep結(jié)緣
第七章:摩擦碰撞的第三次戰(zhàn)役,IPC魔童降世
第八章:下一個(gè)“Timestep”
第〇章:我的三叉戟
十二年來(lái)摸爬滾打地給計(jì)算機(jī)圖形學(xué)做了些物理模擬相關(guān)的科研。拿的出手的代表方向有三:物質(zhì)點(diǎn)法(Material Point Method: MPM),仿射粒子元胞法(Affine Particle In Cell: APIC),和增量勢(shì)能接觸法(Incremental Potential Contact: IPC)。每個(gè)方法的人和事下面的章節(jié)再去回憶,這一章,先籠統(tǒng)概括一下。
第一個(gè)方向:MPM。說(shuō)到物質(zhì)點(diǎn)法,按照慣例,或許得提一下自己多多少少參與了的冰雪奇緣。2012年發(fā)掘MPM后我去做了些別的事情,組里其他同學(xué)拿MPM驗(yàn)證了雪;我在早期沒(méi)有去參與最初的SIGGRAPH工作。迪士尼工作室的代碼很臃腫,遠(yuǎn)遠(yuǎn)不止99行,而且迪士尼的律師可不是吃素的,向來(lái)有荒島求生畫米奇一說(shuō)。既然不能描繪太多代碼的事情,那就只放好看的劇照:

MPM擅長(zhǎng)做雪在短期內(nèi)成為了一個(gè)刻板印象。于是我決定花一些功夫來(lái)重塑一下MPM的形象。從技術(shù)層面上來(lái)說(shuō),MPM只是一個(gè)基本的Galerkin空間架構(gòu),物理過(guò)程數(shù)值模擬的真正技術(shù)點(diǎn)在于時(shí)間和空間的離散算法、本構(gòu)模型的設(shè)計(jì)、性能的加速、以及巧妙求解偏微分方程數(shù)值解的不同手段。MPM是一塊高品質(zhì)的畫布,這些技術(shù)點(diǎn)的創(chuàng)新才是真正的筆法(stroke)。但是技術(shù)點(diǎn)是里子,MPM是面子。于是從面子上看到的,便是我與一干志趣相投之士用MPM去平A物理的世界的各種固體和流體:巧克力,果凍,面包,牙膏,冰淇淋,泡沫,泥土,巖漿,牛排,東坡肉,橘子,西瓜,肌肉,骨骼,內(nèi)臟,布料,毛衣,頭發(fā),雪山,沙海,冰川,河流,無(wú)人機(jī),炸藥,等等。這里有固體,有牛頓流體,有非牛頓流體,有粒狀體,有固液混合體,還有人體。大到山川河流,小到雨露甘霖,MPM從一個(gè)鐵頭功,逐漸被擴(kuò)寫成了一本七十二絕技。

后來(lái)跟人合開了公司,寫了一個(gè)實(shí)用的MPM特效解算器。最近Autodesk買下并放進(jìn)了Maya,相信未來(lái)的幾年,更多的電影里會(huì)看到MPM的應(yīng)用場(chǎng)景。

第二個(gè)方向:仿射粒子元胞法(APIC)。這是我2015年得意的文章,是2014年的圣誕節(jié)獨(dú)自一人在迪士尼的大帽子studio里加班完工的。迪士尼所在的Burbank是大洛杉磯地區(qū)一個(gè)荒漠城市,我卻在荒漠和大海結(jié)了緣。于是那一年,APIC給海洋奇緣里的水提升了許多豐富的細(xì)節(jié)。

時(shí)間快進(jìn)到2017年,有一位氣血翻騰的胡姓少年來(lái)訪問(wèn)我,一起把APIC和MPM系列工作推到了高潮:Moving Least Squares MPM(MLS-MPM)。那之中與后來(lái) @太極圖形的淵源和MPM在可微分模擬領(lǐng)域的拓展,已有好文記錄。
第三個(gè)方向:IPC。2020年12月31日,賓夕法尼亞大學(xué)計(jì)算機(jī)圖形學(xué)中心,23點(diǎn)59分,手里的咖啡還燙。有一塊補(bǔ)天的石頭,它吸滿了天地靈氣日月精華,突然炸裂開了。增量勢(shì)能接觸法IPC橫空出世。王婆賣瓜自賣自夸:我竊以為,IPC改良了固體模擬,啟動(dòng)了“工業(yè)革命”,把連續(xù)固體的仿真科學(xué)(不只在圖形學(xué))帶入了“蒸汽機(jī)時(shí)代”。2022年,它的衍生故事還在不斷上演:

第一章:緣起
2010年,我遇到了改變了我一生的三個(gè)人。第一個(gè)人是我的妻子;這十二年,我們相戀五年,結(jié)婚七年,她挽著我踩下了每一個(gè)有深有淺的腳印。十二年來(lái)做過(guò)的每一個(gè)回頭來(lái)看無(wú)比正確的決定,大到職業(yè)道路,小到咬文嚼字,我的許多影響深遠(yuǎn)的選擇背后都有她默默的付出不休不眠的時(shí)間陪我去抽絲剝繭和理性分析。我在中科大少年班選的專業(yè)是等離子體物理,2010年在UCLA入學(xué)后想轉(zhuǎn)到計(jì)算機(jī),如果沒(méi)有她絕對(duì)理性地安撫我的急躁和幫我規(guī)劃合理的步驟,我可能連第一學(xué)期都沒(méi)讀完就自暴自棄、不知所向。她還會(huì)陪我走很遠(yuǎn)很遠(yuǎn)。
2010年改變我命運(yùn)的另兩個(gè)人,就是我讀PhD的聯(lián)合導(dǎo)師Demetri Terzopoulos和Joseph Teran。他們的成就是我一生奮斗的目標(biāo)。

我在UCLA CS系的導(dǎo)師Demetri是英國(guó)皇家學(xué)會(huì)的院士(并列于牛頓、本杰明富蘭克林、霍金等人),奧斯卡技術(shù)獎(jiǎng)得主,他是1980年代計(jì)算機(jī)圖形學(xué)里第一個(gè)做物理仿真的人,可謂元宇宙物理引擎之父。他同時(shí)也是計(jì)算機(jī)視覺(jué)泰斗,發(fā)明了snake算法。他其實(shí)還跟Hinton一起在二十多年前就發(fā)表了世界上第一篇用神經(jīng)網(wǎng)絡(luò)做物理仿真的圖形學(xué)文章,似乎常常被人漏cite。我在數(shù)學(xué)系的共同導(dǎo)師是Joseph,他是陶哲軒的同事(我現(xiàn)在也是了),level set發(fā)明人Stan Osher的徒孫和同事,曾被discover評(píng)為40歲以下最聰明的20個(gè)大腦之一(20 Best Brains Under 40),他是圖形學(xué)里最有名的做有限元固體仿真的人。
2010年秋天,我跟一個(gè)朋友一起聯(lián)系了Demetri,以及Joseph和朱松純老師。朱老師給出了很理性的不贊成我轉(zhuǎn)系的答復(fù)。(后來(lái)朱老師對(duì)我改觀,跟Osher一起加入了我的博士委員會(huì),再后來(lái)通過(guò)摯友,如今北大智能學(xué)院的朱毅鑫教授,形成密切的學(xué)術(shù)合作關(guān)系,這是后話。)Demetri和Joseph冒著很大的實(shí)驗(yàn)室財(cái)務(wù)浪費(fèi)的風(fēng)險(xiǎn),看著我一段蹩腳的彈簧模擬代碼(MATLAB寫的),但是考慮到我以前發(fā)表過(guò)相對(duì)論相關(guān)的論文應(yīng)該腦子不笨,給了我一個(gè)機(jī)會(huì)。我趕緊紅牛下肚,花了幾個(gè)通宵強(qiáng)行通讀了一本教材,并復(fù)現(xiàn)出了一篇有限元肌肉仿真的siggraph文章。諸如此行為,是impress圖形學(xué)教授最簡(jiǎn)潔有效的手段。從此一發(fā)不可收拾。
寫代碼和圖形學(xué),我入門都很遲。@胡淵鳴初中就寫剛體引擎小游戲了,我博一還在自學(xué)C++模板。跟許多有理想的圖形學(xué)或游戲愛(ài)好者一樣,從頭搭建一個(gè)自己的引擎是一個(gè)抑制不住的沖動(dòng)。2012年初,補(bǔ)完所有計(jì)算機(jī)和應(yīng)用數(shù)學(xué)課程的我結(jié)合自己的物理背景,摸索出了一個(gè)長(zhǎng)期目標(biāo):用物理仿真去重建這個(gè)世界。Demetri也鼓勵(lì)我:你比誰(shuí)都適合去close the gap between virtual reality and physical reality, 把虛擬世界跟物理世界給打通。那時(shí)候沒(méi)有元宇宙這個(gè)說(shuō)法,但是我的兩個(gè)導(dǎo)師都是digital double虛擬人體的深度發(fā)燒友,這對(duì)我的科研興趣的影響不可謂不大?;氐轿锢硪孢@個(gè)構(gòu)想上,心動(dòng)不如行動(dòng),這世界五顏六色千變?nèi)f化,那這引擎就叫魔方大,哦不,百變怪吧!于是 ditto 誕生了:

ditto里包含了幾個(gè)固體仿真和碰撞處理的練手項(xiàng)目,特別是隱式有限元的3D布料仿真。當(dāng)時(shí)有taichi語(yǔ)言的話,應(yīng)該寫出來(lái)能當(dāng)一次GAMES201大作業(yè)拿個(gè)A+??上itto維持了半年后,我投入一篇siggraph文章的具體工作中,便沒(méi)有再更新了。后來(lái)2018年z-emotion/ZelusFX公司的CEO突然聯(lián)系我,說(shuō)他2012年跟我要的ditto代碼幫助他弄出來(lái)一個(gè)布料設(shè)計(jì)軟件的公司,現(xiàn)在有很多用戶。我開心了很久。
第二章:一炮炸出來(lái)兩個(gè)坑
我博士期間花了兩年時(shí)間合作的第一個(gè)項(xiàng)目,是物體破碎。網(wǎng)上有人說(shuō),計(jì)算機(jī)圖形學(xué)是程序員的三大浪漫之一(另兩個(gè)是操作系統(tǒng)和編譯原理),但那時(shí)的我還沒(méi)有看到浪漫,只看到了狂拽炫酷,只想在siggraph上播最帥的demo,做最靚的仔。
那時(shí)我學(xué)完了計(jì)算固體力學(xué)。跟許多做仿真的初學(xué)者一樣,一切都是從模擬果凍開始,畢竟果凍是最典型的彈性體,并且往往很軟,不會(huì)給ODE(常微分方程)的時(shí)間步離散格式帶來(lái)過(guò)分stiff從而要么dt小,要么系統(tǒng)難解的這個(gè)數(shù)值問(wèn)題。于是在彈塑性固體里面,我找到一個(gè)想要模擬的案例:子彈射穿果凍。那時(shí)乃至今日看來(lái),都沒(méi)有多少比這更炫酷的實(shí)拍視頻:

現(xiàn)在教職期間,我常告訴自己的學(xué)生,想做什么科研,在大致調(diào)研相關(guān)工作并確定學(xué)術(shù)品位和潛在影響力之后,可以直接開始擼代碼,不要太擔(dān)心techinical contribution不夠。因?yàn)槟汩_始做之后,很快就會(huì)遇到你之前多半沒(méi)預(yù)料到的問(wèn)題,解決它們將成為你文章的最主要contribution。我們用有限元去寫果凍破碎,不到半個(gè)月,就碰到了兩個(gè)重大的難題:(1)如何自然破裂,即不能在裂面看到三角形丑陋的樣子,和(2)如何穩(wěn)健地處理復(fù)雜碎片之間的摩擦碰撞。
拓?fù)渥兓募覐?qiáng),levelset敢稱王。要實(shí)現(xiàn)自然破裂,結(jié)合有限元和level set方法是一個(gè)非常巧妙的思路。Level set有非常強(qiáng)的靈活性,可以從各種自然的角度去分裂四面體,而且可以完全避免重新劃分網(wǎng)格(remesh)。

Levelset方法的發(fā)明人Stan Osher在UCLA,給了我們一些寶貴的建議,很快,破裂的問(wèn)題便迎刃而解了。
這篇文章,我更主要負(fù)責(zé)的是做摩擦碰撞。建模破裂之后,這順其次成為最頭疼的事情。levelset的marching tetrahedra切割法帶來(lái)了無(wú)數(shù)形狀“惡心”的果凍碎片:在裂面上,有的三角形瘦如一道閃電,有的扁如一張大餅。計(jì)算幾何上,這些奇特的三角形被稱作是“ill conditioning”,想要用普通幾何方法去搞定它們的碰撞,不說(shuō)碰撞算法本身的case難以窮舉,光是浮點(diǎn)數(shù)精度帶來(lái)的千變?nèi)f化的誤判就足以讓人望洋興嘆。我花一年時(shí)間試了很多算法,皆以宣告失敗。
最值得講的一個(gè)算法,是一個(gè)非常大膽的idea。我把解算完的固體投射到一個(gè)規(guī)則的網(wǎng)格上,然后讓網(wǎng)格假裝看到的是不可壓流體,求解一個(gè)泊松方程,把速度場(chǎng)變成無(wú)散的,再插值回到固體上。這竟給出了非常漂亮的不穿透解!但是缺點(diǎn)在于,物體的運(yùn)動(dòng)被變的太像流體一般輕盈靈動(dòng)了,缺少了那份固體特有的執(zhí)拗。我便去問(wèn)我的導(dǎo)師Joseph,有沒(méi)有類似于這個(gè)解流體方法的解固體的方法,我想拿來(lái)在碰撞上試一試。他回憶良久,說(shuō)出了我一個(gè)我隨后持續(xù)專注十年的名稱:MPM。
MPM是1995年在美國(guó)的國(guó)家實(shí)驗(yàn)室發(fā)明的。它是一個(gè)混合拉格朗日粒子和歐拉網(wǎng)格的固體解算方法。往前追溯到1960年代的Particle-In-Cell(PIC法,最初用于求解等離子體物理的麥克斯韋方程)和1980年代的Fluid-Implicit-Particle-Method (FLIP法,用于流體結(jié)算,@張心欣的導(dǎo)師Robert Bridson,我的師叔,于2005年引入圖形學(xué))。它像流體一樣,自動(dòng)防止了材料間的穿透,又可以漂亮地求解固體的方程。把MPM拿過(guò)來(lái)做碰撞處理,在當(dāng)時(shí)的我看來(lái),再合適不過(guò)了:

終于,我交了一份目前回頭看來(lái)遠(yuǎn)遠(yuǎn)不夠完美的答卷:

?這顆子彈大的有點(diǎn)夸張,更像一枚炮彈。它被評(píng)為了SCA 2013的Best Paper Award。它也炸開來(lái)兩個(gè)MPM帶來(lái)的學(xué)術(shù)大坑:拓?fù)渥兓亩嗖牧?,和自?dòng)處理的摩擦碰撞。我和MPM被湊到了一起,從曖昧到沉迷。
彩蛋:文章里還首次用刑了一只犰狳,引起了許多論文讀者的不適。但后來(lái)這個(gè)場(chǎng)景,竟多次被別的研究者作為benchmark來(lái)follow,那可不怪我咯。

第三章:雪與海的浪漫
學(xué)習(xí)MPM的那幾個(gè)月,同組的俄國(guó)師兄Alexey也加入到粉絲小分隊(duì)中來(lái),并主導(dǎo)了廣為流傳的“MPM snow”的那篇文章。一時(shí)間,我們組和迪士尼的聯(lián)姻傳為佳話。有我在內(nèi)的好幾個(gè)學(xué)生去迪士尼實(shí)習(xí)和參與寫作Production軟件代碼。在冰雪奇緣的慶功宴上,我第一次嘗到技術(shù)產(chǎn)業(yè)化的喜悅。

冰雪奇緣之后,迪士尼做了一個(gè)Big Hero 6超能陸戰(zhàn)隊(duì)。在那里,MPM被用在模擬一些奇怪的材料上,這是個(gè)未怎么宣傳過(guò)的信息。

時(shí)間隨之轉(zhuǎn)移到2014年。我打算博士畢業(yè)了,想做一些在MPM和PIC里面更數(shù)學(xué)更基礎(chǔ)的東西,又同時(shí)希望能在現(xiàn)有的FLIP流體和MPM固體上做出有應(yīng)用價(jià)值的變革。那么回顧一下,用FLIP做流體,和用MPM做固體,流程中的數(shù)學(xué)上有什么不合理的hack呢??jī)?nèi)行人一定會(huì)指出:是FLIP-PIC blending ratio。FLIP和PIC其實(shí)可以指代混合粒子網(wǎng)格法中,網(wǎng)格向粒子插值的那個(gè)步驟。PIC直接做速度場(chǎng)的插值,但是會(huì)引入巨大的數(shù)值粘性,F(xiàn)LIP插值速度增量,但是會(huì)引入巨大的不穩(wěn)定性。于是圖形學(xué)的流體泰斗Robert Bridson教授在2005年就提出,把FLIP的結(jié)果乘以0.97,再把PIC的結(jié)果乘以0.03,然后把它們加起來(lái)。這個(gè)數(shù)字是一個(gè)用戶可調(diào)的參數(shù),但可調(diào)而不可控!不同的場(chǎng)景下,不同數(shù)字會(huì)給出非常不同的結(jié)果。它是藝術(shù)家的噩夢(mèng),是強(qiáng)迫癥的地獄。于是我決定干一票大的,把這個(gè)東西除掉,因?yàn)槲矣幸粋€(gè)信念:需要設(shè)置heuristic參數(shù)的仿真算法絕不可能是一個(gè)好算法的最終形態(tài)。
再結(jié)合對(duì)于角動(dòng)量守恒方程的理論分析,跳過(guò)一些技術(shù)細(xì)節(jié),Affine Particle In Cell (APIC)被誤打誤撞推導(dǎo)了出來(lái)。FLIP流體和MPM固體進(jìn)入了一個(gè)新的篇章,藝術(shù)家們可以更輕松的得到它們需要的仿真結(jié)果粘稠度,無(wú)論是山川大河,還是巖漿滾滾。它們?cè)谖倚闹校强梢枣敲辣┑睦寺?/p>
迪士尼非常高興,迫不及待地把APIC用進(jìn)了海洋奇緣:

2015年夏天,我畢業(yè)和結(jié)婚?;槎Y在洛杉磯南邊的玻璃大教堂,有山有海有樹林。那年暑假的SIGGRAPH,我認(rèn)識(shí)了很多很多志同道合的朋友。印象最深的是在流體的session上,我看到一位風(fēng)流倜儻的銀發(fā)少年。他跑來(lái)問(wèn)我,“今年的好文章眾多,能長(zhǎng)久流傳的是哪幾個(gè)?”我隨便應(yīng)付了幾句。他說(shuō)道:“今年的文章,有兩篇最diao,一篇是我的IVOCK,另一篇是你的APIC?!蔽页粤艘惑@,連忙互換姓名。原來(lái)這位霸氣的少年,叫@張心欣,他現(xiàn)在帶領(lǐng)“澤森科工”在為中國(guó)特效打天下。那時(shí)純粹的我們,在對(duì)方雙眸反光里,都看到了一個(gè)勇者,持各自打造的巨劍,浴血挑戰(zhàn)著一頭叫做數(shù)值耗散的惡龍。自那天起,我們也開始了迄今長(zhǎng)達(dá)七年的并肩合作。
畢業(yè)之后,我繼續(xù)深耕MPM固體和流體。學(xué)術(shù)界的人其實(shí)蠻喜歡立flag。我就一直盡量堅(jiān)持去貫徹一個(gè)基本原則:即使我的仿真文章是投在圖形學(xué)會(huì)議和期刊上,我也絕不為了視覺(jué)效果去做任何不符合物理和數(shù)學(xué)原理的hack;我需要每個(gè)算法都普適到整個(gè)計(jì)算物理學(xué)。這個(gè)原則給后來(lái)教授期間的我?guī)?lái)了很多的好處:包括了(1)自然科學(xué)研究基金的青睞,(2) 在Nature子刊發(fā)表的MPM自然災(zāi)害預(yù)測(cè)技術(shù)(雪崩,山體滑坡,泥石流,冰川碎裂,海嘯),

以及(3)醫(yī)院十分喜愛(ài)的虛擬創(chuàng)傷和手術(shù)的仿真平臺(tái):

它們也許沒(méi)有雪與海一樣浪漫,但卻更加真實(shí)和直接地影響到了這個(gè)世界,甚至幫忙拯救生命。這些工作也給圖形學(xué)里做物理仿真的同行在自然科學(xué)和醫(yī)學(xué)領(lǐng)域贏得了更多的尊重,糾正這些別的領(lǐng)域的人關(guān)于圖形學(xué)就是不斷引入他們做的東西的誤解。畢竟很多圖形學(xué)論文喜歡把這個(gè)叫作contribution:“We introduce the XXX method to computer graphics.” 我想做的,是要物理學(xué)和數(shù)學(xué)的人發(fā)論文說(shuō)同樣的這句話,但是把“to”改成“from”。最近遇到的一位做經(jīng)典力學(xué)的同事發(fā)出感嘆:“好一波反向輸出!”
既然想到固體仿真在醫(yī)學(xué)上的應(yīng)用,一縷額外的回憶又涌上心頭。2016年,我特別想把虛擬人體給產(chǎn)業(yè)化,也探索了很多不同的方向。其中比較有意思的,便是與lab師弟,也是好哥們的如今體素科技CEO丁曉偉討論的整形手術(shù)預(yù)測(cè)。當(dāng)時(shí)我跑了個(gè)隆胸動(dòng)力學(xué)預(yù)測(cè)的demo(包含了對(duì)胸部軟組織、皮膚、和硅膠假體全方位的模擬),也在洛杉磯聊了一些整形醫(yī)生,但感覺(jué)市場(chǎng)需求度不夠大,所以沒(méi)有繼續(xù)下去。也不知道元宇宙跨領(lǐng)域越來(lái)越火熱的今天,這個(gè)方向現(xiàn)在怎么樣了。
【這里本有個(gè)視頻,但不能放】
第四章:摩擦摩擦,在光滑的路上,摩擦
前面說(shuō)到,2012年我便用MPM的思路去嘗試處理了破碎仿真里的物體碰撞。但是那個(gè)算法只能對(duì)付不同碎片之間的碰撞,對(duì)自碰撞self collision無(wú)可奈何。MPM作為一個(gè)用粒子來(lái)描述物體的離散格式,畢竟天然最適合如冰雪沙土般像粒子一樣的物體。
布料和毛發(fā)則是每一個(gè)做固體仿真的人都想攻克的東西。科學(xué)研究應(yīng)當(dāng)盡量以人為本,而布料和毛發(fā)跟人的關(guān)系真的太大了。處理摩擦碰撞的算法很多,它們做的好的地方都一樣優(yōu)秀,做的不好的地方卻五花八門。于是2017年,我重新回到摩擦碰撞這個(gè)戰(zhàn)場(chǎng)。跟MPM處在105度熱戀中的我,選擇了一個(gè)所有人都沒(méi)有想過(guò)的思路:用MPM塑性去挑戰(zhàn)這個(gè)課題。
那時(shí)我已經(jīng)學(xué)會(huì)了Druker-Prager塑性屈服面,并成功用它做出了MPM沙子。沙子的本構(gòu)模型有兩個(gè)要素:第一,它支持分開,不支持?jǐn)D壓;第二,它往邊上滑的時(shí)候,切向力和法向力要滿足庫(kù)倫摩擦定律。仔細(xì)回味一番,這兩個(gè)特性,明明不只是沙子所特有的??!布料、毛發(fā)、橡皮、剛體等等,哪個(gè)常見固體的碰撞不是要遵循這兩個(gè)定律呢?
于是我決定拋棄傳統(tǒng)的基于點(diǎn)和三角形,邊和邊幾何相交特性的摩擦碰撞理念(ditto里實(shí)現(xiàn)過(guò)的那一套),而是采用MPM“連續(xù)介質(zhì)力學(xué)”的觀點(diǎn)。管他是布料還是毛發(fā),都是一些連續(xù)的空間占用而已。在這個(gè)觀點(diǎn)下,它們跟沙子唯一的區(qū)別便是,沙子是三維的“體”,而它們分別是三維空間中二維和一維的曲面。想到這一點(diǎn),一切便豁然開朗:如果Drucker-Prager塑性可以讓三維的MPM沙子滿足摩擦碰撞的性質(zhì),那么我只需要推導(dǎo)出二維和一維子空間上所對(duì)應(yīng)的類似的塑性,便可以讓MPM布料和毛發(fā)滿足同樣自動(dòng)摩擦碰撞的性質(zhì)!

以布料為例,通過(guò)對(duì)形變梯度的QR分解,我們可以設(shè)計(jì)一個(gè)精巧的彈性能量和塑性屈服面來(lái)“管理”布料在法向上摩擦碰撞力所需要滿足的應(yīng)力條件。直觀上來(lái)講,在曲面方向,布料仿佛一束束被交織的沙礫,沿著布料的切向望去,滿布上都寫著兩個(gè)字“庫(kù)倫"。
意識(shí)到了這一點(diǎn),處理一維二維曲面的摩擦碰撞便與處理三維沙子的摩擦碰撞別無(wú)二致。只需要將這新的本構(gòu)模型寫入曲面上的頂點(diǎn),MPM便全自動(dòng)地默默處理了剩下的一切。從布料到毛發(fā),從地毯到毛衣,一切傳統(tǒng)的碰撞檢測(cè)和碰撞處理都被拋棄,一把粒子,一架網(wǎng)格,便能生成一段美妙的動(dòng)畫。這種顛覆式的建模方式,如今我回頭看,仍覺(jué)得是走出了魔鬼的步伐,是自己學(xué)術(shù)生涯最滿意的MPM論文。

那一年去siggraph 2017宣講物質(zhì)點(diǎn)法,抒發(fā)的情感只能用已故的李兆基老師的經(jīng)典臺(tái)詞來(lái)形容,“比我的初戀更加詩(shī)情畫意?!?/p>
這篇文章的2D版還在太極語(yǔ)言中被實(shí)現(xiàn)了出來(lái)(橘子貓:Taichi實(shí)現(xiàn)2D Anisotropic Elastoplasticity Cloth),代碼十分簡(jiǎn)潔,妙不可言。
后來(lái)第二年的SIGGRAPH2018,哥倫比亞大學(xué)殺出來(lái)一員猛將@Raymond Fei,把這套步法跟APIC結(jié)合起來(lái),做了一份令人嘆為觀止的布料與水相互作用的工作(libwetcloth),一百分的賞心悅目。

參會(huì)SIGGRAPH 2017,我還有一個(gè)額外的目的:招納自己的第一個(gè)學(xué)生。開會(huì)時(shí),我在賓夕法尼亞大學(xué)的助理教授生涯剛開始不久,孤苦伶仃。一場(chǎng)場(chǎng)燈紅酒綠的派對(duì),一間間熙攘喧囂的酒吧,我在會(huì)場(chǎng)外面的夜搜尋著那個(gè)可以一起談笑風(fēng)生個(gè)幾年的小伙伴。高級(jí)的獵人都會(huì)偽裝成獵物。在一個(gè)昏暗的角落,我看到一個(gè)熟悉的身影在月下獨(dú)酌,對(duì)我目送秋波。那不是一年前張心欣在烤肉店介紹給我的@李旻辰嗎?我記得他!UBC的一個(gè)精壯帥小伙兒,跟張心欣做過(guò)一篇流體的文章。我點(diǎn)了兩杯火辣的蘋果馬提尼,搖搖晃晃地走了過(guò)去。“還記得我嗎?”“記得記得,來(lái),搞一杯!”那一杯,給下一個(gè)不醉不歸的五年學(xué)術(shù)夜宴,拉開了序幕。
第五章:少年英雄胡淵鳴
2017年的夏季注定要遇到更多不平凡的人。話分兩頭,在酒吧初遇李旻辰之前的那一年早些時(shí)候,圖形學(xué)領(lǐng)域廣泛流傳著這么一個(gè)都市傳說(shuō)。有一位策馬揚(yáng)鞭的少年武士,他沒(méi)有發(fā)表過(guò)一篇SIGGRAPH論文,但他實(shí)現(xiàn)了一百篇;他沒(méi)有開源過(guò)一套代碼,但他有一百萬(wàn)行張弓待發(fā);他接手的圖形學(xué)仿真實(shí)現(xiàn),可以在一夜之間效率提高十倍;他三天沒(méi)有睡覺(jué),便重現(xiàn)了四年來(lái)的所有MPM論文,并且提出了一百種改進(jìn)的方法。他究竟是神仙的化身?還是地獄的使者?一時(shí)間流言四起,有人甚至說(shuō)他要建立新的計(jì)算機(jī)圖形學(xué)秩序。還在默默想著MPM問(wèn)題的我更是夜不能寐。這小子,是何方神圣?
他果不出所料地殺上門來(lái)了。如想象般翩若驚鴻的@胡淵鳴,帶著一位比他更加神秘且靦腆的小伙伴,從清華殺到了我UPenn實(shí)驗(yàn)室的門口?!拔覀儊?lái)跟你一起做MPM?!彼脑捄?jiǎn)短有力。“好,開始吧。”那時(shí)的我們,不會(huì)寒暄客套,只需要看到一個(gè)共同的研究目標(biāo)便一切盡在不言中。那時(shí)他帶來(lái)的小幫手,叫方火奧,我去google,哦,方燠 yù?,F(xiàn)實(shí)絕非一帆風(fēng)順,我們高速迭代經(jīng)歷了一些失敗的科研項(xiàng)目,才最后有了MLS-MPM的發(fā)明和后續(xù),簡(jiǎn)潔而又精彩。

那時(shí),我有一套自己的C++庫(kù),遠(yuǎn)超當(dāng)年的ditto。我的庫(kù)叫做“jixie”(機(jī)械)。胡淵鳴帶來(lái)了他的庫(kù),叫做“taichi”(太極)。那時(shí)太極還是一個(gè)C++庫(kù)。兩個(gè)庫(kù)各有千秋,碰撞出許多熱烈的火花。胡淵鳴對(duì)我助理教授生涯的研究重心,尤其在對(duì)榨干計(jì)算機(jī)性能的追求上,起到了很大的啟發(fā)性作用。
英雄相惜,終須一別,胡淵鳴要遠(yuǎn)赴MIT去做別的項(xiàng)目,我在披薩店餞別?!癕PM的發(fā)展將緩慢下來(lái)!”我悵然若失。他笑了笑,告訴我,仍有一個(gè)人跟我去打MPM多物理仿真的江山。我目光一瞥,才猛然驚醒,這段時(shí)間在刀光劍影里一起談笑風(fēng)生的,還有另一位比他更年輕的英雄少年!言辭不多的他,在科研的戰(zhàn)場(chǎng)上,雖不像胡淵鳴一樣耀眼的艷麗,卻散發(fā)出一股更加剛猛的熾熱。
方燠成為了我第二個(gè)學(xué)生。如果旻辰是一杯濃厚的酒,底蘊(yùn)日漸成熟,方燠就是一把嗜血的刀,愈加鋒利兇殘。他在隨后的5年里,把舊論文的實(shí)現(xiàn)和新想法的嘗試這兩件事的速度都做到了像居合斬一般,一刀斷骨刀刀落命。
在那段日子里,在方燠、旻辰、和一干猛將的拼搏下,我們一直推進(jìn)高性能的MPM多物理仿真,直到億萬(wàn)粒子級(jí)別的仿真也變得輕松寫意。我們通過(guò)跟超算中心的合作,把MPM發(fā)展到了能進(jìn)行Exascale computing的超算機(jī)上,每秒算10的18次方個(gè)浮點(diǎn)運(yùn)算。這樣看來(lái),對(duì)于高分辨率的追求,我們是認(rèn)真的。

后來(lái),我的實(shí)驗(yàn)室匯集了更大一批意氣風(fēng)發(fā)的孩子們,屈子吟@ziyin(ziyin:北京電影學(xué)院發(fā)了一篇滿是數(shù)學(xué)公式的計(jì)算機(jī)頂會(huì)論文,并開源了其代碼) ,仇宇星,@王鑫磊,李軒,陳宇諾,@曹亞帝,等等,他們圍繞著方燠主導(dǎo)架構(gòu)的c++仿真引擎ziran(自然),在物理模擬的海洋里盡情嬉戲。他們飄逸的學(xué)術(shù)舞曲還在不斷被譜寫,有他們?cè)谏磉叄腋杏X(jué)自己永遠(yuǎn)抓住了青春,每天都是學(xué)術(shù)上的“掰餅聚會(huì)”:

在幫助人類打通虛擬世界和現(xiàn)實(shí)世界的歷史使命上,我們致力于仿真這一個(gè)點(diǎn),用硬核的根基散發(fā)千萬(wàn)的枝葉。下面的這些都是我的實(shí)驗(yàn)室這些年研究過(guò)的方向。這些成果中也充滿了極其珍貴的如北京大學(xué)朱松純教授、陳寶權(quán)教授、以及浙江大學(xué)唐敏教授等前輩傳授的經(jīng)驗(yàn)和給予的幫助。
第六章:與timestep結(jié)緣
步者乃一身之根基,運(yùn)動(dòng)之樞紐也?!短珮O拳十大要論》
在元宇宙的“基礎(chǔ)架構(gòu)”之中,如果建模是內(nèi)功,渲染是招式,那么物理仿真就是步法或身法。步法與時(shí)間和運(yùn)動(dòng)緊密綁定在一起,在時(shí)間上做微分和積分,從過(guò)去預(yù)測(cè)未來(lái),用未來(lái)指引過(guò)去。(指引過(guò)去,靠的是可微分模擬。)不管是逍遙派的凌波微步,泰森的蝴蝶步法,還是奧拉朱旺的夢(mèng)幻腳步,它們都反映了一個(gè)道理:有一套成熟的步法是一位集大成者立于不敗之地的一個(gè)可靠的保證。
在動(dòng)力學(xué)物理仿真中,大家最常說(shuō)的一個(gè)詞,就是timestep:時(shí)間步長(zhǎng),Delta t。正向物理仿真的過(guò)程,本質(zhì)上往往就是微分方程在時(shí)間軸上積分的過(guò)程,這個(gè)過(guò)程,又被稱為timestepping method;我愿譯其為“時(shí)間步法”。
現(xiàn)實(shí)中的時(shí)間是連續(xù)的,但仿真中的時(shí)間是離散的。對(duì)于一段24 FPS的動(dòng)畫來(lái)說(shuō),每秒鐘的理想情況,是讓仿真算法從一個(gè)過(guò)去的時(shí)刻往前走24步,每步走1/24秒,生成24個(gè)幾何形態(tài)。除非希望對(duì)現(xiàn)實(shí)的逼近追求更加極致的準(zhǔn)確性,一個(gè)通用圖形學(xué)算法最好具備只需要走24步的能力。如果往前預(yù)測(cè)1秒需要走48步,或者240步、2400步,那就往往是成倍的效率降低。
可惜的是,直到2015年左右,甚至今日,仍然有無(wú)數(shù)的圖形學(xué)仿真算法需要走子步(substeps)。更令人痛苦的是,即使走了子步,它們中的絕大多數(shù)仍然不能保證數(shù)值的穩(wěn)定性,俗稱“爆了”:

放錯(cuò)圖了。爆了的仿真其實(shí)長(zhǎng)這樣:

仿真爆了就意味著得調(diào)節(jié)參數(shù)把程序重跑。我2011年在工業(yè)光魔ILM實(shí)習(xí),我那時(shí)的實(shí)習(xí)導(dǎo)師告訴我,ILM里在幫復(fù)仇者聯(lián)盟的綠巨人設(shè)計(jì)肌肉仿真算法,浩克一發(fā)力,程序就爆炸,重跑停不下來(lái),delta t 小的不能再小了,機(jī)房空調(diào)費(fèi)都要燒個(gè)上百萬(wàn)。
為了能夠邁出1/24秒或更大的步子,我開始致力于研究基于優(yōu)化的時(shí)間步法。非線性非凸數(shù)值優(yōu)化是一個(gè)非常厲害的領(lǐng)域,如今整個(gè)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)都靠它。這個(gè)宇宙最基本的物理規(guī)律:熱力學(xué)第二定律(熵增原理)本身也定義了一個(gè)優(yōu)化問(wèn)題。因此,越來(lái)越多的應(yīng)用數(shù)學(xué)家開始用優(yōu)化和變分法的思路去重新思考動(dòng)力學(xué)偏微分方程的數(shù)值解。
彈性體模擬的方程便是一個(gè)可以重新定義為尋求最小值的優(yōu)化問(wèn)題!在此框架之下,時(shí)間步長(zhǎng)可以邁的任意大,不會(huì)扯到蛋。
此間工作很多,圖形學(xué)里早期工作比較有代表性的,包括劉天添 2014年的巧妙投影動(dòng)力學(xué)“Projective Dynamics: Fusing Constraint Projections for Fast Simulation” 及其2017年的擬牛頓法“Quasi-Newton Methods for Real-time Simulation of Hyperelastic Materials”(2019年(第八屆)中國(guó)科學(xué)技術(shù)大學(xué)《計(jì)算機(jī)圖形學(xué)前沿》暑期課程_嗶哩嗶哩_bilibili)(冰點(diǎn)藍(lán):計(jì)算機(jī)圖形學(xué)前沿(2019) Towards Real-time Simulation of Deformable Objects),和我2015年參與的比較中規(guī)中矩的牛頓法“Optimization Integrator for Large Time Steps”。我的實(shí)驗(yàn)室后來(lái)則在下面四個(gè)地方分點(diǎn)發(fā)力:
李旻辰在2019年把擬牛頓法跟domain decomposition結(jié)合了起來(lái),打敗了一系列競(jìng)爭(zhēng)對(duì)手,得到了一個(gè)非常高速度的有限元彈性體解決方案Decomposed Optimization Time Integrator “DOT”(點(diǎn)點(diǎn)有限元法):

王鑫磊則另辟蹊徑,考慮多尺度網(wǎng)格multigrid,讓MPM也走到了超大的時(shí)間步長(zhǎng)上面,發(fā)明Hierarchical Optimization Time Integrator “HOT”(熱辣物質(zhì)點(diǎn)法),可以高效處理超級(jí)“硬”的彈塑性體,幫助工程力學(xué)設(shè)計(jì)的仿真:

方燠則跳出牛頓和擬牛頓的思路,以“快”為目的,把MPM的加速結(jié)合上了交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)上。這個(gè)方法被稱為“Silly Rubber”(愚人橡皮法),可以快速模擬各種MPM適合的材料,比如奶油:

我們最為得意的,也是最新搞出來(lái)的,便是李軒、李旻辰和我一起用幾支爛筆頭推導(dǎo)出來(lái)的SIGGRAPH 2022論文Energetically Consistent Inelasticity (ECI)。這個(gè)工作在數(shù)值計(jì)算理論上,我認(rèn)為有很可觀的意義:它首次讓塑性力可以邁著同樣大的步伐,被真正隱式求解了!也就是說(shuō)之前的方法,包括上面提到的,都不準(zhǔn),都對(duì)塑性力做了一個(gè)強(qiáng)相關(guān)于 delta t 的其實(shí)很不準(zhǔn)確的近似。那算的準(zhǔn)有什么好處呢?當(dāng)然是去跟現(xiàn)實(shí)對(duì)照了。跟現(xiàn)實(shí)連定性的視覺(jué)效果都對(duì)不上的虛擬物體,步法不夠穩(wěn)健,不能叫數(shù)字孿生,永遠(yuǎn)都只是游戲(沒(méi)錯(cuò), 這里說(shuō)的的正是PhysX/PBD)。我們的堅(jiān)持,是第一性原理,是我們希望一直盡力朝著真正的數(shù)字孿生方向前行的一些固執(zhí)的原則。

第七章:摩擦碰撞的第三次戰(zhàn)役,IPC魔童降世
開始的那些年,從最初level set fracture中的一炮雙響,到MPM布料,我一直在跟“摩擦碰撞”這個(gè)難題對(duì)干。每一場(chǎng)仗都打的很漂亮,但都還是存在很多Limitation。以2017年的MPM布料為例,作為它的締造者,我比任何人都能更清晰的看到它光芒下令我不堪面對(duì)的缺憾。作為一個(gè)MPM方法,它在隱式積分條件下性能非常差。它對(duì)粒子和網(wǎng)格的依賴給幾何體強(qiáng)加了許多苛刻的要求:比如兩者的分辨率需要盡量吻合。同時(shí),它又像一臺(tái)看似美好的特斯拉自動(dòng)駕駛汽車,一不小心甩給你一個(gè)不大也不小的錯(cuò)誤(數(shù)值粘性和偶爾的數(shù)值穿透),讓你在使用時(shí)總是心懷忌憚。比如正如下圖所示,MPM布料做毛衣雖然厲害,但是仔細(xì)看去,還是出現(xiàn)了許多穿透:

穿透會(huì)非常嚴(yán)重的影響仿真的精度和可信度。它不只是模型視覺(jué)上的錯(cuò)誤,隨之而來(lái)的彈性力和摩擦力也會(huì)因穿透而變得離譜和虛幻。因此,長(zhǎng)久以來(lái),至少在布料這一個(gè)小方向上,我并沒(méi)有能夠把MPM從特效和游戲的應(yīng)用中打出去。換而言之,因我堅(jiān)信元宇宙和游戲的最重要區(qū)別是對(duì)“準(zhǔn)”的把握上(這也是我不認(rèn)為NVIDIA的omniverse拿著一個(gè)基于不物理方法推導(dǎo)出來(lái)的PhysX引擎可以做成真正元宇宙物理引擎的根本原因),MPM在布料這個(gè)方向上要走的路還很長(zhǎng),還需要后來(lái)者的努力。
時(shí)鐘撥到2020年前夕,沒(méi)有征兆又似蟄伏許久的一件事情發(fā)生了。之前我把旻辰比作美酒,他便真的是這樣一個(gè)學(xué)生,在陳釀的千錘百煉中一不小心就飽滿豐厚,醇香持久。沒(méi)幾年,他便從一個(gè)學(xué)生瀟瀟灑灑地蛻變?yōu)橐粋€(gè)成熟的合作伙伴。那晚,我鄭重的告訴旻辰,“你剛完成的這個(gè)叫做IPC的項(xiàng)目,把一個(gè)困擾了計(jì)算機(jī)圖形學(xué)和工程力學(xué)無(wú)數(shù)研究者幾十年的一個(gè)領(lǐng)域給終結(jié)掉了,完美本無(wú)法觸及,但I(xiàn)PC是我入行以來(lái)見過(guò)的,最接近完美的仿真技術(shù)?!痹谶@一年后,旻辰以IPC斬獲SIGGRAPH年度最佳博士論文獎(jiǎng),毫無(wú)懸念。
IPC的全稱是Incremental Potential Contact,中文作增量勢(shì)能接觸,很拗口,還是就叫IPC吧。它的算法冗長(zhǎng)而又毫不晦澀,剛猛而又不失優(yōu)雅。在數(shù)值優(yōu)化的框架下,IPC把所有基于mesh的物理仿真中“不許穿透”這個(gè)令學(xué)術(shù)界和產(chǎn)業(yè)界都為之癡迷的難題,從仿真問(wèn)題的數(shù)學(xué)形態(tài)上就直接通過(guò)一個(gè)靈巧的定義給徹底斃掉了,其后的算法自然是如出入無(wú)人之境?!皬拇舜┠J锹啡恕!?/p>
技術(shù)上,IPC提出了一個(gè)嶄新而又巧妙的關(guān)于“碰撞”的數(shù)學(xué)描述方法:所謂碰撞,便是在動(dòng)力學(xué)過(guò)程的最小作用量原理下,要求任何非鄰接幾何表面之間的歐氏距離在連續(xù)的時(shí)間軸上恒大于零。它正是又一個(gè)timestepping的時(shí)間步法!如此一來(lái),我們得到了一個(gè)可以用數(shù)學(xué)完美描述的約束優(yōu)化問(wèn)題。再配以些許精巧而不詭野的算法設(shè)計(jì),最終的IPC技術(shù)在數(shù)學(xué)、算法和實(shí)現(xiàn)上都令人信服。毫不夸張的說(shuō),IPC是數(shù)值仿真自發(fā)明以來(lái),唯一的把精確碰撞和摩擦這兩個(gè)要求完美解決掉的辦法。它唯一的缺點(diǎn)是計(jì)算效率不夠快;被我們后來(lái)攻克,按下不表。
IPC及其2021年后續(xù)工作賦能了無(wú)數(shù)之前計(jì)算機(jī)仿真界根本做不了的事情,以絕對(duì)的穩(wěn)定性、精確性、和數(shù)值收斂性涵蓋了三維柔性體(“百萬(wàn)四面體的毛球”和“是繩子就堅(jiān)持一百秒”):


二維布料(輕松處理打結(jié),和*任意多層*布料上身,這里只展示了四層,畢竟我們的建模制版技能點(diǎn)加的比較少):



二維薄殼(跟真實(shí)的一疊撲克牌的厚度完全吻合,沒(méi)有任何別的方法可以做到)(這是不是可以拿去開元宇宙賭場(chǎng)?):

以及首次有“不穿透保證”與“精準(zhǔn)摩擦力”兩個(gè)性質(zhì)的的一維細(xì)桿(面條、毛發(fā)):

旻辰向來(lái)沉穩(wěn)低調(diào),他宣傳IPC的文章(李旻辰:IPC: SIGGRAPH 2020開源有限元碰撞獨(dú)家處理方案)也跟他的人一樣靠譜實(shí)在。2020年1月,我在IPC的第一篇論文里,寫下過(guò)這么一段總結(jié)(中文意譯略有改寫):
“IPC技術(shù)適用于所有基于網(wǎng)格的固體模擬。無(wú)論是自碰撞、外碰撞、甚至是來(lái)自于低維曲面的碰撞,IPC都是一個(gè)絕頂靈活、有效、和無(wú)條件保證成功的解決方案。IPC對(duì)圖形學(xué)和工程力學(xué)基于或不基于有限元的全部應(yīng)用都提供了有史以來(lái)第一個(gè)幾何不穿透,體積不反轉(zhuǎn)的可證明的直接保證。從此以后,跑固體仿真只需要輸入真實(shí)世界可以測(cè)量的物理參數(shù)和幾何參數(shù),而再不需要去調(diào)節(jié)所謂的數(shù)值參數(shù)。在此之上,IPC承諾必定能夠?qū)θ我鈴?fù)雜的狀態(tài)給出求解,并且這個(gè)解就是這個(gè)世界上現(xiàn)存所有算法能給出的,最接近真實(shí)世界摩擦碰撞結(jié)果的解?!?/p>
幾年過(guò)去了,這個(gè)總結(jié)被圖形學(xué)、機(jī)械工程、以及機(jī)器人領(lǐng)域的同行不斷的引述和驗(yàn)證。作為一個(gè)學(xué)者,我從未如此夸過(guò)一個(gè)工作,畢竟有吹牛皮之嫌。但是IPC不一樣,我不擔(dān)心,因?yàn)檫@個(gè)牛皮是鋼鐵鑄成,永遠(yuǎn)也吹不破。
IPC這么完美,還有什么可以改善的呢?正如上文所說(shuō),它的計(jì)算效率存在一定的問(wèn)題。在我們一籌莫展之計(jì),一位老友突然與我們?nèi)〉昧寺?lián)系。此人名作陰陽(yáng)(@Yin Yang),繼胡淵鳴之后成為第二個(gè)讓我瞧見八卦圖頭像便能開懷之人??巳R姆森大學(xué)的楊垠教授(現(xiàn)在遷去了猶他大學(xué))姍姍來(lái)遲,他是降維仿真和GPU加速仿真的代表人物。我們一拍即合,開始建立深厚的革命友誼。自那天起,楊垠、旻辰和我開始了圍繞IPC技術(shù)的一系列深度合作項(xiàng)目。在我們的思維火花碰撞之下,浩如煙海的腦洞和研發(fā)項(xiàng)目撲面而來(lái)。以2022年為例,我們便讓IPC生態(tài)系統(tǒng)在剛體仿真和實(shí)時(shí)仿真兩個(gè)方向取得了不亞于原始IPC的嶄新成果。
第一個(gè)成果,是我們?cè)趧傮w仿真上取得的重大成就。剛體與柔性體自古以來(lái)便被分開處理,求解它們的方法不能說(shuō)是關(guān)系不大,只能說(shuō)是幾乎毫無(wú)關(guān)系。在IPC的加持下,我們提出了嶄新的“Affine Body Dynamics (ABD)” 仿射體動(dòng)力學(xué),在淘汰傳統(tǒng)剛體模擬的路上直接飆到終點(diǎn),讓剛體重新回歸成它們?cè)谡鎸?shí)世界中的樣子:即使最硬的物體,也會(huì)微小的形變,硬度是振金還是木頭,該是多少就是多少,不需要被假設(shè)成絕對(duì)剛體。在ABD技術(shù)的加持下,我們?cè)趽碛兴蠭PC優(yōu)點(diǎn)的同時(shí),達(dá)到了媲美現(xiàn)有剛體引擎的速度和全方位碾壓的精度。高速而又精準(zhǔn)的機(jī)械體仿真首次成為可能。
真實(shí)碰撞驅(qū)動(dòng)的齒輪:

及其受力分析:

?帶傳動(dòng)結(jié)構(gòu)的小車(含簡(jiǎn)易氣缸):

及其傳動(dòng)引擎的簡(jiǎn)易氣缸運(yùn)動(dòng)的可視化(活塞運(yùn)動(dòng)帶動(dòng)旋轉(zhuǎn))

鐵鏈彈性波的傳播:

比較傳統(tǒng)的場(chǎng)景當(dāng)然也不在話下:

值得一提的是,ABD在機(jī)器人抓取的任務(wù)上,已經(jīng)被機(jī)器人領(lǐng)域的學(xué)界和工業(yè)界同行驗(yàn)證,其成功率和對(duì)接觸力/摩擦力的準(zhǔn)確性上,已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了PBD、Bullet、Mujoco等一眾現(xiàn)有剛體引擎;強(qiáng)化學(xué)習(xí)在我們的solver上,輕松訓(xùn)練出了真正可以轉(zhuǎn)化到物理世界的控制算法,誤差之小,模擬過(guò)程之愜意,非機(jī)器人業(yè)內(nèi)人士不可言喻:

?英偉達(dá)Omniverse也宣傳了很多工業(yè)機(jī)器人的場(chǎng)景,它的技術(shù)仍然基于PhysX(PBD),那套簡(jiǎn)單易學(xué)但毫無(wú)真實(shí)物理原則的手段。剩下的一切,還何須多言呢?也許在有些人心中,元宇宙只需要以假亂真,”看上去差不多就行了?!蹦敲?,就等時(shí)間給出“自然”選擇的答案。
我從方法論上表述我自己的觀點(diǎn)。我認(rèn)為,像PBD一類的技術(shù),以快為出發(fā)點(diǎn),在當(dāng)年的低下算力和就是面向游戲的兩個(gè)前提下,無(wú)可厚非。但是由于對(duì)數(shù)學(xué)和物理原理的修改與簡(jiǎn)化,使其在元宇宙的未來(lái)想要從快到準(zhǔn),路途難如蜀道。與它們截然不同的是,IPC直接先把“準(zhǔn)”這一步做到了幾乎完美,那么在這個(gè)前提下,再做快有多難呢?在算數(shù)、算法、算力的三重加持下,IPC加速之路順暢無(wú)阻。舉例而言,我們2022年的第二個(gè)成果,便輕松地實(shí)現(xiàn)了多層布料的實(shí)時(shí)交互仿真,并且,沒(méi)有犧牲任何IPC在碰撞上所承諾的美好保證:

第八章:下一個(gè)“Timestep”
十二年,我從C++都不會(huì)寫的等離子體物理專業(yè)的學(xué)生,到拿到CS PhD,去常青藤做CS教授,再到UCLA應(yīng)用數(shù)學(xué)拿tenure,回想一下,這其中竟沒(méi)有一年被浪費(fèi),純粹跟著喜愛(ài)的研究走,順其自然。記得網(wǎng)上常有人討論@計(jì)算機(jī)圖形學(xué)的交叉學(xué)科本質(zhì)。我想我本人應(yīng)該就是一個(gè)不錯(cuò)的活標(biāo)本吧。十二年的職業(yè)道路上,我也是無(wú)比幸運(yùn)(畢竟射手座),遇到了太多牛逼的師長(zhǎng)、同學(xué)、摯友、和學(xué)生,每個(gè)人都讓我學(xué)到了很多。
那下一個(gè)十二年,我應(yīng)該主要做些什么呢?思考了許久,不為立志,但求有一個(gè)計(jì)劃。我想, “closing the gap between virtual reality and physical reality”,這個(gè)目標(biāo)絕沒(méi)有變,圍繞物理仿真這一指引運(yùn)動(dòng)規(guī)律的軸心的原則也依舊在我心上打著思想鋼印。在此之外,我與攜有同樣想法的三個(gè)人(@李旻辰,方燠,楊垠@Yin Yang)一起成立了Timestep,致力于穩(wěn)健、精準(zhǔn)、高效、普適的物理仿真“步法”及它們?cè)诓煌a(chǎn)業(yè)中的應(yīng)用,并在國(guó)內(nèi)以及世界多地積極打造和布局一個(gè)可持續(xù)發(fā)展的體系。萬(wàn)水千山不停步,希望在下一個(gè)十二年,我們跟更多同道中人一起,通過(guò)有趣和有用的技術(shù)和想法把虛擬世界和現(xiàn)實(shí)世界真正打通。
來(lái)源:蔣陳凡夫?https://zhuanlan.zhihu.com/p/560415998
