陳哲亮,吳清江,丘文姬,彭興黔
(1.華僑大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,福建泉州362021; 2.華僑大學(xué)土木工程學(xué)院,福建泉州362021)
集裝箱堆場三維防風(fēng)仿真系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
陳哲亮1,吳清江1,丘文姬1,彭興黔2
(1.華僑大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,福建泉州362021; 2.華僑大學(xué)土木工程學(xué)院,福建泉州362021)
運(yùn)用OpenGL的建模、光照、材質(zhì)、霧化等技術(shù),實(shí)現(xiàn)集裝箱堆場的仿真,獲得效果良好的三維真實(shí)感圖形.主要建模對象包括集裝箱、堆場、海平面和雨.通過控制堆場的頂點(diǎn)來控制堆場的形狀,并提出通過判斷俯視圖是否相交來進(jìn)行堆的碰撞檢測的方法.在粒子系統(tǒng)的基礎(chǔ)上,探討風(fēng)雨模型的可視化,提出以線元來為基本造型單位構(gòu)造風(fēng)雨場景,通過漫游、霧化、紋理映射等技術(shù),進(jìn)一步增強(qiáng)堆場的三維真實(shí)感.
集裝箱;堆場;抗風(fēng);三維仿真系統(tǒng);OpenGL;碰撞檢測;粒子系統(tǒng)
臺(tái)風(fēng)具有突發(fā)性強(qiáng)、破壞力大的特點(diǎn),是世界上最嚴(yán)重的自然災(zāi)害之一.沿海的集裝箱碼頭貨場是臺(tái)風(fēng)危害的重災(zāi)區(qū).因此,開發(fā)集裝箱防臺(tái)風(fēng)三維可視化軟件,直觀顯示集裝箱堆場的風(fēng)場流態(tài),可以為碼頭貨場提出更切實(shí)有效的預(yù)測、預(yù)警和防范安全措施.計(jì)算機(jī)圖形學(xué)的發(fā)展使得可視化技術(shù)得以形成[1].本文實(shí)現(xiàn)了基于OpenGL的集裝箱堆場的仿真,并對其中的關(guān)鍵技術(shù)進(jìn)行討論.
以福建廈門的港口貨運(yùn)場為研究對象,根據(jù)廈門的特殊地理位置和氣候條件,實(shí)地考察現(xiàn)代物流園區(qū)地形地貌.在集裝箱堆場附近建立自動(dòng)氣象站,并利用鄰近自動(dòng)氣象站,對集裝箱碼頭風(fēng)場進(jìn)行實(shí)時(shí)監(jiān)測.測取平均風(fēng)的平均風(fēng)速、極大風(fēng)速,風(fēng)向統(tǒng)計(jì),脈動(dòng)風(fēng)的湍流度和陣風(fēng)因子,以及功率譜密度函數(shù)和脈動(dòng)風(fēng)速譜,建立廈門相關(guān)風(fēng)特性氣象資料.
計(jì)算港口集裝箱群的風(fēng)壓分布,基于空氣動(dòng)力學(xué)原理的數(shù)值計(jì)算方法,對處在大氣邊界層風(fēng)場環(huán)境中的集裝箱進(jìn)行各種堆儲(chǔ)狀況和各個(gè)風(fēng)向角下繞流流場數(shù)值模擬[2];計(jì)算集裝箱群的風(fēng)壓分布,得出各種類型集裝箱在不同排數(shù)層高下的極限風(fēng)速,并將計(jì)算結(jié)果保存在數(shù)據(jù)庫中.
主要建模對象包括集裝箱、堆場、海平面和雨.堆場的形狀往往根據(jù)實(shí)際應(yīng)用情況會(huì)有所不同.許多系統(tǒng)中,用戶在設(shè)置了堆場的形狀后,往往無法再進(jìn)行較大的改動(dòng),造成很大的不方便.對此,提出了通過控制堆場的頂點(diǎn)來控制堆場的形狀.頂點(diǎn)的數(shù)據(jù)結(jié)構(gòu)如下:
堆場邊界頂點(diǎn)操作,如圖1所示.每個(gè)堆場的所有頂點(diǎn)組成一個(gè)鏈表.鏈表中的每個(gè)節(jié)點(diǎn)代表一個(gè)頂點(diǎn)對象,相臨的兩個(gè)頂點(diǎn)連成一條邊,共同組成堆場的邊界.每個(gè)頂點(diǎn)在系統(tǒng)中渲染為一些小的圓點(diǎn),通過對這些圓點(diǎn)的拾取、移動(dòng)、修改、添加和刪除,可以很方便地控制堆場的形狀.確定堆場的形狀后,可為堆場映射水泥地板的紋理,實(shí)現(xiàn)堆場的仿真.
集裝箱采用長方體建模,基于3維坐標(biāo)的(x,y,z)平面.系統(tǒng)中一共有5種集裝箱型號,每種型號集裝箱的長、高、寬各不相同.將這些參數(shù)保存在數(shù)據(jù)庫中,在集裝箱繪制時(shí)可通過查詢數(shù)據(jù)庫獲取.每個(gè)堆由同一種型號的集裝箱按一定的層高、排數(shù)堆成一堆,如圖2所示.堆場中,共有若干個(gè)堆排列,每個(gè)堆的屬性包括該堆的集裝箱型號、集裝箱層數(shù)、排數(shù)和位置等信息.
圖2 集裝箱堆示意圖Fig.2 Diagram of container yard
圖1 堆場邊界頂點(diǎn)操作Fig.1 Operation of the boundary and the vertexsof a container yard
3.1 系統(tǒng)的漫游
完成場景的建模后,需要選擇合適的視點(diǎn)和視角對場景作觀察.系統(tǒng)定義了攝像機(jī)對象,通過鍵盤控制視點(diǎn)沿著視線方向前后左右移動(dòng),以及通過鼠標(biāo)來控制視線的方向,從而實(shí)現(xiàn)虛擬系統(tǒng)的漫游[3].
3.2 抗風(fēng)測試
設(shè)置風(fēng)速后,系統(tǒng)根據(jù)每一堆的集裝箱型號、排數(shù)和層高等參數(shù),查詢數(shù)據(jù)庫取得該堆的極限風(fēng)速.當(dāng)堆場的當(dāng)前風(fēng)速大于某一堆的極限風(fēng)速的時(shí)候,系統(tǒng)判斷到該堆有危險(xiǎn),堆最頂層的集裝箱就會(huì)掉落.集裝箱掉落過程是一個(gè)復(fù)雜的運(yùn)動(dòng)過程,能否盡可能地模仿堆的掉落過程,是系統(tǒng)逼真程度的關(guān)鍵.為了操作方便,設(shè)計(jì)如下3個(gè)掉落步驟,如圖3所示.
(1)旋轉(zhuǎn)過程.使頂層的集裝箱繞著邊沿旋轉(zhuǎn).
(2)掉落過程.當(dāng)旋轉(zhuǎn)的角度超過90°時(shí),集裝箱開始掉落.垂直方向上,集裝箱按照自由落體的速度下降;水平方向上,集裝箱做勻速運(yùn)動(dòng).整體上是一個(gè)拋物體下落的過程.
(3)著地過程.集裝箱的某一個(gè)邊著地后,開始繞該邊做減速滾動(dòng),最后停穩(wěn)了下來.
圖3 集裝箱掉落示意圖Fig.3 Diagram of container falling
碰撞檢測是檢測虛擬場景中不同對象之間是否發(fā)生了碰撞,涉及到碰撞檢測和碰撞響應(yīng)兩部分內(nèi)容[4-5].為了防止集裝箱的相互交迭,當(dāng)用戶每次修改堆場時(shí),必須先進(jìn)行碰撞檢測.如果檢測到有碰撞時(shí),提示用戶撤消該操作.碰撞檢測包括集裝箱堆與堆的碰撞檢測、集裝箱堆與堆場邊界的碰撞檢測.
4.1 集裝箱堆與堆的碰撞檢測
堆的形狀規(guī)則俯視投影為一個(gè)長方形,當(dāng)兩堆相互碰撞時(shí),它們的俯視投影會(huì)產(chǎn)生干涉,如圖4所示.因此,判斷兩堆是否碰撞,只需判斷它們的俯視投影是否重疊.判斷兩個(gè)長方形是否相交的方法有許多種,系統(tǒng)中,通過計(jì)算出邊的方程,以兩個(gè)長方形的4條邊是否相交來進(jìn)行判斷.
4.2 集裝箱堆與堆場邊界的碰撞檢測
堆只能在堆場的范圍以內(nèi).堆場的二維投影是一個(gè)多邊形,因此為了判斷一個(gè)堆是否在堆場范圍內(nèi),只需判斷該堆的4個(gè)頂點(diǎn)是否都在堆場的范圍內(nèi).如果一個(gè)堆的4個(gè)頂點(diǎn)都在堆場內(nèi),則可以斷定該堆在堆場內(nèi);否則,該堆或者與堆場相交,或者在堆場外側(cè).為了判斷一個(gè)點(diǎn)是否在多邊形內(nèi),只需從該點(diǎn)引出一條足夠長的射線,判斷該射線與多邊形邊的交點(diǎn)數(shù),如圖5所示.如果交點(diǎn)個(gè)數(shù)為單,則該點(diǎn)在多邊形內(nèi),交點(diǎn)數(shù)為雙,則該點(diǎn)在多邊形外[6].實(shí)驗(yàn)表明,不論堆的形狀是凸多邊形或者是凹多邊形,該方法都能很好地進(jìn)行檢測.集裝箱堆與堆場邊界的碰撞檢測仿真圖,如圖6所示.
圖4 堆碰撞檢測Fig.4 Collision detection of two piles
圖5 判斷頂點(diǎn)與堆場邊界的關(guān)系 Fig.5 Estimation the relation between a vertex and the boundary of the yard
圖6 碰撞檢測仿真圖Fig.6 Simulation diagram of collision detection
臺(tái)風(fēng)來臨前后,往往伴隨著降水過程.降雨的模擬可以大大地提高系統(tǒng)的真實(shí)感.粒子系統(tǒng)是解決這一難點(diǎn)的有效方法.粒子系統(tǒng)主要的優(yōu)點(diǎn)是可以利用非常簡單的粒子來構(gòu)造復(fù)雜的物體,為自然想象的造型提供了強(qiáng)有力的技術(shù)手段[7].
(1)采用粒子數(shù)組來組織粒子群.運(yùn)行時(shí),遍歷粒子數(shù)組,對于每個(gè)雨滴粒子,判斷其高度,若高度小余零,則重新初始化該粒子,使該粒子重新按照一定的參數(shù)開始從高空中降落;若該粒子高度大于零,則繪制該粒子.根據(jù)粒子的屬性對粒子移動(dòng)和變換,更新該粒子的屬性.
(2)調(diào)節(jié)雨量大小,可以通過控制粒子數(shù)目和粒子大小來進(jìn)行.當(dāng)需要陰雨綿綿的天氣時(shí),可以減少粒子數(shù)目,且粒子較輕;而需要暴雨天氣時(shí),相應(yīng)地增加雨粒子數(shù)目,賦予每個(gè)粒子較大的質(zhì)量.
(3)風(fēng)場對雨的影響.一個(gè)雨滴在空氣中共受到重力、風(fēng)力、向上的阻力和水平方向上的阻力的作用.其中:風(fēng)力和輸入的風(fēng)速成正比,水平方向上的阻力與水平速度成正比,垂直方向上的阻力和垂直方向上的速度成正比.從第1幀開始,在每一幀中,計(jì)算粒子每個(gè)方向上的加速度,進(jìn)而計(jì)算出粒子的三維坐標(biāo)位置.用Particle定義每個(gè)粒子,并用線元對雨粒子運(yùn)動(dòng)的軌跡進(jìn)行離散化.即在粒子繪制的時(shí)候,首先保存粒子在上一時(shí)刻的位置Pn,再根據(jù)粒子當(dāng)前的位置P,用線元將Pn和P連接,線元將沿著粒子的運(yùn)動(dòng)軌跡前進(jìn).
雨過程模擬時(shí),場景中加入霧化效果能使雨粒子隨著遠(yuǎn)離視線而淡入,顯得更自然、真實(shí).不同風(fēng)速與不同雨量的仿真效果,如圖7所示.
圖7 風(fēng)雨仿真圖Fig.7 Simulation diagram of w ind and rain
運(yùn)用OpenGL的建模、光照、材質(zhì)、霧化等技術(shù)實(shí)現(xiàn)了集裝箱堆場的仿真,獲得了效果良好的三維真實(shí)感圖形.仿真系統(tǒng),能夠直觀顯示集裝箱堆儲(chǔ)的風(fēng)場流態(tài),為碼頭貨場提出更切實(shí)有效的預(yù)測、預(yù)警和防范安全措施,具有較大的實(shí)際應(yīng)用意義.
[1] HEARN D,BA KER M P.Computer graphics w ith OpenGL[M].蔡士杰,等譯.北京:電子工業(yè)出版社,2005.
[2] 郭葆鋒.建設(shè)設(shè)計(jì)中的虛擬現(xiàn)實(shí)[J].華僑大學(xué)學(xué)報(bào):自然科學(xué)版,2001,22(3):284-287.
[3] 張冰,陳萬米,梁亮,等.基于OpenGL的小型組機(jī)器人足球仿真平臺(tái)設(shè)計(jì)[J].系統(tǒng)仿真學(xué)報(bào),2008,20(3):724-728.
[4] L IN M C,GOTTSCHAL K S.Collision detection between geometric models:A survey[C]∥Proc of IMA Conference on Mathematics of Surfaces.San Diego:[s.n.],1998:37-56.
[5] 王志強(qiáng),洪嘉振,楊輝.碰撞檢測問題研究綜述[J].軟件學(xué)報(bào),1999,10(5):545-551.
[6] W EISSM A.Data structures and algorithm analysis in C++[M].張懷勇,等譯.北京:人民郵電出版社,1997.
[7] 王潤杰,田景全,倪政國.基于粒子系統(tǒng)的實(shí)時(shí)雨雪模擬[J].系統(tǒng)仿真學(xué)報(bào),2003,15(4):495-496.
Design and Im plemen tation of the 3D Simulation System d for Container Yard
CHEN Zhe-liang1,WU Qing-jiang1, Q IU Wen-ji1,PENG Xing-qian2
(1.College of Computer Science and Technology,Huaqiao University,Quanzhou 362021,China; (2.College of Civil Engineering,Huaqiao University,Quanzhou 362021,China)
Using the modeling,lighting,material quality,fogging and other technologiesof OpenGL,we have achieved a good effect 3D simulation graphic of container yard,w hich main modeling objects include containers,yard,sea level and rain.We p ropose a app roach to control a yard’s shape by controlling its vertices,and to detect if two pilesare intersected by judging the relation of their top view.A t last,we discuss the w ind and rain model visualization based on particle system,and p roposed amethod to accomp lish the rendering of rain and w ind by line based on rendering technique.Practical use of the system show s that the app lication of navigation,fogging,texturemapping technology can strengthen the reality of yard.
container;yard;w ind-resistance;3D simulation system;OpenGL;collision detection;particle system
TU 249.19;TP 391.41
A
(責(zé)任編輯:黃仲一 英文審校:吳逢鐵)
1000-5013(2010)05-0526-04
2009-06-27
吳清江(1949-),男,教授,主要從事計(jì)算機(jī)圖形學(xué)的研究.E-mail:w uqingjiang@m sn.com.
福建省廈門市科技計(jì)劃高校創(chuàng)新項(xiàng)目(3502Z20083039);福建省廈門市發(fā)改委科技計(jì)劃項(xiàng)目(2008-70)