freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的飛機(jī)模型運(yùn)動(dòng)3d實(shí)時(shí)仿真顯(編輯修改稿)

2025-06-10 20:00 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 現(xiàn)繪圖的原理和過(guò)程 4 模式。 RGBA 模式 為每個(gè)像素點(diǎn)指定顏色,而 顏色索引 模式則提供一個(gè)顏色表,各像素點(diǎn)通過(guò)索引顏色表得到顏色值。 4. 光照和材質(zhì)設(shè)置: OpenGL 假設(shè)光由三原色( RGB)組成,物體對(duì)三原色分別有不同的反射率,通過(guò)物理光學(xué)模型,計(jì)算物體實(shí)際顏色。 5. 紋理映射: OpenGL 提供了完善的紋理映射機(jī)制 可以十分逼真地表達(dá)物體表面細(xì) 節(jié)。 6. 位圖顯示: OpenGL 提供基本的拷貝和像素讀寫能力。 7. 圖像增強(qiáng): OpenGL 提供融合 、 霧和反走樣這三種特殊圖像效果處理,使被仿真物體更具真實(shí)感,增加圖形顯示效果。 8. 雙緩沖動(dòng)畫:雙緩沖技術(shù)是 OpenGL 出色的動(dòng)畫效果的重要保障。 OpenGL 繪圖前會(huì)先分配兩個(gè)顏色緩沖區(qū),在繪圖時(shí),一個(gè)緩沖區(qū)執(zhí)行繪圖命令(后臺(tái)),另一個(gè)進(jìn)行圖形顯示(前臺(tái))。循環(huán)反復(fù),保證屏幕(前臺(tái))上總是顯示已經(jīng)畫好的圖形,以此實(shí)現(xiàn)圖形顯示的連續(xù)變化,達(dá)到動(dòng)畫效果,其中動(dòng)畫交換幀函數(shù)為 SwapBuffers(g_hDC)。此外,利用 OpenGL還能實(shí)現(xiàn)深度暗示、運(yùn)動(dòng)模糊等特殊效果,從而實(shí)現(xiàn)消隱算法 [6]。 在本文 應(yīng)用程序編寫過(guò)程中主要需要使用到建模、矩陣變換、顏色模式設(shè)置、光照和材質(zhì)設(shè)置、位圖顯示及雙緩沖動(dòng)畫等功能。 OpenGL圖形顯示方式 絕大多數(shù) OpenGL 在實(shí)現(xiàn)圖像顯示時(shí)都有相似的操作順序,一系列相關(guān)的處理階段叫做OpenGL 渲染管線 [7],如圖 1 所示。雖然沒有嚴(yán)格的規(guī)定 OpenGL 必須采用這樣的實(shí)現(xiàn)方式,但是圖 1 所示的順序是一個(gè)已經(jīng)得到證明的可靠的操作順序,所以本次論文中選擇通過(guò)這一順序來(lái)實(shí)現(xiàn)圖形顯示。 圖 1. OpenGL 渲染管線 幾何頂點(diǎn)數(shù)據(jù) 求值器 圖像像素?cái)?shù)據(jù) 顯示列表 圖像操作 紋理裝配 逐個(gè)頂點(diǎn)操作與圖元裝配 光柵化 幀緩沖區(qū) 片段操作 OpenGL 簡(jiǎn)介及其實(shí)現(xiàn)繪圖的原理和過(guò)程 5 OpenGL 繪圖前期準(zhǔn)備 OpenGL 繪圖的前期準(zhǔn)備的第一步是選擇一個(gè)編譯環(huán)境。 現(xiàn)在 Windows 系統(tǒng)的主流編譯環(huán)境有 Visual Studio, Broland C++ Builder, DevC++等, 這些編譯環(huán)境 都是支持 OpenGL 的 。在本文中,現(xiàn)有的主控制界面的編寫環(huán)境是 VC++,因此同樣選擇 VC++ 作為應(yīng)用程序的開發(fā)環(huán)境 。 第二步是要安裝導(dǎo)入 OpenGL 工具包。幾乎對(duì)于所有的 OpenGL 應(yīng)用程序,在使用之前都需要導(dǎo)入 OpenGL 頭文件和工具函數(shù)庫(kù)( GLU) ,本文中編寫程序的過(guò)程也不例外,另外Microsoft Windows 要求在 OpenGL 頭文件之前包含 頭文件。所以在本文的應(yīng)用程序編程前先將 OpenGL 頭文件和 GLU 導(dǎo)入程序目錄下,然后在源代碼開頭編寫以下代碼: include include include\opengl\ include include\opengl\ include include\opengl\ include include\opengl\ include include\opengl\ include include\opengl\ 第三步是建立 OpenGL 應(yīng)用程序的框架,也就是創(chuàng)建 OpenGL 窗口并對(duì) OpenGL 進(jìn)行初始化。這部分的具體內(nèi)容在本文第四章中會(huì)有詳細(xì)介紹。 實(shí)時(shí)仿真顯示的關(guān)鍵技術(shù)和關(guān)鍵環(huán)節(jié) 6 第三章 實(shí)時(shí)仿真顯示的關(guān)鍵技術(shù)和關(guān)鍵環(huán)節(jié) 在上一章對(duì) OpenGL 進(jìn)行研究 的 基礎(chǔ)上,本章主要介紹了在實(shí)現(xiàn)飛機(jī)運(yùn)動(dòng)實(shí)時(shí)仿真顯示過(guò)程中使用到的關(guān)鍵技術(shù)環(huán)節(jié),為應(yīng)用程序的編寫提供技術(shù)支持。本章首先介紹了本文應(yīng)用程序的 VC++ 開發(fā)環(huán)境 ,然后分析使用多線程技術(shù)鏈接子界面和主控制界面的過(guò)程。由于在使用計(jì)算機(jī)動(dòng)畫技術(shù)實(shí)現(xiàn)仿真的過(guò)程中涉及各種坐標(biāo)系,在實(shí)際操作中易因?yàn)榛煜a(chǎn)生錯(cuò)誤,所以本章詳細(xì)介紹了本文中用到的幾個(gè)坐標(biāo)。在本章的最后,對(duì) 3DS 模型文件的生成和導(dǎo)入 OpenGL 這兩個(gè)關(guān)鍵環(huán)節(jié) 進(jìn)行研究。通過(guò)對(duì)本章中內(nèi)容 的研究,為應(yīng)用程序的開發(fā)奠定理論基礎(chǔ)。 VC 簡(jiǎn)介 Visual C++ 是 Microsoft 公司推出的一種開發(fā) Windows 應(yīng)用程序的高級(jí)語(yǔ)言,具有強(qiáng)大的功能和較高的執(zhí)行效率。它提供了程序設(shè)計(jì)領(lǐng)域中所涉及的多種技術(shù),如文件訪問,圖形圖像處理,數(shù)據(jù)處理和多媒體等, VC 的開發(fā)對(duì)象幾乎涵蓋所有領(lǐng)域。 VC 是一個(gè)基于 Windows 操作系統(tǒng)的可視化且面向?qū)ο蟮募砷_發(fā)環(huán)境 [8],用戶可使用該環(huán)境開發(fā)有關(guān) C 和 C++的各種應(yīng)用程序,包括了建立,編輯,瀏覽 ,保存,編譯,鏈接和測(cè)試等操作。其中應(yīng)用程序的開發(fā)主要有兩種模式: Windows API 方式和 MFC 方式,兩種模式各具特色。 多線程技術(shù) 在一個(gè) 程序 中,獨(dú)立運(yùn)行的程序片斷 被 叫作 “線程 ”( Thread) [9]。 多線程的基本概念是程序中包含多個(gè)執(zhí)行流,即在一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程來(lái)執(zhí)行不同的任務(wù),也就是說(shuō)允許單個(gè)程序創(chuàng)建多個(gè) 并行執(zhí)行 的線程來(lái)完成各自的任務(wù)。 其目的不是為了提高運(yùn)行效率,而是為了通過(guò)提高資源使用效率來(lái)提高系統(tǒng)的效率。 Win32 多線程技術(shù)提供線程創(chuàng)建,線程掛起,恢復(fù)線程,線程退出、獲取當(dāng)前線程 ID 和條件鎖等基本操作,用戶通過(guò)使用這些操作可以實(shí)現(xiàn)基本功能。 在本文研究中,已經(jīng)存在有主線程。本文為防止 OpenGL 應(yīng)用程序的運(yùn)行對(duì)主線程產(chǎn)生影響,把 OpenGL 應(yīng)用程序獨(dú)立編寫成一個(gè)線程,保證兩個(gè)界面窗口能正常的同時(shí)運(yùn)行。 本文創(chuàng)建線程的具體操作如下: 實(shí)時(shí)仿真顯示的關(guān)鍵技術(shù)和關(guān)鍵環(huán)節(jié) 7 1. 定義一個(gè) OpenGL 線程的入口函數(shù),代碼如下所示 DWORD WINAPI ThreadFunc1(LPVOID n) { OpenGL_Main()。 return 0。 } 在上 述函數(shù)中, OpenGL_Main()是 OpenGL 應(yīng)用程序的入口函數(shù)。使用線程創(chuàng)建函數(shù)創(chuàng)建子線程后,可以調(diào)用 ThreadFunc1 這個(gè)線程函數(shù)進(jìn)入子線程。 2. 創(chuàng)建線程:用函數(shù) CreateThread(NULL,0,ThreadFunc1,0,0,NULL)創(chuàng)建線程。該線程在點(diǎn)擊了主控制界面中特定的按鈕后開始創(chuàng)建。線程創(chuàng)建之后, OpenGL 窗口打開,開始繪制飛機(jī)模型。窗口打開的具體過(guò)程在第五章中會(huì)詳細(xì)介紹。 本文涉及的坐標(biāo)系 本文需要涉及到坐標(biāo)系的過(guò)程主要是在 OpenGL 窗口中模型的繪制以及模型平移旋轉(zhuǎn)。上述兩個(gè)過(guò)程涉及多個(gè)坐標(biāo)系,在編寫時(shí)需要明確具體涉及哪坐標(biāo)系并根據(jù)該坐標(biāo)系的特點(diǎn)進(jìn)行處理,這樣才能保證程序正確運(yùn)行。 本文涉及的四種 OpenGL 坐標(biāo)系,包括世界坐標(biāo) 、 模型坐標(biāo) 、 設(shè)備坐標(biāo)和視點(diǎn)坐標(biāo)。接下來(lái)對(duì)這四種坐標(biāo)系分別進(jìn)行介紹。 世界坐標(biāo) 是 OpenGL 中用來(lái)描述場(chǎng)景的坐標(biāo), Z 軸 正方向 垂直屏幕向外, X 軸 正方向 從左到右, Y 軸 正方向 軸從下到上,是右手笛卡爾坐標(biāo)系統(tǒng)。我們用這個(gè)坐標(biāo)系來(lái)描述物體及光源的位置。 模型坐標(biāo)是以模型某一點(diǎn)為原點(diǎn)而建立的“世界坐標(biāo)”,僅對(duì)模型本身適用,用來(lái)方便對(duì)模型坐標(biāo)的描述。模型在 OpenGL 中移動(dòng)時(shí), 整體的相對(duì)位置是不變的,所以用模型自身的坐標(biāo)來(lái)描述模型,和人的思維習(xí)慣一致。 設(shè)備坐標(biāo)是指將三維的世界坐標(biāo)經(jīng)過(guò)變換 、 投影等計(jì)算后最終算出的在顯示設(shè)備上對(duì)應(yīng)的位置。 視點(diǎn)坐標(biāo)是以視點(diǎn)坐標(biāo)為原點(diǎn),以視線的方向 為 Z 軸 正方向的坐標(biāo)系。 3DS 格式模型文件的生成 目前使用 OpenGL繪制模型的方法主要有兩種。第一種是使用 OpenGL圖形庫(kù)提供 的 點(diǎn)、線、多邊形 等 基本 圖元 繪制函數(shù) 或者相對(duì) 復(fù)雜的三維物體以及復(fù)雜曲線和曲面的繪制函數(shù) ,實(shí)時(shí)仿真顯示的關(guān)鍵技術(shù)和關(guān)鍵環(huán)節(jié) 8 通過(guò)高級(jí)語(yǔ)言環(huán)境(主要是 C 語(yǔ)言)進(jìn)行開發(fā)。此方法比較靈活,適用性強(qiáng),在模型結(jié)構(gòu)較為簡(jiǎn)單的時(shí)候有明顯的優(yōu)勢(shì),但要求開發(fā)者熟練掌握編程技術(shù)和 OpenGL,當(dāng)模型結(jié)構(gòu)比較復(fù)雜的時(shí)候工作量極大,而且并容易出錯(cuò)。另一種方法是使用專業(yè)的三維模型繪制軟件繪制生成 OpenGL 能夠讀取的模型文件,通過(guò)將模型文件導(dǎo)入 OpenGL 實(shí)現(xiàn)模型的繪制。此方法由于其在處理復(fù)雜模型結(jié)構(gòu)時(shí)有明顯優(yōu)勢(shì),被廣泛地使用。 圖 2. 3DMAX 中的飛機(jī)模型 在本文的研究中,為保證 OpenGL 中的模型是 飛機(jī)模型實(shí)體按比例縮小的結(jié)果,同時(shí)考慮到已有 SolidWorks 生成的飛機(jī)模型 WRL 格式文件,故而采用第二種方法對(duì)飛機(jī)模型進(jìn)行繪制。 OpenGL 強(qiáng)大的功能使得自身支持 DFX, 3DS 等多種模型文件的導(dǎo)入。由于 3DS 格式文件 Intel式的存儲(chǔ)方式很符合 windows 系統(tǒng)下編程習(xí)慣,不需要對(duì)文件進(jìn)行進(jìn)一步轉(zhuǎn)換,因此本文選擇使用 3DS 格式模型文件導(dǎo)入 OpenGL。為此在應(yīng)用程序編寫前首先需要使用 3D MAX 軟件將原有的飛機(jī)模型 WRL 格式文件轉(zhuǎn)化為 3DS 格式,并且對(duì)模型自身的三維坐標(biāo)系進(jìn)行調(diào)整設(shè)置。飛機(jī)模型自身坐標(biāo)系 調(diào)整后原點(diǎn)與飛機(jī)重心重合,機(jī)身長(zhǎng)軸及短軸分別與 X,Y 軸重合。原點(diǎn)到機(jī)頭頂點(diǎn)方向?yàn)?X 軸正方向,從飛機(jī)正前方觀察向右為 Y 軸正方向,機(jī)身垂直向下為 Z 軸正方向。最后將生成的 3DS 模型文件命名為“ ”,放在程序目錄下。飛機(jī)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1