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

正文內(nèi)容

飛行姿態(tài)的三維動態(tài)實時顯示本科畢業(yè)論文-資料下載頁

2025-08-17 18:38本頁面

【導讀】式的游戲娛樂、大型的工程漫游、城市規(guī)劃等。尤其是在軍事方面關(guān)于武器研制和飛。文章使用紋理貼圖的方法實現(xiàn)了對天空和地面的模擬,用多邊形組成。了飛機,使用鍵盤來實現(xiàn)對飛機的操作,同時添加了霧以及光照來增加場景的真實感。程序的運行結(jié)果比較符合預期要求,對實際操縱有一定的借鑒意義。維游戲設(shè)計及其他領(lǐng)域。

  

【正文】 草地的數(shù)據(jù)被存儲為一個二維的 265*265 的點數(shù)組,數(shù)組中的點代表了x方向上的 255 個四邊形和 y 方向上的 255 個四邊形,在程序中,為這些四邊形指定紋理坐標,從而使草地的紋理能正確的被顯示 出來 .在本文中,繪制地面的過程如下: 繪制完成后的地面總體模型如下: 圖 46 三角帶法生成的地面 23 地面中的水 為了完成這部分的內(nèi)容,我們來 想象一下水在自然界中是什么樣子的,海平面的定義就是地球上海洋的平均高度。如果升高或者降低海平面,那么地球上的水的覆蓋面積就會增加或者減少,海平面要是比較低,相應的就會有較多的陸地,而如果海平面較高的話,陸地就會較少,所以,如果將地球的陸地看成高程地形,那么就可以知道該如何處理水了。 我們將在場景中定義一個高度,以此作為其中水的海平面,可以是使用一個if語句進行判斷,假如某處的高度大于給定的高度值,則這塊地域無水,假如某塊的高度小于給定高度值,則這塊地域顯示水。 本文中的海平 面是一個單一的多邊形,他被賦予透明的白色,以此來表示水。然后再將一個水的紋理應用到此多邊形,使得場景更加具有真實感。水的繪制過程中,首先繪制一個一組相連接的三角形組成的邊帶,在繪制過程中,順便為每個頂點指定紋理坐標: 然后將水的紋理圖貼上去,地面中添加水以后的效果如下: 圖 47 場景中的水 24 飛行器的構(gòu)建 飛機模型的構(gòu)成方法有許多種,比較常見的兩種就是:一是用基本的圖形組合成一架飛機的大概框架,然后在上面貼上飛機紋理,模擬出真實的飛機;二是利用 3DMAX 生成的現(xiàn)成的飛機模型,本文中,我們使用多個三角形來生成飛行器,具體來說就是使用多個三角形作為飛機的主體,在組建飛機的過程中,定義了一個三角形的類,每個三角形都具有法線,紋理坐標以及頂點,然后將每個三角形的繪制放在一個顯示列表中,通過調(diào)用顯示列表,對這些基本圖形的放大和縮小,位置移動和角度旋轉(zhuǎn),然后調(diào)用畫圖函數(shù)將其組建在一起,就可以形成最后的飛機模型。 接下來,由于飛機是清一色的白色,不能達到真正模擬真實飛機的效果,因此我們必須使用紋理貼圖來實現(xiàn)效果,由于在繪制三角形的過程中,為每個三角形都定義了紋理 坐標,所以只需要將飛機外表圖片文件讀到內(nèi)存中,然后利用紋理貼圖的一些函數(shù)將飛機紋理貼到生成的飛機模型上,這樣就可以構(gòu)造出真實的飛機,飛行器模型如下圖: 正面: 圖 48 飛機的正面 反面: 25 圖 49 飛機的反面 材質(zhì)屬性的設(shè)置 對飛行器的出來還包括為其設(shè)置材料屬性,這些屬性決定了飛機材質(zhì)反射相應的光分量的程度, OpenGL 根據(jù)材質(zhì)對紅綠藍光的反射來近似模擬材質(zhì)顏色。材質(zhì)也三個和光一樣的顏色屬性:環(huán)境光,散射光以及鏡面反射光。它的設(shè)置和光照的設(shè)置差不多,只不過不是同一個函數(shù)而已,設(shè)置材質(zhì)屬性的函數(shù)像下面這樣: 其中 face 指定了此材質(zhì)如何應用到物體的多邊形,可以是前面,外面等,pname 通知 OpenGL 將要設(shè)置材質(zhì)的哪一個屬性,這個屬性和光照的完全一樣,最后這個參數(shù)可以是標量,也可以是數(shù)組,這個要根據(jù)函數(shù)本身的名字來定。 飛行器漫游 在計算機 3D 圖形處理技術(shù)中,在計算機屏幕上觀看圖形時,設(shè)定的觀察點默認是( 0,0,0),在 OpenGL 中,飛機飛行過程中的各種變換,如翻轉(zhuǎn),轉(zhuǎn)向等都是依靠 glRotatef()和 glTranslatef()來實現(xiàn)的,對于我們觀察飛行場景的視點,也就是可以產(chǎn)生在場景中漫游效果則是利用 glLookAt()函數(shù)來完成的,它們的主要作用是可以改變我們在 OpenGL 中的觀察點,這個觀察點就好像是我們的眼睛,也好像是我們平時所用的攝像機,飛機向前飛行,看到前面的景物越來越近,兩邊的景物在向后退,這就是我們的觀察點在場景中位置改變的結(jié)果。 在飛機的漫游過程中,會涉及到許多矢量數(shù)據(jù),矢量數(shù)據(jù)在飛機的旋轉(zhuǎn),視 26 點的控制過程中發(fā)揮著重要的作用,具體來說就是飛機在向左向右旋轉(zhuǎn)的過程中飛機會有右側(cè)身的效果,這時就要調(diào)用函數(shù) glRotate(r,x,y,z)來產(chǎn)生這一效果。同樣的還有在控制視點的過程中也會用到矢量運算,在本論文中,飛機默認是一直向前飛行,此時就會利用漫游原理,在不進行任何其他的操作時,飛機是沿著( 0,0, z)一直向前飛行,此時對于視點的控制就會利用 gllookat()函數(shù),此函數(shù)包括視點,視點方向,以及向上的向量,通過在程序中設(shè)定相應的變量值,就可以實現(xiàn)這些效果。 在本文中,將視點的位置設(shè)在飛機上,視點將隨飛機的移動而移動和旋轉(zhuǎn),飛機的方向是由俯仰,偏動還側(cè)偏來實現(xiàn)的,也就是相當于飛機的旋轉(zhuǎn)角度,相應的程序如下: 然后設(shè)定鍵盤,通過鍵盤控制飛機的飛行狀態(tài),完成后我們就可以使用鍵盤是實現(xiàn)飛機的左右上下的飛行狀態(tài)。它的基本流程如下: 圖 410 控制流程圖 27 飛行器的控制 交互式應用程序富有成效的和激動人心的性質(zhì)之一就是用戶可以用人類自然的動作(如用鼠 標指示和單擊鼠標,按下鍵盤的不同的按鍵等)來控制程序的流程,按下鍵盤時,對于每個鍵對于應用程序都是有用的,需要被恰當?shù)奶幚?。當我們按下一個按鍵的時候,就會產(chǎn)生一個相關(guān)事件,在程序中為每一個相關(guān)事件設(shè)置一個回調(diào)函數(shù)來處理這個事件。 在本文中,是通過鍵盤對飛機進行控制,對鍵盤的處理有很多中方法,本文是采用一個數(shù)組,數(shù)組存儲了鍵盤的 ASCII 值,當某一按鍵按下時,就會產(chǎn)生一個按鍵事件,并放入到消息隊列中,程序中的回調(diào)函數(shù)處理這類事件,使它產(chǎn)生程序設(shè)計的功能。這樣我們就可以簡單方便的操作鍵盤,在文中主要運用了一下幾 個按鍵,方向鍵上下左右分別控制飛機的上下左右飛行,具體實現(xiàn)如下: if(nChar==VK_UP) { pitch = 15 / (ABS(Speed)+1)。 } if(nChar==VK_DOWN) { pitch += 15 / (ABS(Speed)+1)。 } if(nChar==VK_LEFT) { zprot += 5/(ABS(Speed)+1)。 Throttle*=.99。 } if(nChar==VK_RIGHT) { zprot = 5/(ABS(Speed)+1)。 Throttle*=.99。//減速 } 不進行任何按鍵的操作情況下,飛機沿 z軸方向始終直線飛行,具體的控制使用 OpenGL中的平移變換來進行,具體來說就是調(diào)用 OpenGL中的 glTranslate()來實現(xiàn),在文中具體的 控制如下: 28 glMtrixMode(GL_MODELVIEM)。 glLoadIdentity()。 glTranstratef(,_throttle)。 Drawplane()。 同時,飛機可以實現(xiàn)加速和減速,飛機的加速和減速實際上就是向前移動時的位置增量,位置增量增加,向前速度加快,位置增量減少,向前速度減慢,具體是通過控制飛機的加減速因子來實現(xiàn)的,就是調(diào)用一個簡單的 if 語句來進行控制: If(nchar=VK_UP) Throttle*=.99 Speed=speed*4。減速時同樣如此。 飛機左右旋轉(zhuǎn)的效果是通過飛機圍繞 y 軸旋轉(zhuǎn)來實現(xiàn)的,為了表現(xiàn)飛機左右旋轉(zhuǎn)時的效果,文中用左右鍵控制飛機的向左飛或者向右飛,假如→方向鍵按下時,飛機向右沿弧線飛行,通過計算 圖 411 方向點的移動 則方位角用下面的方法計算: g_angel=angle+speed(每次的增量 )。 Rad_xz=float(*g_angle/)(弧度 =PI*度 /180) 。 相應的視點的角度變化為: g_eye[2]+=sin(rad_xz)*speed。 g_eye[0]+=cos(rad_xz)*speed。 同時目標點的角度的變化為: 29 g_look[0]=g_look[0]+cos(rad_xz)。目標點 x分量; g_look[2]=g_look[2]+cos(rad_xz)。目標點 z分量; g_look[1]=g_eye[1]+g_elev/100。目標點 y分量; 最后調(diào)用函數(shù) glulookAt(視點,目標點,視點方向 )實現(xiàn)對飛行器的控制。 同理,假如←按下時,方向角亦可以用上面的方法計算; 對于仰俯角的處理,仰俯角是飛機繞 x軸旋轉(zhuǎn)產(chǎn)生的結(jié)果。假如↑鍵按下時,用下面的方法計算仰角: g_elev(仰角 )+=speed; 然后調(diào)用 glrotate(g_elev,)就可以產(chǎn)生飛機向上飛行的效果。俯角的計算方法亦如此。 同時,視點也應該有一個相應的范圍,也就是說在引入了地面后,我們的飛行范圍就有一個限制,否則給人一種感覺好像是走進了萬丈深淵,所以我們加入了邊界限制, 具體如下: 1)視點的 x分量小于負邊界值時,就讓它等于負邊界值; 2)視點的 z分 量小于負邊界值時,就讓它等于負邊界值; 3)視點的 x分量大于正邊界值時,就讓它等于邊界值; 4)視點的 z分量大于正邊界值時,就讓它等于正邊界值; 5)仰俯角大于 100時,就讓它等于 100; 6)仰俯角小于負 100時,就讓它等于負 100; 在向左向右的飛行過程中,為了增加飛機飛行過程中的真實感,可以添加飛機的傾斜這一效果,飛機傾斜的控制是通過讓飛機繞 z軸旋轉(zhuǎn)實現(xiàn)的。在本文中,飛機向右飛行時,通過計算視點的變化,可以在確定一條類似飛機飛行軌跡的矢量,調(diào)用 glRotatef(r,x,y,z)(其中 r代表飛機的旋轉(zhuǎn)角度)來表現(xiàn)飛機傾斜的狀態(tài),同時要添 加傾斜的最大限度,在文中設(shè)置為傾斜角度 r的范圍為( 0, 60)。這樣做后,在飛機向右飛行過程中,同時可以看到飛機自身傾斜的狀態(tài),增加了逼真度。 飛行器的尾焰 飛機尾部的火焰,這個火焰也稱為粒子系統(tǒng),它是多個獨立元素或粒子的一個集合,每個粒子都有其獨立的屬性,比如速度,顏色和生命周期等,通過巧妙的使用紋理和其他性能,粒子系統(tǒng)就可以被用于創(chuàng)建其類似飛機尾部火焰這種效果,同時在本文中,飛機火焰還增加了透明的效果,看起來更加真實。 產(chǎn)生顏色混合效果是利用下面這兩個函數(shù): glEnable(GL_BLEND)。 glBlendFunc(GL_SRC_ALPHA, GL_ONE)。 其中第一個函數(shù)是告訴 OpenGL啟用混合,也就是通知 OpenGL要將傳入圖元的顏色和幀緩存中已有的顏色合并,然后再將其結(jié)果存回到幀緩存中區(qū)。第二個函數(shù) glBlendFunc的功能是為場景產(chǎn)生透明這樣的視覺效果,利用透明我們可以 30 模擬水,霧等可以看穿的物體,在這個函數(shù)中,使用兩種不同的方法來選擇源混合因子和目標混合因子。第一個混合因子代表源 RGBA, 第二個混合因子代表目標 RGBA,這里的 GL_ONE指的 是使用目標的當前顏色, GL_SRC_ALPHA代表將源的顏色與源的 alpha值相乘;具體到本文中指的就是參數(shù) glow,GL_ONE代表使用目標的當前顏色;源指的是傳入的圖元,目標指的是當前幀緩存中的像素。 粒子系統(tǒng)的構(gòu)建的流程如下: 圖 412 粒子系統(tǒng)的構(gòu)建過程 首先是產(chǎn)生一個類似飛機尾部火焰形狀的立體圖形,然后為其增加粒子,每一個粒子本身是一個四邊形或者兩個三角形,其上被進行了紋理映射,通常還運用了一定程度的 alpha混合,因此在火焰裝置中,每個火焰粒子都是經(jīng)過紋理貼圖后的結(jié)果,在本文中的最終實現(xiàn)過程如下: 圖 413 飛機的火焰 31 場景中的光照 光照的屬性 在對光照的處理過程中,首先要處理一些屬性數(shù)據(jù),比如光的位置,光的類型,光的顏色,光的方向,材質(zhì)的定義等;在 OpenGL中是利用 gllight*()函數(shù)來定義這些屬性的,它的原型如下所示: Void gllightfv(GLenum light,GLenum pname,TYPE *param) 光照函數(shù)的三個參數(shù)表明了你要創(chuàng)建什么類型的光,所要創(chuàng)建光的屬性以及此屬性的值。 Light 指定了你要對哪種類型的光照進行設(shè)置, pname指定了所要設(shè)置的光的哪一種屬性,最后一個參數(shù) *pname指定了這個屬性的值; 下來一個就是光照的位置,光照的位置一般是一個四值的矢量 ( x,y,z,w),如果 w的值為 0的話,那么這個矢量就定義了光照射過來的方向,這種光源也稱為定向光源,假如 w的值不為 0,那么所定義的這個光源被稱為定點光源。在本文
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1