亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        紋理映射在飛行仿真系統(tǒng)中的應(yīng)用

        2018-02-25 14:27:38李靜
        電子技術(shù)與軟件工程 2018年12期

        李靜

        摘要 本文結(jié)合飛行仿真系統(tǒng)的開(kāi)發(fā)應(yīng)用,系統(tǒng)地介紹了紋理映射技術(shù)的基本概念,深入剖析了紋理映射的應(yīng)用方法和技術(shù)特點(diǎn)。紋理映射技術(shù)在虛擬現(xiàn)實(shí)( VR)場(chǎng)景模擬中有著非常重要的作用,采用OpenGL編程接口,能夠增強(qiáng)三維場(chǎng)景繪制的真實(shí)性,提高了仿真圖形的逼真度。

        【關(guān)鍵詞】飛行仿真 紋理映射 OpenGL

        飛行仿真系統(tǒng)的開(kāi)發(fā)應(yīng)用非常廣泛,其中主要用到虛擬現(xiàn)實(shí)技術(shù),它是計(jì)算機(jī)圖形學(xué)研究中最重要的內(nèi)容之,計(jì)算機(jī)圖形學(xué)一個(gè)主要目的就是利用計(jì)算機(jī)產(chǎn)生真實(shí)感圖形。在飛行仿真系統(tǒng)的開(kāi)發(fā)中,三維飛行場(chǎng)景的建立是非常重要的。紋理映射技術(shù)是OpenGL中廣泛應(yīng)用的一項(xiàng)重要技術(shù),能夠極大地提高虛擬場(chǎng)景的真實(shí)感,在三維及虛擬空間中是一項(xiàng)基本技術(shù)。它利用紋理圖像可以模擬幾何物體表面的紋理細(xì)節(jié),描述三維場(chǎng)景表面的屬性特征。為此,我們需要建立虛擬場(chǎng)景中的三維物體模型,如天空環(huán)境、地形、飛機(jī)跑道、光照環(huán)境和霧環(huán)境等場(chǎng)景。

        1 紋理映射技術(shù)

        1.1 紋理的基本概念

        OpenGL的紋理映射技術(shù)指的是把紋理圖像映射到物體表面,即在一個(gè)平面區(qū)域(紋理空間)上預(yù)定義出紋理圖案,然后建立物體表面空間和紋理圖案坐標(biāo)之間的映射關(guān)系,當(dāng)物體表面的可見(jiàn)點(diǎn)確定后,就可以根據(jù)紋理空間對(duì)應(yīng)點(diǎn)的值將紋理圖案附到物體的表面上。

        紋理映射的過(guò)程:把T中的紋素映射到幾何對(duì)象的每個(gè)點(diǎn)上,幾何對(duì)象上的每個(gè)點(diǎn)又映射到屏幕坐標(biāo)進(jìn)行顯示。

        OpenGL的基本工作流程,如圖1所示。

        1.2 紋理的映射方式

        二維紋理映射的基本方法:

        (1)線性紋理映射;

        (2)使用兩步映射:首先把紋理映射到一個(gè)簡(jiǎn)單的三維中間表面(球面、圓柱面或立方體)上,然后把帶有映射紋理的中間表面映射到需要繪制的對(duì)象表面。

        1.2.1 線性紋理映射

        大部分曲面都是用參數(shù)表示的,曲面上任一點(diǎn)P是參數(shù)u和v的函數(shù)。

        如果已知參數(shù)曲面,線性映射關(guān)系如圖2所示。

        物空間向像空間的映射由觀察和投影變換來(lái)完成,然而,從紋理空間向像素空間的映射有一個(gè)不利因素,即選中的紋理面片常常與像素邊界不匹配,通常需要計(jì)算像素的覆蓋率。因此,我們最常用的紋理映射方法是由像素空間向紋理空間映射,它避免了像素分割計(jì)算,并能簡(jiǎn)化反走樣操作。

        1.2.2 兩步紋理映射

        首先,把紋理映射到簡(jiǎn)單的中介曲面,稱為s-映射;再將它從中介曲面映射到最終幾何物體表面,稱為o-映射。其中,中介表面通??梢詾槿我夥较虻钠矫妫瑘A柱面、立方體表面和球面(當(dāng)中介表面越能接近景物表面時(shí),紋理圖案的變形就越?。?。

        1.3 紋理映射的基本步驟

        1.3.1 紋理的定義

        紋理通??梢允且痪S、二維,在一些應(yīng)用上也可使用三維紋理進(jìn)行圖形繪制,但程序中常見(jiàn)的是二維紋理。OpenGL中紋理定義可用函數(shù)glTexImage2D()指定目標(biāo)紋理、紋理尺寸、邊界寬度等。

        1.3.2 紋理的濾波控制

        控制濾波可用函數(shù)glTexParameterf()來(lái)實(shí)現(xiàn)??刂茷V波是因?yàn)楫?dāng)紋理圖像是方形,而被映射物體是異型時(shí),圖像上的像素不能與屏幕上的像素一一對(duì)應(yīng),因此局部放大或縮小時(shí),就要定義合適的濾波方式,來(lái)適當(dāng)?shù)目刂茍D形。

        (1)縮小或放大濾波。通常紋理圖形為正方形或矩形,但當(dāng)映射到曲面上或變換為屏幕坐標(biāo)后,紋理的單個(gè)像素可能很難與屏幕上像素對(duì)應(yīng),這樣屏幕上的單個(gè)像素可能對(duì)應(yīng)于紋理中單個(gè)元素的一部分(放大濾波)或?qū)?yīng)于紋理中多個(gè)元素(縮小濾波)。

        (2)紋理的重復(fù)和縮限。紋理坐標(biāo)一般定義在[O,11范圍內(nèi),如果超出這個(gè)范圍,紋理映射可以在坐標(biāo)s,t方向上進(jìn)行重復(fù)(GLREPEAT)和縮限(GL_CLAMP )。

        1.3.3 紋理的映射方式

        指定紋理映射方式可用函數(shù)gITexEnv*()來(lái)實(shí)現(xiàn),紋理在像素上的應(yīng)用方式主要包括貼花方式(GL DECAL):在物體上覆蓋紋理圖像,不讓其下任何物體顏色透過(guò);調(diào)制方式(GL__ MODULATE):圖像以透明方式貼在物體表面;顏色混合模式(GL BLEND):使用一個(gè)RGBA常量來(lái)融合物體原色和紋理圖像的顏色。但是在光照下紋理處理效果必須采用調(diào)制方式。

        1.3.4 繪制場(chǎng)景,指定紋理坐標(biāo)

        確定物體和紋理坐標(biāo)以及建立兩者的對(duì)應(yīng)關(guān)系是紋理映射的關(guān)鍵,紋理坐標(biāo)(s,t)可以利用函數(shù)glTexCoord()來(lái)定義,也可以利用計(jì)算機(jī)自動(dòng)形成。對(duì)于二維紋理圖像來(lái)說(shuō),其紋理坐標(biāo)沿兩個(gè)方向的變化范圍均為0.0至1.0,物體坐標(biāo)則可以取任意值,當(dāng)紋理坐標(biāo)對(duì)應(yīng)于物體四角的幾何坐標(biāo)時(shí),紋理圖像恰好覆蓋整個(gè)物體表面。但當(dāng)物體太大時(shí),一般來(lái)說(shuō),需要在物體表面進(jìn)行紋理纏繞以覆蓋整個(gè)表面。此時(shí),需要注意的是物體紋理圖像的左右邊緣和上下邊緣應(yīng)能夠自然相接,這樣才能使物體表面的紋理表現(xiàn)比較自然。

        紋理映射的基本步驟如圖3所示。

        2 不同紋理圖片格式的加載

        2.1 加載TGA格式的紋理圖片

        TGA格式圖像一般有壓縮和非壓縮兩種格式,分別介紹:

        (1)非壓縮格式前面標(biāo)記的綠色部分(共12個(gè)字節(jié))表示對(duì)于所有的非壓縮TGA格式圖像值都是相同的,通常用于在讀取數(shù)據(jù)時(shí)鑒別是否為TGA圖像。

        例如:繪制一個(gè)立方體,并進(jìn)行紋理貼圖。

        需要注意的是:TGA圖像中數(shù)據(jù)存放的順序是BGR(A),而在OPENGL中順序是RGB(A),所以在進(jìn)行紋理生成時(shí)必須先進(jìn)行格式轉(zhuǎn)換。在OpenGL中只能加載24位或32位的TGA圖像生成紋理。

        (2)壓縮紋理。TGA的壓縮算法采用了RLE算法,RLE算法的基本思想是將數(shù)據(jù)分為兩大類:

        A:連續(xù)的不重復(fù)字節(jié)

        B:連續(xù)的重復(fù)字節(jié)

        RLE算法應(yīng)用于RGB格式的圖片壓縮中,則把數(shù)據(jù)分為:

        A:連續(xù)的不重復(fù)像素顏色值

        B:連續(xù)的重復(fù)像素顏色值

        然后將數(shù)據(jù)按這兩類數(shù)據(jù)分成若干長(zhǎng)度不相等的數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊的開(kāi)始都是一個(gè)1字節(jié)長(zhǎng)度的header(RLE在純數(shù)據(jù)壓縮中header是2個(gè)字節(jié)16位),后面緊跟著data數(shù)據(jù)塊,如下:

        Header(l個(gè)字節(jié))

        Data(變長(zhǎng))

        讀取其像素?cái)?shù)據(jù)部分需要注意一下,需要分情況討論看是A類數(shù)據(jù)還是B類數(shù)據(jù)。2.2加載BMP格式的紋理圖片

        BMP位圖文件由四部分組成:位圖文件頭結(jié)構(gòu)、位圖信息頭結(jié)構(gòu)、調(diào)色板和位圖像素?cái)?shù)據(jù),如表l所示。

        表1:BMP位圖文件結(jié)構(gòu)

        位圖文件頭信息結(jié)構(gòu)BITMAPFILEHEADER

        位圖信息頭結(jié)構(gòu)BITMAPINFOHEADER

        調(diào)色板Palette

        位圖像素?cái)?shù)據(jù)DIB Pixel

        一個(gè)完整的BMP位圖文件,可以分為文件信息頭,位圖信息頭和RGB顏色陣列三個(gè)部分。

        (1)文件信息頭主要包含“是否是BMP文件”,文件的大小等信息。

        (2)位圖信息頭則主要包括BMP文件的位圖寬度、高度、位平面、通道數(shù)等信息。

        (3) RGB顏色陣列,里面包含我們所需的BMP位圖的像素?cái)?shù)據(jù),BMP位圖的顏色陣列部分,像素?cái)?shù)據(jù)的存儲(chǔ)是以左下角為原點(diǎn)。

        3 三維視景仿真環(huán)境的紋理映射

        3.1 自然環(huán)境的建模

        方法:

        (1)盒子法:利用六個(gè)多邊形彼此相鄰構(gòu)成封閉的六面體。分別表示天空的前面、后面、左面、右面、上面、下面,然后對(duì)六邊形分別進(jìn)行貼圖,最后形成天空。通過(guò)構(gòu)建六邊形貼圖的天空盒,可看出多邊形與多邊形交界處有黑線(可以通過(guò)改變紋理環(huán)繞模式),使用OpenGL函數(shù)glTexParameteri設(shè)置,參數(shù)包括:GL_REPEAT,GL_CLAMP,GLCLAMP TO EDGE。通過(guò)比較,可知使用GL CLAMP_ TO EDGE模式可以很好解決紋理交界處的縫隙痕跡,測(cè)試可知,三種模式下情景的渲染速度沒(méi)有明顯不同。

        (2)平面天空:繪制一個(gè)足夠大的矩形,使之充滿整個(gè)屏幕,將包含天空紋理的位圖映射到該矩形,使矩形隨視點(diǎn)變化,并確保繪制的天空總是位于視點(diǎn)的前方,以保證天空始終可見(jiàn)。當(dāng)使用這種方法建立天空模型如果出現(xiàn)紋理失真現(xiàn)象時(shí),我們可利用繪制多個(gè)多邊形而不是單個(gè)多邊形來(lái)形成天空模型(使用多幅紋理圖形來(lái)完成整個(gè)天空建模,避免了紋理的拉伸變形)。

        (3)球形法:創(chuàng)建一個(gè)巨大的圓頂形半球面,將整個(gè)場(chǎng)景框進(jìn)去,然后將天空的紋理圖片映射到半球面上。這樣,我們可以看到一整片浩瀚無(wú)邊的天空,如圖4所示,天空效果圖如圖5所示。

        設(shè)球的中心在原點(diǎn),半徑為R球面方程:X2+Y2+22=R2;

        f(p)= X2+Y2+22-R2;其中,p為球面一點(diǎn)。

        F(p)=(px,py,pz)=f(R,)

        球面可通過(guò)一系列三角形來(lái)形成一個(gè)球面,當(dāng)三角形足夠多的時(shí)候,就可以得到一個(gè)理想球面。優(yōu)點(diǎn):天空模型逼真,符合人們對(duì)天空的直觀認(rèn)識(shí),并且對(duì)紋理沒(méi)有過(guò)高的要求。缺點(diǎn):建模過(guò)程較復(fù)雜,編程量大,渲染速度慢,并且隨天空?qǐng)鼍霸酱?,系統(tǒng)消耗越大,不適用于大型的天空?qǐng)鼍敖!?/p>

        3.2 地形環(huán)境的建模

        隨著計(jì)算機(jī)圖形硬件和計(jì)算機(jī)圖形學(xué)的發(fā)展,地形的顯示從二維地形圖發(fā)展到三維真實(shí)感地形環(huán)境的階段。地形的建模目前主要有兩種方法:真實(shí)地形和模擬地形。真實(shí)地形現(xiàn)實(shí)世界中地形的真實(shí)再現(xiàn),通過(guò)獲取實(shí)際數(shù)據(jù)來(lái)構(gòu)造,這種方式真實(shí)感強(qiáng),但數(shù)據(jù)結(jié)構(gòu)復(fù)雜且生成圖形速度慢。模擬地形通??梢圆捎秒S機(jī)生成地形算法和分形算法,本文中著重介紹模擬地形方法,由于飛行場(chǎng)景中地形的建模對(duì)真實(shí)感要求不高,但對(duì)實(shí)時(shí)性要求較高,此方法生成地形速度較快,在視覺(jué)上滿足真實(shí)地形的再現(xiàn)。

        本文中,地形建模的方法是通過(guò)讀取RAW文件中的地形數(shù)據(jù),然后進(jìn)行地形渲染的同時(shí)進(jìn)行紋理映射。地形數(shù)據(jù)的獲得與地形的渲染方法:首先讀出RAW文件中的數(shù)據(jù),然后根據(jù)一定的映射關(guān)系將數(shù)據(jù)映射到地形的高程上。高度圖的格式:高度圖的文件格式是RAW,這個(gè)格式不包含諸如圖像類型和大小信息的文件頭,所以易于被讀取。RAW文件只是簡(jiǎn)單的二進(jìn)制文件,只包含地形的高度數(shù)據(jù)。由于高度圖通常是一張8位灰度圖。它的高度值變化范圍是在0-255之間,其中O(黑色)表示最低高度而255(白色)表示最大高度??梢允褂靡粋€(gè)縮放值增加這個(gè)間隔,用這個(gè)縮放值乘以默認(rèn)高度值,增加其范圍,這樣可以增加高度范圍,但會(huì)使兩個(gè)高度之間的誤差變大。

        具體實(shí)現(xiàn)步驟:

        (1)首先通過(guò)函數(shù)LoadRawFile()讀出RAW文件中的數(shù)據(jù)。先將其保存到一個(gè)數(shù)組中,然后將其映射為高程數(shù)據(jù)。

        (2)根據(jù)地形的X和Y坐標(biāo),從RAW文件中讀出的數(shù)據(jù)映射到地形的高程值。

        (3)根據(jù)從RAW獲得的三維地形的每個(gè)頂點(diǎn)數(shù)據(jù),以三角形面片的形式渲染地形。

        同樣,我們也可以采取隨機(jī)生成地形算法來(lái)進(jìn)行地形場(chǎng)景建模。飛行場(chǎng)景對(duì)真實(shí)感要求不高,而對(duì)于地形實(shí)時(shí)性要求很高。所以,采用基于數(shù)據(jù)模擬方法來(lái)模擬地形,通過(guò)隨機(jī)生成地形算法來(lái)獲取的地形高程數(shù)據(jù),再采用線性差值算法對(duì)其生成的地形網(wǎng)格進(jìn)行平滑處理,并將其映射到地形高程值。

        生成的地形網(wǎng)格如圖6所示,地形紋理效果如圖7所示。

        4 結(jié)束語(yǔ)

        紋理映射技術(shù)是OpenGL中廣泛應(yīng)用的一項(xiàng)重要技術(shù),能夠極大地提高虛擬場(chǎng)景的真實(shí)感,在三維及虛擬空間中是一項(xiàng)基本技術(shù)。在虛擬仿真研究中應(yīng)用很廣泛,是計(jì)算機(jī)圖形學(xué)研究中最重要的內(nèi)容之一,主要目的就是利用計(jì)算機(jī)產(chǎn)生真實(shí)感圖形。在三維飛行仿真場(chǎng)景的開(kāi)發(fā)中,紋理技術(shù)應(yīng)用是很常見(jiàn)的,我們需要建立虛擬場(chǎng)景中的三維物體模型,如天空環(huán)境、地形、飛機(jī)跑道、光照環(huán)境和霧環(huán)境等場(chǎng)景,并使用紋理技術(shù)為三維場(chǎng)景進(jìn)行紋理貼圖,增強(qiáng)三維效果,使人身臨其境。

        參考文獻(xiàn)

        [1]郝燕玲,路輝,基于OpenGL實(shí)現(xiàn)海底地形顯示的研究[J].計(jì)算機(jī)仿真,2003 (10).

        [2]尚游,陳巖濤.OpellGL圖形程序設(shè)計(jì)指南[M].北京:中國(guó)水利水電出版社,2001.

        [3]潘李亮,基于OLD的大規(guī)模真實(shí)感場(chǎng)景室外場(chǎng)景實(shí)時(shí)渲染技術(shù)的初步研究[D].西安電子科技大學(xué)學(xué)士學(xué)位論文,2003.

        [4]游雄,基于虛擬現(xiàn)實(shí)技術(shù)的戰(zhàn)場(chǎng)環(huán)境仿真[J].測(cè)繪學(xué)報(bào),2002.

        [5]郭艷萍,婁國(guó)勝.等高線三維顯示技術(shù)的探討[J].三晉測(cè)繪,加04 (01):19-21.

        [3]姚建新,馮秀蘭,等高線的三維地形建模與實(shí)現(xiàn)[J].林業(yè)資源管理,2002 (04): 65- 69.

        [6]詹榮開(kāi)等,虛擬現(xiàn)實(shí)技術(shù)在武器對(duì)抗仿真中的應(yīng)用研究[J].計(jì)算機(jī)仿真,2001(03).

        精品人妖一区二区三区四区| 高清无码精品一区二区三区| 三年片在线观看免费观看大全中国| 蜜桃色av一区二区三区麻豆 | 人妻熟妇乱又伦精品视频| 一区二区黄色素人黄色| 日韩欧美第一区二区三区| 欧美午夜精品一区二区三区电影| 精品人妻系列无码人妻漫画| 精品久久久久久国产潘金莲| 最新国产乱人伦偷精品免费网站| 中文精品久久久久人妻不卡| 情av一区二区三区在线观看| 亚洲一区不卡在线导航| 久久艹影院| 初女破初的视频| 亚洲日韩成人无码| 国产av一区二区三区天美| 久久国产国内精品对话对白| 国产无遮挡a片又黄又爽| 色先锋av影音先锋在线| 亚洲视频在线中文字幕乱码| 五十路熟妇高熟无码视频| 亚洲av永久中文无码精品综合| 日本中文一区二区在线| 亚洲一区二区三区资源| 久久亚洲国产精品123区| 精品88久久久久88久久久| 成人免费一区二区三区| 人成午夜免费视频无码| 亚洲精品中文字幕一二三区| 看一区二区日本视频免费| 国产成人福利av一区二区三区| 国模无码视频专区一区| 青青草国产成人99久久| 永久免费观看国产裸体美女| 少妇高潮无套内谢麻豆传| av无码精品一区二区三区| 丝袜美腿丝袜美腿丝袜美腿丝袜 | 亚洲av一二三四区四色婷婷| 四虎永久在线精品免费一区二区 |