• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            蕙麓

            Email:oxionghui@gmail.com

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::

            文章來自:http://www.c-cnc.com/dz/news/news.asp?id=18622
            在進(jìn)行3D場景渲染時,天空是必不可少的因素。對于3D天空的模擬在視景仿真系統(tǒng)、計(jì)算機(jī)游戲、三維動畫中有著廣泛的應(yīng)用。但是,目前對于天空的仿真還存在很多不足,一些模擬方法中存在實(shí)現(xiàn)復(fù)雜、計(jì)算耗時、圖像分辨力不高,真實(shí)感不強(qiáng)且只能生成靜態(tài)圖像等問題。本文在研究了前人仿真天空算法的基礎(chǔ)上,利用目前3D圖形行業(yè)中流行的OpenGL技術(shù)和有被譽(yù)為"大自然的幾何學(xué)"美稱的分形理論,提出了一種更加簡單實(shí)用的仿真3D天空的方法,可以仿真出具有動態(tài)效果和不同天氣的3D天空,繪制速度快,真實(shí)感強(qiáng)。

            l構(gòu)造天空模型

            1.1 OpenGL技術(shù)[1.2]

            OpenGL作為一套圖形標(biāo)準(zhǔn),由數(shù)百個功能函數(shù)組成,提供了訪問圖形硬件的所有特性,其嚴(yán)格按照計(jì)算機(jī)圖形學(xué)原理設(shè)計(jì)而成,符合光學(xué)和視覺的原理,非常適合可視化仿真系。其優(yōu)勢在于:首先,在OpenGL中,允許視景對象用圖形方式表達(dá);其次,OpenGL通過光照處理能表達(dá)出物體的三維特性,其光照模型是整體光照模型。可視化仿真圖像的顏色體現(xiàn)著物體與視點(diǎn)以及光源之間的空間位置關(guān)系,具有很強(qiáng)的三維效果。此外,為彌補(bǔ)圖形方法難于生成復(fù)雜自然背景的不足,OpenGL提供了對圖像數(shù)據(jù)的使用方法,即直接對圖像數(shù)據(jù)讀、寫和拷貝,或者把圖像數(shù)據(jù)定義為紋理與圖形方法結(jié)合在一起生成視景圖像以增強(qiáng)效果。本文研究了基于OpenGL技術(shù)的3D天空仿真,使得算法易于實(shí)現(xiàn),并且有很好的可視化效果。

            1.2 傳統(tǒng)模型

            在傳統(tǒng)的3D游戲中,對于天空的仿真,程序員往往從實(shí)時簡單的角度出發(fā),采用非常簡化的天空模型,通常包括以下3種方法[3-5]:用一種接近天空的淡藍(lán)色來清除背景;采用天空盒(skyBox)的方法:即首先繪制一個多邊形,然后進(jìn)行立方體紋理貼圖;八棱錐天空模型:定義一個天頂,以這個頂點(diǎn)為中心繪制一圈三角形扇,然后進(jìn)行紋理映射。

            這3種方法都具備了實(shí)時性,方法簡單的優(yōu)點(diǎn),但同時也存在明顯的不足,第一種方法繪制的天空效果看起來太平面化,簡單粗糙,逼近度不高。第二種方法對紋理的要求非常高,如果紋理使用得不好,在一個比較大的多邊形上的紋理就容易產(chǎn)生拉伸變形的副作用。此外,霧化設(shè)置也會產(chǎn)生問題,如果霧的設(shè)置靠近觀察點(diǎn),則天空的顏色會變淡甚至沒有。第三種方法有明顯的天頂。

            顯然,在如今這種對3D場景仿真要求越來越高的時代,這些方法已經(jīng)不適應(yīng)時代的要求,需要尋求一種渲染速度快,真實(shí)感強(qiáng),有一定交互能力的3D天空模型。

            1.3 半球型天空模型

            地球是球型的,所以天空像半個球一樣籠罩在大地之上。在用計(jì)算機(jī)仿真3D天空時,半球型天空模型顯然符合真實(shí)世界的天空模型。利用數(shù)學(xué)中的球面方程,可以建立如下模型:

            P是球面上一點(diǎn),R為球的半徑。在球面坐標(biāo)系下方程改寫為:

            對于一個半球.φ為緯度,其變化范圍是O≤φ≤90°;θ為經(jīng)度,其變化范圍是O≤θ≤360°。采用球型(DOme)的方法,比起采用盒子(BOx)的方法,有很多優(yōu)點(diǎn)。首先由于球形方法繪制的天空具有更多的頂點(diǎn),霧化效果可以繪制得更加均勻[5]。同時也可以實(shí)時改變單個頂點(diǎn)的顏色,這樣可以獲得一些非常好的效果,如一天不同時刻的太陽光。

            半球型天空模型也存在不足:

            (1)頂點(diǎn)數(shù)目過多,影響渲染速度。

            N為所需要繪制的頂點(diǎn)總數(shù);△φ,△θ為繪制球型天頂?shù)捻旤c(diǎn)經(jīng)緯度間隔,值越小、網(wǎng)格越密,繪制越精細(xì)。由于采用OpenG技術(shù)中的三角形帶繪制(GL-TRIANGLE一STRIP),每次繪制4個頂點(diǎn),每個頂點(diǎn)被繪制4次,故需要乘以4。

            (2)三角函數(shù)的運(yùn)算過多。

            在單一場景的渲染中不會影響渲染速度,但在復(fù)雜的3D場景中,渲染速度的劣勢會體現(xiàn)出來。因?yàn)樵谟?jì)算機(jī)中三角函數(shù)的運(yùn)算較之加、減、乘、除等運(yùn)算要慢的多。

            1.4 曲面天空模型

            為保持球型天空模型的優(yōu)勢并彌補(bǔ)該算法的不足,本文研究了一種渲染速度更快的曲面天空模型,該模型如圖1所示。

            該模型類似于將一個經(jīng)過細(xì)分的平面的4個角點(diǎn)向下拉,形狀看上去像一個撐開的降落傘,將他罩在場景之上,可以模擬3D天空。曲面的長度為S為:

            頂點(diǎn)坐標(biāo)(x,y,z)的計(jì)算公式為:

             

            其中△s為曲面細(xì)分間隔;j,i為循環(huán)參數(shù)。

            曲面天空模型仍然可以用OpenGL技術(shù)中的三角形帶((GLTRIANGLE_STRIP)繪制,但他避免了三角函數(shù)的運(yùn)算,且頂點(diǎn)數(shù)目比相同精度的球型天空模型少,故增加了渲染速度。

            2 天空云圖

            2.1 分形云圖

            分形[4]方法建造的物體模型結(jié)構(gòu)精細(xì)、算法控制相對簡單,適合于描繪云、樹等結(jié)構(gòu)精細(xì)的物體。本文利用分形理論中的插值算法產(chǎn)生靜態(tài)天空云圖紋理,算法如下:

            (1)在平面上劃分正方形網(wǎng)格n×n,隨機(jī)給A1,A2,A3,A4這4個角點(diǎn)的顏色。如圖2所示。

            (2)計(jì)算中點(diǎn)值,B1=(A1+A2+A3+A4)×0.25+ξ×scale,其中ξ是一個隨機(jī)量;Scale一(1/2)H(標(biāo)度)H即Hurst指數(shù),他也是分形維數(shù)D的度量:D一2一H,如圖3所示。

             

            (3)根據(jù)A1,A4,B1點(diǎn)和網(wǎng)格外一虛擬點(diǎn),重復(fù)第(2)節(jié),得到邊中點(diǎn)c1的顏色值。同理,可計(jì)算出C2,C3,C4邊中點(diǎn)的顏色值。

            (4)遞歸步驟(2),(3),使其正方形網(wǎng)格不斷細(xì)化,直到達(dá)到預(yù)期的遞歸深度。

            以上步驟中,正方形初始點(diǎn)的顏色是隨機(jī)賦予的,但正方形網(wǎng)格內(nèi)的所有點(diǎn)不是隨機(jī)分布的。通過采用分形插值算法,使得網(wǎng)格內(nèi)相鄰點(diǎn)之間建立了某種聯(lián)系,從而使生成體內(nèi)部過渡得更加自然。這樣,通過分形插值算法,得到一個2維數(shù)組,將數(shù)組中的每一個元素值看成是云的不透明度數(shù)據(jù)。最小數(shù)組值代表最藍(lán)色,天空中云最少的部分,最大的值代表最白色,天空中云最重的部分。分析數(shù)組并生成藍(lán)天白云紋理圖如圖4所示。

            2.2 紋理映射

            紋理映射技術(shù)[1.2]也叫紋理貼圖技術(shù)(Texture Map-ping),與建造模型的方法相比,在摸擬物體表面細(xì)節(jié)方面,紋理映射是一個較有效的方法。景物表面紋理細(xì)節(jié)的模擬在真實(shí)感圖形合成技術(shù)中起著非常重要的作用,這種將景物表面紋理細(xì)節(jié)的模擬稱為紋理映射技術(shù)。現(xiàn)在,紋理映射已經(jīng)成為三維圖形世界中最為常用的技術(shù)之一,其數(shù)學(xué)過程十分復(fù)雜,但OpenGL已對其進(jìn)行處理,于是編程者可以利用幾個函數(shù)就可以完成紋理貼圖。

            執(zhí)行紋理貼圖的步驟可以概括為:定義紋理貼圖;控制紋理;說明紋理貼圖方式;激活紋理映射;定義紋理坐標(biāo)等。在一個球面上進(jìn)行紋理映射是比較復(fù)雜的,采用不同的映射方式將產(chǎn)生不同的問題。如果采用平面映射的方式將在連續(xù)處產(chǎn)生紋理拉伸現(xiàn)象,如果采用球面映射,最大的問題是在球面的極點(diǎn)產(chǎn)生紋理的聚集現(xiàn)象,對于好的紋理,這種現(xiàn)象可以縮減到最小。根據(jù)球面幾何知識,可以得到紋理坐標(biāo)的具體計(jì)算公式:

            加上1/2的原因是為了使U,V坐標(biāo)的值處于(0.0,1.0)范圍內(nèi)。

            3 動態(tài)仿真

            本文采用定時器技術(shù)和改變紋理矩陣坐標(biāo)的方法實(shí)現(xiàn)云的流動效果。首先定義一個100 ms的定時器,每隔100ms紋理坐標(biāo)改變一次。其次,使用多重紋理來添加一個單獨(dú)的云彩貼圖,通過變換紋理矩陣坐標(biāo)實(shí)現(xiàn)流動。變換紋理坐標(biāo)的方法是先將當(dāng)前矩陣類型設(shè)置為紋理矩陣(GL-TEXTURE),然后調(diào)用glTranslate(),glRotate()和glScale()函數(shù)實(shí)現(xiàn)坐標(biāo)的平移、旋轉(zhuǎn)和縮放。這樣,云就可以緩慢地在天空中移動。此外,通過添加按鍵響應(yīng)函數(shù),在函數(shù)體中利用()penGL的模型變換函數(shù),如glRotate(),可以以任意角度旋轉(zhuǎn)3D天空,達(dá)到用戶與3D場景的交互的效果。

            4仿真結(jié)果

            本仿真實(shí)驗(yàn)在CPU為P4,主頻為1.7 GHz,內(nèi)存為256 M,集成顯卡上完成。仿真結(jié)果如圖5~圖8所示。天空中的云彩可以沿球形天空緩慢移動,客戶可以通過上下左右鍵旋轉(zhuǎn)3D天空。該模型在實(shí)時3D場景仿真中可以籠罩在場景之上,有很好的3D效果,并且真實(shí)感強(qiáng)。采用半球型天空模型的幀速率為250~285 f/s;采用曲面型天空模型的幀速率為324~340 f/s,在保證真實(shí)感和交互性的前提下,從渲染速度上看曲面天空模型優(yōu)于半球型天空模型。

             

             

             

            5 結(jié) 語

            本仿真系統(tǒng)的軟件平臺為VC++6.O,通過OpenGL圖形庫函數(shù)實(shí)現(xiàn)可視化仿真。利用球形方程、平面方程、三角函數(shù)等幾何原理建立各種3D天空模型,運(yùn)用分形理論中的插值算法編寫天空紋理,并通過OpenGL函數(shù)進(jìn)行三角形帶繪制天空框架,紋理映射技術(shù),映射出具有真實(shí)效果的3D天空。從仿真結(jié)果來看,真實(shí)感強(qiáng),實(shí)時性好,此外,通過按鍵響應(yīng)函數(shù),可以以任意角度旋轉(zhuǎn),任意高度升降3D天空,交互性強(qiáng),非常適合3D游戲的戶外場景仿真。

            posted on 2012-06-09 16:27 蕙麓 閱讀(1159) 評論(0)  編輯 收藏 引用 所屬分類: 計(jì)算機(jī)圖像學(xué)(OpenGL)
            久久久www免费人成精品| 日本久久中文字幕| 久久99国产精品一区二区| 久久亚洲美女精品国产精品| 久久精品天天中文字幕人妻| 国产成人精品久久一区二区三区av| 国产福利电影一区二区三区久久久久成人精品综合 | 天堂无码久久综合东京热| 久久精品国产亚洲av麻豆蜜芽| 国内精品久久国产大陆| 四虎影视久久久免费| 国产精品久久久久久影院 | 亚洲乱码精品久久久久..| 国产成人久久精品一区二区三区| 国产精品内射久久久久欢欢| 国产A级毛片久久久精品毛片| 天天综合久久久网| 久久99国产乱子伦精品免费| 久久免费观看视频| 久久99国产精品久久久| 亚洲国产精品无码久久久秋霞2| 久久久精品波多野结衣| 久久精品国内一区二区三区| 亚洲va久久久噜噜噜久久| 少妇被又大又粗又爽毛片久久黑人 | 精品久久久久久久久久中文字幕| 精品久久久久久无码中文字幕一区 | 久久久精品国产亚洲成人满18免费网站 | 久久精品视频网| 国产精品久久自在自线观看| 亚洲AV日韩精品久久久久久| 久久综合视频网| 亚洲国产精品嫩草影院久久 | 亚洲国产精品无码久久久蜜芽| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 欧美与黑人午夜性猛交久久久| 美女写真久久影院| 欧美亚洲另类久久综合| 超级碰久久免费公开视频| 狠狠色伊人久久精品综合网| 久久本道久久综合伊人|