陳慕羿 王洪源
摘 要: 流體仿真是虛擬現(xiàn)實(shí)、軍事仿真等領(lǐng)域的熱點(diǎn)和難點(diǎn)。目前基于流體力學(xué)的方法計(jì)算量巨大,普通計(jì)算機(jī)難以滿(mǎn)足實(shí)時(shí)性要求,而基于渲染的方法只能產(chǎn)生視覺(jué)效果,無(wú)法實(shí)現(xiàn)流體與物體的互動(dòng)。為兼顧實(shí)時(shí)性與視覺(jué)真實(shí)性,所設(shè)計(jì)的互動(dòng)數(shù)字臺(tái)球系統(tǒng)利用改進(jìn)的LBM方法對(duì)流體進(jìn)行模擬。將虛擬水面投影到鋪有專(zhuān)用幕布的臺(tái)球桌上,并利用數(shù)字?jǐn)z像機(jī)捕捉臺(tái)球的運(yùn)動(dòng)軌跡。作為對(duì)水面的擾動(dòng),通過(guò)流體模擬,實(shí)現(xiàn)了真實(shí)臺(tái)球與虛擬水面的交互,并可達(dá)到35幀以上的幀率。設(shè)計(jì)新穎合理,有很好的用戶(hù)體驗(yàn)和娛樂(lè)效果。
關(guān)鍵詞: 流體仿真; Navier?Stokes方程; LBM; OpenCV
中圖分類(lèi)號(hào): TN911?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)10?0020?04
Abstract: Fluid simulation technology is a hot spot with many difficulties in virtual reality, military simulation, etc. The current simulation methods based on fluid mechanics need complex computation, which make real?time application impossible. In the meantime, the methods based on rendering can achieve visual effect only, but can not realize interaction of fluid with objects. To achieve both real?time performance and visual reality, the interactive digital billiard system simulates fluid by an improved lattice Boltzmann method (LBM). First, the system projects virtual water surface onto a pool table attached with special projection screen, and then captures the movement of the billiards by a digital camera, and the disturbance on the water surface is implemented by a well developed fluid simulation method. The requirements of real?time, interaction and good visual quality are all met. The frame rate could reach more than 35. The system is well designed, which could bring much amusement to the users.
Keywords: fluid simulation; Navier?Stokes equation; lattice Boltzmann method; OpenCV;
0 引 言
流體仿真技術(shù)以流體力學(xué)方程為基本算法,利用計(jì)算機(jī)技術(shù)模擬流體的運(yùn)動(dòng)狀態(tài),是虛擬現(xiàn)實(shí)技術(shù)的熱點(diǎn)之一,在影視特效、動(dòng)畫(huà)游戲、虛擬仿真等方面都有著十分重要的應(yīng)用。
目前的流體技術(shù)主要包含兩大方向,一是基于紋理的渲染技術(shù),利用視覺(jué)欺騙實(shí)現(xiàn)水波蕩漾的效果,這種方式無(wú)法實(shí)現(xiàn)實(shí)時(shí)交互。二是建立在流體力學(xué)的基礎(chǔ)上[1],基于物理的仿真,但由于求解不可壓縮流體的Navier?Stokes方程所需的計(jì)算量過(guò)大,無(wú)法滿(mǎn)足實(shí)時(shí)性的要求。LBM(Lattice Boltzmann Method)方法[2?6]是20世紀(jì)80年代中期建立和發(fā)展起來(lái)的一種流場(chǎng)模擬方法,目前,除了在一般的流體力學(xué)問(wèn)題中得到了成功的應(yīng)用外,LBM方法在多相(元)流、化學(xué)反應(yīng)擴(kuò)散、滲流、粒子懸浮流、磁流體力學(xué)等相關(guān)領(lǐng)域也得到了比較成功的應(yīng)用。本文所設(shè)計(jì)的互動(dòng)數(shù)字臺(tái)球系統(tǒng)實(shí)現(xiàn)了真實(shí)臺(tái)球與虛擬水面的交互,為在實(shí)時(shí)性、互動(dòng)和視覺(jué)真實(shí)性的條件下實(shí)現(xiàn)流體仿真,本文研究并實(shí)現(xiàn)了改進(jìn)的LBM模型、并充分利用運(yùn)行于GPU之上的著色器加強(qiáng)渲染效果,滿(mǎn)足了設(shè)計(jì)需求,并達(dá)到了很好的視覺(jué)效果,目前系統(tǒng)已投入實(shí)際使用。
1 互動(dòng)數(shù)字臺(tái)球總體設(shè)計(jì)方案
系統(tǒng)首先利用數(shù)字?jǐn)z像機(jī)捕捉臺(tái)球的運(yùn)動(dòng)軌跡,然后采用實(shí)時(shí)流體仿真技術(shù),模擬臺(tái)球與水面互動(dòng)時(shí)產(chǎn)生的波紋效果,再通過(guò)投影設(shè)備將渲染得到的輸出投影到鋪有專(zhuān)用幕布的臺(tái)球桌上。系統(tǒng)組成如圖1所示。
1.1 硬件構(gòu)成
(1) 輸入設(shè)備:互動(dòng)數(shù)字臺(tái)球的輸入設(shè)備由數(shù)字?jǐn)z像機(jī)、專(zhuān)用幕布和臺(tái)球組成。臺(tái)球是系統(tǒng)的輸入部分,是流體運(yùn)動(dòng)的觸發(fā)裝置,當(dāng)臺(tái)球運(yùn)動(dòng)時(shí),流體根據(jù)臺(tái)球的運(yùn)動(dòng)做出相應(yīng)的響應(yīng),在臺(tái)球的運(yùn)動(dòng)軌跡上形成波紋振蕩的效果。鋪設(shè)在臺(tái)球桌面上的專(zhuān)用幕布用于提高臺(tái)球定位的精度,也使投影圖像更加清晰明亮。數(shù)字?jǐn)z像機(jī)置于臺(tái)球桌的正上方,用于監(jiān)控臺(tái)球的運(yùn)動(dòng)狀態(tài),并將采集到的視頻傳送到處理系統(tǒng)中。
(2) 數(shù)據(jù)處理設(shè)備:采用計(jì)算機(jī)作為處理設(shè)備,利用軟件系統(tǒng)進(jìn)行流體運(yùn)動(dòng)的求解及渲染。計(jì)算機(jī)根據(jù)接收到的視頻流,利用動(dòng)態(tài)圖像分析方法及數(shù)字圖像處理算法,解算出每幀中各臺(tái)球的位置,速度等信息,作為流體仿真系統(tǒng)的輸入。然后流體仿真系統(tǒng)根據(jù)輸入的臺(tái)球運(yùn)動(dòng)信息,利用改進(jìn)的LBM(Lattice Boltzmann Method)對(duì)流體進(jìn)行模擬,控制水面產(chǎn)生波紋,并進(jìn)行渲染。
(3) 輸出設(shè)備:投影機(jī),位于臺(tái)球桌的正上方,將渲染圖像同步投影到臺(tái)球桌上,以實(shí)現(xiàn)水面與臺(tái)球運(yùn)動(dòng)同步的效果。
1.2 軟件框架設(shè)計(jì)
軟件系統(tǒng)主要由以下模塊構(gòu)成:
(1) 臺(tái)球定位模塊:采用計(jì)算機(jī)視覺(jué)的方法,利用OpenCV視覺(jué)庫(kù)[7],根據(jù)攝像機(jī)的視頻輸入流,計(jì)算出每幀的臺(tái)球位置及運(yùn)動(dòng)狀態(tài)信息[8?10];
(2) 流體仿真模塊:構(gòu)造一個(gè)用于計(jì)算和渲染的網(wǎng)格(本系統(tǒng)采用360×320的網(wǎng)格),以臺(tái)球位置作為輸入,利用LBM方法求解流體方程,求出每幀中每個(gè)網(wǎng)格點(diǎn)所對(duì)應(yīng)的高度值;
(3) 渲染模塊:該模塊包括由CPU執(zhí)行的部分,采用OpenGL圖形庫(kù)編寫(xiě),以及由GPU執(zhí)行的部分(著色器),采用Cg語(yǔ)言編寫(xiě)。該模塊對(duì)所計(jì)算出的三維水面網(wǎng)格進(jìn)行渲染,并實(shí)現(xiàn)光照等效果;
(4) 聲音模塊:實(shí)現(xiàn)音效部分;
(5) 輸入處理部分:該部分可接收鼠標(biāo)輸入,并根據(jù)其位置和運(yùn)動(dòng)產(chǎn)生相應(yīng)的水波互動(dòng),主要用于調(diào)試和測(cè)試。
由于現(xiàn)實(shí)中與虛擬現(xiàn)實(shí)相關(guān)的交互應(yīng)用大多數(shù)需要滿(mǎn)足實(shí)時(shí)性,因此系統(tǒng)的運(yùn)行速度是一個(gè)極為關(guān)鍵的參數(shù)。由于篇幅有限,后文將主要介紹流體仿真模塊的實(shí)現(xiàn)。
2 流體仿真技術(shù)
2.1 不可壓縮流體的Navier?Stokes方程
4 結(jié) 論
本系統(tǒng)在intel雙核2.53 GHz E5300,內(nèi)存1 GB,顯存512 MB的硬件條件下,可達(dá)到高于35 f/s的幀率,并保證了低延時(shí),滿(mǎn)足了成本、實(shí)時(shí)性、真實(shí)性的要求。設(shè)計(jì)新穎合理,有很好的用戶(hù)體驗(yàn)和娛樂(lè)功能,現(xiàn)已投入使用。
參考文獻(xiàn)
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振偉,陳翀,趙有.基于OpenCV的運(yùn)動(dòng)目標(biāo)跟蹤及其實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(20):128?131.
[9] 馬頌德,張正友.計(jì)算機(jī)視覺(jué):計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.
(3) 輸出設(shè)備:投影機(jī),位于臺(tái)球桌的正上方,將渲染圖像同步投影到臺(tái)球桌上,以實(shí)現(xiàn)水面與臺(tái)球運(yùn)動(dòng)同步的效果。
1.2 軟件框架設(shè)計(jì)
軟件系統(tǒng)主要由以下模塊構(gòu)成:
(1) 臺(tái)球定位模塊:采用計(jì)算機(jī)視覺(jué)的方法,利用OpenCV視覺(jué)庫(kù)[7],根據(jù)攝像機(jī)的視頻輸入流,計(jì)算出每幀的臺(tái)球位置及運(yùn)動(dòng)狀態(tài)信息[8?10];
(2) 流體仿真模塊:構(gòu)造一個(gè)用于計(jì)算和渲染的網(wǎng)格(本系統(tǒng)采用360×320的網(wǎng)格),以臺(tái)球位置作為輸入,利用LBM方法求解流體方程,求出每幀中每個(gè)網(wǎng)格點(diǎn)所對(duì)應(yīng)的高度值;
(3) 渲染模塊:該模塊包括由CPU執(zhí)行的部分,采用OpenGL圖形庫(kù)編寫(xiě),以及由GPU執(zhí)行的部分(著色器),采用Cg語(yǔ)言編寫(xiě)。該模塊對(duì)所計(jì)算出的三維水面網(wǎng)格進(jìn)行渲染,并實(shí)現(xiàn)光照等效果;
(4) 聲音模塊:實(shí)現(xiàn)音效部分;
(5) 輸入處理部分:該部分可接收鼠標(biāo)輸入,并根據(jù)其位置和運(yùn)動(dòng)產(chǎn)生相應(yīng)的水波互動(dòng),主要用于調(diào)試和測(cè)試。
由于現(xiàn)實(shí)中與虛擬現(xiàn)實(shí)相關(guān)的交互應(yīng)用大多數(shù)需要滿(mǎn)足實(shí)時(shí)性,因此系統(tǒng)的運(yùn)行速度是一個(gè)極為關(guān)鍵的參數(shù)。由于篇幅有限,后文將主要介紹流體仿真模塊的實(shí)現(xiàn)。
2 流體仿真技術(shù)
2.1 不可壓縮流體的Navier?Stokes方程
4 結(jié) 論
本系統(tǒng)在intel雙核2.53 GHz E5300,內(nèi)存1 GB,顯存512 MB的硬件條件下,可達(dá)到高于35 f/s的幀率,并保證了低延時(shí),滿(mǎn)足了成本、實(shí)時(shí)性、真實(shí)性的要求。設(shè)計(jì)新穎合理,有很好的用戶(hù)體驗(yàn)和娛樂(lè)功能,現(xiàn)已投入使用。
參考文獻(xiàn)
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振偉,陳翀,趙有.基于OpenCV的運(yùn)動(dòng)目標(biāo)跟蹤及其實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(20):128?131.
[9] 馬頌德,張正友.計(jì)算機(jī)視覺(jué):計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.
(3) 輸出設(shè)備:投影機(jī),位于臺(tái)球桌的正上方,將渲染圖像同步投影到臺(tái)球桌上,以實(shí)現(xiàn)水面與臺(tái)球運(yùn)動(dòng)同步的效果。
1.2 軟件框架設(shè)計(jì)
軟件系統(tǒng)主要由以下模塊構(gòu)成:
(1) 臺(tái)球定位模塊:采用計(jì)算機(jī)視覺(jué)的方法,利用OpenCV視覺(jué)庫(kù)[7],根據(jù)攝像機(jī)的視頻輸入流,計(jì)算出每幀的臺(tái)球位置及運(yùn)動(dòng)狀態(tài)信息[8?10];
(2) 流體仿真模塊:構(gòu)造一個(gè)用于計(jì)算和渲染的網(wǎng)格(本系統(tǒng)采用360×320的網(wǎng)格),以臺(tái)球位置作為輸入,利用LBM方法求解流體方程,求出每幀中每個(gè)網(wǎng)格點(diǎn)所對(duì)應(yīng)的高度值;
(3) 渲染模塊:該模塊包括由CPU執(zhí)行的部分,采用OpenGL圖形庫(kù)編寫(xiě),以及由GPU執(zhí)行的部分(著色器),采用Cg語(yǔ)言編寫(xiě)。該模塊對(duì)所計(jì)算出的三維水面網(wǎng)格進(jìn)行渲染,并實(shí)現(xiàn)光照等效果;
(4) 聲音模塊:實(shí)現(xiàn)音效部分;
(5) 輸入處理部分:該部分可接收鼠標(biāo)輸入,并根據(jù)其位置和運(yùn)動(dòng)產(chǎn)生相應(yīng)的水波互動(dòng),主要用于調(diào)試和測(cè)試。
由于現(xiàn)實(shí)中與虛擬現(xiàn)實(shí)相關(guān)的交互應(yīng)用大多數(shù)需要滿(mǎn)足實(shí)時(shí)性,因此系統(tǒng)的運(yùn)行速度是一個(gè)極為關(guān)鍵的參數(shù)。由于篇幅有限,后文將主要介紹流體仿真模塊的實(shí)現(xiàn)。
2 流體仿真技術(shù)
2.1 不可壓縮流體的Navier?Stokes方程
4 結(jié) 論
本系統(tǒng)在intel雙核2.53 GHz E5300,內(nèi)存1 GB,顯存512 MB的硬件條件下,可達(dá)到高于35 f/s的幀率,并保證了低延時(shí),滿(mǎn)足了成本、實(shí)時(shí)性、真實(shí)性的要求。設(shè)計(jì)新穎合理,有很好的用戶(hù)體驗(yàn)和娛樂(lè)功能,現(xiàn)已投入使用。
參考文獻(xiàn)
[1] STAM J. Stable fluids[C]// Proceedings of 1999 Computer Graphics. Addison Wesley Longman: Siggraph, 1999: 121?128.
[2] RINALDI P, DARI E, V?NERE M, et al. Lattice?Boltzmann Navier?Stokes simulation on graphic processing units [J]. Asian Journal of Applied Science, 2011, 4: 762?770.
[3] BORONI G, DOTTORI J, DALPONTE D, et al. An improved immersed?Boundary algorithm for fluid?solid interaction in lattice? Boltzmann simulations [J]. Latin American Applied Research, 2013, 43 (2): 181?188.
[4] GARC?A B C, BORONI G, V?NERE M, et al. Realtime interactive animations of liquid surfaces with lattice Boltzmann engines [J]. Australian Journal of Basic and Applied Sciences, 2010, 4: 3730?3740.
[5] CHEN S, DOOLEN G D. Lattice Boltzmann method for fluid flows [J]. Annual Reviews Fluid Mechanics, 1998, 30: 329?364.
[6] ZHOU J G. Lattice Boltzmann methods for shallow water flows [M]. Berlin: Springer?Verlag, 2004.
[7] Anon. OpenCV [M/OL]. [2013?12?31]. http://www.opencv.org.
[8] 李振偉,陳翀,趙有.基于OpenCV的運(yùn)動(dòng)目標(biāo)跟蹤及其實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(20):128?131.
[9] 馬頌德,張正友.計(jì)算機(jī)視覺(jué):計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1998.