版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 論文題目:_3D飛行訓練系統(tǒng)的設計與實現(xiàn)_</p><p><b> 目錄</b></p><p><b> 摘 要1</b></p><p><b> 第一章 緒論2</b></p><p> 1.1研究3D飛行訓練系統(tǒng)的背景及研究的意義
2、2</p><p> 1.2 飛行訓練系統(tǒng)的國內外研究現(xiàn)狀2</p><p> 1.3 本論文的基本路線3</p><p> 第二章 基于OpenGL+MFC的建?;A4</p><p> 2.1 OpenGL的概念4</p><p> 2.2 OpenGL的發(fā)展歷程4</p><
3、;p> 2.3 OpenGL的渲染管道5</p><p> 2.3.1顯示列表 5</p><p> 2.3.2求值程序6</p><p> 2.3.3基于頂點的操作6</p><p> 2.3.4初步組裝6</p><p> 2.3.5像素操作6</p><p>
4、 2.3.6紋理裝配6</p><p> 2.4 MFC的概述6</p><p> 2.5MFC的特點7</p><p><b> 2.5.1封裝7</b></p><p><b> 2.5.2繼承7</b></p><p> 2.5.3虛擬函數(shù)和動態(tài)約
5、束7</p><p> 2.6 MFC的編程框架8</p><p> 2.6.1 MFC的宏觀框架體系8</p><p> 2.7MDI應用程序構成8</p><p> 2.7.1構成應用程序對象8</p><p> 2.7.2構成應用程序的對象之間的關系10</p><p&g
6、t; 2.7.3構成應用程序的文件10</p><p> 2.8 基于OpenGL+MFC的三維模擬的編程環(huán)境配置11</p><p> 第三章飛行訓練系統(tǒng)的設計及實現(xiàn)14</p><p> 3.1 系統(tǒng)的設計14</p><p> 3.1.1系統(tǒng)結構的類14</p><p> 3.1.2 場景繪
7、制及渲染16</p><p> 3.1.3 飛機訓練系統(tǒng)的關鍵模擬技術17</p><p> 3.1.4 加載矩陣,控制模型變換19</p><p> 3.2系統(tǒng)實現(xiàn)的原理及關鍵技術19</p><p> 3.2.1基本的OpenGL幾何變換20</p><p> 3.2.2 三維平移20<
8、/p><p> 3.3 實驗結果效果圖22</p><p> 第四章 結論與展望24</p><p><b> 參考文獻25</b></p><p><b> 致 謝26</b></p><p><b> 摘 要</b></p&g
9、t;<p> 研究在普通的PC 機下開發(fā)高質量的視景仿真系統(tǒng)。在Windows NT 系統(tǒng)下,以Visual C + + 為開發(fā)平臺,利用OpenGL和串口技術,運用面向對象的編程思想,采用MFC 的編程方法[1]。首先簡介了OpenGL 及如何利用它進行復雜的三維建模、文本顯示、天空和地形繪制以及動畫生成的技術。本文在OpenGL的開發(fā)基礎上,開發(fā)通過鼠標和鍵盤進行操作的虛擬飛行訓練系統(tǒng),通過飛行訓練系統(tǒng)為飛行員提供了
10、零危險的飛行訓練,飛行訓練系統(tǒng)提供了一個身臨其境的交互式仿真環(huán)境,對飛行訓練中的場景進行模擬,實現(xiàn)了人機自然交互;實驗表明本文的方法在OpenGL場景中仿真飛機的飛行狀態(tài),如實的反應出飛機的飛行狀態(tài)。最終,較好地解決了飛行器三維實時顯示與逼真的場景之間的矛盾[2]。</p><p> 關鍵詞:開放式圖形庫;動畫;仿真;建模;</p><p><b> ABSTRACT<
11、/b></p><p> This article focus on the study of developing simulation system running on PC. We implement the simulation using OOP method on the platform integrated with VC++ and OpenGL. First introduced t
12、he OpenGL and how to use it for complex 3d modeling, text display, the sky and the terrain rendering and animation of technology. The developed virtual flight training system provided users with friendly manipulations of
13、 keyboard and mouse for rich control. This kind of flight training system can remarkably </p><p> KEYWORDS : OpenGL ; Animation ; Simulation ; Modeling</p><p><b> 第一章 緒論</b></p
14、><p> 1.1研究3D飛行訓練系統(tǒng)的背景及研究的意義</p><p> 過去,在航空航天和軍事仿真等領域的許多系統(tǒng)的開發(fā)研制過程中,飛行器的研制往往依靠飛行實驗來完成型號的定型,研制過程漫長而且花費巨大。目前,隨著計算機多媒體技術、可視化技術及圖形學技術的發(fā)展,我們可以使用計算機來精確地再現(xiàn)現(xiàn)實世界中的絢麗多彩的三維物體,并充分發(fā)揮自身的創(chuàng)造性思維,通過人機交互來模擬、改造現(xiàn)實世界,這
15、就是目前最為時髦的虛擬現(xiàn)實技術。通過這種技術,建筑工程師可以直接設計出美觀的樓房模型;軍事指揮員可以模擬戰(zhàn)場進行軍事推演,網(wǎng)民可以足不出戶游覽故宮博物館等名勝古跡等。而虛擬現(xiàn)實技術最重要的一部分內容就是三維圖形編程。用三維仿真系統(tǒng)進行模擬飛行訓練是國內外通常采用的有效方法。OpenGL是一個開放式的針對圖形硬件的三維圖形軟件包,具有良好的平臺無關性,開發(fā)者可以利用它來建立三維模型和進行三維實時交互,從而實現(xiàn)所謂的“虛擬的真實”,所以多采
16、用OpenGL進行飛機三維仿真。</p><p> 1.2 飛行訓練系統(tǒng)的國內外研究現(xiàn)狀</p><p> 國外對于飛行訓練系統(tǒng)的研制最早從六自由度運動平臺開始逐步向集成化、綜合化發(fā)展,目前的系統(tǒng)已經(jīng)成為集電氣、機械、控制、自動化為一體的現(xiàn)代化高科技產(chǎn)品。國外的許多院校和研究機構都進行了飛行訓練系統(tǒng)的研究,比較著名的如Delft大學、荷蘭的NLR實驗室等[3],為系統(tǒng)的開發(fā)提供了技術支
17、持。美國空軍早在1969年就開始利用仿真系統(tǒng)[4]代替部分實際飛行,使用仿真系統(tǒng)后的飛行費用下降幅度達66%至95%。3D飛行訓練系統(tǒng)在模擬系統(tǒng)開發(fā)里起到了重要作用,它把研制的虛擬場景,在視覺上、操作訓練環(huán)境和程序形成高度逼真,有效解決院校和部隊飛行教學訓練中的難題,縮短了訓練周期,提高了訓練效益。</p><p> 飛行訓練系統(tǒng)已有了驚人的進步。其主要表現(xiàn)是:</p><p> 1、
18、飛行訓練視景系統(tǒng)經(jīng)歷了多次變革,經(jīng)由機械式、光學造影型和閉路電視系統(tǒng)發(fā)展到高逼真度的計算機成像視景系統(tǒng)。</p><p> 2、飛行員動感模擬,由原來無法模擬過載的固定機艙,發(fā)展成為可借助六自由度運動模擬系統(tǒng)支撐的模擬活動座艙。除此,還可以提供先進廉價的G座椅、抖動座椅、高G負荷黑視頭盔、模擬抗荷服等形式的動感模擬設施。</p><p> 3、作為飛行模擬器核心的仿真計算機系統(tǒng),在經(jīng)歷
19、了三次變革浪潮后,已進入全數(shù)字實時仿真階段,不僅有很寬譜型的仿真計算機體制結構可供人們選擇,而且高性能價格比的超級實時工作站已加入飛行模擬器的仿真計算機系統(tǒng)行列。</p><p> 4、多媒體技術、虛擬現(xiàn)實技術、分布交互仿真技術正在從根本上改變傳統(tǒng)飛行訓練系統(tǒng)的形式和結構。其次是系統(tǒng)功能和應用范圍的不斷擴大。飛行訓練系統(tǒng)由最初的僅提供飛行員操作使用,擴展到目前成為新機研制必不可少的手段,是現(xiàn)代航空理論、技術和方
20、法研究的主要支柱和新機首飛前的試飛員培訓的唯一工具。特別是地面飛行模擬技術同空中飛行模擬技術的結合所出現(xiàn)的空地綜合飛行模擬系統(tǒng),給改善飛行訓練系統(tǒng)性能和擴大模擬器應用領域開辟了一個新的途徑,進一步展現(xiàn)出了飛行訓練系統(tǒng)的廣闊發(fā)展空間。</p><p> 我國計算機訓練系統(tǒng)領域在50年代末開始對飛機控制系統(tǒng)進行仿真實驗[5],自行研制了仿真設備,在“七五”、“八五”期間,我國建立了一批大型的仿真實驗室或仿真系統(tǒng),我
21、我國研制飛機的過程中發(fā)揮了重要的作用。</p><p> 通過對比國內外飛行訓練系統(tǒng)的發(fā)展狀況可以得到下述結論:</p><p> 1、國外飛行訓練系統(tǒng)具有豐富的經(jīng)驗,國內對于飛行訓練系統(tǒng)在軍用模擬上雖有較大的發(fā)展,但軍用飛行訓練系統(tǒng)考慮到戰(zhàn)術、機動性等方面的要求,較多采用的為固定基座的模擬,通過視景和抖振座椅實現(xiàn)飛機的動感模擬,逼真度相對較差。在民用飛行模擬器上的發(fā)展緩慢。</
22、p><p> 2、在系統(tǒng)集成上,國外具有較好的經(jīng)驗積累,可以進行多種條件下的綜合集成,而國內在飛行訓練系統(tǒng)方面,還處于嘗試階段,主要的產(chǎn)品還依靠國外的系統(tǒng),主要系統(tǒng)的集成化程度不高。</p><p> 3、國內使用的技術多數(shù)參照國外的經(jīng)驗技術,自主開發(fā)的較少,沒有形成獨有的技術體系,同國外相比競爭力等相對較差。</p><p> 1.3 本論文的基本路線</
23、p><p> 由于硬件的限制,本文著重的模擬通過鼠標和鍵盤的系統(tǒng)交互式操作,進而對仿真飛行訓練系統(tǒng)的的實現(xiàn)。</p><p> 論文的的章節(jié)安排如下:</p><p> 第一章:分析研究飛行訓練系統(tǒng)的重要性,對飛行訓練系統(tǒng)的特點、研究現(xiàn)狀進行了概述,對飛行仿真技術進行了介紹。</p><p> 第二章:簡單的介紹了OpenGL及MFC的建
24、?;A,分析了OpenGL的渲染管道,MFC中的各種類結合起來構成了一個應用程序框架,MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法。</p><p> :飛行訓練系統(tǒng)的設計及實現(xiàn)。首先對系統(tǒng)的設計展開介紹,用結構圖表面系統(tǒng)的實現(xiàn)的步驟,闡述了系統(tǒng)的模型導入,關于矩陣的變換,所有變換都在三維空間中定義。要完成一次平移,需要引用平移子程序且設定三維平移向量。在旋轉函數(shù)中需指定經(jīng)過坐標系原點的旋轉軸
25、的角度和方向。以及對系統(tǒng)中場景繪制和渲染,使它看起來更真實。</p><p> 第四章: 在導入飛機模型后,使用鍵盤操作控制模型,運行系統(tǒng)得到很好的演示效果。</p><p> 第二章 基于OpenGL+MFC的建?;A</p><p> 2.1 OpenGL的概念</p><p> OpenGL? 是行業(yè)領域中最為廣泛接納的 2D/
26、3D 圖形 API, 其自誕生至今已催生了各種計算機平臺及設備上的數(shù)千優(yōu)秀應用程序。OpenGL? 是獨立于視窗操作系統(tǒng)或其它操作系統(tǒng)的,亦是網(wǎng)絡透明的。在包含CAD、內容創(chuàng)作、能源、娛樂、游戲開發(fā)、制造業(yè)、制藥業(yè)及虛擬現(xiàn)實等行業(yè)領域中,OpenGL? 幫助程序員實現(xiàn)在 PC、工作站、超級計算機等硬件設備上的高性能、極具沖擊力的高視覺表現(xiàn)力圖形處理軟件的開發(fā)。</p><p> OpenGL的前身是SGI公司為
27、其圖形工作站開發(fā)的IRIS GL。IRIS GL是一個工業(yè)標準的3D圖形軟件接口,功能雖然強大但是移植性不好,于是SGI公司便在IRIS GL的基礎上開發(fā)了OpenGL。OpenGL的英文全稱是“Open Graphics Library”,顧名思義,OpenGL便是“開放的圖形程序接口”。雖然DirectX在家用市場全面領先,但在專業(yè)高端繪圖領域,OpenGL是不能被取代的主角。 </p><p> 在Ope
28、nGL的基礎上還有Open Inventor、Cosmo3D、Optimizer等多種高級圖形庫,適應不同應用。其中,Open Inventor應用最為廣泛。該軟件是基于OpenGL面向對象的工具包,提供創(chuàng)建交互式3D圖形應用程序的對象和方法,提供了預定義的對象和用于交互的事件處理模塊,創(chuàng)建和編輯3D場景的高級應用程序單元,有打印對象和用其它圖形格式交換數(shù)據(jù)的能力。OpenGL的發(fā)展一直處于一種較為遲緩的態(tài)勢,每次版本的提高新增的技術
29、很少,大多只是對其中部分做出修改和完善。1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟件也可以在微機上運用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,并加入了一些新的功能。其中包括改進打印機支持,在增強元文件中包含OpenGL的調用,頂點數(shù)組的新特性,提高頂點位置、法線、
30、顏色、色彩指數(shù)、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。OpenGL 1.5又新增了“Ope</p><p> 2.2 OpenGL的發(fā)展歷程</p><p> 1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟件也可以在微機上運用。
31、</p><p> 1995年OpenGL的1.1版本面市,該版本較1.0性能提高許多,并加入了一些新的功能。包括提高頂點位置、法線、顏色、色彩指數(shù)、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。</p><p> 1997年,Windows 95下3D游戲的大量涌現(xiàn),游戲開發(fā)公司迫切需要一個功能強大、兼容性好的3D圖形接口,而當時微軟公司自己的3D圖形接口DirectX
32、 3.0功能卻是很糟糕。因而以制作《雷神之錘》等經(jīng)典3D射擊游戲而著名的id公司同其它一些游戲開發(fā)公司一同強烈要求微軟在Windows 95中加入對OpenGL的支持。微軟公司最終在Windows 95的OSR2版和后來的Windows 版本中加入了對OpenGL的支持。這樣,不但許多支持OpenGL的電腦3D游戲得到廣泛應用,而且許多在3D圖形設計軟件也可以運用支持OpenGL標準的3D加速卡,大大提高其3D圖形的處理速度。2003
33、年的7月28日,SGI和ARB公布了OpenGL 1.5。OpenGL 1.5中包括OpenGL ARB的正式擴展規(guī)格繪制語言“OpenGL Shading Language”。OpenGL 1.5的新功包括:頂點Buffer Object、Shadow功能、隱蔽查詢、非乘方紋理等。</p><p> 2004年8月,OpenGL2.0版本發(fā)布OpenGL 2.0標準的主要制訂者并非原來的SGI,而是逐漸在AR
34、B中占據(jù)主動地位的3Dlabs。OpenGL12.0支持OpenGL Shading Language、新的shader擴展特性以及其他多項增強特性。</p><p> 2008年8月初Khronos工作組在Siggraph 2008大會上宣布了OpenGL 3.0圖形接口規(guī)范,GLSL1.30 shader語言和其他新增功能將再次未來開放3D接口發(fā)展指明方向。</p><p> Op
35、enGL 3.0 API開發(fā)代號為Longs Peak,和以往一樣,OpenGL 3.0仍然作為一個開放性和跨平臺的3D圖形接口標準,在Shader語言盛行的今天,OGL3.0增加了新版本的shader語言:GLSL 1.30,可以充分發(fā)揮當前可編程圖形硬件的潛能。同時,OGL3.0還引入了一些新的功能,例如頂點矩陣對象,全幀緩存對象功能,32bit浮點紋理和渲染緩存,基于阻塞隊列的條件渲染,緊湊行半浮點頂點和像素數(shù)據(jù),四個新壓縮機制等
36、等。</p><p> 2009年3月又公布了升級版新規(guī)范OpenGL 3.1,也是這套跨平臺免費API有史以來的第九次更新。OpenGL 3.1將此前引入的OpenGL著色語言“GLSL”從1.30版升級到了1.40版,通過改進程序增強了對最新可編程圖形硬件的訪問,還有更高效的頂點處理、擴展的紋理功能、更彈性的緩沖管理等等。寬泛地講,OpenGL 3.1在3.0版的基礎上對整個API模型體系進行了簡化,可大幅
37、提高軟件開發(fā)效率。2009年8月Khronos小組發(fā)布了OpenGL 3.2,這是一年以來OpenGL進行的第三次重要升級。該版本仍然延續(xù)了OpenGL發(fā)展的方向讓圖形程序開發(fā)者能在多種操作系統(tǒng)和平臺下更好的利用新的GPU功能。OpenGL3.2版本提升了性能表現(xiàn)、改進了視覺質量、提高了幾何圖形處理速度,而且使Direct3D程序更容易移植為OpenGL。除OpenGL之外,Khronos還將其開發(fā)的其它標準進行了協(xié)調改進,以求可以在更
38、廣泛的領域提供強大的圖形功能和計算生態(tài)系統(tǒng),這些標準包括用于并行計算的OpenCL、用于移動3D圖形開發(fā)的OpenGL ES和用于網(wǎng)絡3D開發(fā)的WebGL。</p><p> Khronos旗下的OpenGL ARB(Architecture Review Board)工作組推出了GLSL 1.5OpenGLShading Language(OpenGL著色語言)的升級版,以及在OpenGL3.2框架下推出了兩
39、個新功能,可以讓開發(fā)者在開發(fā)新程序時能夠在使用流水線內核特性或兼容性特性之間做出選擇,其中兼容性特性會提供與舊版OpenGL之間的兼容性。</p><p> 2.3 OpenGL的渲染管道 </p><p> 大部分OpenGL的實現(xiàn)都有一個的相類似的操作順序,一系列處理階段稱為OpenGL渲染管道。這個順序(如下圖所示),對OpenGL的實現(xiàn)來說不是一套嚴格的規(guī)則,但是對我們了解Op
40、enGL將做什么有很好的幫助。</p><p> 下面的圖表顯示了一條福特工廠裝配流水線的過程,這就是OpenGL處理數(shù)據(jù)的過程。幾何數(shù)據(jù)(頂點、線、多邊形)跟隨著這些路徑通過這些代表求值程序和每一個頂點操作的盒子,而像素數(shù)據(jù)(像素、圖像、位圖)的部分加工處理過程有些不同。在將最后的像素數(shù)據(jù)寫到幀緩存前,兩種類型的數(shù)據(jù)都要經(jīng)過最后相同的步驟(光柵化和碎片操作)。</p><p> 圖2
41、.1 OpenGL處理數(shù)據(jù)流程</p><p> 現(xiàn)在可以看到OpenGL渲染管道中關鍵步驟的更加詳細的信息。</p><p><b> 2.3.1顯示列表</b></p><p> 所有數(shù)據(jù),無論是幾何描述或像素,都要被保存在一個顯示列表中以備用。(如果要將數(shù)據(jù)保留在顯示列表中,就要馬上處理這些數(shù)據(jù),這就是立即模式)。一旦顯示列表被執(zhí)行
42、,保留數(shù)據(jù)將從顯示列表中發(fā)送出去,就像在立即模式下被發(fā)送一樣。</p><p><b> 2.3.2求值程序</b></p><p> 所有幾何元素最后都要用頂點來描述。量化曲線和曲面可以用控制點和多項式函數(shù)(稱為基礎函數(shù))來初始描述。求值程序提供了一種方法可以從控制點來表示曲面。這個方法是多項式映射,它能夠從控制點產(chǎn)生曲面法線、材質坐標、顏色、空間坐標值。<
43、;/p><p> 2.3.3基于頂點的操作</p><p> 對于頂點數(shù)據(jù),下一步就是每一個頂點的操作步驟,它將這些頂點轉化程原始圖元。一些頂點數(shù)據(jù)(例如空間坐標)是用4x4的浮點矩陣轉換來的??臻g坐標是從3D世界上的一個點映射到你屏幕上的一個點。</p><p> 假如使用了更高級的屬性,這個步驟甚至更加復雜。假如使用了紋理,紋理坐標將要產(chǎn)生并轉換。假如光照效果
44、開啟,光照效果將使用轉換過的頂點、曲面法線、光源位置、材質屬性、其他光源的信息進行計算,產(chǎn)生一個顏色值。</p><p><b> 2.3.4初步組裝</b></p><p> 裁剪,一個初步組裝最主要的部分,是將可視空間外的部分幾何元素消除。點裁剪只是簡單的忽略或刪除該點;線或多邊形裁剪將會增加一些附加的點,當然這依賴于怎么裁剪。</p><
45、p> 在有些情況下,這是隨著透視處理發(fā)生的,它使遠處的幾何物體看起來更小一些。然后是視點和景深(z坐標)處理。假如淘汰功能是打開的,且是多邊形元素,它有可能通過淘汰監(jiān)測而被抑制。根據(jù)多邊形模式,一個多邊形有可能被畫成點或線。</p><p> 這個步驟的結果是用相關的顏色、景深、有時還有紋理坐標值和輔助線完成幾何元素的轉換和裁剪處理,為光柵化做準備。</p><p><b&
46、gt; 2.3.5像素操作</b></p><p> 在幾何數(shù)據(jù)通過OpenGL渲染管道的過程中,像素數(shù)據(jù)走的另外一條不同的路徑。像素從系統(tǒng)內存的一個數(shù)組中首先用其中一種格式解包到適當數(shù)量的組件中。然后數(shù)據(jù)將被縮放、偏離,和被像素表處理。結果被匯總然后寫入紋理內存或送入光柵化步驟。</p><p> 假如像素數(shù)據(jù)是用幀緩存中讀取的,像素轉換操作(縮放、偏離、映射、clam
47、ping)將被執(zhí)行。然后這些結果將被打包成適當?shù)母袷街匦路祷氐较到y(tǒng)內存的一個數(shù)組中。</p><p> 這兒有一些特殊的像素拷貝操作,用于一個幀緩存中拷貝數(shù)據(jù)到另外一個幀緩存或紋理內存。整個像素傳輸操作可以在數(shù)據(jù)寫到紋理內存或寫回到幀緩存中之前通過一條單獨的路徑進行。</p><p><b> 2.3.6紋理裝配</b></p><p>
48、 一個OpenGL程序也許希望能夠將圖像貼到幾何物體上去,使它看起來更加真實。假如使用了很多紋理貼圖,將它們放到紋理對象中是個明智的選擇,因為你能夠更容易的切換它們。</p><p> 一些OpenGL實現(xiàn)也許有專用的方法用于加速紋理貼圖的性能。這兒也許有專用的、高性能的紋理內存。假如這個內存是存在的,紋理對象將優(yōu)先使用這種有限的且非常有用的資源。</p><p><b>
49、光柵化</b></p><p> 光柵化是將幾何物體和像素數(shù)據(jù)轉換成片斷的轉換器。每一個片斷塊對應一個幀緩存中的像素。線和多邊形點、線寬、點大小、陰影模型、反走樣的平均計算都被綜合考慮,與頂點被連接成線或用于填充多邊形的點都被計算出來。每一個片斷塊的顏色和景深值都被賦值。</p><p> 2.4 MFC的概述</p><p> MFC是一個編程框
50、架,面前最新版本為10.0。MFC (Microsoft Foundation Class Library) 中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。Microsoft Visual C+
51、+提供了相應的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設計用戶接口;ClassWizard用來協(xié)助添加代碼到框架文件;最后編譯,則通過類庫實現(xiàn)了應用程序特定的邏輯。</p><p><b> 2.5MFC的特點</b></p><p> MFC (Microsoft Foundation Class
52、 Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現(xiàn)方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。Microsoft Visual C++提供了相應的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等
53、);資源編輯器用于幫助直觀地設計用戶接口;ClassWizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實現(xiàn)了應用程序特定的邏輯。</p><p><b> 2.5.1封裝</b></p><p> 構成MFC框架的是MFC類庫。MFC類庫是C++類庫。這些類或者封裝了Win32應用程序編程接口,或者封裝了應用程序的概念,或者封裝了OLE特性,或者封裝了
54、ODBC和DAO數(shù)據(jù)訪問的功能,等等,分述如下。 </p><p> ?。?)對Win32應用程序編程接口的封裝 </p><p> 用一個C++ Object來包裝一個Windows Object。例如:class CWnd是一個C++ window object,它把Windows window(HWND)和Windows window有關的API函數(shù)封裝在C++ window ob
55、ject的成員函數(shù)內,后者的成員變量m_hWnd就是前者的窗口句柄。 </p><p> (2)對應用程序概念的封裝 </p><p> 使用SDK編寫Windows應用程序時,總要定義窗口過程,登記Windows Class,創(chuàng)建窗口,等等。MFC把許多類似的處理封裝起來,替程序員完成這些工作。另外,MFC提出了以文檔-視圖為中心的編程模式,MFC類庫封裝了對它的支持。文檔是用戶操作
56、的數(shù)據(jù)對象,視圖是數(shù)據(jù)操作的窗口,用戶通過它處理、查看數(shù)據(jù)。</p><p> ?。?)對COM/OLE特性的封裝 </p><p> OLE建立在COM模型之上,由于支持OLE的應用程序必須實現(xiàn)一系列的接口(Interface),因而相當繁瑣。MFC的OLE類封裝了OLE API大量的復雜工作,這些類提供了實現(xiàn)OLE的更高級接口。 </p><p> ?。?)對
57、ODBC功能的封裝 </p><p> 以少量的能提供與ODBC之間更高級接口的C++類,封裝了ODBC API的大量的復雜的工作,提供了一種數(shù)據(jù)庫編程模式。 </p><p><b> 2.5.2繼承</b></p><p> 首先,MFC抽象出眾多類的共同特性,設計出一些基類作為實現(xiàn)其他類的基礎。這些類中,最重要的類是CObject和
58、CCmdTarget。CObject是MFC的根類,絕大多數(shù)MFC類是其派生的,包括CCmdTarget。CObject 實現(xiàn)了一些重要的特性,包括動態(tài)類信息、動態(tài)創(chuàng)建、對象序列化、對程序調試的支持,等等。所有從CObject派生的類都將具備或者可以具備CObject所擁有的特性。CCmdTarget通過封裝一些屬性和方法,提供了消息處理的架構。MFC中,任何可以處理消息的類都從CCmdTarget派生。 </p><
59、;p> 針對每種不同的對象,MFC都設計了一組類對這些對象進行封裝,每一組類都有一個基類,從基類派生出眾多更具體的類。這些對象包括以下種類:窗口對象,基類是CWnd;應用程序對象,基類是CwinThread;文檔對象,基類是Cdocument,等等。 </p><p> 程序員將結合自己的實際,從適當?shù)腗FC類中派生出自己的類,實現(xiàn)特定的功能,達到自己的編程目的。 </p><p&g
60、t; 2.5.3虛擬函數(shù)和動態(tài)約束</p><p> MFC以“C++”為基礎,自然支持虛擬函數(shù)和動態(tài)約束。但是作為一個編程框架,有一個問題必須解決:如果僅僅通過虛擬函數(shù)來支持動態(tài)約束,必然導致虛擬函數(shù)表過于臃腫,消耗內存,效率低下。例如,CWnd封裝 Windows窗口對象時,每一條Windows消息對應一個成員函數(shù),這些成員函數(shù)為派生類所繼承。如果這些函數(shù)都設計成虛擬函數(shù),由于數(shù)量太多,實現(xiàn)起來不現(xiàn)實。于
61、是,MFC建立了消息映射機制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動態(tài)約束問題。 </p><p> 這樣,通過虛擬函數(shù)和消息映射,MFC類提供了豐富的編程接口。程序員繼承基類的同時,把自己實現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入MFC的編程框架。MFC編程框架將在適當?shù)臅r候、適當?shù)牡胤絹碚{用程序的代碼。本書將充分的展示MFC調用虛擬函數(shù)和消息處理函數(shù)的內幕,讓讀者對MFC的編程接口有清晰的理解。 <
62、/p><p> 2.6 MFC的編程框架</p><p> 2.6.1 MFC的宏觀框架體系</p><p> MFC實現(xiàn)了對應用程序概念的封裝,把類、類的繼承、動態(tài)約束、類的關系和相互作用等封裝起來。這樣封裝的結果對程序員來說,是一套開發(fā)模板(或者說模式)。針對不同的應用和目的,程序員采用不同的模板。例如,SDI應用程序的模板,MDI應用程序的模板,規(guī)則DLL應
63、用程序的模板,擴展DLL應用程序的模板,OLE/ACTIVEX應用程序的模板,等等。 </p><p> 這些模板都采用了以文檔-視為中心的思想,每一個模板都包含一組特定的類。典型的MDI應用程序的構成將在下一節(jié)具體討論。 </p><p> 為了支持對應用程序概念的封裝,MFC內部必須作大量的工作。例如,為了實現(xiàn)消息映射機制,MFC編程框架必須要保證首先得到消息,然后按既定的方法進行
64、處理。又如,為了實現(xiàn)對DLL編程的支持和多線程編程的支持,MFC內部使用了特別的處理方法,使用模塊狀態(tài)、線程狀態(tài)等來管理一些重要信息。雖然,這些內部處理對程序員來說是透明的,但是,懂得和理解MFC內部機制有助于寫出功能靈活而強大的程序。</p><p> 總之,MFC封裝了Win32 API,OLE API,ODBC API等底層函數(shù)的功能,并提供更高一層的接口,簡化了Windows編程。同時,MFC支持對底層
65、API的直接調用。 </p><p> MFC提供了一個Windows應用程序開發(fā)模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預定義或實現(xiàn)了許多事件和消息處理,等等??蚣芑蛘哂善浔旧硖幚硎录灰蕾嚦绦騿T的代碼;或者調用程序員的代碼來處理應用程序特定的事件。 </p><p> MFC是C++類庫,程序員就是通過使用、繼承和擴展適當?shù)念悂韺崿F(xiàn)特定的目的。
66、例如,繼承時,應用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實現(xiàn)這種功能的基礎是C++對繼承的支持,對虛擬函數(shù)的支持,以及MFC實現(xiàn)的消息映射機制。 </p><p> 2.7MDI應用程序構成</p><p> 用AppWizard產(chǎn)生一個MDI工程t(無OLE等支持),AppWizard創(chuàng)建了一系列文件,構成了一個應用程序框架。這些文件分四類:頭文件(.h),實現(xiàn)
67、文件(.cpp),資源文件(.rc),模塊定義文件(.def),等。 </p><p> 2.7.1構成應用程序對象</p><p> 下圖解釋了該應用程序的結構,箭頭表示信息流向。 </p><p> 圖2.2 應用程序的結構</p><p> 從CWinApp、CDocument、CView、CMDIFrameWnd、CMDICh
68、ildWnd類對應地派生出CTApp、CTDoc、CTView、CMainFrame、CChildFrame五個類,這五個類的實例分別是應用程序對象、文檔對象、視對象、主框架窗口對象和文檔邊框窗口對象。主框架窗口包含了視窗口、工具條和狀態(tài)欄。對這些類或者對象解釋如下。 </p><p><b> ?。?)應用程序 </b></p><p> 應用程序類派生于CWin
69、App。基于框架的應用程序必須有且只有一個應用程序對象,它負責應用程序的初始化、運行和結束。 </p><p><b> ?。?)邊框窗口類 </b></p><p> 如果是SDI應用程序,從CFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含視窗口;如果是MDI應用程序,從CMDIFrameWnd類派生邊框窗口類,邊框窗口的客戶
70、子窗口(MDIClient)直接包含文檔邊框窗口。 </p><p> 如果要支持工具條、狀態(tài)欄,則派生的邊框窗口類還要添加CToolBar和CStatusBar類型的成員變量,以及在一個OnCreate消息處理函數(shù)中初始化這兩個控制窗口。 </p><p> 邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協(xié)調半模式狀態(tài)(如上下文的幫助(SHIFT+F1模式)和打印預覽
71、)。 </p><p> ?。?)文檔邊框窗口類 </p><p> 文檔邊框窗口類從CMDIChildWnd類派生,MDI應用程序使用文檔邊框窗口來包含視窗口。 </p><p><b> (4)文檔類 </b></p><p> 文檔類從CDocument類派生,用來管理數(shù)據(jù),數(shù)據(jù)的變化、存取都是通過文檔實現(xiàn)的
72、。視窗口通過文檔對象來訪問和更新數(shù)據(jù)。 </p><p><b> ?。?)視類 </b></p><p> 視類從CView或它的派生類派生。視和文檔聯(lián)系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內容,并把用戶輸入轉換成對文檔的操作。 </p><p><b> (6)文檔模板類 </b></p
73、><p> 文檔模板類一般不需要派生。MDI應用程序使用多文檔模板類CMultiDocTemplate;SDI應用程序使用單文檔模板類CSingleDocTemplate。 </p><p> 應用程序通過文檔模板類對象來管理上述對象(應用程序對象、文檔對象、主邊框窗口對象、文檔邊框窗口對象、視對象)的創(chuàng)建。 </p><p> 2.7.2構成應用程序的對象之間的
74、關系</p><p> 圖2.3 MFC類的繼承和派生關系</p><p> 用圖的形式可直觀地表示所涉及的MFC類的繼承或者派生關系,如圖所示意。 圖所示的類都是從CObject類派生出來的;所有處理消息的類都是從CCmdTarget類派生的。如果是多文檔應用程序,文檔模板使用CMultiDocTemplae,主框架窗口從CMdiFarmeWnd派生,它包含工具條、狀態(tài)欄和文檔框架窗
75、口。文檔框架窗口從CMdiChildWnd派生,文檔框架窗口包含視,視從CView或其派生類派生。</p><p> 2.7.3構成應用程序的文件</p><p> 通過上述分析,可知AppWizard產(chǎn)生的MDI框架程序的內容,所定義和實現(xiàn)的類。下面,從文件的角度來考察AppWizard生成了源碼和作用。表2.1列出了AppWizard所生成的頭文件,表2.1列出了了AppWizar
76、d所生成的實現(xiàn)文件及其對頭文件的包含關系。 </p><p> 表2.1 AppWizard所生成的頭文件 </p><p> 表2.2 AppWizard所生成的實現(xiàn)文件 </p><p> 從表2.2中的包含關系一欄可以看出: </p><p> CTApp 的實現(xiàn)用到所有的用戶定義對象,包含了他們的定義;CView 的實現(xiàn)用到C
77、Tdoc;其他對象的實現(xiàn)只涉及自己的定義; </p><p> 當然,如果增加其他操作,引用其他對象,則要包含相應的類的定義文件。</p><p> 2.8 基于OpenGL+MFC的三維模擬的編程環(huán)境配置</p><p><b> 1.創(chuàng)建MFC項目</b></p><p> ?、賱?chuàng)建項目文件。選擇File|Ne
78、w菜單項,新建一個基于對話框的項目文件MyDlgOpenGL;</p><p> ?、?修改對話框模板。刪除對話框中的靜態(tài)文本,調整控件的位置;</p><p> ?、厶砑覱penGL開發(fā)庫文件到項目</p><p> 在編譯程序的時候選擇Project|Setting菜單,在Link標簽中的Object/library modules編輯框中輸入“opengl3
79、2.lib, glut32.lib ,glu32.lib,glaux.lib”;</p><p> ?、軇?chuàng)建新類,添加消息映射。選擇View|ClassWizard菜單項,打開MFC對話框,在Add Class之中選擇New,以便添加一個新類COpenGL,且該類的基類選擇generic CWnd;最后利用MFC ClassWizard為COpenGL類添加消息WM_CREATE,WM_PAINT的映射。<
80、/p><p> 2. 配置基于OpenGL+MFC的開發(fā)環(huán)境</p><p> ?、賹lu.dll,glu32.dll,glut.dll,glut32.dll,opengl32.dll文件拷貝到操作系統(tǒng)WINNT/System32目錄下。</p><p> ?、趯l.h,glaux.h,glu.h,glut.h拷貝到Microsoft Visual Studio/
81、VC98/Include/GL目錄中中。</p><p> ?、蹖laux.lib,glu32.lib,glut32.lib,opengl32.lib拷貝到Microsoft Visual Studio/VC98/Lib目錄中。</p><p> 3.初始化OpenGL:(設置像素格式、創(chuàng)建OpenGL dc、rc,設置OpenGL視口變換),</p><p>
82、 ?、僭O置像素格式:為CMyTestView 類添加成員函數(shù) BOOL bSetupPixelFormat(void),用于與OpenGL 相關的設置 </p><p> /*定 義 像 素 存 儲 格 式 */ </p><p> PIXELFORMATDESCRIPTOR pfd = { </p><p> sizeof(PIXELFORMATD
83、ESCRIPTOR), // pfd結構的大小 </p><p> 1, // 版本號 </p><p> PFD_DRAW_TO_WINDOW | // 支持在窗口中繪圖 </p><p> PFD_SUPPORT_OPENGL |
84、// 支持 OpenGL </p><p> PFD_TYPE_RGBA, // RGBA 顏色模式 </p><p> 24, // 24 位顏色深度 </p><p> 0, 0, 0, 0, 0, 0, // 忽略顏色位
85、 </p><p> 0, // 沒有非透明度緩存 </p><p> 0, // 忽略移位位 </p><p> 0, // 無累加緩存 </p><
86、;p> 0, 0, 0, 0, // 忽略累加位 </p><p> 32, // 32 位深度緩存 </p><p> 0, // 無模板緩存 </p><p> 0,
87、 // 無輔助緩存 </p><p> PFD_MAIN_PLANE, // 主層 </p><p> 0, // 保留 </p><p> 0, 0, 0
88、 // 忽略層 , 可見性和損毀掩模 </p><p><b> }; </b></p><p> int pixelformat; </p><p> if ( (pixelformat = ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd)) == 0 ) </p&
89、gt;<p><b> { </b></p><p> MessageBox("ChoosePixelFormat failed"); </p><p> return FALSE; </p><p><b> } </b></p><p> if (Se
90、tPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd) == FALSE) </p><p><b> { </b></p><p> MessageBox("SetPixelFormat failed"); </p><p> return FALSE;
91、 </p><p><b> } </b></p><p> return TRUE; </p><p> ?、诔跏蓟瘎?chuàng)建OpenGL RC:hrc = wglCreateContext(m_pDC->GetSafeHdc()); </p><p> wglMakeCurrent(m_pDC->GetS
92、afeHdc(), hrc); </p><p> 并 添加WM_CREATE 消息處理函數(shù),然后在 OnCreate函數(shù)中進行調用: </p><p> // TODO: Add your specialized creation code here </p><p><b> Init(); </b></p><p
93、> ?、鄢跏蓟墨@取dc:m_pDC = new CClientDC(this); </p><p> ASSERT(m_pDC != NULL); </p><p> ?、茉O置OpenGL視錐體即投影變換矩陣</p><p> glMatrixMode(GL_PROJECTION); //在修改前重設坐標系 </p><p>
94、glLoadIdentity(); </p><p><b> ?、菰O置視口變換:</b></p><p> // Set the viewport視口 to be the entire window </p><p> glViewport(0, 0, w, h); </p><p> gluPerspecti
95、ve(45,ratio,1,1000);</p><p> ?、拊O置OpenGL模型變換</p><p> glMatrixMode(GL_MODELVIEW); </p><p> glLoadIdentity(); </p><p><b> 實現(xiàn)應用程序邏輯:</b></p><p>
96、<b> ?、偈紫忍砑咏Y構網(wǎng)</b></p><p> struct Mesh</p><p><b> {</b></p><p> int m_materialIndex;</p><p> int m_numTriangles;</p><p> int *m
97、_pTriangleIndices;</p><p><b> };</b></p><p> ?、谌缓笤偬砑尤墙Y構</p><p> struct Triangle</p><p><b> {</b></p><p> GLfloat m_vertexNorma
98、ls[3][3];</p><p> GLfloat m_s[3], m_t[3];</p><p> int m_vertexIndices[3];</p><p><b> };</b></p><p><b> ?、圻M而添加結構頂點</b></p><p> s
99、truct Vertex</p><p><b> {</b></p><p> char m_boneID;// for skeletal animation</p><p> GLfloat m_location[3];</p><p><b> };</b></p>&
100、lt;p> 5. 清理工作:(析構函數(shù)中釋放dc,rc指針)</p><p> void CMyRainView::OnDestroy() </p><p><b> {</b></p><p> CView::OnDestroy();</p><p><b> } ;</b><
101、;/p><p> 第三章飛行訓練系統(tǒng)的設計及實現(xiàn)</p><p><b> 3.1 系統(tǒng)的設計</b></p><p> 任何復雜的幾何結構都是由點、線、多邊形等基本圖原構成。OpenGL 的基本庫提供了繪制各種基本類型的3D 圖元函數(shù)。而OpenGL 工具庫(glu32. lib) 提供了用來形成錐體、柱體,盤狀體和球體的鑲嵌工具以及渲染它
102、們的功能。這些形狀函數(shù)使用了一個名為quadric (二次曲面) 的專門鑲嵌工具。利用這些函數(shù)可以建立飛機和地面模型[6]。本系統(tǒng)設計的結構如下圖。</p><p> 系統(tǒng)由用戶層、處理層和數(shù)據(jù)層三部分組成的,用戶層就是用戶通過鼠標或鍵盤實現(xiàn)操作系統(tǒng)。處理層包含了模型組織管理、模型渲染及模型操作。模型的組織和管理是控制模型的輸入和輸出,而模型的操作則主要是通過矩陣變換的運算來實現(xiàn)的。</p>&l
103、t;p><b> 圖3.1 系統(tǒng)結構</b></p><p> 3.1.1系統(tǒng)結構的類</p><p> 本系統(tǒng)中用到以下幾個類:</p><p> CWnd:窗口,它是大多數(shù)“看得見的東西”的父類(Windows里幾乎所有看得見的東西都是一個窗口,大窗口里有許多小窗口),比如視圖CView、框架窗口CFrameWnd、工具條CT
104、oolBar、對話框CDialog、按鈕CButton,etc;一個例外是菜單(CMenu)不是從窗口派生的。</p><p> CDocument文檔,負責內存數(shù)據(jù)與磁盤的交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫盤),Serialize(讀寫)。</p><p> CView視圖,負責內存數(shù)據(jù)與用戶的交互。包括數(shù)據(jù)的顯示、用戶操作的響應(
105、如菜單的選取、鼠標的響應)。最重要的是OnDraw(重畫窗口),通常用CWnd::Invalidate()來啟動它。另外,它通過消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。</p><p> CDialog對話框。</p><p> CWinApp應用程序類。似于C中的main函數(shù),是程序執(zhí)行的入口和管理者,負責程序建立、消滅,主窗口和文檔模板的建立。最常用函數(shù)InitInsta
106、nce():初始化。</p><p> 圖3.2 系統(tǒng)結構CView類圖</p><p> 系統(tǒng)使用下面的結構體存儲導入的模型的三維實體數(shù)據(jù)</p><p> Struct tVect{</p><p> loat x,Y,z;</p><p> }; 用來保存模型中頂點的3D坐標</p>&
107、lt;p> struct ModelContext</p><p><b> {</b></p><p> int facetCount; //面的數(shù)量</p><p> int triangleFlag;</p><p> Vertex vertexList
108、[VERTEX_MAX];//模型中的頂點列表</p><p> int vertexCount;</p><p> Vertex lineList[LINE_MAX];//線中的頂點數(shù)組</p><p> int lineCount;//頂點數(shù)量</p><p> Vertex lineStripList[LI
109、NE_STRIP_MAX]; </p><p> int lineStripCount;</p><p> int edgeList[EDGE_MAX][2];</p><p> int edgeCount;</p><p> Vertex objVertexList[OBJ_VERTEX_MAX]; //OBJ文件中的頂點&l
110、t;/p><p> int ovCount;</p><p> int onCount;</p><p> ColorStruct colorList[COLOR_MAX];//模型中的顏色列表</p><p> int colorCount;</p><p><b> //模型中的邊界盒</
111、b></p><p> GLfloat boundBoxLeft, boundBoxBottom, boundBoxNear;</p><p> GLfloat boundBoxRight, boundBoxTop, boundBoxFar;</p><p> GLdouble rotX, rotY;</p><p> GLdo
112、uble scaleObj;</p><p> GLdouble rotMat[16];</p><p> GLdouble windowWidth, windowHeight;</p><p> GLdouble minimumScale;</p><p> int haveNormals;</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3d飛行訓練系統(tǒng)的設計與實現(xiàn)畢業(yè)論文
- 3d動畫畢業(yè)論文
- 畢業(yè)論文--3d綠色機房設計
- 基于torque游戲引擎的3d游戲的設計與實現(xiàn)-畢業(yè)論文
- 3d游戲設計 ——音頻處理-畢業(yè)論文
- 3d打印技術畢業(yè)論文
- 3d動畫制作畢業(yè)論文
- 3d室內設計畢業(yè)論文
- 通用3D飛行仿真平臺設計與實現(xiàn).pdf
- 3d光立方系統(tǒng)的設計與實現(xiàn)【畢業(yè)設計】
- 畢業(yè)論文-3d電梯光幕保護系統(tǒng)
- 畢業(yè)論文-3d電梯光幕保護系統(tǒng)
- (畢業(yè)論文)3d打印機畢業(yè)設計
- 3d游戲設計畢業(yè)論文任務書
- 3d動漫游戲設計-場景設計---畢業(yè)論文
- 3d家居室內效果設計畢業(yè)論文
- 3D仿真模擬訓練系統(tǒng)軟件的設計與實現(xiàn).pdf
- 3d動漫游戲設計——人物角色設計---畢業(yè)論文
- 畢業(yè)論文--3d電影的光學原理探討
- 3d打印技術的應用畢業(yè)論文
評論
0/150
提交評論