黃詩物+李建微+林建德
【摘 要】 林火蔓延的三維模擬是目前關(guān)于林火蔓延研究中的一個(gè)重點(diǎn),而虛擬林火場景的創(chuàng)建與編輯是實(shí)現(xiàn)三維化模擬的一個(gè)非常重要的部分。本文詳細(xì)分析了林火蔓延系統(tǒng)對于場景編輯功能的需求,采用多種軟件設(shè)計(jì)方法以及開源技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了模擬系統(tǒng)中的場景編輯功能,并能與模擬系統(tǒng)的其他部分良好協(xié)作實(shí)現(xiàn)林火蔓延的三維模擬。
【關(guān)鍵詞】 林火蔓延 三維模擬 場景編輯
林火蔓延是指從森林可燃物起火開始,燃燒擴(kuò)散并最終熄滅的過程[1]。科學(xué)家們研究了各種相關(guān)因子(如可燃物、氣象和地形等)與林火的定量關(guān)系,構(gòu)建出林火蔓延模型,并在此基礎(chǔ)上對林火蔓延過程進(jìn)行模擬研究,已有一些二維模擬系統(tǒng)比如美國農(nóng)業(yè)部林務(wù)局的FARSITE[2]和BEHAVE系統(tǒng)在國外獲得較多的應(yīng)用。目前在林火蔓延模擬方面的研究由主要針對地表火和林火起始階段的二維模擬,發(fā)展為針對三維、立體的林火蔓延模擬[1][8]。本文針對此研究領(lǐng)域開發(fā)了一個(gè)基于FARSITE的林火蔓延三維模擬系統(tǒng),該三維模擬系統(tǒng)以FARSITE的核心模型作為林火蔓延邊界的模擬基礎(chǔ),利用虛擬現(xiàn)實(shí)技術(shù)、三維地理信息系統(tǒng)技術(shù)等實(shí)現(xiàn)三維場景創(chuàng)建編輯功能以構(gòu)建一個(gè)逼真的虛擬森林場景,模擬三維的林火蔓延過程。
三維場景編輯器是用來搭建三維系統(tǒng)中的場景,是為了給使用者提供一個(gè)能夠自由創(chuàng)建三維場景的平臺。一般三維場景編輯器都集成了模型、地形、光照、天空盒、水面、粒子系統(tǒng)等三維編輯功能,并且具備整個(gè)系統(tǒng)的數(shù)據(jù)信息和數(shù)據(jù)管理功能[4][5]。
1 系統(tǒng)場景編輯功能需求
由于本文討論的是三維林火蔓延仿真系統(tǒng)中的場景編輯功能模塊的設(shè)計(jì)與實(shí)現(xiàn),因此需要根據(jù)這一特定應(yīng)用的特殊需求在目前通用的三維場景編輯器的設(shè)計(jì)與實(shí)現(xiàn)之上進(jìn)行功能裁剪與修改,使得較為通用的三維場景編輯技術(shù)能夠滿足本系統(tǒng)特定的需要。虛擬林火場景是現(xiàn)實(shí)世界中林火真實(shí)環(huán)境的模擬抽象,為進(jìn)行林火蔓延模擬提供基礎(chǔ)環(huán)境。虛擬林火環(huán)境包括眾多要素,主要包括地形三維可視化、植物三維建模和林火三維可視化[8]等三個(gè)方面的內(nèi)容。因此具體來說本文構(gòu)建的林火蔓延仿真系統(tǒng)對于場景編輯方面的需求主要有:
(1)三維地形的載入與構(gòu)建。由于本系統(tǒng)要求具有較高的仿真度,因此要求可以直接使用所研究林區(qū)的真實(shí)三維地形。這可以通過使用林區(qū)的高程圖以及衛(wèi)星遙感圖通過本系統(tǒng)使用到的OSG三維渲染引擎[6]的一個(gè)地形數(shù)據(jù)庫生成工具VirtualPlanetBuilder(VPB)[6]生成,然后進(jìn)行地形的載入。(2)虛擬植物的創(chuàng)建。森林中的可燃物是林火發(fā)生的重要物質(zhì)基礎(chǔ),林火蔓延的主要影響因素之一。虛擬植物的創(chuàng)建包括樹木、灌木、草叢等的渲染,植物的種類與分布反映了該區(qū)域的森林可燃物的類型和分布。目前虛擬植物建模方法很多,如參數(shù)化單株木三維建模、過程植物建模、基于圖像三維建模、基于草圖建模及交互式建模等方法。綜合考慮場景的真實(shí)感和繪制速度,項(xiàng)目目前采用Billboard方法創(chuàng)建植物模型。(3)林火是虛擬森林火災(zāi)場景的主要模擬對象。林火模擬包括火焰和煙霧的模擬。由于火焰的形狀和顏色的變化是不規(guī)則地動(dòng)態(tài)變化的,因此對其的模擬至今仍沒有完美的解決方案[9]。目前,對火焰的模擬方法主要有以下幾種:基于粒子系統(tǒng)的方法、基于紋理的方法及基于數(shù)學(xué)物理的方法[10]。本系統(tǒng)使用OSG三維渲染引擎的粒子系統(tǒng)[11]來進(jìn)行火焰和煙霧的模擬。
2 總體框架與設(shè)計(jì)方法
本文開發(fā)的林火蔓延三維模擬系統(tǒng)使用QT圖形界面庫[7]實(shí)現(xiàn)模擬系統(tǒng)界面的快速設(shè)計(jì)和消息通信機(jī)制。使用OSG三維渲染引擎的應(yīng)用框架實(shí)現(xiàn)三維模擬場景世界的實(shí)時(shí)顯示,通過調(diào)用其接口實(shí)現(xiàn)功能設(shè)計(jì)。而要實(shí)現(xiàn)對三維模擬場景的編輯工作除了采用上面的兩個(gè)重要的編程設(shè)計(jì)工具之外還使用了XML技術(shù),XML格式文件用于保存編輯的場景數(shù)據(jù)信息,使用XML解析器TinyXml庫讀取和重現(xiàn)場景??傮w框架如圖1所示。
本項(xiàng)目使用統(tǒng)一建模語言UML對場景編輯模塊中的類進(jìn)行建模,直觀體現(xiàn)出對象、接口、協(xié)作和它們之間的關(guān)系。根據(jù)面向?qū)ο蟮姆治龊蚒ML建模圖,運(yùn)用單例模式、對象工廠模式等設(shè)計(jì)模式,設(shè)計(jì)各個(gè)對象類、對象間的層次關(guān)系和繼承關(guān)系、對象間的通信方式等,見圖2。
最后便是面向?qū)ο缶幋a的實(shí)現(xiàn),詳細(xì)對各個(gè)對象類進(jìn)行編碼,封裝對象數(shù)據(jù)及相關(guān)操作。并適時(shí)地對類進(jìn)行重構(gòu),調(diào)整系統(tǒng)的結(jié)構(gòu),改善代碼,減少代碼冗余,提高程序的效率,使以后的拓展更加的容易。
3 詳細(xì)功能設(shè)計(jì)與實(shí)現(xiàn)
3.1 界面操作
界面操作功能由界面接口模塊來實(shí)現(xiàn)。界面接口模塊劃分為界面框架模塊和工作區(qū)功能模塊。其中界面框架結(jié)構(gòu)圖如圖3所示。工作區(qū)功能模塊再劃分為場景渲染模塊、資源管理列表模塊、模型視圖模塊、地形編輯模塊、日志模塊、和屬性模塊(這里列出的是涉及到場景編輯功能的子模塊)。除了場景渲染窗口外,本系統(tǒng)以Dock窗口形式來設(shè)計(jì)其他五部分,它們可以隱藏和顯示,還可以依賴于主窗口或懸浮獨(dú)立。當(dāng)所有的Dock窗口都隱藏或處于懸浮狀態(tài)時(shí),場景渲染窗口將擴(kuò)充到整個(gè)工作區(qū)來顯示當(dāng)前的場景。
3.2 實(shí)體編輯
場景編輯必須能夠快速的創(chuàng)建實(shí)體,實(shí)體的編輯功能主要由實(shí)體編輯模塊實(shí)現(xiàn)。場景實(shí)體接口不僅提供對場景中所有實(shí)體的基本的操作功能,如平移、鎖定、刪除等,還提供了獲取實(shí)體狀態(tài)、狀態(tài)操作、光線圖實(shí)時(shí)渲染。其中模型實(shí)體接口是對模型實(shí)體編輯的功能;地形編輯接口提供了對地形編輯的功能;而其他實(shí)體模塊主要是場景編輯中的一些基礎(chǔ)的實(shí)體,比如攝像機(jī),天空,光源等。
3.3 場景管理
編輯場景時(shí)還必須提供對場景信息的管理功能,因此需要設(shè)計(jì)場景管理模塊。場景管理模塊主要用來管理編輯器的各種數(shù)據(jù),包括界面數(shù)據(jù)和場景編輯時(shí)數(shù)據(jù)的管理。場景管理模塊四大部分:模型管理模塊、日志模塊、屬性模塊和場景存儲(chǔ)模塊。