幀率“綁架”了物理:用0.1%的算力僞造99%視覺效果的水體

當亞瑟·摩根在《荒野大鏢客2》的溪流中飲馬,粼粼波光隨着馬蹄緩緩擴散;當邁克爾駕駛遊艇破開洛聖都的海浪,帶起的水波能夠精準的推開漂浮的集裝箱……在衆多遊戲大作中,水體渲染與物理交互常被視作提升世界真實感與沉浸感的關鍵。

  

從《水上摩托》(Wave Race)在任天堂64是屏幕上推開的像素波浪,到《半條命2》用法線貼圖僞造的水波,再到《戰地5》用粒子碰撞模擬的硫磺島礁石上的浪湧。我們在屏幕中目睹了從無到有的水花和波紋,卻鮮少有人真正關心背後的納維-斯托克斯方程是否被“腰斬”。只要顯卡能在每秒60幀的渲染中“馴服”湍流,我們就能獲得足夠的視覺享受和互動樂趣。

 

1 超級超級簡化版的計算流體力學與遊戲中水體模擬發展歷程

 

1.1 1940-1990:計算流體力學的發展

 

計算流體力學(CFD)的起源可追溯至上世紀40年代,當時氣象學家劉易斯·弗萊·理查森提出了一種可數值求解流體流動偏微分方程的方法,但礙於當時算力不足,只能模擬極爲簡單的流動。

 
50至60年代,隨着計算機算力的提升,CFD逐漸成爲科研人員在研究流體力學時必不可少的工具。

 

本文聚焦於遊戲水體模擬,故只對自由表面模擬的一些方法的發展做簡要介紹。

 

1965年,誕生了世界上第一顆原子彈的美國洛斯阿拉莫斯國家實驗室提出了標記質點-網格(MAC)方法,這種通過再歐拉網格中添加標記質點,從而實現識別哪裏是水,哪裏是空氣,這是後續流體自由液麪計算的鼻祖。

  

1975年Nichols和Hirt提出用體積分數而非質點來表示液相位置的思路,到1981年,Hirt和Nichols正式發表了VOF方法的經典論文,確立了用體積分數追蹤自由邊界的標準算法,其核心思想是記錄網格單元中液體所佔比例(液相體積分數),用連續介質變量(1表示液體,0表示氣體)跟蹤自由液麪。

  

1988年,Osher和Sethian提出了水平集(Level Set)方法,用隱式函數表示界面並求解Hamilton-Jacobi方程實現界面推進。水平集方法可自然處理界面拓撲變化,避免顯式追蹤界面,因而很快被用於包括流體自由液麪在內的界面動力學模擬。

  

1986年Brackbill等提出FLIP(流體隱式粒子)方法,這是對PIC(粒子-網格)方法的改進,PIC 方法最早可追溯至 Harlow (1963) 的 Particle-in-Cell,這種方法用粒子攜帶質量、動量等信息,同時在網格上求解壓力/加速度等,得到速度場。

 

至此,CFD已具備VOF、水平集、FLIP等多種自由表面處理手段。

  

與此同時,計算機圖形學開始嘗試物理化的水效果,爲之後的動畫和遊戲水體模擬埋下伏筆。

 

1.2 1990-2000 計算機圖形學領域流體動畫的興起

 

1989年,Miller和Pearce利用粒子系統模擬黏性流體,這是圖形學領域裏較早的流體動畫研究之一。

 

1990年,Kass和Miller提出利用淺水方程高度場(簡化的聖維南方程)來模擬水波。他們只計算二維高度場,再通過渲染展示三維水面;這種方法計算成本低且穩定,深受後續遊戲開發青睞,用於大範圍海洋或湖面的水面模擬。

 

1996年,Foster和Metaxas在SIGGRAPH上發表了首個將三維Navier-Stokes方程與自由表面追蹤相結合的流體動畫方法,實現了更逼真的三維水流動效應。

 

1999年,Stam推出了“穩定流體”算法,通過半拉格朗日輸運與隱式黏性處理,實現無條件穩定的流體求解。雖然最初是爲煙霧模擬等氣體研究而生,但大時間步下的穩定求解思路也啓迪了對實時液體的模擬。

 

遊戲領域在90年代中期開始嘗試簡單的交互式水波效果。

 

例如:1996年的《水上摩托》在N64有限硬件上實現了一定程度上的水波物理,玩家的摩托艇會激起波浪影響賽道。1997年的《古墓麗影2》可以潛水並出現了基本的”水花“。


雖然這些效果僅僅大多依賴淺水方程、預先計算的波形貼圖和簡單粒子動畫生成,但是其仍然在遊戲裏初步引入了“物理水體”的概念。

 

1.3 2000-2020:遊戲中實時水體模擬的探索與發展

 

2003年,Müller等人在SCA上提出了適用於交互式應用的粒子法流體模擬,使用SPH(平滑粒子動力學)並通過弱可壓縮近似,讓三維水體動畫得以接近實時地運行。SPH最早由Gingold、Monaghan和Lucy於1977年應用在天體物理中,它用拉格朗日粒子替代網格,基於粒子間核函數進行計算,對大規模並行與自由表面的處理極爲方便。

 

2005年,Zhu和Bridson將CFD領域的FLIP方法引入計算機圖形學動畫中,用於砂和水等複雜流體的模擬,大大降低了粒子法數值耗散,能生成細節豐富的穩定動畫。

 

然而這些方法多用於影視領域,對於遊戲來說,這些方法對算力的需求仍然較大,將其加入遊戲中是一種喫力不討好的做法。

 

這一階段,遊戲中的水模擬仍以近似爲主。許多遊戲採用噪波紋理和法線貼圖生成波浪的外觀,同時在局部疊加粒子特效模擬飛濺水花等。

 

2005年,消費級硬件出現突破:Ageia發佈了專用物理加速卡PhysX,能夠硬件加速包括流體在內的粒子物理。雖然PhysX加速卡屬於短命產品,但它證明了GPU並行在遊戲物理中的潛力。隨後NVIDIA於2006年收購Ageia,將PhysX整合爲基於GPU的物理庫。2008年NVIDIA在GDC展示了流體與剛體的交互效果,預示了實時流固耦合的可能性。

 

10-20年間,隨着硬件性能飛躍和算法優化,遊戲領域開始利用各種近似手段實現實時的有一定物理效果的水體模擬。

 

2010年的《恐水症:預言》是最早具有實時的完全動態的大規模的水體的遊戲之一,宣傳採用了基於粒子的實時水模擬,可在遊戲中實時淹沒房間並推動物體。

  

2013年的《刺客信條4:黑旗》沒有對海洋使用完整的物理效果,而是將程序化波浪與基於物理的尾流、炮彈衝擊等粒子特效相結合,打造出頗具衝擊力的海戰場景。

 

同年,Macklin和Müller提出PBF(位置基流體)方法,將SPH的壓力計算轉化爲粒子位置的密度約束迭代,既能適配較大時間步保持數值穩定,又顯著提升了實時表現。雖然犧牲了部分物理精準度,但在視覺層面依然足夠逼真。

 

PBF技術很快被集成進遊戲引擎(如Unity、Unreal的插件),使開發者能在消費級GPU上運行穩定的水體模擬。

  

2014年的Nvidia PhysX FleX 引擎將流體、柔體和剛體都用粒子+約束統一表示,在GPU上進行統一求解。這種方法實現了流體與剛體的天然雙向耦合:剛體和流體均由一羣粒子表示,流體粒子和剛體粒子通過相同碰撞約束交互,使兩者自動產生雙向作用力。

 

藉助這些技術,遊戲中的“流固耦合”開始變得可行:例如沙袋落入水中會激起水波,反過來水的浮力作用會影響沙袋運動。這些在以前的引擎中難以模擬的效果,如今可近乎實時呈現。

 

之後的遊戲水體達到了前所未有的程度:例如《荒野大鏢客2》的河流、《戰地5》的水花,都結合了一定程度的物理模擬(如大範圍的高度場模擬+局部粒子法模擬)和複雜的水面着色器(如基於速度的泡沫生成器+更精細的水面法線貼圖)。

2.遊戲中水體模擬常用方法


2.1遊戲水體模擬的特點


遊戲中的流體模擬服務於視覺逼真和交互體驗,只需“看起來對”即可,無需嚴格符合物理定律。它屬於娛樂和視覺藝術,關注實時性和美學效果。例如開放世界遊戲希望水體動態響應玩家動作,提供沉浸感和樂趣。

   

針對以上需求,遊戲中的水體模擬爲了效率做了大量簡化和改進:

   

在維度上,常將三維流體問題簡化爲二維高度場,用於模擬大範圍水面。例如海洋場景多用高度場疊加波浪紋理,既減少計算量又易於渲染。

   

在方法上,遊戲偏好粒子法和質點體系(如SPH、PBF),其易於並行且天然適合複雜邊界。粒子法犧牲了一些物理準確性,換取了實時計算的穩定性。

   

遊戲注重模擬的結果而非原因,通過程序動畫製造水花、水浪效果,而不嚴格求解流體方程。例如直接用粒子特效表現船隻激起的浪花,而不在流體網格中真正施加動力學耦合。

   

遊戲模擬必須在毫秒級別完成計算,例如16ms內需要完成包括流體在內的所有計算,以實現60FPS。因此遊戲水體往往採用低分辨率物理+高分辨率渲染的策略,在有限算力下取得視覺上細膩的效果。例如利用低分辨率粒子模擬整體水流,然後在着色階段添加細小的波紋和泡沫紋理來騙過眼睛。

   

遊戲中注重交互,而流固耦合一直是CFD的難題,因此遊戲種會利用巧妙的近似達成表面上的實時“流固耦合”。具體包括:

1)弱耦合近似:剛體在水中的浮沉,多通過預先設定的浮力公式和阻力模型實現,而非嚴格求解N-S方程與固體動力學。這樣物體能隨水浮動、水被物體推開,但計算非常簡化,只需根據物體排水體積計算一個力。

2)局部處理:遊戲中的流固耦合通常侷限於有限範圍(水花四濺的局部)且持續時間短,對穩定性的要求相對寬鬆。例如角色踏水只需模擬一圈漣漪即可,不涉及長時間力的積累,可以大膽使用大步長和經驗阻尼係數。

2.2 基礎方法

 

1.預渲染動畫與紋理貼圖
完全基於視覺塑造的水面,如預先烘焙好的動畫、貼圖或程序化噪波對網格頂點進行簡單變形,無任何物理交互。

2.簡化波動方程或淺水方程
將水面建模爲一個二維高度場,在一個規則網格中記錄水面的高度值,通過預設流速流向圖或通過壓力梯度估計水流的流速流向。通過在該網格上求解簡化的波動方程或淺水方程,生成波紋、漣漪與大範圍的水流運動。

這種方法無法處理浪花翻滾、水流跌落、水流濺射等現象,無法表現精細的水流結構。同時處理物理交互時直接在物體跌入點生成局部水面擾動,修改交互位置的水面高度,這種方式仍然是一種 “視覺欺騙”,並不包含真實的三維流動與物理交互。


3.粒子系統
如SPH或PBF等粒子方法,能模擬真實的自由液麪與流固交互。

然而SPH對穩定性和最小時間步長要求較高,對設備性能有一定門檻;PBF在放棄一部分物理精準的前提下,依舊能獲得足夠逼真的效果,並在性能上更勝一籌。然而其要在表現大規模水體時計算量較大,需進一步降低粒子數量或分辨率。

2.3 多方法耦合

 

以上幾種方法沒有單一的模擬方法可以在實時條件下同時高效地表現水體的複雜行爲和流固交互,實際上會採用多方法耦合的方式構建一個看起來逼真、運行效率高、具備交互反饋的水體系統。

  

例如:對於大範圍水面採用簡化的波動方程或淺水方程模擬高度場;對於交互行爲採用僞物理場耦合,即交互時局部生成漣漪高度場;對於表現三維行爲較強的局部水體,如飛濺、水珠、瀑布、水流斷裂、物體撞擊後的濺射等採用粒子系統或PBF方法局部模擬;最終,通過着色器生成水面的泡沫等用於進一步增強視覺效果。

 

3 寫不下去了,草草收個尾

 

遊戲中的水體模擬,歸根結底是在算力和視覺效果之間尋求平衡。從最早簡陋的“像素波紋”到如今可實時物理交互的大規模水流,技術的演進不僅帶來了更高的沉浸感,也拓展了玩家與虛擬世界交互的邊界。


未來,隨着硬件性能與算法優化的進一步發展,曾經只能在科研與影視後期才能運行的複雜流體模擬,也有望在遊戲中以更高精度和更逼真的形態實現。


或許,有朝一日,我們能在數字世界裏親眼見證:不再是幀率“綁架”了物理,而是接近真實的物理法則反過來帶領我們去體驗更廣闊的虛擬天地。

參考文獻

F.H. Harlow and J. E. Welch, “Numerical Calculation of Time-Dependent Viscous Incompressible Flow,” Phys. Fluids 8, 2182 (1965);

J. E. Welch, F. H. Harlow, J. P. Shannon, and B. J. Daly, “THE MAC METHOD: A Computing Technique for Solving Viscous, Incompressible, Transient Fluid-Flow Problems Involving Free Surfaces,” Los Alamos Scientific Laboratory report LA-3425 (March 1966).

B.D. Nichols and C. W. Hirt, “Methods for Calculating Multi-Dimensional, Transient Free Surface Flows Past Bodies,” Proc. Of the First International Conference on Numerical Ship Hydrodynamics, Gaithersburg, Maryland, October 20-23, 1975.

B.D. Nichols, C. W. Hirt and R. S. Hotchkiss, “SOLA-VOF: A Solution Algorithm for Transient Fluid Flow with Multiple Free Boundaries,” Los Alamos Scientific Laboratory report LA-8355 (August 1980).

C.W. Hirt and B. D. Nichols, “Volume of Fluid (VOF) Method for the Dynamics of Free Boundaries,” Jour. Computational Physics, 39, 201 (1981).

B.D. Nichols and C. W. Hirt, Numerical Simulation of BWR Vent Clearing Hydrodynamics,” Proc. 1978 Annual Meeting ANS, San Diego, CA; Nuc. Sci. Eng. 73, 196 (1980).

C.W. Hirt and B. D. Nichols, “A Computational Method for Free Surface Hydrodynamics,” ASME 1980 Pressure Vessels and Piping Conf. San Francisco, CA (August 1980) Jour, Pressure Vessel Technology, 103, 136 (1981)

Kellomäki, T., 2012. Water simulation methods for games: a comparison, in: Proceeding of the 16th International Academic MindTrek Conference, MindTrek ’12. Association for Computing Machinery, New York, NY, USA, pp. 10–14.

R. Bridson and M. Müller-Fischer. Fluid simulation: SIGGRAPH 2007 course notes. In ACM SIGGRAPH 2007 courses, SIGGRAPH '07, pages 1--81, New York, NY, USA, 2007. ACM.

N. Chentanez and M. Müller. Real-time simulation of large bodies of water with small scale details. In Proceedings of the 2010 ACM SIGGRAPH/Eurographics Symposium on Computer Animation, SCA '10, pages 197--206, Aire-la-Ville, Switzerland, Switzerland, 2010. Eurographics Association.

N. Chentanez and M. Müller. Real-time eulerian water simulation using a restricted tall cell grid. In ACM SIGGRAPH 2011 papers, SIGGRAPH '11, pages 82:1--82:10, New York, NY, USA, 2011. ACM.

M. Kass and G. Miller. Rapid, stable fluid dynamics for computer graphics. In Proceedings of the 17th annual conference on Computer graphics and interactive techniques, SIGGRAPH '90, pages 49--57, New York, NY, USA, 1990. ACM.

P. Kipfer and R. Westermann. Realistic and interactive simulation of rivers. In Proceedings of Graphics Interface 2006, GI '06, pages 41--48, Toronto, Ont., Canada, Canada, 2006. Canadian Information Processing Society.

A. Layton and M. van de Panne. A numerically efficient and stable algorithm for animating water waves. The Visual Computer, 18(1):41--53, 2002.

M. M. Maes, T. Fujimoto, and N. Chiba. Efficient animation of water flow on irregular terrains. In Proceedings of the 4th international conference on Computer graphics and interactive techniques in Australasia and Southeast Asia, GRAPHITE '06, pages 107--115, New York, NY, USA, 2006. ACM.

X. Mei, P. Decaudin, and B.-G. Hu. Fast hydraulic erosion simulation and visualization on GPU. In Computer Graphics and Applications, 2007. PG '07. 15th Pacific Conference on, pages 47--56, 29 2007--nov. 2 2007.

J. O'Brien and J. Hodgins. Dynamic simulation of splashing fluids. In Computer Animation '95., Proceedings, pages 198--205, apr 1995.

B. Solenthaler, P. Bucher, N. Chentanez, M. Müller, and M. Gross. SPH based shallow water simulation. In Workshop in Virtual Reality Interactions and Physical Simulation, pages 30--46, 2011.

J. Tessendorf. Simulating ocean water. In SIGGRAPH course notes, 1999.

N. Thurey, M. Muller-Fischer, S. Schirm, and M. Gross. Real-time breaking waves for shallow water simulations. In In Proceedings of 15th Pacific Conference on Computer Graphics and Applications, 2007, PG '07, pages 39--46, 29 2007--nov. 2 2007.

W. J. van der Laan, S. Green, and M. Sainz. Screen space fluid rendering with curvature flow. In Proceedings of the 2009 symposium on Interactive 3D graphics and games, I3D '09, pages 91--98, New York, NY, USA, 2009. ACM.

A. Vlachos. Water flow in Portal 2. In ACM SIGGRAPH 2010 courses, SIGGRAPH '10, pages 1--54, New York, NY, USA, 2010. ACM.

Q. Yu, F. Neyret, E. Bruneton, and N. Holzschuch. Scalable real-time animation of rivers. Computer Graphics Forum, 28(2):239--248, 2009.


備註:本文采用DeepSeek和Chat GPT輔助寫作,主要用於部分段落的語言潤色。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com