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

正文內(nèi)容

基于opengl的三維飛行器程序設(shè)計與仿真_畢業(yè)論文(文件)

2025-07-31 14:25 上一頁面

下一頁面
 

【正文】 ..............................................................................35 光照的模型 .......................................................................................................35 場景中的霧 ..................................................................................................................37 基于 OpenGL 三維飛行器程序設(shè)計與仿真 霧的屬性 ...........................................................................................................37 霧的生成 ...........................................................................................................38 本系統(tǒng)建模流程 ..........................................................................................................38 建模細(xì)節(jié)及其改進(jìn) ......................................................................................................40 ..........................................................................................................................43 致 謝 .........................................................................................................................................44 參考文獻(xiàn) ..................................................................................................................................45 西安科技大學(xué)畢業(yè)論文 5 1. 緒論 前言 科學(xué)計算可視化是 2 0 世紀(jì) 80 年代后期隨著計算機(jī)圖形學(xué)應(yīng)用的拓廣而發(fā)展起來的一個新的研究分支 , 受其推動 , 各種信息的可視化成為 90 年代許多學(xué)科領(lǐng)域的研究前緣。 目前 , OpenGL 在虛擬現(xiàn)實領(lǐng)域是功能較強(qiáng) , 最具發(fā)展前途的實現(xiàn)工具。 OpenGL是 SGI公司開發(fā)的與硬件環(huán)境和操作系統(tǒng)獨立的 API,它提供了建模、坐標(biāo)變換、著色、光照、平滑等二維和 三維圖形功能以及紋理映射、曲線等高級功能,并且能夠生成三維場景,繪制三維物體 OpenGL良好的交互性和代碼運(yùn)行的高效性使它已經(jīng)成為三維動畫和虛擬現(xiàn)實場景開發(fā)的重要工具。它有意識的只提供底層的繪制程序功能,這就使得程序員有了更多的控制權(quán)和靈活性。通過應(yīng)用程序編程接口,可以設(shè)置狀態(tài)機(jī)的各個狀態(tài),例如當(dāng)前的顏色,光照以及混合模式等狀態(tài)。但是圖形設(shè)備接口是為一般的應(yīng)用程序而提供的,因此不能滿足游戲所必須的速度要求。在 Visual C+ + 編程環(huán)境下 , 能方便地調(diào)用這些函數(shù)對三維圖形進(jìn)行仿真。近年來,隨著計算機(jī)的普及和科學(xué)技術(shù)的迅速發(fā)展,天氣,衛(wèi)星以及地震勘測領(lǐng)域中的數(shù)據(jù)量越來越大,可視化技術(shù)就成為科學(xué)研究中必不可少的手段。 然后再調(diào)用仿真數(shù)據(jù)結(jié)果庫的數(shù)據(jù)對模型進(jìn)行實時繪制,驅(qū)動飛行器在空地作戰(zhàn)環(huán)境運(yùn)動 。 基于 OpenGL 三維飛行器程序設(shè)計與仿真 2. 程序功能概述 這一章節(jié)主要介紹飛行器飛行的具體場景的構(gòu)建以及在程序中它們是如何生成的,還有就是主要介紹程序各個部分的功能以及場景中與飛行器相關(guān)的其他模型的構(gòu)建過程。光照和霧可以調(diào)用 OpenGL中的相關(guān)函數(shù)進(jìn)行設(shè)計。此外,霧化設(shè)置也會產(chǎn)生問題,如果霧的設(shè)置靠近觀察點,則天空的顏色會變淡甚至沒有。 西安科技大學(xué)畢業(yè)論文 9 ( 2) 飛行器 該程序的實現(xiàn)過程中,飛機(jī)的構(gòu)成不是使用當(dāng)下 3D游戲中流行的使用建好后的3DMAX 模型載入到內(nèi)存中,進(jìn)而重新繪制飛機(jī)模型,而是由一些基本的三角形進(jìn)行組合而成的,這種方法可能沒有利用直接載入 3DMAX模型的方法產(chǎn)生的效果好,但這里主要想利用 OpenGL繪圖中經(jīng)常使用的一個東西,即就是顯示列表,主要就是想盡可能的從OpenGL的 角度出發(fā)來完成本次設(shè)計。同時還要修改工程 中的相關(guān)參數(shù) ,即將 _CONLOLE改為 _WINDOWS,在 link項,在對象、模塊欄的前面加上 OpenGL 函數(shù)庫的調(diào)用有效。 建立圖形操作描述表 OpenGL 作圖窗口必 須設(shè)置為 WM_CLIPSIBLINGS 和 WM_CLIPCHILDREN 風(fēng)格。使用時先通過 wglCreateContext ( ) 函數(shù)創(chuàng)建一個 RC,然后調(diào)用 wglMakeCurrent ( ) 函數(shù)啟動它 , 就可在所定義的窗口內(nèi)調(diào)用 OpenGL 函數(shù)繪制飛行器了。像素格式用 PIXELFORMATDESCRIPTOR 結(jié)構(gòu)來表示 , 通過設(shè)置這一結(jié)構(gòu)的成員值使 之支持 OpenGL。為了進(jìn)行變換,基本就是用變換矩陣乘以想要變換的點,得到的結(jié)果 就是變換過的新的點,比如有一個點 P和變換矩陣 M,那么為了用變換矩陣 M來變換點 P,從而得到結(jié)西安科技大學(xué)畢業(yè)論文 11 果點 P’,應(yīng)該像下面這樣做 : PMP *39。 定義了頂點以后,但在屏幕上顯示他們之前一共會發(fā)生 3中類型的變換:視圖變換,模型變換和投影變換。它用于確定場景的拍攝點。視圖變換允許把觀察點放在自己所希望的任何位置,并允許在任何方向上觀察場景。然后,根據(jù)最新修改的坐標(biāo)系統(tǒng)進(jìn)行其他所有的后續(xù)變換。場景或者物體的最終外觀很大程度上取決于模型變換的應(yīng)用順序。裁剪平面是 3D空間的平面方程式, OpenGL用它來確定幾何圖形能否被觀察者所看到。這意味著不管物體有多遠(yuǎn),都仍然 按照相同的大小進(jìn)行繪制,平面的出現(xiàn)屏幕上。透視投影的優(yōu)點是不必判斷直線將在什么地方交匯,也不必操心遠(yuǎn)處的物體是如何變小的。通常,顏色緩沖區(qū)和窗口像素之間存在著一對一的對應(yīng)關(guān)系。紋理可以是 2D, 3D, 4D紋理等,但我們文中使用的是 2D紋理,它通常是從圖像或者圖片文 件中載入的,文中使用的是從一幅 256*256的現(xiàn)成圖片中載入紋理數(shù)據(jù),它是在程序運(yùn)行是才生成紋理。草地,天空,飛行器都使用紋理貼圖來增加圖形的真實感。 // Check To See If The File Exists if (File) Does The File Exist? { fclose(File)。 在將紋理數(shù)據(jù)從 BMP文件中載入到內(nèi)存之后,將其定義為一個 OpenGL紋理圖,調(diào)用OpenGL中的 glTexImage()函數(shù)可以實現(xiàn),在函數(shù)被調(diào)用之后,紋理數(shù)據(jù)就會被載入并做好被使用的準(zhǔn)備,調(diào)用 glGenTexture()函數(shù)將一個名字賦給紋理對象,因為紋理對象是用來存儲數(shù)據(jù)的,使其隨時準(zhǔn)備被使用。 最后當(dāng)紋理對象被綁定到其數(shù)據(jù)上以后,可以調(diào)用 glBindTexture()函數(shù)來將此紋理設(shè)置為當(dāng)前的紋理狀態(tài),這樣在繪制多邊形完成后,就可以調(diào)用相應(yīng)的紋理來進(jìn)行貼圖。在計算機(jī) 3D圖形處理技術(shù)中,也有類似我們眼睛的東西glulookAt(? )觀察函數(shù),如果這個觀察點在 OpenGL場景中的位置發(fā)生變化,我們在計算機(jī)屏幕上的圖像就發(fā)生了變化。 X 量的變化就像是我們在場景中橫向移動, Y 量的變化就像是我們的身體高度的變化, Z 量的變化就像是我們在場景中前后移動。 因為 glLookAt()函數(shù)在本文飛機(jī)的漫游過程中比較重要,所以下面利用圖示的方法介紹一下 gllookat()函數(shù)的工作過程: up Eye look Z X 圖 31 視點各向量示意圖 glLookAt()函數(shù)中的三個主要變量 (eye,look,up)就是像上面展示的那樣,當(dāng)我們把西安科技大學(xué)畢業(yè)論文 17 eye,look,up三個參數(shù)傳遞給 glLookAt()函數(shù)的時候,函數(shù)可以自身算出新的坐標(biāo)系,也就相當(dāng)于將我們?nèi)说难劬υ趫鼍爸幸频搅硪粋€位置,因此漫游的過程也就是視點的變化過程,也即坐標(biāo)系不斷改變的過程。 顯示列表使用之前先要創(chuàng)建,這個可以使用 glGenList()函數(shù)來完成此項任務(wù),然后將相關(guān)的命令放入相應(yīng)的顯示列表。 屏幕顯示 在 OpenGL中,三維圖形最終要顯示在屏幕上,而屏幕是一個二維平面,在這個將三維圖形變成二維圖形時要經(jīng)歷以下過程: 基于 OpenGL 三維飛行器程序設(shè)計與仿真 圖 32 頂點變換軌道 這中間涉及的一些知識將在上面已經(jīng)詳細(xì)介紹,這里主要是了解計算機(jī)顯示三維場景的大致流程,其中主要涉及上述的三種變換:視圖變換,模型變換以及投影變換 透視分割 歸一化設(shè)備 坐標(biāo) 視圖變換 窗 窗口坐標(biāo) ( x,y) 模型視圖矩陣 投影矩陣 剪裁坐標(biāo) 定點坐標(biāo) (x,y,z,w) 眼坐標(biāo) 西安科技大學(xué)畢業(yè)論文 19 4. 場景的構(gòu)建 在本文中,對于飛行器的仿真,場景構(gòu)建可謂是重中之重,構(gòu)建出好的模型對于仿真的真實性以及實效性都有很大的幫助,場景的構(gòu)建大的方面主要涉及飛機(jī)的構(gòu)建,天空的構(gòu)建,地面的生成,以及像光照,霧等效果的實現(xiàn),下面就依次來講述文中各個模型是 如何生成的。 (2)球形天空 在本文中,天空主要是繪制一個球,其他場景都包含在這個球內(nèi)。在本文中,這個實現(xiàn)過程如下: gluSphere(quadratic,MAX*50,20,20)。 Gltexgeni(GL_t,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP); glEnable(GL_TEXTURE_GEN_S)。 此天空完成后的大體模型如下所示: 圖 41 場景中的天空 西安科技大學(xué)畢業(yè)論文 21 地面 地面的生成 地面模型的生成 有很多的方法,究其本質(zhì)都是產(chǎn)生網(wǎng)格模型,網(wǎng)格模型都是由一些平面的塊組成的,每個塊都應(yīng)用不同的紋理,這樣每個塊只有一個單獨的法向量,但擁有其自己的紋理坐標(biāo),所以,在地面的繪制過程中,每個塊的數(shù)據(jù)可以像類似下面這樣: 1)塊頂點的數(shù)量; 2)塊法向的索引; 3)頂點索引的列表; 4)紋理坐標(biāo)索引的列表; 下面介紹幾種不同的經(jīng)常使用的地形的構(gòu)成方法: ( 1)高程地形 高程地形是指由高程柵格組成的地表或地形系統(tǒng)??梢杂蒙鲜龌叶葓D中的每一位的顏色值來指定每一個柵格的高度。 為 了 繪 制 地 形 圖 , 我 們 需 要 對 于 沿 z 軸 方 向 的 每 一 行 柵 格 值 使 用GL_TRIANGLE_ATRIP。完成后的基本圖形如下: 西安科技大學(xué)畢業(yè)論文 23 圖 44 高程地形的生成畫面 (2)網(wǎng)格法 網(wǎng)格法主要是利用 OpenGL中的基本劃線函數(shù)繪制類似棋盤格式的畫面,這個做法主要運(yùn)用 OpenGL中的 glbegain()和 glend()函數(shù),其中 glbegain()函數(shù)中的參數(shù)選擇有許多種,在網(wǎng)格法中采用的是 GL_LINES,即劃線模式。 我們將在場景中定義一個高度,以此作為其中水的海平面,可以是使用一個 if語句進(jìn)行判斷,假如某處的高度大
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1