国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenGL的工程三維仿真系統(tǒng)通用開(kāi)發(fā)平臺(tái)

2012-11-29 01:24李頂峰孔國(guó)梁
鐵道勘察 2012年5期
關(guān)鍵詞:視圖紋理繪制

李頂峰 孔國(guó)梁

(鐵道第三勘察設(shè)計(jì)院集團(tuán)有限公司,天津 300142)

傳統(tǒng)的工程設(shè)計(jì)往往是在二維紙質(zhì)圖或電子地圖上進(jìn)行,設(shè)計(jì)成果不直觀,缺乏真實(shí)感。工程三維仿真是一門將工程設(shè)計(jì)成果數(shù)據(jù)轉(zhuǎn)化為三維立體圖形,模擬現(xiàn)實(shí)環(huán)境,建立虛擬仿真場(chǎng)景的技術(shù)。應(yīng)用這一技術(shù),可以在工程設(shè)計(jì)、施工過(guò)程中,建立三維仿真景觀系統(tǒng),真實(shí)呈現(xiàn)工程建成后的逼真場(chǎng)景,讓設(shè)計(jì)、決策人員對(duì)工程設(shè)計(jì)成果有直觀的三維立體印象,從而為工程設(shè)計(jì)的整體協(xié)調(diào)、合理性等提供決策依據(jù),并做出更科學(xué)的分析和評(píng)判,在很大程度上提高了設(shè)計(jì)的質(zhì)量和效率。隨著計(jì)算機(jī)軟硬件水平的提高,三維仿真技術(shù)在工程設(shè)計(jì)領(lǐng)域越來(lái)越得到廣泛應(yīng)用,相關(guān)院校及設(shè)計(jì)施工單位對(duì)各種工程三維仿真系統(tǒng)也進(jìn)行了相關(guān)研究開(kāi)發(fā)。由于各類工程既具有一定的共性,又具有一定的差異性,應(yīng)用需求變化較大,沒(méi)有合適的統(tǒng)一平臺(tái),都需要定制開(kāi)發(fā)。這樣造成了很大程度上的重復(fù)開(kāi)發(fā),生產(chǎn)開(kāi)發(fā)效率和質(zhì)量受到制約。

軟件開(kāi)發(fā)平臺(tái)是指用來(lái)構(gòu)建、支撐應(yīng)用軟件開(kāi)發(fā)的獨(dú)立軟件系統(tǒng),通常是一個(gè)封裝了各種底層模型、特定功能模塊的更加方便實(shí)用的高級(jí)API函數(shù)庫(kù)或工具包,它是開(kāi)發(fā)、部署、定制特定軟件的基礎(chǔ)[1]。一個(gè)應(yīng)用軟件,往往是一個(gè)復(fù)雜的系統(tǒng),降低其復(fù)雜度和提高效率的最好辦法就是將系統(tǒng)分層實(shí)現(xiàn),每一個(gè)層次實(shí)現(xiàn)自身的功能模塊,并屏蔽其以下層次的技術(shù)細(xì)節(jié),這些層次模塊具有相對(duì)獨(dú)立的功能,可在不同的應(yīng)用系統(tǒng)開(kāi)發(fā)中復(fù)用和擴(kuò)展。

為了簡(jiǎn)便、高效、快速地開(kāi)發(fā)各種工程三維仿真應(yīng)用系統(tǒng),本文深入分析工程三維仿真需求及特點(diǎn),基于OpenGL技術(shù),設(shè)計(jì)了一種適用于開(kāi)發(fā)各類工程三維虛擬仿真系統(tǒng)的通用平臺(tái)。文中重點(diǎn)介紹了該平臺(tái)的層次結(jié)構(gòu)、各模塊的功能及關(guān)鍵技術(shù)特點(diǎn)、應(yīng)用方法以及開(kāi)發(fā)實(shí)例。

1 平臺(tái)架構(gòu)

工程三維仿真系統(tǒng)通用開(kāi)發(fā)平臺(tái)是用來(lái)快速構(gòu)建、開(kāi)發(fā)工程三維虛擬仿真應(yīng)用系統(tǒng)的高級(jí)軟件工具包。平臺(tái)分三層設(shè)計(jì),提供可重用的類庫(kù),支持系統(tǒng)框架結(jié)構(gòu)的自動(dòng)生成,全部源程序開(kāi)放,用戶可自由修改內(nèi)核,在各層次各模塊的基礎(chǔ)上都能加以擴(kuò)展和定制,以滿足不同的系統(tǒng)應(yīng)用需求,具有很好的開(kāi)發(fā)性和擴(kuò)展性。經(jīng)過(guò)反復(fù)使用驗(yàn)證,自身具有較高的質(zhì)量,基于平臺(tái)開(kāi)發(fā)的新系統(tǒng)也就具有較高的質(zhì)量保證。

1.1 平臺(tái)層次結(jié)構(gòu)

工程三維仿真系統(tǒng)通用開(kāi)發(fā)平臺(tái)架構(gòu)分為三層,包括底層基礎(chǔ)類庫(kù)、中間層通用模塊及系統(tǒng)應(yīng)用層,如圖1所示。

圖1 平臺(tái)層次結(jié)構(gòu)

底層包括各種基礎(chǔ)類庫(kù),如Windows API、OpenGL(Open Graphics Library)圖形庫(kù)及Visual C++MFC類庫(kù),這些是本文三維仿真平臺(tái)得以實(shí)現(xiàn)和應(yīng)用的必要基礎(chǔ),處在平臺(tái)的最底層。其中,OpenGL是繪制高真實(shí)感三維圖形,實(shí)現(xiàn)交互式視景仿真和虛擬現(xiàn)實(shí)的高性能三維圖形庫(kù),是目前應(yīng)用最廣泛的三維圖形應(yīng)用程序設(shè)計(jì)接口之一,也是行業(yè)領(lǐng)域中最廣為接納的計(jì)算機(jī)圖形標(biāo)準(zhǔn)[2]。作為圖形硬件的軟件接口,OpenGL包括了超過(guò)700個(gè)圖形操作函數(shù),它們分別屬于OpenGL的核心庫(kù)(gl)、實(shí)用庫(kù)(glu)、輔助庫(kù)(aux)、實(shí)用工具集(glut)、窗口庫(kù)(glx、agl、wgl)和擴(kuò)展函數(shù)庫(kù)等不同的庫(kù)。OpenGL的一個(gè)長(zhǎng)處就是其靈活的擴(kuò)展機(jī)制,擴(kuò)展函數(shù)庫(kù)正是硬件廠商為實(shí)現(xiàn)硬件更新,利用OpenGL的擴(kuò)展機(jī)制開(kāi)發(fā)的函數(shù),軟件開(kāi)發(fā)人員可以通過(guò)OpenGL擴(kuò)展使用最新的硬件功能。Visual C++MFC(Microsoft Foundation Classes),是微軟公司提供的基礎(chǔ)類庫(kù),是一種應(yīng)用程序框架,隨Visual C++開(kāi)發(fā)工具發(fā)布,MFC提供了應(yīng)用程序向?qū)ё詣?dòng)生成框架,大大簡(jiǎn)化了應(yīng)用程序初始框架的構(gòu)建和界面的設(shè)計(jì)。

中間層包括各種通用模塊、功能件和眾多高級(jí)API。OpenGL是比較低級(jí)的繪圖函數(shù)庫(kù),僅限于生成簡(jiǎn)單的幾何圖元(點(diǎn)、直線和多邊形),無(wú)法直接創(chuàng)建更為復(fù)雜的三維物體,同時(shí)OpenGL也沒(méi)有包含應(yīng)用程序窗口及鍵盤鼠標(biāo)事件處理的函數(shù),要?jiǎng)?chuàng)建完整的圖形應(yīng)用程序,必須利用底層函數(shù),整合包裝成更加實(shí)用的高級(jí)API或擴(kuò)展功能模塊,如常用幾何圖元繪制模塊、高級(jí)圖元繪制模塊、視圖窗口模塊等。工程三維仿真系統(tǒng)在建模、渲染、操作、計(jì)算等方面具有較大的共性,在中間層通過(guò)對(duì)底層模塊加以擴(kuò)展封裝,形成更加通用的模塊,如紋理映射模塊、文字模塊、幾何運(yùn)算模塊、相機(jī)模塊等。由于源程序全部開(kāi)放,用戶也可以在必要時(shí)使用底層函數(shù)進(jìn)行二次開(kāi)發(fā),擴(kuò)展或添加新的功能模塊。

應(yīng)用層是面向具體的工程三維仿真應(yīng)用搭建的系統(tǒng)框架,包括常用的工程仿真應(yīng)用模塊,如工程數(shù)據(jù)管理模塊、場(chǎng)景構(gòu)建繪制模塊、場(chǎng)景顯示控制模塊、場(chǎng)景漫游控制模塊等,可廣泛應(yīng)用于工程數(shù)據(jù)可視化、虛擬現(xiàn)實(shí)、三維輔助設(shè)計(jì)、演示匯報(bào)等領(lǐng)域,用戶只需要在此平臺(tái)基礎(chǔ)上進(jìn)行一定的功能擴(kuò)展和改造,即可快速定制開(kāi)發(fā)出一套仿真應(yīng)用系統(tǒng),從而大大減少由最原始的基礎(chǔ)開(kāi)發(fā)一個(gè)仿真應(yīng)用系統(tǒng)的成本和難度。

1.2 平臺(tái)模塊結(jié)構(gòu)

該平臺(tái)對(duì)各主要功能都進(jìn)行了封裝,使之成為通用的開(kāi)發(fā)模塊,各接口規(guī)范統(tǒng)一。平臺(tái)主要由基礎(chǔ)功能模塊和應(yīng)用功能模塊兩大部分構(gòu)成,如圖2所示。

圖2 平臺(tái)功能模塊結(jié)構(gòu)

基礎(chǔ)部分涉及三維仿真最基礎(chǔ)的功能模塊,包括紋理映射模塊、文字模塊、幾何運(yùn)算模塊、高級(jí)圖元繪制模塊、對(duì)象拾取模塊、視圖窗口模塊、渲染控制模塊和相機(jī)模塊。應(yīng)用部分是常用的工程仿真應(yīng)用模塊,包括工程數(shù)據(jù)管理模塊、場(chǎng)景構(gòu)建繪制模塊、場(chǎng)景漫游控制模塊、場(chǎng)景顯示控制模塊、信息查詢顯示模塊、場(chǎng)景輸出模塊。這些模塊都可以直接使用,快速實(shí)現(xiàn)系統(tǒng)相關(guān)功能,也可以對(duì)各模塊進(jìn)行調(diào)整改造,滿足更加特殊的應(yīng)用要求。

2 模塊功能及關(guān)鍵技術(shù)研究

以下分別介紹各模塊的主要功能,同時(shí)就其中的關(guān)鍵技術(shù)進(jìn)行深入研究。

2.1 紋理映射模塊

紋理映射模塊主要解決各種紋理圖像的加載及紋理對(duì)象、紋理緩沖區(qū)對(duì)象的創(chuàng)建。

紋理貼圖是把一幅紋理圖像加載映射到一個(gè)多邊形的表面,可以增強(qiáng)場(chǎng)景渲染真實(shí)感。該模塊采用GDI的方式包裝了紋理圖像的加載及紋理函數(shù)的指定,可以統(tǒng)一處理 bmp、jpg、gif、tga等紋理資源的加載以及透明紋理的貼圖。

紋理對(duì)象通過(guò)一個(gè)單獨(dú)的數(shù)字來(lái)標(biāo)識(shí)紋理,能夠在內(nèi)存中保存多個(gè)紋理,而不需每次使用的時(shí)候再去加載,從而減少了運(yùn)算量,提高了速度。紋理緩沖區(qū)對(duì)象把像素?cái)?shù)據(jù)存儲(chǔ)在OpenGL服務(wù)器端,可以消除每一幀渲染時(shí)把數(shù)據(jù)從客戶機(jī)內(nèi)存?zhèn)鬏數(shù)椒?wù)器的開(kāi)銷,以提高應(yīng)用程序的性能。該模塊封裝了紋理對(duì)象以及紋理緩沖區(qū)對(duì)象的創(chuàng)建。

2.2 文字模塊

文字模塊主要解決各種字體2D、3D文字的繪制。

OpenGL通常只能處理英文字體的繪制,對(duì)于漢字及字體設(shè)置都比較麻煩。該模塊通過(guò)字符位圖等方式,包裝了2D、3D中英文字符的繪制、字體的設(shè)置及字體顯示列表的創(chuàng)建,簡(jiǎn)化了文字的處理工作,提高了開(kāi)發(fā)效率。

2.3 幾何運(yùn)算模塊

幾何運(yùn)算模塊主要處理各種幾何元素及幾何變換的運(yùn)算。

該模塊定義了點(diǎn)、矢量等基本幾何元素的數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了相應(yīng)的C++類,可供其他模塊開(kāi)發(fā)時(shí)用來(lái)定義更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和幾何運(yùn)算。

2.4 高級(jí)圖元繪制模塊

高級(jí)圖元繪制模塊主要實(shí)現(xiàn)各種高級(jí)圖元的繪制。

OpenGL是比較低級(jí)的繪圖函數(shù)庫(kù),僅限于生成簡(jiǎn)單的幾何圖元(點(diǎn)、直線和多邊形),無(wú)法直接創(chuàng)建更為復(fù)雜的幾何圖元或更高級(jí)的三維實(shí)體。該模塊包裝了多種直線樣式的繪制、多種四邊形樣式的繪制、凹多邊形,以及內(nèi)部有孔多邊形、復(fù)雜鑲嵌多邊形、圓柱體、圓錐體等的繪制,實(shí)現(xiàn)了3DS等模型的加載繪制,使各種工程構(gòu)造物及三維實(shí)體的模型構(gòu)建更加簡(jiǎn)便、高效。

2.5 對(duì)象拾取模塊

對(duì)象拾取模塊主要實(shí)現(xiàn)三維仿真環(huán)境下實(shí)體對(duì)象的選擇。

對(duì)象拾取是指在視圖窗口中用鼠標(biāo)選擇物體的過(guò)程,涉及用戶和圖形之間的交互操作,是交互式三維仿真系統(tǒng)必要的組成部分之一[3]。對(duì)于二維繪圖程序,一般通過(guò)計(jì)算二維線框與鼠標(biāo)拾取框的交叉關(guān)系來(lái)實(shí)現(xiàn),相對(duì)比較容易。但對(duì)于三維應(yīng)用程序,由于場(chǎng)景繪制時(shí),幾何對(duì)象都經(jīng)過(guò)了空間的多次旋轉(zhuǎn)、平移和投影變換,直接設(shè)計(jì)算法來(lái)計(jì)算拾取的對(duì)象會(huì)非常困難。OpenGL的選擇模式為用戶提供了一種拾取物體的機(jī)制,它通過(guò)在繪制前命名對(duì)象,拾取時(shí)可返回特定區(qū)域的對(duì)象名稱,從而獲得拾取的對(duì)象。該模塊包裝了對(duì)象拾取的相關(guān)操作,簡(jiǎn)單實(shí)用。

2.6 視圖窗口模塊

視圖窗口模塊主要處理 Windows視圖窗口與OpenGL圖形繪制的連接,是在Windows環(huán)境下使用OpenGL進(jìn)行三維圖形繪制的基礎(chǔ)。

Visual C++中沒(méi)有提供現(xiàn)成的視圖類可直接用OpenGL進(jìn)行圖形繪制,OpenGL本身也不包括任何Windows窗口管理和用戶交互的函數(shù),它使用渲染場(chǎng)景(Rendering Context)進(jìn)行圖形繪制,因此使用OpenGL在Windows窗口中繪制圖形時(shí),需要在每個(gè)窗口中嵌入一個(gè)渲染場(chǎng)景,通過(guò)渲染場(chǎng)景與設(shè)備場(chǎng)景的關(guān)聯(lián),實(shí)現(xiàn)OpenGL與窗口的關(guān)聯(lián)。渲染場(chǎng)景保存了與OpenGL發(fā)生聯(lián)系的信息,負(fù)責(zé)處理應(yīng)用程序發(fā)出的OpenGL命令。像素格式為設(shè)備場(chǎng)景設(shè)置一些與OpenGL相關(guān)的屬性,如實(shí)現(xiàn)圖形動(dòng)畫效果的雙緩存、像素的顏色模式、顏色的位數(shù)、深度緩存的位數(shù)等,在創(chuàng)建一個(gè)渲染場(chǎng)景之前,需要為窗口的設(shè)備場(chǎng)景設(shè)置一個(gè)合適的像素格式[4]。該模塊在 MFC視圖類CView的基礎(chǔ)上創(chuàng)建了一個(gè)封裝OpenGL的視圖基類,實(shí)現(xiàn)了渲染場(chǎng)景的自動(dòng)設(shè)置,使Windows窗口與OpenGL相關(guān)聯(lián),可直接調(diào)用OpenGL的命令進(jìn)行圖形繪制。

2.7 渲染控制模塊

渲染控制模塊主要包裝渲染繪圖模式的控制。該模塊通過(guò)相關(guān)函數(shù),統(tǒng)一實(shí)現(xiàn)了多邊形填充模式切換、開(kāi)啟關(guān)閉紋理貼圖、打開(kāi)關(guān)閉光照等功能。

2.8 相機(jī)模塊

相機(jī)模塊主要處理三維視景體的設(shè)置及操作,類似于照相機(jī)的取景功能,包括視點(diǎn)坐標(biāo)系設(shè)置、模型視圖變換、投影變換和視口變換。

在三維仿真系統(tǒng)中,屏幕所顯示的景物范圍是由OpenGL的取景設(shè)置決定的。取景操作是OpenGL圖形顯示繪制的一個(gè)關(guān)鍵技術(shù),它通過(guò)設(shè)定視點(diǎn)坐標(biāo)系,確定視點(diǎn)的位置及視線的方向,經(jīng)過(guò)模型視圖變換及投影變換,定義出要觀察的景物空間,并將三維景物投影成二維圖像,最后利用視口變換將圖像輸出到對(duì)應(yīng)的窗口區(qū)域中。該模塊設(shè)計(jì)了一個(gè)相機(jī)類,封裝了OpenGL取景操作的基本功能,使開(kāi)發(fā)人員更方便地在應(yīng)用程序中實(shí)現(xiàn)場(chǎng)景的設(shè)置。

2.9 工程數(shù)據(jù)管理模塊

工程數(shù)據(jù)管理模塊是工程設(shè)計(jì)數(shù)據(jù)庫(kù)與三維仿真系統(tǒng)緊密聯(lián)系的部分,是系統(tǒng)與數(shù)據(jù)及文件的接口,包括數(shù)據(jù)的輸入輸出、格式轉(zhuǎn)化及相關(guān)計(jì)算。

工程設(shè)計(jì)數(shù)據(jù)是工程三維仿真系統(tǒng)的基礎(chǔ)數(shù)據(jù)來(lái)源,在此基礎(chǔ)上可以進(jìn)行各種場(chǎng)景及實(shí)體模型的構(gòu)建、計(jì)算。該模塊設(shè)計(jì)了一個(gè)數(shù)據(jù)管理類,包裝了設(shè)計(jì)數(shù)據(jù)的加載、工程構(gòu)造物模板的初始化,漫游路徑的引入,以及場(chǎng)景數(shù)據(jù)的分塊索引功能。系統(tǒng)開(kāi)發(fā)人員可以在此類的基礎(chǔ)上加以修改,以適應(yīng)各自工程設(shè)計(jì)數(shù)據(jù)的導(dǎo)入導(dǎo)出及相關(guān)計(jì)算應(yīng)用。

2.10 場(chǎng)景構(gòu)建繪制模塊

場(chǎng)景構(gòu)建繪制模塊是三維仿真系統(tǒng)的核心模塊之一,其中搭建了場(chǎng)景實(shí)體構(gòu)建繪制的統(tǒng)一程序框架,封裝了各種通用場(chǎng)景的構(gòu)建繪制,如背景天空、三維地形、地物等。

該模塊通過(guò)場(chǎng)景對(duì)象基類搭建了場(chǎng)景實(shí)體構(gòu)建繪制的程序框架,使其過(guò)程完全規(guī)范化與統(tǒng)一,開(kāi)發(fā)人員可以根據(jù)需要在此基類的基礎(chǔ)上派生新的場(chǎng)景對(duì)象類,修改其中對(duì)應(yīng)函數(shù),最大化減少重復(fù)勞動(dòng),把精力集中在具體的構(gòu)建及繪制細(xì)節(jié)需求上,該框架特別適合各種工程構(gòu)造物模型的構(gòu)建與繪制。其框架圖如圖3所示。

圖3 場(chǎng)景實(shí)體構(gòu)建繪制的程序框架

該模塊采用搭積木的方式構(gòu)建場(chǎng)景,先將整個(gè)工程場(chǎng)景劃分為苦干個(gè)結(jié)構(gòu)特征各異的子場(chǎng)景或?qū)嶓w,各部分具有較強(qiáng)的功能性和獨(dú)立性,分別采用合適的實(shí)體造型技術(shù)構(gòu)建模型,選用有利的渲染技術(shù)繪制場(chǎng)景,最后將各子實(shí)體搭建在一起顯示,形成整體統(tǒng)一的仿真場(chǎng)景。該方法使復(fù)雜的場(chǎng)景簡(jiǎn)單化,問(wèn)題處理有的放矢,是一種分而治之的基本策略,非常有利于程序開(kāi)發(fā)的編制、測(cè)試及功能擴(kuò)充。圖4為基于此平臺(tái)開(kāi)發(fā)的某工程三維仿真系統(tǒng)場(chǎng)景實(shí)體類層次結(jié)構(gòu)示意。

圖4 場(chǎng)景實(shí)體類層次結(jié)構(gòu)示意

2.11 場(chǎng)景漫游控制模塊

場(chǎng)景漫游控制模塊主要用于場(chǎng)景的靜態(tài)交互瀏覽和動(dòng)態(tài)漫游控制。靜態(tài)交互瀏覽是一種重要的虛擬觀測(cè)手段,主要是通過(guò)界面、鍵盤、鼠標(biāo)等工具,實(shí)現(xiàn)對(duì)三維空間的交互操作,讓用戶可以從不同側(cè)面、不同角度、方位進(jìn)行實(shí)時(shí)的觀測(cè)或?yàn)g覽,給人以身臨其境的感覺(jué)。交互控制包括平移、旋轉(zhuǎn)、縮放等操作。動(dòng)態(tài)漫游控制統(tǒng)一了漫游視點(diǎn)、漫游路徑等相關(guān)參數(shù)的設(shè)置,實(shí)現(xiàn)了三維仿真場(chǎng)景的動(dòng)態(tài)演示。

2.12 場(chǎng)景顯示控制模塊

場(chǎng)景顯示控制模塊主要實(shí)現(xiàn)三維仿真場(chǎng)景對(duì)象的分類顯示控制。該模塊統(tǒng)一設(shè)定場(chǎng)景對(duì)象的顯示控制參數(shù),界面采用帶檢查框的樹型控件分類顯示各場(chǎng)景對(duì)象,并關(guān)聯(lián)對(duì)應(yīng)屬性,實(shí)現(xiàn)場(chǎng)景對(duì)象的按需加載顯示。

2.13 信息查詢顯示模塊

信息查詢顯示模塊主要實(shí)現(xiàn)三維仿真系統(tǒng)中各種數(shù)據(jù)信息的查詢、計(jì)算及顯示功能。該模塊封裝了坐標(biāo)查詢、空間距離查詢、對(duì)象屬性查詢、視點(diǎn)信息查詢以及相應(yīng)信息顯示功能。

2.14 場(chǎng)景輸出模塊

場(chǎng)景輸出模塊包裝了屏幕圖形的輸出及動(dòng)畫錄制功能,極大的方便了工程三維仿真效果圖的制作及漫游動(dòng)畫的輸出,使用戶可以脫離系統(tǒng)查看工程三維仿真成果。

3 應(yīng)用方法

工程三維仿真系統(tǒng)通用開(kāi)發(fā)平臺(tái)是一個(gè)高級(jí)軟件開(kāi)發(fā)工具包,提供了Visual Studio工程模板,實(shí)現(xiàn)了平臺(tái)與Visual Studio的緊密結(jié)合,用戶可根據(jù)需要自動(dòng)生成三維仿真系統(tǒng)的VC解決方案和工程,也可直接以平臺(tái)作為系統(tǒng)的基礎(chǔ)框架,快速構(gòu)建工程三維虛擬仿真應(yīng)用系統(tǒng)的原型,最大化的復(fù)用軟件代碼和各功能模塊,減少重復(fù)開(kāi)發(fā)。以此基礎(chǔ)上,修改相關(guān)函數(shù)的源代碼,自定義各自工程數(shù)據(jù)的加載及相關(guān)計(jì)算的引入,組織具體工程實(shí)體對(duì)象的模型構(gòu)建與仿真渲染。也可以對(duì)平臺(tái)加以擴(kuò)展,改造或添加新的功能模塊,實(shí)現(xiàn)特定的應(yīng)用需求,快速搭建適應(yīng)具體工程的仿真應(yīng)用系統(tǒng)。

4 開(kāi)發(fā)實(shí)例

目前,使用基于OpenGL的工程三維仿真系統(tǒng)通用開(kāi)發(fā)平臺(tái)研發(fā)了多套直接面向工程實(shí)際應(yīng)用的系統(tǒng),如“高速磁懸浮鐵路軌道梁三維效果圖系統(tǒng)[5]”、公路三維實(shí)時(shí)動(dòng)態(tài)仿真系統(tǒng)、鐵路三維虛擬仿真系統(tǒng)、城市虛擬景觀系統(tǒng)等,如圖5所示。

圖5 基于該平臺(tái)開(kāi)發(fā)的仿真系統(tǒng)實(shí)例

上述實(shí)踐應(yīng)用表明,該平臺(tái)的方法及技術(shù)切實(shí)可行,結(jié)構(gòu)清晰,簡(jiǎn)化了三維仿真系統(tǒng)的開(kāi)發(fā)過(guò)程,減少了重復(fù)開(kāi)發(fā)和總的工作量,降低了編程和代碼維護(hù)難度,可以縮短系統(tǒng)的研發(fā)周期,節(jié)約軟件的研發(fā)成本和提高生產(chǎn)效率。平臺(tái)擴(kuò)展性強(qiáng),執(zhí)行效率高,仿真效果好,運(yùn)行穩(wěn)定可靠。

[1]羅昔軍,馬征.定制軟件開(kāi)發(fā)平臺(tái)的研究與設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與自動(dòng)化,2006,6(2):108-110

[2]呂??苄∑剑畬?shí)戰(zhàn)OpenGL三維可視化系統(tǒng)開(kāi)發(fā)與源碼精解[M].北京:電子工業(yè)出版社,2009:10-16

[3]雷鳴,錢世洋,等.基于OpenGL的核心可視化交互功能實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2006(12):138-142

[4]王清輝,王彪.Visual C++CAD應(yīng)用程序開(kāi)發(fā)技術(shù)[M].北京:機(jī)械工業(yè)出版社,2003:52-61

[5]李頂峰,伍衛(wèi)凡.基于OpenGL的磁浮鐵路實(shí)時(shí)三維可視化技術(shù)研究與實(shí)現(xiàn)[J].鐵道勘察,2008(2):39-43

猜你喜歡
視圖紋理繪制
基于Excel VBA和AutoCAD的滾動(dòng)軸承參數(shù)化比例圖繪制方法
基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
超萌小鹿課程表
使用紋理疊加添加藝術(shù)畫特效
放學(xué)后
視圖
TEXTURE ON TEXTURE質(zhì)地上的紋理
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
Django 框架中通用類視圖的用法
连江县| 九龙坡区| 瑞昌市| 阿拉善左旗| 烟台市| 苏州市| 达日县| 东莞市| 绍兴县| 达尔| 南丰县| 玉门市| 巴东县| 黄骅市| 德州市| 彝良县| 通榆县| 大丰市| 长葛市| 荆门市| 南通市| 新沂市| 九台市| 德化县| 丹东市| 手游| 大方县| 建阳市| 广西| 叙永县| 石家庄市| 安岳县| 上犹县| 江陵县| 凌海市| 隆安县| 泸州市| 曲麻莱县| 黄骅市| 天气| 克拉玛依市|