孫浩鵬,李 楊
(1.長春工程學(xué)院 計算機(jī)技術(shù)與工程學(xué)院,長春 130012;2.長春建筑學(xué)院 科研處,長春 130699)
水輪機(jī)是把水流的能量轉(zhuǎn)換為旋轉(zhuǎn)機(jī)械能的動力機(jī)械,屬于流體機(jī)械中的透平機(jī)械.水輪機(jī)種類多、結(jié)構(gòu)復(fù)雜且工作在水下,用傳統(tǒng)的動畫演示方法很難完整地描述其在水下的工作方式,因此采用虛擬現(xiàn)實技術(shù)將水下的各種工況表現(xiàn)出來.虛擬現(xiàn)實技術(shù)是一種多源信息交互式的三維動態(tài)視景和實體行為的系統(tǒng)仿真[1],采用該技術(shù)可將水輪機(jī)在水下的工作方式完整地展示,并進(jìn)行人機(jī)交互,且不受物理和實驗?zāi)P偷南拗?
在虛擬現(xiàn)實的實現(xiàn)過程中,碰撞檢測算法耗費大量計算機(jī)CPU運(yùn)算時間,所以選擇合適的碰撞檢測算法對仿真系統(tǒng)的運(yùn)行速度具有決定性作用[2].目前,碰撞算法主要是包圍盒算法[3],包括軸向AABB(axis-aligned bouning box)包圍盒、OBB(oriented bouning box)方向包圍盒和球形包圍盒(簡稱包圍球)等.
文獻(xiàn)[4]基于圖像空間的碰撞檢測算法進(jìn)行了研究,在基于圖像空間算法上有效利用了圖形硬件(GPU)的高性能計算能力,提出了用固定方向凸包作為包圍盒進(jìn)行碰撞檢測的方法,證明了其適用于復(fù)雜環(huán)境中的精確碰撞檢測.甚至開發(fā)了多個碰撞檢測庫,包括采用GPU的Occlusion query做精細(xì)檢測.但目前對于固體和液體的碰撞,尤其是在水輪機(jī)虛擬仿真過程中的碰撞問題研究報道較少.本文通過對常用碰撞算法的分析和對比,水流和水輪機(jī)的碰撞采用實體空間碰撞檢測方法[4].在選擇過程中,考慮到水輪機(jī)運(yùn)行時速度變化慢,屬于無明顯位移的勻速旋轉(zhuǎn)運(yùn)動,所以選擇層次包圍盒作為水輪機(jī)和水流的碰撞檢測方法.
虛擬現(xiàn)實中較難模擬的是水輪機(jī)與流體的相互關(guān)系,因為水輪機(jī)的形態(tài)復(fù)雜,不同的水輪機(jī)類型與流體的碰撞都不同,水輪機(jī)和水流在虛擬空間中的碰撞是整個展示系統(tǒng)的難點,如果方法錯誤,將使碰撞計算耗費大量時間[5].采用合理的碰撞檢測方法可使碰撞既能合理地反映真實情況,又能在計算機(jī)的運(yùn)算極限內(nèi),可保證系統(tǒng)穩(wěn)定運(yùn)行.在模擬水輪機(jī)運(yùn)行的虛擬現(xiàn)實系統(tǒng)中,流體和水輪機(jī)碰撞的情況多種多樣,必須根據(jù)實際工況選擇不同的碰撞檢測方式.按照水流和水輪機(jī)的接觸類型可分為以下幾種情況:
1) 流體和水工建筑物間的碰撞檢測.如水流和尾水管間的碰撞,在虛擬現(xiàn)實中一般用粒子發(fā)射系統(tǒng)模擬水流,為保證客觀真實性,不允許水流穿透水工建筑物,此時的粒子系統(tǒng)和水工建筑物可采用AABB包圍盒將壩體或尾水管等進(jìn)行包裹測試.
2) 流體和水輪機(jī)機(jī)體的碰撞檢測.當(dāng)水流沖向水輪機(jī)時,會與水輪機(jī)碰撞,水輪機(jī)可分解為葉片和機(jī)體兩部分,以軸流動槳式水輪機(jī)為例,機(jī)體由于在中心部分,所以直接利用包圍球處理,經(jīng)測試速度快、效果良好.
3) 流體和水輪機(jī)葉片的碰撞檢測.水流碰撞葉片會產(chǎn)生反向的推力,這與水流的速度、方向、層流和黏性等相關(guān),不同流速對水輪機(jī)葉片的作用力也不同,所以根據(jù)水流動力學(xué)計算葉片的推力可使水輪機(jī)的轉(zhuǎn)動運(yùn)行更具真實性.碰撞包圍盒的應(yīng)用極大減少了相交固體和液體的檢測面積和復(fù)雜度,在虛擬現(xiàn)實中得到了推廣和應(yīng)用.但經(jīng)測試,在葉片上無法利用單一碰撞包圍盒取得較好效果.
下面分別對上述3種情況的碰撞檢測進(jìn)行分析,使用適合的常用包圍盒算法,對水輪機(jī)葉片與流體的碰撞算法進(jìn)行改進(jìn),并給出相關(guān)數(shù)據(jù).
水工建筑物包括進(jìn)水閘門和大壩等,由于不涉及水輪機(jī)運(yùn)行,在虛擬現(xiàn)實中可直接選用AABB包圍盒算法,將閘門或大壩作為單一實心物體處理.AABB包圍盒是與坐標(biāo)軸對齊的包圍盒[6],運(yùn)算簡單,適合于重疊測試剛性模型間的碰撞檢測.AABB樹是復(fù)雜模型進(jìn)行變形碰撞檢測的首選方法,與OBB模型相比,AABB模型可更快地構(gòu)建存儲空間,所以水工建筑物如大壩和鋼閘門等,可直接利用體積函數(shù)得到AABB包圍盒,與其碰撞的粒子系統(tǒng)可直接通過邊界函數(shù)確定粒子的整個體積邊界,這兩種基于體積的AABB包圍盒均通過投影將空間體積相交轉(zhuǎn)換為一個平面上的求交,效率較高[7].
對于閘門或壩體很容易直接應(yīng)用單一的AABB包圍盒,即使是弧形鋼閘門也可直接用水平的AABB包圍盒包裹.而用于模擬流體的粒子-邊界作用模型是粒子模擬中非常重要的一類邊界條件,通??赏ㄟ^偏Maxwell分布模擬符合粒子邊界條件的粒子邊界.粒子系統(tǒng)是由發(fā)射器發(fā)射后不斷演化的過程產(chǎn)物,受初始條件和邊界條件控制,邊界的性質(zhì)直接影響粒子和水工建筑物的碰撞過程.
模擬粒子邊界的條件通常有3種:
1) 周期性(主要假設(shè)粒子的重復(fù)性);
2) 用粒子構(gòu)造的邊界模擬真實的邊界;
3) 用幾何體如面或邊模擬真實邊界.
如果已經(jīng)確定在鋼閘門和壩體上利用AABB包圍盒,此時粒子系統(tǒng)直接用3)中求邊界的作用方式模擬實際邊界條件,即用多邊形的邊模擬粒子邊界,此時的碰撞檢測相當(dāng)于兩個多邊形的包圍盒碰撞,測試結(jié)果表明速度較快.
水輪機(jī)的機(jī)體部分近似為一個橢圓,所以可直接求得機(jī)體的最大直線距離作為包圍球的半徑,水輪機(jī)的中心部分即鑲嵌葉片的部分為包圍球的球心坐標(biāo).碰撞包圍球利用一個球體緊緊包圍在物體上,其中球半徑是物體邊界條件中最大的直線距離,用公式表示為
R={(x,y,z)|(x-cx)2+(y-cy)2+(z-cz)2 其中:(cx,cy,cz)表示球心坐標(biāo);R表示球半徑.當(dāng)物體旋轉(zhuǎn)后,由于碰撞包圍球自身旋轉(zhuǎn)并不影響包圍球自身的體積,所以當(dāng)水輪機(jī)旋轉(zhuǎn)時選擇包圍球碰撞檢測方法. 當(dāng)水輪機(jī)機(jī)體部分直接應(yīng)用碰撞包圍球檢測方法后,粒子邊界為了達(dá)到真實的效果,必須選用粒子構(gòu)造的邊界測試碰撞.Mukherjee等[8]利用邊界積分方程,通過在邊界配置節(jié)點,改進(jìn)了無網(wǎng)格方法的粒子邊界確定方法,在利用粒子構(gòu)造邊界后,粒子邊界與包圍球碰撞時判斷為已經(jīng)碰撞,將粒子直接進(jìn)行邊界反彈,經(jīng)測試運(yùn)行速度快、效果較好. 圖1 葉片重構(gòu)流程Fig.1 Leaves reconstruction flowchart 水輪機(jī)葉片屬于迎水面,是水輪機(jī)中轉(zhuǎn)輪的主要組成部分,通常分為動槳式和定槳式兩種,位于上冠與下環(huán)間.葉片呈復(fù)雜的空間扭曲狀,斷面形狀為翼形,是水流能量轉(zhuǎn)換的主要部件.定槳式水輪機(jī)葉片在碰撞檢測時,由于不進(jìn)行自身的角度變化,所以可忽略包圍盒的旋轉(zhuǎn)更新問題,但動槳式葉片不僅隨水輪機(jī)本身進(jìn)行旋轉(zhuǎn),也會自身旋轉(zhuǎn),所以在選擇碰撞包圍盒過程中必須考慮葉片旋轉(zhuǎn)所消耗的時間.算法實現(xiàn)流程如圖1所示. OBB方向包圍[9]和其他包圍盒相比,能更緊密地包圍物體,但構(gòu)建代價較大,對有變形的物體場景通常無法實時更新層次樹[10].AABB包圍盒速度較快,但包圍物體不夠緊密,且層次樹更新快,可用于變形的物體碰撞檢測.在水輪機(jī)葉片上應(yīng)用兩種包圍盒,將AABB和OBB包圍盒在葉片測試后,對其精密度和時間進(jìn)行對比,結(jié)果列于表1. 表1 葉片應(yīng)用AABB和OBB包圍盒的比較Table 1 Comparison of AABB and OBB on the blade 由表1可見,在葉片的碰撞問題上,為了整體效果和葉片的緊密性,選擇OBB包圍盒最合適.OBB包圍盒最大的優(yōu)點是方向的任意性[11].但單一OBB包圍盒效果和AABB包圍盒區(qū)別不大,結(jié)果如圖2所示. OBB算法如下:包圍盒的位置和方向利用模型對象頂點坐標(biāo)的一階和二階特性計算.一般假設(shè)第i個多邊形三角面的頂點空間坐標(biāo)為Pi,Qi,Ri,在包圍盒內(nèi)部的三角面?zhèn)€數(shù)為n,則一階u和二階矩陣C計算如下: 其中:Pi=Pi-u;Qi=Qi-u;Ri=Ri-u.協(xié)方差矩陣C是一個對稱矩陣,根據(jù)對稱矩陣特征向量互相垂直的性質(zhì),用C的3個特征向量可確定OBB的方向軸.將葉片分解后每個子葉片的曲面法線即用于確定OBB的方向軸. 由于水輪機(jī)葉片表面的復(fù)雜性和多樣性,重建的曲面模型不可能由一個曲面擬合,而是由一些子曲面按一定的約束條件組成,構(gòu)成完整的重建曲面模型[12],連續(xù)的曲面由脊線和截面線決定[13],曲面重構(gòu)公式為 其中:Pi(P)為葉片曲面幾何模型;Tk為約束;Ck(P)為容許誤差. 水輪機(jī)葉片在虛擬環(huán)境中通常用Bezier曲面Tk構(gòu)成,Bezier曲面由特征網(wǎng)格頂點控制,給定(n+1)×(m+1)個排成網(wǎng)格的控制頂點Pi,j(i=0,1,…,n;j=0,1,…,m),利用Bernstein函數(shù)Bi,n(u),Bj,m(v)可構(gòu)成一張曲面,該曲面為n×m次Bezie曲面,可描述為 圖3 5個OBB碰撞包圍盒在葉片上的應(yīng)用Fig.3 Five OBB collision bounding box on the blade 表2 葉片分解測試數(shù)據(jù)Table 2 Testing data of the number of decomposition on blade [1] YU Zheng-lin,TAN Wei,JIANG Tao.Training Simulator for Photoelectric Theodolite Based on Visual Emulation [J].Journal of Jilin University:Engineering and Technology Edition,2011,41(2):509-513.(于正林,譚微,姜濤.基于視景仿真的光電經(jīng)緯儀模擬訓(xùn)練器 [J].吉林大學(xué)學(xué)報:工學(xué)版,2011,41(2):509-513.) [2] 石教英.虛擬現(xiàn)實基礎(chǔ)及實用算法 [M].北京:科學(xué)出版社,2002. [3] ZHENG Yan-bin,GUO Ling-yun,LIU Jing-jing.Collision Detection Optimization Algorithm Based on Mixed Bounding Volumes [J].Computer Engineering &Science,2013,35(4):87-92.(鄭延斌,郭凌云,劉晶晶.基于混合包圍盒的碰撞檢測優(yōu)化算法 [J].計算機(jī)工程與科學(xué),2013,35(4):87-92.) [4] ZHANG Zhen-hua,ZHOU Wen-li,TONG Fu-jun,et al.Collision Detection Algorithm Research Based on Spatial Domain in Virtual Scene [J].Journal of Computer Applications,2012,32(Suppl 2):151-153.(張振華,周文理,仝富軍,等.虛擬場景中基于空間域的碰撞檢測算法研究 [J].計算機(jī)應(yīng)用,2012,32(增刊2):151-153.) [5] ZHAO Wei,HE Yan-shuang.Rapid Algorithm for Parallel Collision Detection [J].Journal of Jilin University:Engineering and Technology Edition,2008,38(1):152-157.(趙偉,何艷爽.一種快速的基于并行的碰撞檢測算法 [J].吉林大學(xué)學(xué)報:工學(xué)版,2008,38(1):152-157.) [6] Bergen G,Van Den.Efficient Collision Detection of Complex Deformable Models Using AABB Trees [J].Journal of Graphics Tools,1999,4(2):1-13. [7] PAN Zhen-kuan,LI Jian-bo.The Collision Detection Algorithm Based on Compressed AABB Trees [J].Computer Science,2005,32(2):213-215.(潘振寬,李建波.基于壓縮的AABB樹的碰撞檢測算法 [J].計算機(jī)科學(xué),2005,32(2):213-215.) [8] Mukherjee Y X,Mukherjee S.The Boundary Node Method for Potential Problems [J].International Journal for Numerical Methods in Engineering,1997,40(5):797-815. [9] Gottschalk S,Lin M C,Manocha D.OBB-Tree:A Hierarchicalstructure for Rapid Interference Detection [C]//Proceedings of the 23rd Annual Conference on Computer Graphics and Interactive Techniques.New York:ACM,1996:171-180. [10] CUI Han-guo,CHEN Jun,WANG Da-yu.Study of Optimal OBB Collision Test Algorithm in Virtual Environlment [J].Computer Engineering and Design,2007,28(11):2524-2526.(崔漢國,陳軍,王大宇.虛擬環(huán)境中優(yōu)化的OBB碰撞檢測算法研究 [J].計算機(jī)工程與設(shè)計,2007,28(11):2524-2526.) [11] Geiger B.Real-Time Collision Detection and Response for Complex Environments [C]//Proceedings of the International Conference on Computer Graphics.Washington DC:IEEE Computer Society,2000:105-113. [12] Brujic D,Ainsworth I,Ristic M.Fast and Accurate NURBS Fitting for Reverse Engineering [J].International Journal of Advanced Manufacturing Technology,2011,54(5/6/7/8):691-700. [13] CAI Zhong-yi,LI Ming-zhe,LAN Ying-wu,et al.Shape Control of 3-Dimensional Curved Surface Part in Continuous Forming [J].Journal of Jilin University:Engineering and Technology Edition,2011,41(1):978-983.(蔡中義,李明哲,蘭英武,等.三維曲面零件連續(xù)成形的形狀控制 [J].吉林大學(xué)學(xué)報:工學(xué)版,2011,41(1):978-983.)4 流體和水輪機(jī)葉片的碰撞檢測算法