現(xiàn)代物理屡贺,本質(zhì)上只包含幾何與材料兩塊的內(nèi)容蠢棱。幾何描述的是物件的空間結(jié)構(gòu),對于給定的幾何結(jié)構(gòu)甩栈,不同的材料對于外界的反應(yīng)是不同的⌒合桑現(xiàn)代物理,不論是剛體軟體流體量没,甚至是量子力學(xué)玉转,本質(zhì)上就是為了將這兩種內(nèi)容分開。
計(jì)算機(jī)動(dòng)畫殴蹄,本質(zhì)上是一種視覺上的體驗(yàn)究抓,通過視覺暫留效應(yīng)用離散的圖片模擬出連續(xù)的動(dòng)畫效果猾担。
最早的動(dòng)畫可以追溯到公元前三千年,人們發(fā)現(xiàn)的一個(gè)陶罐上面通過手繪多個(gè)圖片刺下,將多個(gè)圖片串聯(lián)起來就構(gòu)成了一只山羊跳起來吃樹葉的動(dòng)畫绑嘹,而這種通過序列幀模擬連續(xù)運(yùn)動(dòng)的方式一直持續(xù)到早期的游戲制作,甚至今天2D游戲還依然大量使用這類動(dòng)畫技術(shù)橘茉。
一些3D游戲中的角色的動(dòng)作目前基本上是通過骨骼蒙皮實(shí)現(xiàn)工腋,這種動(dòng)畫著眼于大體的肢體動(dòng)作,數(shù)據(jù)量少畅卓,通過堆人力的方式可以得到很好的效果擅腰,但是對于頭發(fā)飄動(dòng)、衣服的褶皺與抖動(dòng)等效果由于數(shù)據(jù)量過大則是無法通過這種方式實(shí)現(xiàn)翁潘,這類動(dòng)畫我們稱之為secondary fact惕鼓,因此我們需要一種自動(dòng)化的方法或者技術(shù)來實(shí)現(xiàn)對secondary fact的模擬與計(jì)算,而這就是這門課的意義與目的唐础。
要想實(shí)現(xiàn)自動(dòng)創(chuàng)造動(dòng)畫的目的箱歧,我們就需要遵循一套最基本的最好的規(guī)則,這就是所謂的第一性原理(即拋開所有的雜項(xiàng)一膨,只聚焦在最關(guān)鍵的部分上)呀邢,而最好的規(guī)則就是基于物理的方法來創(chuàng)造計(jì)算機(jī)動(dòng)畫,這是因?yàn)榛谖锢碓淼乃惴ㄝ敵龅慕Y(jié)果是自然的真實(shí)的豹绪,能夠讓人信服的价淌。
現(xiàn)在的計(jì)算機(jī)動(dòng)畫最主要的內(nèi)容就包括如下三塊:
- 剛體模擬
- 軟體模擬
- 流體模擬
當(dāng)然,我們經(jīng)常在游戲中看到一些其他效果瞒津,如雪蝉衣、破碎、沙子等巷蚪,這些現(xiàn)象其實(shí)可以拆分成上述三種模擬的一種或者多種病毡,或者說前面的三種模擬就是物理動(dòng)畫模擬的基向量。
1. 動(dòng)畫模擬趨勢觀察分析
所有的技術(shù)最終都是為如下三個(gè)目的中的一個(gè)或者多個(gè)服務(wù)的:
- 提高產(chǎn)品質(zhì)量屁柏、增強(qiáng)效果
- 降低成本啦膜、增強(qiáng)效率
- 擴(kuò)大應(yīng)用范圍與邊界
從學(xué)術(shù)界來看,計(jì)算機(jī)動(dòng)畫的趨勢有三種:
- 不同scale的動(dòng)畫模擬淌喻,以及不同物理現(xiàn)象融合在一起的動(dòng)畫效果
- 神經(jīng)網(wǎng)絡(luò)+機(jī)器學(xué)習(xí)帶動(dòng)下的基于數(shù)據(jù)驅(qū)動(dòng)的動(dòng)畫模擬
- 多態(tài)(不僅僅局限于視覺僧家,還會擴(kuò)展到觸覺以及聲音等現(xiàn)象的)模擬
1.1 多scale模擬
可以參考Siggraph 2008年的一篇文章:Wavelet Turbulence[Kim et al. 2008]。這篇文章通過將一個(gè)復(fù)雜的動(dòng)畫效果拆解成多個(gè)不同scale的簡單動(dòng)畫效果裸删,從而以較低的消耗近似模擬出一個(gè)高復(fù)雜度的動(dòng)畫效果:
另外八拱,Siggraph 2018年的一篇文章(Chen et al. Siggraph Asia 2018)也使用了這種方式實(shí)現(xiàn)了對沙子(Granular Material)的模擬:
上圖中,左邊是將每顆沙子都單獨(dú)建模進(jìn)行模擬的效果,右邊是紅色沙子當(dāng)成流體進(jìn)行模擬肌稻,藍(lán)色沙子還是單獨(dú)建模進(jìn)行模擬清蚀,兩者效果看起來差不多,不過右邊的方案計(jì)算效率有6.8倍的提升灯萍。
除此之外轧铁,Siggraph 2021年的一篇文章(Huang et al. Siggraph Asia 2021)也是基于這個(gè)思想實(shí)現(xiàn)的:大尺度的海洋用簡化的方案模擬每聪,船跟海洋交互產(chǎn)生的浪花則是使用較為精細(xì)的方案模擬旦棉。
UCLA的一個(gè)組用這種方案實(shí)現(xiàn)了對船在海洋中運(yùn)動(dòng)的交互效果。
除了上面之外药薯,還有一些其他的工作也是基于這種想法做出來的绑洛,這里就不一一羅列了。
1.2 數(shù)據(jù)驅(qū)動(dòng)方法
基于數(shù)據(jù)驅(qū)動(dòng)的方案介紹之前童本,先來看下一種十分古老的動(dòng)畫模擬方案:Model Reduction真屯。翻譯一下,就是模型簡化穷娱,即將一個(gè)復(fù)雜的模型分解成若干種簡單的模型再進(jìn)行模擬的方案绑蔫,圖形學(xué)中的球諧函數(shù)SH其實(shí)也是基于這種方式來完成對光照的模擬的。
上圖中的公式中D就是模擬盤子形變各點(diǎn)受力情況的項(xiàng)泵额,在這一項(xiàng)中配深,由于需要模擬的點(diǎn)非常多,因此是一個(gè)十分高緯度的向量嫁盲,而u則是這個(gè)向量的一個(gè)表示篓叶,而通常對這個(gè)的求解是通過將高緯度的u轉(zhuǎn)換為低緯度的q來實(shí)現(xiàn)的,其中一個(gè)關(guān)鍵問題是羞秤,如何找到完成這個(gè)轉(zhuǎn)換的矩陣U缸托,而這個(gè)矩陣的求解則是通過數(shù)據(jù)驅(qū)動(dòng)(如神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí)等)的方法實(shí)現(xiàn)的瘾蛋。
Siggraph 2013的一篇文章通過暴力羅列所有動(dòng)畫輸入與輸出效果映射數(shù)據(jù)的方式實(shí)現(xiàn)了對衣服布料的實(shí)時(shí)模擬俐镐,上面的第二張圖就是對應(yīng)于不同的布料狀態(tài)在不同的輸入下的輸出分支,可以理解為布料的整體模擬效果的分支哺哼,這個(gè)方案的問題在于需要消耗較高的內(nèi)存(據(jù)說是幾百兆)京革。
除此之外,GDC中以及Google的科學(xué)家也在摸索通過機(jī)器學(xué)習(xí)以及神經(jīng)網(wǎng)絡(luò)來通過當(dāng)前幀的數(shù)據(jù)模擬輸出下一幀的動(dòng)畫數(shù)據(jù)的方法幸斥,不過總的來說匹摇,在當(dāng)前的技術(shù)水平上,這種方式可能還僅僅只能停留在學(xué)術(shù)層面甲葬,無法做到工業(yè)應(yīng)用廊勃。
直接通過機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)根據(jù)當(dāng)前幀數(shù)據(jù)輸出下一幀數(shù)據(jù)的方法目前還面臨很多問題,比如穩(wěn)定性,比如last mile problem等坡垫,可能在十幾幀中可以得到不錯(cuò)的表現(xiàn)梭灿,但是在繼續(xù)模擬下去得到的結(jié)果就是滿天亂飛,或者可能99%的情況下可以得到正確的效果冰悠,但是1%的可能會導(dǎo)致錯(cuò)誤的結(jié)果堡妒,而這1%的錯(cuò)誤可能導(dǎo)致后面的模擬就完全是錯(cuò)誤的,無法回到正確結(jié)果溉卓,這顯然也是無法接受的皮迟。
不過,基于數(shù)據(jù)的方法雖然在現(xiàn)在還不能直接用來計(jì)算最終的效果桑寨,但是卻可以用于對傳統(tǒng)的方案中的某一步或者某幾步進(jìn)行加速或者提升伏尼。
前面說過,通過model reduction可以實(shí)現(xiàn)對復(fù)雜物理效果的模擬尉尾,但是這種模擬只能模擬給定采樣點(diǎn)的形變爆阶,相鄰區(qū)域的數(shù)據(jù)則是通過插值求得,上面這里給出的了一種方法沙咏,通過神經(jīng)網(wǎng)絡(luò)在給定的Reduction Model下辨图,可以實(shí)現(xiàn)任意點(diǎn)的變換,通過這種方式可以移除此前采樣點(diǎn)離散導(dǎo)致的精度問題肢藐。
1.3 多態(tài)模擬
觸覺對時(shí)間的敏感度高于視覺故河,需要做到至少1000 fps才能達(dá)到可以接受的地步,因此需要較高的性能窖壕。
上面展示的是通過計(jì)算機(jī)模擬出場景交互中的聲音(比如盤子掉在地上發(fā)出的聲音)忧勿。
如上圖所示,聲音的模擬需要完成如上兩步的計(jì)算瞻讽,分別是物件交互的震動(dòng)模擬鸳吸,以及震動(dòng)轉(zhuǎn)換為聲波的傳播的計(jì)算。順便提一下速勇,聲音模擬計(jì)算性能要求還要高于體感模擬晌砾,每秒中要生成44100個(gè)數(shù)據(jù)點(diǎn)(與人耳的感知頻率范圍有關(guān),根據(jù)奈奎斯特采樣定律得到)烦磁。
2. 整個(gè)課程概覽
這門課是鄭昌熙教授在哥倫比亞大學(xué)為大四或者研一的學(xué)生所開設(shè)的計(jì)算機(jī)動(dòng)畫課程衍生而來养匈,對課程感興趣的同學(xué)可以去搜尋相應(yīng)的材料。
整個(gè)課程會分為如下四個(gè)部分:
- 數(shù)值積分基礎(chǔ)
- 剛體動(dòng)力學(xué)
- 軟體動(dòng)力學(xué)
- 流體動(dòng)力學(xué)