激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

基于OpenGL的邦寶模型積木分析系統設計與實(shí)現

時(shí)間:2024-10-11 09:10:30 研究生論文 我要投稿
  • 相關(guān)推薦

基于OpenGL的邦寶模型積木分析系統設計與實(shí)現

  摘 要:由于傳統單憑經(jīng)驗使用插座式積木搭建大型場(chǎng)景模型時(shí)會(huì )出現費時(shí)費力,無(wú)法提前統計成本等難題,所以急需開(kāi)發(fā)出一個(gè)積木智能搭建系統。邦寶模型積木分析系統正是應企業(yè)需求開(kāi)發(fā),涉及到智能選擇不同形狀的積木來(lái)完成每一層的鋪設、上下層交叉鋪設、模型不同位置不同染色、減少零碎顆粒等要求,針對這種情況,提出了基于OpenGL技術(shù),設計出相應的算法。本文從工程應用的角度出發(fā),簡(jiǎn)要介紹了3DS文件格式,系統用到的開(kāi)發(fā)平臺及OpenGL技術(shù),整個(gè)系統的結構總框架及功能,基于掃描法的柵格化算法、單層積木鋪設算法及上下層粘連性檢驗算法。在此基礎上實(shí)現了從3D模型文件導入、模型調整、切片分層、顆;捷敵龇e木搭建方案的全自動(dòng)化。

  關(guān)鍵詞:積木;OpenGL;3D模型

  引言

  隨著(zhù)當今時(shí)代計算機技術(shù)的突飛猛進(jìn),三維圖形技術(shù)在建筑虛擬、場(chǎng)景漫游、虛擬教育、3D游戲等各方面的應用越來(lái)越廣泛。同時(shí)各種3D模擬積木軟件也得到迅猛的發(fā)展,目前國內外應用較多的軟件有Lego Digital Designer、MLCad、LDView、LPub等,雖然這些都是非常優(yōu)秀的3D模擬積木軟件,但它們并沒(méi)有一個(gè)軟件能徹底解決從三維模型導入、模型調整、切片分層、顆;捷敵龇e木搭建方案的全自動(dòng)化。

  OpenGL是一個(gè)功能強大的三維圖形開(kāi)發(fā)接口,由于它方便而強大的三維圖形的繪制功能,并具有可靠性高、可擴展性、可伸縮性、容易使用、靈活性和可移植性等優(yōu)點(diǎn),因此應用OpenGL開(kāi)發(fā)技術(shù)能夠極大地提高開(kāi)發(fā)效率。盡管很多文獻[1-4]介紹了利用OpenGL技術(shù)對3DS模型數據進(jìn)行讀取、顯示和控制的方法,但大多數只涉及到基本的靜態(tài)3DS模型數據的使用,并沒(méi)有對動(dòng)態(tài)數據進(jìn)行處理。本文基于OpenGL技術(shù)對邦寶模型積木分析系統進(jìn)行了研究,通過(guò)這個(gè)系統,我們可以讀取出3DS模型文件并對其進(jìn)行顯示控制,然后通過(guò)切片、顆;纫幌盗胁僮饔嬎愠鲈谑褂冒顚毣静考罱ㄒ粋(gè)模型時(shí)所需要的部件種類(lèi)、個(gè)數及每層的積木搭建排列,進(jìn)一步計算出整個(gè)模型所用積木的總重量及總價(jià)格。

  一、3DS文件格式簡(jiǎn)介

  3DS是Autodesk公司存儲3D模型數據的一種文件格式。

  3DS文件結構由許多塊組成,每個(gè)塊由信息類(lèi)別和下一個(gè)塊的相對位置兩部分組成,其中塊的信息類(lèi)別用ID來(lái)標識。由于每個(gè)塊指出了下一個(gè)塊的相對于該塊起始位置的偏移字節數,這樣即使你不明白這個(gè)塊的含義,也可以很容易地忽略它。與許多文件格式一樣,3DS二進(jìn)制文件中的數據也是按低位在前、高位在后的方式組織的。例如,兩個(gè)十六進(jìn)制字節0x4A5C組成的整型數,表明5C是高位字節,4A是低位字節[5]。

  3DS文件中塊的前兩項信息分別是塊的ID和塊的長(cháng)度,其中塊的ID是一個(gè)整型數,而塊的長(cháng)度是一個(gè)塊相對于該塊的字節偏移量,是一個(gè)長(cháng)整型數。3DS文件中每個(gè)塊是一個(gè)層次結構,不同類(lèi)型的塊具有不同的層次結構。每一個(gè)3DS文件的開(kāi)頭都是由一個(gè)根塊構成,它包含了整個(gè)文件,其ID是0x4D4D。根塊內的塊稱(chēng)為主塊,主塊有3D編輯程序塊和關(guān)鍵幀塊兩種類(lèi)型。主塊后面是該主塊所包括的子塊,而3D編輯程序塊是物體的形體數據定義的開(kāi)始。3D編輯程序塊的子塊包括材質(zhì)列表塊、物體塊等,而物體塊又包含了網(wǎng)格塊、亮度信息塊、相機參數塊等。其中網(wǎng)格塊包括位置信息塊、頂點(diǎn)列表塊、面信息塊等;關(guān)鍵幀塊定義關(guān)鍵幀的信息。3DS文件這種復雜的塊層次結構的優(yōu)勢在于即使我們并不知道每一個(gè)塊的具體含義,在程序中讀取3DS文件類(lèi)型的模型時(shí),完全可以忽略掉那些不感興趣或不需要的塊信息,僅讀取所需要的塊。

  二、開(kāi)發(fā)平臺和技術(shù)

  2.1 使用C#編程語(yǔ)言

  C#是一種完全建立在Microsoft.NET框架平臺上的高級編程語(yǔ)言,它幾乎集中了所有關(guān)于軟件開(kāi)發(fā)和軟件工程研究的最新成果,如面向對象、類(lèi)型安全等。C#充分利用了.NET框架的優(yōu)點(diǎn),是開(kāi)發(fā).NET框架應用程序最好的語(yǔ)言之一。與VC++相比,C#的程序調試更加容易,語(yǔ)法更加簡(jiǎn)潔,且可以更加快速地開(kāi)發(fā)應用程序。把C#和OpenGL結合起來(lái)開(kāi)發(fā)3D圖形程序和軟件,將顯著(zhù)提高開(kāi)發(fā)效率[6]。

  2.2 使用OpenGL技術(shù)

  OpenGL的英文全稱(chēng)是“Open Graphics Library”,即“開(kāi)放性圖形庫”,它是計算機工業(yè)標準3D應用程序接口,是一個(gè)功能強大,調用方便的底層3D圖形庫。作為圖形硬件的軟件接口,OpenGL由幾百個(gè)指令或函數組成,這些指令允許用戶(hù)說(shuō)明二維幾何對象或三維幾何對象,允許用戶(hù)對對象實(shí)施操作以便把這些對象著(zhù)色到幀存上。OpenGL作為一個(gè)性能優(yōu)越的圖形應用程序設計界面(API),適用于廣泛的計算機環(huán)境。OpenGL是一套底層三維圖形API,之所以稱(chēng)之為底層API,是因為它沒(méi)有提供幾何實(shí)體圖元,不能直接用以描述場(chǎng)景。但通過(guò)一些轉換程序,可以很方便的將AutoCAD、3DS等圖形設計軟件制作的3DS模型文件轉換成OpenGL的頂點(diǎn)數據。由于OpenGL提供了清晰明了的圖形函數,所以不要求開(kāi)發(fā)者把三維物體模型的數據寫(xiě)成固定的數據格式,開(kāi)發(fā)者不但可以直接使用自己的數據,而且可以利用其它不同格式的數據源,這種靈活性極大地節省了開(kāi)發(fā)時(shí)間,提高了開(kāi)發(fā)效率。因此我們選擇使用OpenGL技術(shù)進(jìn)行開(kāi)發(fā)。

  2.3 在C#中使用Tao框架實(shí)現OpenGL建模技術(shù)

  由于OpenGL的廣泛應用,它已經(jīng)成為了一個(gè)工業(yè)標準。

  目前雖然有很多軟件開(kāi)發(fā)商提供的程序設計語(yǔ)言都提供了對開(kāi)發(fā)基于OpenGL應用軟件的支持,如Visual C++,C++builder等。但是并沒(méi)有提供在C#中開(kāi)發(fā)OpenGL的標準和規范的方法,而且,在.NET框架中也沒(méi)有提供0penGL API的接口。目前在C#中可以通過(guò)CsGL等第三方軟件進(jìn)行OpenGL建模的技術(shù),也可以基于Tao技術(shù),因為T(mén)ao Framework提供了許多基于.NET和Mono的庫,它是由美國華盛頓大學(xué)分布式對象計算組織開(kāi)發(fā)的開(kāi)放源碼的CORBA(通用對象請求代理體系結構)產(chǎn)品,它實(shí)現了C0RBA2.6規范中的說(shuō)明。因此,我們利用Tao框架實(shí)現在C#中進(jìn)行OpenGL建模的方法[7]。

  2.4 使用SharpGL擴展庫

  SharpGL是C#對OpenGL庫的封裝,是一個(gè)方便我們在Windows窗體中和WPF中使用OpenGL的擴展庫,它能夠設置一個(gè)強大的場(chǎng)景圖和Visual Studio模板。SharpGL擴展庫包裝了所有當前的OpenGL函數,所有主要的擴展和一套豐富的先進(jìn)功能的對象,并且能夠將代碼移植到其它的平臺中,所以我們使用它很容易開(kāi)發(fā)出3D圖形程序。它的命名空間包括:

 、賁harpGL:包含OpenGL的主要對象,這個(gè)對象封裝了所有的OpenGL函數、枚舉和擴展。

 、赟harpGL.SceneGraph:包含所有包裝OpenGL的對象和場(chǎng)景中的元素-燈光、材料、紋理、材質(zhì)等。

 、跾harpGL.WinForms:為我們的應用程序包含Windows窗體控件。

 、躍harpGL.WPF:為我們的應用程序包含WPF控件。

 、軸harpGL.Serialization:包含用于裝載幾何和來(lái)自于3D Studio Max文件的數據,不引人注意的obj文件和truespace文件的類(lèi)。

  三、邦寶模型積木分析系統設計與實(shí)現

  3.1 系統概述

  積木是公認能培養兒童創(chuàng )造力、學(xué)習能力以及訓練手眼協(xié)調的最佳工具,積木中的排列,接合,環(huán)形,對稱(chēng)等都對開(kāi)發(fā)孩子的智力有好處。積木的生產(chǎn)是個(gè)很有發(fā)展前景的項目,但是由于組成實(shí)物的小積木塊,一般都由幾百、幾千甚至上萬(wàn)個(gè)小積木組成,零件的數據量龐大,目前大部分玩具廠(chǎng)商都是先通過(guò)先人手動(dòng)地拼成我們需要的積木實(shí)體形狀,再統計所需的積木小零件的種類(lèi)和總個(gè)數,最后交由工廠(chǎng)生產(chǎn),顯然這過(guò)程的任務(wù)很繁重,拼裝設計時(shí)稍微的改動(dòng)對整體的影響很大,效率也很低。如果積木的拼裝和統計能用計算機模擬,那將極大地節約人力、物力和成本。因此,我們急需開(kāi)發(fā)出一個(gè)系統,能夠用計算機來(lái)實(shí)現從三維模型導入、模型調整、切片分層、顆;捷敵龇e木搭建方案的全自動(dòng)化,這樣既能節約生產(chǎn)成本和生產(chǎn)周期,又能提供實(shí)踐指導。

  本系統的目標就是建立一個(gè)3D圖形應用程序,用于計算在使用邦寶基本部件搭建一個(gè)模型時(shí)所需要的部件種類(lèi)、個(gè)數及輸出每層的積木搭建排列方案,進(jìn)一步計算出搭建這樣的模型時(shí)的初步報價(jià)。不同形狀的積木可以由不同的顆粒狀的積木塊(積木磚)組成,積木的拼裝過(guò)程整體上可以看出是從下到上(或從上到下)。對于給定實(shí)物模型的3D外觀(guān)數據,用計算機模擬分層切割過(guò)程,計算出每層的排列情況并顯示,且滿(mǎn)足以下條件:

 、偎玫姆e木塊數量總數盡量少,即中心部分是骨架連接或鏤空的。

 、谄闯珊蠓e木盡可能的牢固。

 、燮闯珊蟊M可能的逼近原始形狀的物體。

  3.2 系統結構總框架設計

  邦寶模型積木分析系統主要包括八大功能模塊,即數據導入、數據管理、模型副本管理、模型副本分層、分層顆;、積木搭建、查看三維圖、數據導出,這些模塊又是由若干個(gè)子模塊構成的,系統結構總框架如下圖所示:

  圖一 系統結構總框架圖

  3.3 系統的主要功能介紹

  系統的主要功能如下:

 、贁祿䦟

  基本部件:導入邦寶基本部件的3DS文件。

  三維模型:導入模型的3DS文件。

 、跀祿芾

  數據修改:修改部件及模型的基本數據并保存在數據庫。

  數據計算:計算部件及模型的長(cháng)、寬、高等數據并保存在A(yíng)ccess數據庫。

  數據增刪:添加或刪除部件或模型的相關(guān)數據。

 、勰P透北竟芾

  副本增刪:按某個(gè)比例放大或縮小原始模型來(lái)添加其副本或刪除模型副本及其相關(guān)數據。

  副本編輯:修改模型副本的相關(guān)數據,設置鏤空壁厚、分層方式等參數并保存在A(yíng)ccess數據庫。

 、苣P透北痉謱

  部件選擇:可以選擇不同類(lèi)型的部件,如小顆粒塊(磚)等, 按所選部件的高度將模型等距地分為若干層并進(jìn)行切片操作。

  最優(yōu)分層:將各層分層后所得矢量多邊形進(jìn)行柵格化,并提供基礎性的鏤空及編輯功能(一般大型積木模型不會(huì )是實(shí)心的)。

 、莘謱宇w;

  顆;簩⒎謱拥玫降钠矫娑噙呅斡貌煌伾男》綁K最佳覆蓋,對模型的所有層進(jìn)行顆;。

  鏤空設定:用戶(hù)可以調整鏤空時(shí)的厚度參數。

 、薹e木搭建

  底層排列:第一層是底層,在此層的部件排列方式與其它層不同。

  逐層排列:每層在它下層排列的基礎上進(jìn)行積木排列,準許用戶(hù)調整鏤空時(shí)的厚度參數,并提供上下層粘連性檢驗,但要保證搭建的模型牢固。

 、卟榭慈S圖

  三維顯示及編輯:查看部件和模型的三維圖,能夠用鼠標進(jìn)行三維圖的旋轉、縮放和平移等交互操作,并提供對積木模型的編輯功能,如對某塊積木的增刪、著(zhù)色、移動(dòng)等。

  單層顯示:查看整個(gè)模型每一層的三維圖。

  雙層顯示:查看整個(gè)模型每?jì)蓪盈B加在一起的三維圖。

  三層顯示:查看整個(gè)模型每三層疊加在一起的三維圖。

  所有層顯示:查看整個(gè)模型所有層的三維圖。

 、鄶祿䦟С

  積木統計:系統可以計算出模型中總共使用的部件種類(lèi)及其數量,進(jìn)而計算出其總重量及總價(jià)格。

  數據導出:系統可以導出3DS和bmp格式的文件。

  3.4 系統的核心算法簡(jiǎn)介

  3.4.1 3DS文件導入算法

  在數據讀取之前,首先要建立存儲點(diǎn)、面、材質(zhì)、對象等信息的數據結構,以用來(lái)保存3DS模型數據。OpenGL讀取3DS的算法思路是:首先根據偏移量和長(cháng)度找到一個(gè)塊的ID標識符,再根據這個(gè)來(lái)判斷它是什么塊,遇到我們需要的塊,就進(jìn)一步讀取,如果不需要,直接忽略這一塊,讀取下面的塊,最后循環(huán)遍歷所有的塊,即讀出各個(gè)數據塊[9]。

  讀取出3DS文件后,需要在OpenGL環(huán)境下將讀出來(lái)并存在數據結構中的3DS文件信息繪制出來(lái)。在繪制場(chǎng)景時(shí),首先計算法向量,它直接影響到光線(xiàn)從不同的角度入射到模型表面,產(chǎn)生不同的顯示結果,如果法向量不確定,三維效果的圖形是顯示不出來(lái)的。再通過(guò)模型的各種變換來(lái)實(shí)現法向量的計算,本系統首先遍歷對象的面和頂點(diǎn)的所有信息,從而計算出這些信息的法向量,并將法向量添加到法向量列表中。然后根據存儲在自定義的數據結構的信息,這樣OpenGL就能將模型繪制出來(lái)。

  3.4.2 基于掃描法的柵格化算法

  整個(gè)模型的顆;枰獙δP透北舅蟹謱拥玫降氖噶慷噙呅芜M(jìn)行柵格化。目前雖然已存在多種柵格化算法[10],如常見(jiàn)的有內部點(diǎn)擴散法、邊界代數法、邊界點(diǎn)跟蹤算法、射線(xiàn)法、掃描法等,但每種算法都有自己的缺陷。本系統采用了各方面性能比較平衡的掃描法,雖然避免了上述的內部填充過(guò)程,但模型的顆;K在設計的過(guò)程中還遇到了一些特殊問(wèn)題。因此本系統的算法設計在掃描法的基礎上,添加了橫邊表并制定了更加詳細的規則,使其能正確處理各種特殊情況。

  3.4.3 單層積木鋪設算法

  根據現實(shí)中經(jīng)驗豐富的員工搭建的每一層積木大體上是十分規律的,只是在局部上作出某些調整。因此在本系統提出這樣一種算法,這種算法可分三個(gè)部分,一是利用“基本件”的特點(diǎn),選取了1×1、1×2、1×3、2×2、2×3和“L型拐”這6種積木為基本鋪設顆粒,采用貪心加局部搜索的算法鋪設;二是為了減少零碎顆粒,就近調整“單粒”;三是“并小為大”,將基本鋪設顆粒拼合成大的積木。結果證明,此算法可以很好地完成積木鋪設問(wèn)題。

  3.4.4 上下層粘連性檢驗算法

  一個(gè)合格的積木模型搭建方案必須確保這個(gè)積木模型不散架,在本系統中,通過(guò)上下層粘連性檢驗算法來(lái)達到這一效果。這個(gè)算法可分為兩個(gè)方面,一是相鄰層采用不同的優(yōu)先順序可以巧妙地使相鄰層的積木盡量多的交叉相扣,增強上下層的粘連性;二是結合并查集算法,將每塊積木視為圖中的一個(gè)結點(diǎn),為積木粘連問(wèn)題建立圖論模型。通過(guò)這兩個(gè)方面的相互配合,不僅在一定程度上提高了運算速率,而且較好地保證了模型的粘連性。

  四、結束語(yǔ)

  邦寶模型積木分析系統的成功使用,能夠用計算機實(shí)現從三維模型導入、模型調整、切片分層、顆;捷敵龇e木搭建方案的全自動(dòng)化。這不僅在一定程度上節約了大型模型的搭建時(shí)間和生產(chǎn)成本,而且為員工提供了實(shí)踐指導,有效地提高了工作效率。本文基于OpenGL技術(shù)對邦寶模型積木分析系統進(jìn)行了研究,簡(jiǎn)要介紹了實(shí)現這一系統所需的開(kāi)發(fā)平臺、技術(shù)及算法。由于時(shí)間和知識水平的限制,本系統還存在著(zhù)很多的不足之處,比如在整個(gè)積木模型的內部鏤空、積木模型的受力分析(如積木懸空部分、倒吊部分)等方面還是比較不足的。對此,我們可以進(jìn)一步研究,將本系統的相關(guān)知識運用到其他工程項目中。

  參考文獻:

  [1]施瑞奈爾(DaveShreiner).OpenGL編程指南[M].北京:機械工業(yè)出版社,2010.

  [2]賴(lài)特(RichardS.Wright.Jr).OpenGL超級寶典[M].北京:人民郵電出版社,2010.

  [3]Donald Hearn,M.Pauline Baker.計算機圖形學(xué)(第四版)[M].北京:電子工業(yè)出版社,2012.

  [4]呂?,周小平.實(shí)戰OpenGL三維可視化系統與源碼精解[M].北京:電子工業(yè)出版社,2009.

  [5]劉芳,劉賢梅.3DS文件讀取、繪制與控制方法的研究與應用[J].計算機工程與設計,2009,30(19):4575-4578.

  [6]高明向,陳定方.OpenGL建模技術(shù)在C#中的實(shí)現[J].武漢理工大學(xué)學(xué)報,2005,27(1):65-68.

  [7]門(mén)光福,田芳.基于Tao框架的C#中OpenGL建模技術(shù)的實(shí)現[J].新余高專(zhuān)學(xué)報,2006,11(6):73-74.

  [8]殷素峰,高雪強,楊勝強.在OpenGL環(huán)境下開(kāi)發(fā)3DS 文件瀏覽器[J].工程圖學(xué)學(xué)報,2005,26(6):22-25.

  [9]陳雪梅,謝清鐘.淺析一種運用OpenGL導入顯示3DS三維模型的方法[J].吉林省教育學(xué)院學(xué)報,2012,28(299):86-87.

  [10]周琛,陳振杰,張帥.基于邊界代數法的矢量柵格化并行算法設計與實(shí)現[J].計算機工程與科學(xué),2013,35(4):37-41.

【基于OpenGL的邦寶模型積木分析系統設計與實(shí)現】相關(guān)文章:

基于PQRM的PACS系統設計與實(shí)現03-07

基于MVC模式的BBS系統設計與實(shí)現03-08

基于A(yíng)SP的網(wǎng)絡(luò )考試系統的設計與實(shí)現03-07

基于OSI參考模型的測井系統互連設計03-07

基于MX21的PMP系統的設計與實(shí)現11-22

基于GPRS的城市供水遠程監控系統的設計與實(shí)現11-22

衛浴銷(xiāo)售分析系統設計與實(shí)現開(kāi)題報告03-27

關(guān)于設計管理系統信息需求的分析與實(shí)現03-03

基于on-off模型設計與OPNET仿真的P-ALOHA系統性能分析03-07

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频