跨界王者:CFD工程師榮獲奧斯卡大獎
小鱷魚愛洗澡中水的流動采用計算機模擬技術(shù)重構(gòu)
無論是在《加勒比海盜:世界盡頭》中爆炸的火球,還是《星球大戰(zhàn)前傳3:西斯的復(fù)仇》中旋轉(zhuǎn)的漩渦,都可以看出利用數(shù)字模擬的視覺特效,大量應(yīng)用在各種好萊塢大片中。雖然以前認(rèn)為對電影特效等應(yīng)用仿真程序過于復(fù)雜且昂貴,但隨著計算機計算速度變得越來越快,計算結(jié)構(gòu)也在不斷優(yōu)化,現(xiàn)在,模擬這種現(xiàn)象已經(jīng)變得非常實用。此外,由于計算機仿真能力已經(jīng)獲得提升以獲得越來越逼真的效果,甚至用于生成的圖像更好的地將接縫與現(xiàn)場表演相融合,基于物理的模擬已經(jīng)變得不僅易于處理,而且成為在電影和視頻游戲中創(chuàng)建逼真的虛擬世界的寶貴工具。
電影和游戲特效中的物理現(xiàn)象,如水,火,煙,爆炸,剛體動力學(xué)和彈性體的變形等。這些都是偏微分方程控制的。用計算機求解這類方程的算法的發(fā)展是應(yīng)用數(shù)學(xué)和計算科學(xué)的應(yīng)用之一。事實上,一些技術(shù)(最值得注意的是Level-set方法)已經(jīng)徹底改變了整個電影行業(yè),甚至獲得了奧斯卡大獎。
在2010年Notices of the AMS發(fā)表的Crashing waves, awesome explosions, turbulent smoke, and beyond: Applied mathematics and scientific computing in the visual effects industry這篇文章中,描述了視覺效果行業(yè)中應(yīng)用數(shù)學(xué)和計算科學(xué)的一些最引人注目的應(yīng)用。特殊效果模擬工具雖然基于物理,但必須能夠以直觀的方式確保可信度和效果。重點介紹了計算流體動力學(xué),計算固體動力學(xué),剛體模擬以及碰撞檢測和分辨率的技術(shù)。 本文的內(nèi)容也主要翻譯自這篇文章。
計算流體力學(xué)技術(shù)可用于模擬許多現(xiàn)象。沖擊波、海洋場景可以利用CFD仿真,爆炸,火球和煙霧效果現(xiàn)在也都使用CFD。在使用CFD之前,計算機生成的CG特效(例如爆炸)是由施加到被動未連接粒子的力場驅(qū)動的,產(chǎn)生的結(jié)果不盡如人意。然而,通過改進硬件和更快算法的組合,對煙霧,火,水和其他流體的基于CFD的仿真特效的應(yīng)用,已經(jīng)變得更加普遍。
從歐拉參照系,即坐標(biāo)與流體運動無關(guān)的參考系,不可壓縮流體的速度由Navier-Stokes方程控制。CFD中使用了許多數(shù)值方案來求解這些方程。我們可以將計算機圖形中常用的許多方法分為兩類:通常在網(wǎng)格上求解的分裂或投影方法,以及光滑粒子法。
最初的光滑粒子法用于模擬天體物理問題。Müller等人介紹了使用光滑粒子法模擬液體到計算機圖形的概念。諸如光滑粒子法之類的粒子方法能夠?qū)崟r模擬非常活躍的流體(例如,濺水,煙霧),使其成為視頻游戲模擬的理想選擇,并且可以使用更復(fù)雜和高分辨率的粒子模擬來創(chuàng)建逼真的運動效果和圖片。此外,流體的這種粒子表示方法,使得仿真更易于確定模擬流體和空氣之間的邊界。
雖然Navier-Stokes方程和這些離散化求解足以確定流體的大部分行為,但必須解決額外的物理量,并且需要專門的處理以更好地捕獲不同類型流體的行為。下面,我們將更詳細地研究基于網(wǎng)格的煙霧,火災(zāi)和水的仿真方法。
上圖為電影《海神號》中使用光滑粒子法以及l(fā)evel-set方法模擬的海洋特效。下圖為《史努比》動畫中的焦油怪表面被建模為水平集函數(shù),并使用CFD進行動態(tài)演化
煙霧:由懸浮在熱空氣中的細顆粒組成,煙霧可以被建模為無粘性的不可壓縮流體。煙霧的密度和氣體的溫度T可通過計算機求解得出。一些文獻中描述的煙霧在低網(wǎng)格分辨率下有限差分產(chǎn)生的數(shù)值耗散問題。在模擬煙霧的情況下,數(shù)值耗散使得電影工作人員不能獲得煙霧中的褶皺和其他有趣效果。雖然較高分辨率的網(wǎng)格可能能夠捕獲這些效果中的一些,但這在計算上是昂貴的。
相反,F(xiàn)edkiw等人引入了渦度限制技術(shù)(由Steinhoff提出的應(yīng)用于直升機湍流場仿真的技術(shù)),即使在低分辨率網(wǎng)格上也可以抵消這種耗散。在《終結(jié)者3》 和《星球大戰(zhàn)3》中可以看到煙霧CFD特效的例子。
閃電狗中的Rhino球(左下,右下)和道路(頂部)的幾何斷裂
火焰:在許多情況下,火災(zāi)與煙霧類似,可以建模為不可壓縮流體。同樣,渦量可用于產(chǎn)生湍流火球和旋轉(zhuǎn)火焰,并且可以在模擬中添加額外的燃燒顆粒以引發(fā)新的火焰。
雖然這些燃燒顆粒可以產(chǎn)生火球的膨脹效應(yīng)和太空船的爆炸特效,但是依然需要額外的工具來模擬真正的燃燒。Nguyen等介紹了將氣態(tài)燃料和火焰氣態(tài)產(chǎn)物建模為單獨的不可壓縮流體的想法。這些技術(shù)被用來制造《哈利波特和火焰杯》中龍的火焰氣息。
水:當(dāng)然,CFD對特效的一個更明顯的應(yīng)用是模擬水。電影中使用的最先進的水模擬技術(shù)基本上是基于Foster和Fedkiw引入的level-set方法。Fedkiw得益于在電影中使用level-set模擬水現(xiàn)象分享了奧斯卡技術(shù)成就獎。 正如火災(zāi)的反應(yīng)前沿由水平集函數(shù)定義,水的表面可以以相同的方式定義。然而,數(shù)值耗散可能導(dǎo)致水的界面失去尖銳。粒子水平集方法通過將水面定義為水平集函數(shù)和粒子的組合來實現(xiàn)對該界面的保持。
對這種方法進行了一些改進和藝術(shù)控制,許多電影都具有基于粒子水平集的特殊效果,包括《海神號》中洶涌的大海和洪水泛濫,《后天》中的風(fēng)暴潮 和《加勒比海盜:世界盡頭》中的漩渦。在好萊塢,CFD技術(shù)不僅限于對普通氣體和流體進行建模。在《終結(jié)者3》中熔化的Terminatrix,在《怪物史瑞克》中泥漿,啤酒和其他流體用粒子水平集方法進行了模擬。此外,CFD的仿真技術(shù)也已用于模擬頭發(fā)等非流體。
來自加勒比海盜的戴維瓊斯剛性模擬裝備
固體:在復(fù)雜的網(wǎng)格劃分問題和基于物理的實體模擬之間,應(yīng)用數(shù)學(xué)在CG序列中起著不可或缺的作用,而不僅僅是流體。無論是你最喜歡的《怪物史瑞克》角色還是《后天》的世界末日都市風(fēng)景,幾乎每一個CG實體都在網(wǎng)格表面或體積上使用顯式求解。網(wǎng)格生成、變形和拓?fù)渥兓际荂G工程師面臨的數(shù)學(xué)復(fù)雜挑戰(zhàn)。藝術(shù)家轉(zhuǎn)向基于物理的模擬場景,其中諸如慣性之類的物理效應(yīng)可以提供更多的真實感,或者難以用手控制場景的復(fù)雜性。肉體模擬可以賦予CG角色逼真的肌肉膨脹和漣漪脂肪。頭發(fā)模擬器可以解決數(shù)千個相互作用的頭發(fā)的復(fù)雜性,剛體模擬可以控制爆炸性太空船的動態(tài)。
幾何,網(wǎng)格和斷裂:網(wǎng)格生成是創(chuàng)建新CG對象時遇到的第一個問題。藝術(shù)家通常使用表面網(wǎng)格,表面網(wǎng)格通過組合和變形圖元或通過將激光掃描數(shù)據(jù)從模型轉(zhuǎn)換為三角形或四邊形表面來創(chuàng)建。 盡管大多數(shù)CG對象的藝術(shù)家版本是三角形表面的形式,但大多數(shù)模擬需要對象的四面體體積形式。另外,在精心成形的三角形表面破裂或破碎的場景中,有必要以某種方式創(chuàng)建在碎片上定義的新的碎片網(wǎng)格。
在電影《閃電狗》中,Hellrung等人開發(fā)了一種算法,該算法將每個片段精確地分解為單獨的三角形表面網(wǎng)格,并允許直接轉(zhuǎn)移未破裂模型的紋理和外觀屬性。該方法利用了Sifakis等人的切割算法。 文獻通過復(fù)制切割元素并將切割表面嵌入這些元素中來切割四面體體積。在嵌入過程中,切割元素分為“材料”和“空白”部分,分別定義對象內(nèi)部和外部的區(qū)域。切割算法以這樣的方式計算每個體積片段的三角形邊界,使得片段的每個三角形包含在未切割對象或斷裂表面的三角形內(nèi)。
頭發(fā)的高幾何復(fù)雜性給研究人員帶來了挑戰(zhàn)。(左):真發(fā)的特寫鏡頭(右):模擬的頭發(fā)
剛體模擬:最簡單的模擬對象是剛體。顧名思義,這些物體只能遵循剛性運動(即旋轉(zhuǎn)和平移)。剛體可分為兩種類型:無約束剛體,如《珍珠港》中破碎戰(zhàn)斗機的碎片,以及約束其自由度的關(guān)節(jié)連接的剛體(稱為鉸接剛體),如《星球大戰(zhàn)1》中的戰(zhàn)斗機器人或在《加勒比海盜:聚魂棺》中戴維瓊斯的胡子。
布和頭發(fā):由于它們的復(fù)雜性,CG布料和頭發(fā)/毛皮幾乎總是模擬而不是手工控制。然而,這種復(fù)雜性還意味著標(biāo)準(zhǔn)的幾何碰撞處理算法不能有效地解決所有碰撞,并且布/頭發(fā)很容易變得纏結(jié),產(chǎn)生可見的偽影。
對于布料而言,現(xiàn)代方法是使用三階段過程來確保不會錯過任何碰撞。首先,使用足夠小的基于懲罰的排斥來預(yù)防接觸,以防止視覺偽影。然后,在第二階段中,迭代地應(yīng)用碰撞脈沖,如在“幾何碰撞處理”子部分中那樣。第三,剛性組(其中碰撞對象被嚴(yán)格演化)被用作最終安全網(wǎng),對碰撞進行后處理。實踐中使用的這種算法的一個例子是《星球大戰(zhàn)2》中尤達的長袍。
頭發(fā)模擬比布料更復(fù)雜,因為大量的頭發(fā)相互作用和碰撞。最常見的方法不是模擬每個單獨的鏈,而是通過模擬較小的引導(dǎo)毛發(fā)(通常不超過幾百個)并插入大量毛發(fā)進行渲染來管理許多毛發(fā)相互作用的復(fù)雜性。稀疏團塊的使用通常允許使用廉價的排斥罰分而不是真正的幾何碰撞處理,因為預(yù)期導(dǎo)向具有厚度。這種技術(shù)的例子包括《閃電狗》中penny女主角的毛發(fā)。或者,有幾種方法可以將每個模擬頭發(fā)作為流體狀連續(xù)體積的一部分進行處理。這些方法自然地模擬頭發(fā)交互而沒有明顯的碰撞。
最近McAdams等人探索了一種混合技術(shù),將頭發(fā)計算通過拉格朗日粒子來處理。然而,與以前基于連續(xù)體的方法不同,它只模擬不直接相互作用的引導(dǎo)毛發(fā),這種方法模擬許多毛發(fā)(數(shù)千個),它們可以通過與布料相同的幾何碰撞處理算法直接碰撞。
上圖為使用成束技術(shù)模擬來自《閃電狗》中Penny的頭發(fā)。僅模擬了幾百根頭發(fā),其余的在渲染時添加了耗散。下圖是所有毛發(fā)都是在這種混合體積/幾何碰撞算法中模擬的結(jié)果。
實時模擬:由于處理器速度的提高和多核處理器的可用性,使用偏微分方程的數(shù)值方法的模擬正以越來越快的速度使用。一個非常新的例子是實時模擬,也就是說,模擬運行得足夠快,用戶可以在模擬運行時與它們進行交互。也許使實時模擬成為可能的最明顯的方法是通過粗化模擬對象的表示來降低模型的復(fù)雜性。但是,在許多情況下,實時應(yīng)用所需的粗化程度會產(chǎn)生令人無法接受的不良結(jié)果。因此,一個活躍的研究領(lǐng)域是模型簡化,其中實時低分辨率模擬利用預(yù)先計算的更高分辨率的模擬信息。
當(dāng)創(chuàng)建具有自然現(xiàn)象的場景時,這種技術(shù)很快將在視頻游戲中變得普遍。這些技術(shù)也被用于模擬手術(shù)。比如下圖就顯示了惡性黑素瘤手術(shù)過程中彈性軟組織的有限元模擬。當(dāng)求解器求解控制方程時,用戶實時切割和變形并縫合組織。
惡性黑素瘤去除程序。底部圖像陣列使用強加的表面紋理以更好地可視化組織的后過程平衡配置
總結(jié):隨著數(shù)字方法在電影和視頻游戲中的適用性的提高,對應(yīng)用數(shù)學(xué)和科學(xué)計算的新認(rèn)識正在出現(xiàn)。效果行業(yè)的這一新興方面正在成為應(yīng)用數(shù)學(xué)家的一個令人興奮的新前沿,它將數(shù)學(xué)和計算機科學(xué)見解的需求與電影制作藝術(shù)相結(jié)合。影響行業(yè)中應(yīng)用數(shù)學(xué)的新生狀態(tài)正在推動研究和開發(fā)工作,以提供產(chǎn)生更大規(guī)模和更令人印象深刻的效果所需的算法和創(chuàng)新。也就是說,因為科學(xué)計算技術(shù)最近才在電影中大規(guī)模實用,它們在電影制作過程中的全部功效和最終位置還遠未確定。未來幾年將努力充分發(fā)揮行業(yè)中應(yīng)用數(shù)學(xué)的潛力,這只能由具有數(shù)學(xué),計算機科學(xué)和物理背景的研究人員來完成。
來源:CFD界
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















