CG中的動畫基本算法(interpolation,keyframing,skinning,simulation,particles,cloth,fire and water, human loc...

Note

這是對MIT Foundation of 3D Computer Graphics第23章的翻譯脆淹,本章講解了動畫基本算法知識。本書內(nèi)容仍在不斷的學(xué)習(xí)中瘫镇,因此本文內(nèi)容會不斷的改進鼎兽。若有任何建議,請不吝賜教ninetymiles@icloud.com铣除。

注:文章中相關(guān)內(nèi)容歸原作者所有谚咬,翻譯內(nèi)容僅供學(xué)習(xí)參考。
另:Github項目CGLearning中擁有相關(guān)翻譯的完整資料尚粘、內(nèi)容整理择卦、課程項目實現(xiàn)。


已經(jīng)完成的章節(jié)


動畫:甚至都不是一個介紹(Animation: Not Even an Introduction)

在CG電影和視頻游戲中郎嫁,事物四處移動秉继。這被稱作動畫。再一次泽铛,動畫應(yīng)該有相關(guān)自身的整本書來講解尚辑,這個書我們沒有資格寫。本章中厚宰,我們會針對用于動畫的一些技術(shù)給你一種概念(并且展示了很多圖片)腌巾。感興趣的讀者可能希望在參考書目[4]中檢出課程注釋。計算機動畫有爭議地作為計算機圖形中最多挑戰(zhàn)性保留的子領(lǐng)域铲觉。即便今天這個領(lǐng)域中重要的改進仍在進行澈蝙。

23.1 插值(Interpolation)

實現(xiàn)動畫的最簡單方式為讓藝術(shù)家手工做大部分困難的工作。計算機只是被用于插值撵幽,或填充灯荧,多種需要的數(shù)據(jù)。

23.1.1 關(guān)鍵幀(Keyframing)

關(guān)鍵幀背后的思路讓動畫器在低解析(low-resolution)時間樣本集合上勾勒出動畫序列盐杂。在每個這樣的時間樣本上逗载,藝術(shù)家描述場景的完整狀態(tài)。計算機隨后使用平滑插值方法生成藝術(shù)家指定的幀之間的幀链烈。我們在第9章中講解了這種技術(shù)厉斟。在關(guān)鍵幀中,困難的工作由藝術(shù)家完成强衡;計算只是被用于卸去了一些更加單調(diào)和繁瑣的工作擦秽。就如看起來一樣枯燥,很多計算機動畫以這種方式完成漩勤。它給予動畫器在最終輸出的外觀和感知上的完全控制感挥。

23.1.2 蒙皮(Skinning)

蒙皮是一種簡單技術(shù),用于在三角形網(wǎng)格中模擬身體部分的畸形(變形)越败。參考圖示\text{Figure 23.1}触幼。蒙皮易于在頂點著色器實現(xiàn)并且通常用于視頻游戲中。

Figure23.1.png

Figure 23.1: 通過靠近關(guān)節(jié)的模型視圖矩陣究飞,你可以輕松使用可變形關(guān)節(jié)產(chǎn)生物體動畫置谦。來自于參考書目[74],??Industrial Light & Magic亿傅。

讓我們假設(shè)藝術(shù)家始于以描述自然“靜止姿態(tài)”物體的輸入性的三角形網(wǎng)格霉祸。在這種輸入中,每個頂點使用物體坐標描述袱蜡,也就是說丝蹭,\tilde{p}=\vec{o}^t\mathbf{c}。接下來坪蚁,在一個被稱作索具(rigging)的處理中奔穿,藝術(shù)家設(shè)計了幾何輪廓并且把它填充到網(wǎng)格中。這個輪廓可以被當(dāng)作連接關(guān)節(jié)的骨骼集合敏晤。在當(dāng)前時刻贱田,讓我們假設(shè)每個頂點被藝術(shù)家關(guān)聯(lián)到一塊骨骼上。

這種輪廓形狀自然形成一種子-物體坐標系和子-物體矩陣體系嘴脾,就如我們之前在小節(jié)5.4中所看到的(參考圖示\text{Figure 5.4})男摧。這些子-物體矩陣表達了一個幀和其處于靜止姿態(tài)的“父”幀的關(guān)系蔬墩。回憶一下耗拓,例如拇颅,在小節(jié)5.4中,我們具有\vec{\mathbfg6i6gke}_r^t = \vec{\mathbf{o}}_r^tA_rB_rC_rD_r乔询,此處\vec{\mathbfmwu88g0}_r^t曾為(正交標準化的)右下臂幀樟插,并且矩陣A_r,B_r,C_r,D_r為剛體矩陣。我們已經(jīng)增加“r”下標意指“靜止姿態(tài)”竿刁。讓我們針對這種骨骼定義漸增的累加矩陣黄锤,N_r := A_rB_rC_rD_r;這種矩陣表達了幀關(guān)系:\vec{\mathbfiiq6iqu}_r^t=\vec{o}^tN_r食拜。讓我們考慮某種頂點鸵熟,使用輸入物體-坐標 c,其已經(jīng)被關(guān)聯(lián)到下臂骨骼负甸。我們可以記錄這個點為
\tilde{p}=\vec{\mathbf{o}}^t\mathbf{c}=\vec{\mathbfmum2cm4}_r^tN_r^{-1}\mathbf{c}

這在小節(jié)5.4中被實現(xiàn)旅赢,在動畫中,我們操縱骨骼惑惶,通過更新它的一些矩陣到新設(shè)置中煮盼,比如說A_n,B_n,C_nD_n,此處下標意指“新”带污。讓我們針對這種骨骼定義“新的”累加矩陣僵控,N_n := A_nB_nC_nD_n,其表達了關(guān)系:\vec{\mathbfyewsq6q}_n^t=\vec{\mathbf{o}}^tN_n鱼冀。比方說报破,這種骨骼操縱移動了下臂幀:\vec{\mathbf6swkwyi}_r^t \Rightarrow \vec{\mathbf0k4wqkc}_n^t。如果我們要順著這種幀以剛體風(fēng)格移動點\tilde{p}千绪,那么我們需要以下面表達更新
\large{ \begin{array}{rcl} \vec{\mathbfq2oa6sg}_r^tN_r^{-1}\mathbf{c} & \Rightarrow & \vec{\mathbf22ue8eq}_n^tN_r^{-1}\mathbf{c} \\ & = & \vec{\mathbf{o}}^tN_nN_r^{-1}\mathbf{c}\end{array} }
這種情形中充易,被變換點的眼睛坐標為E^{-1}ON_nN_r^{-1}\mathbf{c},并且我們看到針對這個頂點的模型試圖矩陣應(yīng)該為E^{-1}ON_nN_r^{-1}荸型。

這種處理給了我們一種“堅硬的”蒙皮結(jié)果盹靴,此處每個頂點僅僅沿著一根骨骼移動。要獲得靠近一個物體關(guān)節(jié)的平滑蒙皮瑞妇,我們允許動畫器要關(guān)聯(lián)頂點到超過一個骨骼稿静。針對其每個骨骼,我們隨后混合結(jié)果到一起辕狰。

更專業(yè)一點改备,針對每個頂點,我們允許動畫器設(shè)置一系列權(quán)重w_i蔓倍,總數(shù)為1悬钳,這些權(quán)重指定每個骨骼的運動應(yīng)該影響這個頂點多少盐捷。那么,在動畫過程中默勾,針對頂點我們計算為
\large{ \sum_iw_iE^{-1}O(N_n)_i(N_r)_i^{-1}\mathbf{c} \tag{23.1} }
此處(N)_i為針對骨骼i的漸增矩陣碉渡。

蒙皮易于在頂點著色器中實現(xiàn)。代替?zhèn)鬟f單一模型視圖矩陣到著色器灾测,我們傳遞一系列模型視圖矩陣為統(tǒng)一變量。針對每個頂點的權(quán)重被傳遞為屬性變量垦巴,借助頂點緩存對象媳搪。方程(23.1)中的求和隨后在頂點著色器代碼中被計算。

23.2 模擬(Simulation)

物理給予我們隨時間變化掌控物體的運動和進展的方程式骤宣。始于初始條件的輸入集合秦爆,這種方程可以以計算方式模擬,用以預(yù)測實際的物體在真實世界中如何運動憔披。如果完成的好等限,這可以生成非常真實和令人信服的效果。物理模擬其基本形式為預(yù)測處理芬膝;你填入初始條件并且輸出動畫望门。如何控制這種動畫很不明顯。物理模擬的領(lǐng)域在過去十年已經(jīng)看到很多進步锰霜,其在特效生成的計算機圖形的成功方面是關(guān)鍵的筹误。

23.2.1 粒子(Particles)

針對一個點的時間進化,運動物理學(xué)始于常微分方程(ODE)癣缅。
\large{ f = ma = m\dot{v} = m\ddot{x} \tag{23.2} }
力為質(zhì)量乘以加速度厨剪,此處加速度為速度的時間導(dǎo)數(shù),而速度為位置的時間導(dǎo)數(shù)友存。力可以表達類似引力或風(fēng)之類的事物祷膳。

始于初始條件,我們可以離散化這個常微分方程(ODE)并且在時間上使用所謂的歐拉步驟前進
\large{ \begin{array}{rcl} x_{t+h} & = & x_t + v_th \\ v_{t+h} & = & v_t + a_th \\ a_{t+h} & = & f(x_{t+h},t+h)/m \end{array} }
這種處理被稱為時間積分屡立。當(dāng)使用歐拉步驟直晨,我們需要采取足夠小的步驟以確保方法不會最終實現(xiàn)奇怪的內(nèi)容∨蚶可選擇地抡秆,存在更成熟方式的完整文獻用以求解常微分方程(ODE)。針對更多細節(jié)吟策,參考課后書目[4]中的注釋儒士。

在粒子系統(tǒng)動畫中,我們把我們的場景建模為非交互點狀粒子檩坚,根據(jù)方程(23.2)逐步發(fā)展着撩,或者建模為空氣中一縷煙霧粒子诅福。參考圖示\text{Figure 23.2}。通常每個粒子被渲染為半透明的小斑點(blob)或表面拖叙。

Figure23.2.png

Figure 23.2: 模擬一群簡單粒子可以被用于動畫流動的水氓润。來自于參考書目[37],??Eurographics and Blackwell Publishing Ltd薯鳍。

23.2.2 剛體(Rigid Bodies)

要建模剛體隨時間的發(fā)展(諸如骰子在桌上滾動)咖气,事情馬上就變得復(fù)雜得多。首先挖滤,因為我們的物體不是點崩溪,我們需要處理旋轉(zhuǎn)和角動量(angular momentum)。存在很多其它需要定位的困難問題斩松。要參考更多細節(jié)伶唯,查看參考書目[4]中的注釋。

在剛體模擬中惧盹,我們通常想建模彼此互相碰撞和反彈(回應(yīng))的主體(bodies)乳幸。計算碰撞要求我們不停跟蹤所有成對的主體并且決定它們何時相交。參考圖示\text{Figure 23.3}钧椰。要有效地實現(xiàn)這種粹断,我們通常使用一種動態(tài)進化,空間綁定的體系嫡霞。另一個問題是一旦我們找到一個相交姿染,這就意味著多個軀干已經(jīng)互相滲透,這一定要被正確復(fù)原秒际。另一種微妙之處在于真實的物體不是真正的剛體悬赏;它們實際上在接觸時以非常輕微地畸形化行為反彈。因為我們不希望模擬這種行為娄徊,我么需要想出新的運動近似方程闽颇。

Figure23.3.png

Figure 23.3: 要模擬剛性物體,我們必須計算碰撞并且同時處理動量寄锐、摩擦力和張力兵多。來自于參考書目[27],??ACM橄仆。

另一個(驚人)困難的問題來自于正確建模摩擦力(friction)為接觸力剩膘。當(dāng)一個物體在地板上處于靜止時,我們需要正確建模阻止物體滑過地板的物理學(xué)盆顾,或者無窮地反彈和來回顫動怠褐。

23.2.3 衣料(Cloth)

一種對于建模重要的現(xiàn)象是衣料。這種情形中您宪,表面要不被建模為粒子元素的網(wǎng)格奈懒,要不作為三角形元素的網(wǎng)格奠涌。在一個基于粒子的方式中,力被添加到這個系統(tǒng)中以避免拉伸磷杏,切削溜畅,和過分彎曲。阻尼也被加入以建模內(nèi)部摩擦力极祸;這消除了震動慈格。在一個基于三角形的方法中,由于拉伸遥金、切削和彎曲浴捆,你寫下了表達式E用于衣料狀態(tài)的能量。力從而被解釋為f=\frac{\partial E}{\partial \tilde{x}}汰规。關(guān)于衣料效果要參考更多汤功,參考課后書目[24]并且由此引用物邑。要建模衣料溜哮,我們也需要計算衣料內(nèi)以及衣料和其環(huán)境之間的碰撞。參考圖示\text{Figure 23.4}色解。

Figure23.4.png

Figure 23.4: 衣料可以使用多種算法被模擬茂嗓。存在很多獲得“剛好正確”行為的微妙之處。來自于參考書目[24]科阎,??ACM述吸。

頭發(fā)建模經(jīng)常被相似地處理為質(zhì)量-彈簧模型。關(guān)于頭發(fā)要參考更多锣笨,請查看參考書目[67]并由此引用蝌矛。參考圖示\text{Figure 23.5}

Figure23.5.png

Figure 23.5: 頭發(fā)可以作為質(zhì)量-彈簧系統(tǒng)被動畫化错英。來自于[67]入撒,??ACM。

23.2.4 可變形材料(Deformable Materials)

很多真實世界的物體很明顯是可變形的椭岩。這可以被建模為合適的物理方程式茅逮,并且也在時間上積分。要建呐懈纾可變形的物理學(xué)献雅,我們需要建模物體的內(nèi)部容積,經(jīng)常作為具體的四面體網(wǎng)格塌计。除了類似果凍凝膠之類的新奇條目挺身,這對于產(chǎn)生人體真實模型也是重要的。參考圖示\text{Figure 23.6}锌仅。

Figure23.6.png

Figure 23.6: 要建穆髑可變形模型良蒸,我們需要在問題中表達容積。來自于[57]伍玖,??Springer嫩痰。

23.2.5 火和水(Fire and Water)

建模和動畫類似水和火的物理現(xiàn)象也可能是重要的。參考圖示\text{Figure 23.7}窍箍。這些經(jīng)常即借助粒子同時也借助基于3D網(wǎng)格的技術(shù)被建模串纺。在一個液體容積中扭曲和回旋的逐漸發(fā)展被納維-斯托克斯偏微分方程(Navier-Stokes partial differential equation)所決定。它是要求自身數(shù)值方法的數(shù)值模擬椰棘,諸如非常流行的“穩(wěn)定流體(stable fluids)”方法[70]纺棺。關(guān)于流體模擬的更多信息,參考最近Bridson所寫的書[9]邪狞。

Figure23.7.png

Figure 23.7: 一張令人震驚的模擬水的圖像祷蝌。來自于參考書目[46],??IEEE帆卓。

23.3 人類運動(Human Locomotion)

人類不是簡單的被動物體巨朦,而且他們的計算機模擬已經(jīng)證明比水和灰塵之類的被動物體要難得多。更進一步剑令,在計算機動畫中糊啡,我們顯然想細致控制虛擬生物所執(zhí)行的動作,而不只是模擬來自于初始條件集合所形成的結(jié)果吁津。

存在一個時刻棚蓄,當(dāng)研究者寄希望于來自機器人、控制理論和優(yōu)化的概念最終能夠完全從頭開始產(chǎn)生人類運動的真實樣子碍脏。這個目標是難以實現(xiàn)的梭依,并且當(dāng)前有前景的技術(shù)極度依賴于運動捕捉的使用。在運動捕捉中典尾,當(dāng)從校準過的相機/傳感器裝置中查看時役拴,真實的人會執(zhí)行多種運動。被捕捉的目標經(jīng)常穿著捕捉點以幫助捕獲處理急黎。參考圖示\text{Figure 23.8}扎狱。這種數(shù)據(jù)隨后可以被傳輸?shù)教摂M角色。這種數(shù)據(jù)也可以在某種程度上被修改和控制勃教。

Figure23.8.png

Figure 23.8: 一個人和一匹馬淤击。來自于參考書目[41],??Sian Lawson故源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污抬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌印机,老刑警劉巖矢腻,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異射赛,居然都是意外死亡多柑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門楣责,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竣灌,“玉大人,你說我怎么就攤上這事秆麸〕踵冢” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵沮趣,是天一觀的道長屯烦。 經(jīng)常有香客問我,道長房铭,這世上最難降的妖魔是什么驻龟? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮育叁,結(jié)果婚禮上迅脐,老公的妹妹穿的比我還像新娘芍殖。我一直安慰自己豪嗽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布豌骏。 她就那樣靜靜地躺著龟梦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窃躲。 梳的紋絲不亂的頭發(fā)上计贰,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音蒂窒,去河邊找鬼躁倒。 笑死,一個胖子當(dāng)著我的面吹牛洒琢,可吹牛的內(nèi)容都是我干的秧秉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衰抑,長吁一口氣:“原來是場噩夢啊……” “哼象迎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤砾淌,失蹤者是張志新(化名)和其女友劉穎啦撮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汪厨,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赃春,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了劫乱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聘鳞。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖要拂,靈堂內(nèi)的尸體忽然破棺而出抠璃,到底是詐尸還是另有隱情,我是刑警寧澤脱惰,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布搏嗡,位于F島的核電站,受9級特大地震影響拉一,放射性物質(zhì)發(fā)生泄漏采盒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一蔚润、第九天 我趴在偏房一處隱蔽的房頂上張望磅氨。 院中可真熱鬧,春花似錦嫡纠、人聲如沸烦租。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叉橱。三九已至,卻和暖如春者蠕,著一層夾襖步出監(jiān)牢的瞬間窃祝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工踱侣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粪小,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓抡句,卻偏偏與公主長得像探膊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子玉转,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355