亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        李頂峰 孔國梁

        (鐵道第三勘察設計院集團有限公司,天津 300142)

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

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

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

        1 平臺架構

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

        1.1 平臺層次結構

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

        圖1 平臺層次結構

        底層包括各種基礎類庫,如Windows API、OpenGL(Open Graphics Library)圖形庫及Visual C++MFC類庫,這些是本文三維仿真平臺得以實現(xiàn)和應用的必要基礎,處在平臺的最底層。其中,OpenGL是繪制高真實感三維圖形,實現(xiàn)交互式視景仿真和虛擬現(xiàn)實的高性能三維圖形庫,是目前應用最廣泛的三維圖形應用程序設計接口之一,也是行業(yè)領域中最廣為接納的計算機圖形標準[2]。作為圖形硬件的軟件接口,OpenGL包括了超過700個圖形操作函數(shù),它們分別屬于OpenGL的核心庫(gl)、實用庫(glu)、輔助庫(aux)、實用工具集(glut)、窗口庫(glx、agl、wgl)和擴展函數(shù)庫等不同的庫。OpenGL的一個長處就是其靈活的擴展機制,擴展函數(shù)庫正是硬件廠商為實現(xiàn)硬件更新,利用OpenGL的擴展機制開發(fā)的函數(shù),軟件開發(fā)人員可以通過OpenGL擴展使用最新的硬件功能。Visual C++MFC(Microsoft Foundation Classes),是微軟公司提供的基礎類庫,是一種應用程序框架,隨Visual C++開發(fā)工具發(fā)布,MFC提供了應用程序向?qū)ё詣由煽蚣埽蟠蠛喕藨贸绦虺跏伎蚣艿臉嫿ê徒缑娴脑O計。

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

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

        1.2 平臺模塊結構

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

        圖2 平臺功能模塊結構

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

        2 模塊功能及關鍵技術研究

        以下分別介紹各模塊的主要功能,同時就其中的關鍵技術進行深入研究。

        2.1 紋理映射模塊

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

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

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

        2.2 文字模塊

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

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

        2.3 幾何運算模塊

        幾何運算模塊主要處理各種幾何元素及幾何變換的運算。

        該模塊定義了點、矢量等基本幾何元素的數(shù)據(jù)結構,實現(xiàn)了相應的C++類,可供其他模塊開發(fā)時用來定義更復雜的數(shù)據(jù)結構和幾何運算。

        2.4 高級圖元繪制模塊

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

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

        2.5 對象拾取模塊

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

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

        2.6 視圖窗口模塊

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

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

        2.7 渲染控制模塊

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

        2.8 相機模塊

        相機模塊主要處理三維視景體的設置及操作,類似于照相機的取景功能,包括視點坐標系設置、模型視圖變換、投影變換和視口變換。

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

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

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

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

        2.10 場景構建繪制模塊

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

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

        圖3 場景實體構建繪制的程序框架

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

        圖4 場景實體類層次結構示意

        2.11 場景漫游控制模塊

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

        2.12 場景顯示控制模塊

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

        2.13 信息查詢顯示模塊

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

        2.14 場景輸出模塊

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

        3 應用方法

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

        4 開發(fā)實例

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

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

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

        [1]羅昔軍,馬征.定制軟件開發(fā)平臺的研究與設計[J].計算機技術與自動化,2006,6(2):108-110

        [2]呂希奎,周小平.實戰(zhàn)OpenGL三維可視化系統(tǒng)開發(fā)與源碼精解[M].北京:電子工業(yè)出版社,2009:10-16

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

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

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

        猜你喜歡
        視圖紋理繪制
        Art on coffee cups
        基于BM3D的復雜紋理區(qū)域圖像去噪
        軟件(2020年3期)2020-04-20 01:45:18
        使用紋理疊加添加藝術畫特效
        放學后
        童話世界(2018年17期)2018-07-30 01:52:02
        5.3 視圖與投影
        視圖
        TEXTURE ON TEXTURE質(zhì)地上的紋理
        Coco薇(2017年8期)2017-08-03 15:23:38
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        消除凹凸紋理有妙招!
        Coco薇(2015年5期)2016-03-29 23:22:15
        麻豆91蜜桃传媒在线观看| 九九99久久精品在免费线97| 成人免费视频在线观看| 国产视频网站一区二区三区| 亚洲另类国产精品中文字幕| 久久精品国产亚洲av精东 | 天天色天天操天天日天天射| 门卫又粗又大又长好爽| 久久久精品人妻一区亚美研究所| 无码中文字幕专区一二三| 久久精品国产亚洲av日韩一| 亚洲av国产av综合av卡| 男女18禁啪啪无遮挡| 久久精品国波多野结衣| 国产麻豆剧传媒精品国产av蜜桃| 国产激情视频在线观看首页| 国产精品久色婷婷不卡| 亚洲αv在线精品糸列| 国产成人无码一区二区在线观看| 无码一区二区三区不卡AV| 网红尤物泛滥白浆正在播放 | 蜜桃久久综合一区二区| 国产精品一区二区三区自拍| 老妇女性较大毛片| 精品无码国产污污污免费| 国产西西裸体一级黄色大片| 亚洲自拍偷拍色图综合| a级毛片免费完整视频| 亚洲AV综合久久九九| 国产精品视频白浆免费看| 久久精品国产字幕高潮| 男人和女人高潮免费网站| 中文字幕麻豆一区二区| 亚洲精品第一页在线观看| 好看的欧美熟妇www在线| 亚洲国产成人AⅤ片在线观看| 国产91精品自拍视频| 日韩av无码久久一区二区| 久久精品国产日本波多麻结衣| 日韩有码中文字幕av| 青春草在线视频观看|