999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

圖像引擎算法及其應(yīng)用的研究

2008-12-31 00:00:00
電腦知識與技術(shù) 2008年35期

摘要:隨著視頻游戲的發(fā)展,新技術(shù)的不斷出現(xiàn)、更新,使得游戲變得更為精彩,游戲玩家們對游戲質(zhì)量的要求也在不斷地提高,而精彩的游戲需要一套好的圖像引擎來實現(xiàn),但國內(nèi)現(xiàn)在的圖像引擎的發(fā)展還不夠強大。在此背景下這篇文章研究了幾種圖像引擎的算法,并將之用于計算機三維圖像編程中,制作了一個演示軟件——Magic Box,模擬了現(xiàn)實世界中的風(fēng)、雨、雷、電等各種自然現(xiàn)象以及天空頂?shù)取?/p>

關(guān)鍵詞:圖像引擎;粒子系統(tǒng);OpenGL;DirectX;仿真;虛擬現(xiàn)實

中圖分類號:TP301文獻標(biāo)識碼:A文章編號:1009-3044(2008)35-2387-03

Study of Graphic Engine Arithmetic and Application

LI Mei1, CHEN Li2

(1. Computer Since Department, Guangdong Agriculture Industry Business Polytechnic College, Guangzhou 510507, China;2. Guangzhou Yueqin Information consultation Cor., Guangzhou 510507, China)

Abstract: Game is becoming more wonderful along with the development of video game and appearance of new technology. The player's demands about game quality are increased. Wonderful game needs one good graphic engine. But the development of graphic engine isn't mightiness in China. So, this paper studied some arithmetic of graphic engine on this background. And the writer developed computer three dimension animation-Magic Box. This software simulated some nature phenomena-wind, rain, thunder, lightning, and so on.

Key words: graphic engine; particle system; openGL;directX;simulation;visual reality

1 引言

虛擬現(xiàn)實、科學(xué)計算可視化及多媒體技術(shù)的飛速發(fā)展均對用戶界面提出了更高的要求。目前,國內(nèi)外已存在為數(shù)不少的圖像引擎,但都或多或少存在一些缺陷,如平臺面向PC環(huán)境,對于系統(tǒng)資源的要求較高,盡管剪裁后可能可以適應(yīng)對于靜態(tài)空間的要求,但對動態(tài)空間的要求依然難以降低,而且經(jīng)剪裁以后,其功能受到極大削弱;而有些平臺盡管較為成熟,但真正在商品化產(chǎn)品中使用時會面臨很高的授權(quán)費用,無形中增加了產(chǎn)品的成本,使得產(chǎn)品在市場競爭中面臨困境;另一些平臺因其實現(xiàn)策略問題,使得二次開發(fā)受到限制;有些平臺則因過于追求速度,實現(xiàn)中較多的代碼采用匯編語言,使得移植非常困難。在此背景下,筆者研究了一套圖形引擎算法,并將之運用于三維動畫設(shè)計,使用OpenGL三維圖像函數(shù)庫作為圖像引擎底層開發(fā)基件,其中涉及Blur算法應(yīng)用、阿爾法圖層混合/融合技術(shù)等主要技術(shù),使用C++語言設(shè)計了一套動畫演示軟件——《Magic Box》,其主要特點是:注重粒子系統(tǒng)和各種自然現(xiàn)象的模擬,把這兩種效果集合一身,更好地體現(xiàn)真實的世界;支持多種紋理圖像格式;大量封裝OpenGL函數(shù)使二次開發(fā)更便捷;集成多種圖像特效;粒子特效可真實地再現(xiàn)基本各種自然現(xiàn)象(雨、霧、風(fēng)、云、雪);可生成多種基本三維圖形;支持中文文字輸出;可生成物體動態(tài)陰影;以及源代碼完全公開且任何人可免費使用并對其進行修改

2 圖像引擎的功能

一般圖像引擎所需要提供的功能包括:曲面(Curved Surfaces)、動態(tài)光線(Dynamic Lighting)、體霧(Volumetric Fog)、鏡面(Mirrors)、入口(Portals)、天空體(Skyboxes)、節(jié)點陰影(Vertex Shaders)、粒子系統(tǒng)(Particle Systems)、靜態(tài)網(wǎng)格模型(Static Mesh Models)、網(wǎng)格模型動畫(Animated Mesh Models)等。該文重點研究了其中的霧和粒子效果的實現(xiàn)。

2.1 霧

在游戲場景中,霧可以增添神秘感。例如,在戰(zhàn)爭的黎明,或是進入黑暗的地域,都會用霧來渲染氣氛。不過,霧還有更重要的一個作用,就是可以大大減少渲染物體的數(shù)目。如果沒有霧,只要是在場景中可見范圍內(nèi)的所有三維物體,從觀察者的位置到無窮遠處,都必須渲染出來顯示到屏幕上。在真實的世界中,我們也不可能看到無窮遠處的地方,越遠的位置,景物就越模糊。所以,在游戲中,我們必須加入霧的效果,來限制三維世界的可視距離,讓計算機中的三維場景更加逼真。[1]

2.2 粒子系統(tǒng)

在虛擬的現(xiàn)實場景中,有一些物體很難用幾個圖元來表示,例如:一枚火箭拖著濃煙飛行、爆炸產(chǎn)生的大量碎片等,這些物體的邏輯結(jié)構(gòu)很難表達,而且還會動態(tài)地變化。而使用粒子系統(tǒng)就可以實現(xiàn)這些特效。粒子系統(tǒng)就是用大量的簡單圖元來表示物體的多個特征,如:大小、顏色、位置以及粒子本身的生命周期等都可以隨機改變,這樣就真實地模擬了自然界,虛擬出了一些自然界中的場景。[1]

3 圖像引擎系統(tǒng)使用的主要技術(shù)

筆者設(shè)計的三維動畫軟件Magic Box基于Windows操作系統(tǒng)開發(fā),使用OpenGL開發(fā)平臺進行程式編寫。在此軟件中,筆者主要研究了霧效的實現(xiàn)和粒子系統(tǒng)的實現(xiàn),除此以外,還研究了紋理、光以及天空頂?shù)膶崿F(xiàn)技術(shù)。主要使用的圖像算法如下:

3.1 紋理應(yīng)用

建立三維場景最重要的手法是使用紋理。三維場景和三維物體只有加上紋理,才能具有各種表面,顯得逼真。紋理就是3D圖形中的2D貼圖(位圖),能應(yīng)用到三角形上,用來增加真實感。在紋理制作時最重要的就是確定紋理的尺寸和紋理的坐標(biāo)。理論上可以創(chuàng)建任何尺寸的紋理,但是為了提高效率,紋理尺寸最好選擇正方形,而且邊長最好是2的n次冪,例如16×16,32×32,64×64,128×128,256×256。其中256×256是效率最高的尺寸。而紋理坐標(biāo)的作用就是在紋理上指定一個點,因為紋理是2D的,所以僅需要兩個值:橫軸和縱軸的值,其值均應(yīng)該在0和1之間,左上角是(0,0),右下角是(1,1),如圖1所示。[1]

在制作3D場景時,可以把紋理應(yīng)用到對象上,即紋理映射。圖2顯示了一個紋理映射到立方體的例子,表1則是每個頂點的紋理坐標(biāo)。

3.2 燈光與材質(zhì)

在OpenGL中,我們能創(chuàng)建不同類型的光,使場景看起來更真實。創(chuàng)建時主要考慮的是各種類型光的屬性。[2]

1) 光源的位置:給出的是一個三維坐標(biāo),例如(0,10,0)。

2) 光的方向:用向量的形式表示,如(0,1,0)。

3) 光的范圍:通常用光從光源發(fā)出后所能達到的最大距離表示。

4) 環(huán)境光:通過設(shè)置光的顏色來區(qū)別不同光線,光的顏色則主要采用紅、綠、藍三個分量來設(shè)置。

5) 光的衰減:在光源到達它的范圍之內(nèi),光會逐漸衰減。設(shè)計時則采用設(shè)置不同發(fā)光內(nèi)徑和發(fā)光外徑以及光的距離來實現(xiàn)。

6) 光的材質(zhì):材質(zhì)用于描述對象的反光性能,使光看起來有光澤。主要是通過設(shè)置漫反射顏色、法線等來實現(xiàn)。

3.3 霧效

圖3是筆者實現(xiàn)的光與霧融合之后的場景, 表2是霧效的生成公式。

3.4 粒子系統(tǒng)

粒子系統(tǒng)主要用來表示形狀不確定的幾何物體。粒子模型通常具有以下特征:

粒子系統(tǒng)可以不斷生成新的粒子;

每一個新粒子都有各自完全獨立的屬性;

所有超過自己生命時期的粒子都被宣告“死亡”,從粒子系統(tǒng)中刪除;

每個在生存時期的粒子都根據(jù)自己的屬性進行各自的移動和轉(zhuǎn)換;

當(dāng)前生存的粒子在圖形系統(tǒng)被渲染和顯示。

粒子的生成的數(shù)目決定了粒子物體的粒子密度。生成粒子的方法有兩種:

第一種方法:每一幀的粒子數(shù)目=粒子系統(tǒng)的平均粒子數(shù)目+Rand*粒子變化數(shù)目(公式1)。

公式中,粒子系統(tǒng)的平均粒子數(shù)目是粒子系統(tǒng)初始化時決定的;粒子變化數(shù)目是指定的一個粒子數(shù)目變化范圍;Rand是從0-1的一個隨機數(shù)值。通過這個方法計算出粒子數(shù)目總數(shù)在平均范圍內(nèi)進行變化。

第二種方法是根據(jù)粒子物體在屏幕上顯示的大小來決定粒子的數(shù)目:每一幀的粒子數(shù)目=(粒子系統(tǒng)的平均粒子數(shù)目+Rand*粒子變化數(shù)目)*屏幕像素(公式2)。

公式中加入了屏幕像素,粒子物體在屏幕上顯示越來越多,粒子系統(tǒng)生成的粒子數(shù)目就越多,看起來就越逼真。

為了讓粒子能夠漸近地顯示出來,上面兩種方法中粒子系統(tǒng)的平均粒子數(shù)目使用線性公式進行計算:

平均數(shù)目=初始化粒子數(shù)目+粒子增加數(shù)目*顯示的畫面幀數(shù)目(公式3)。

粒子系統(tǒng)中每個粒子都有自己的屬性影響著自己的運動和顯示。粒子屬性包括:初始位置;速度(包括速率的大小和方向);初始化大小;初始化顏色;初始化透明度;形狀;生命期大小。

粒子的初始位置是粒子系統(tǒng)生成粒子時在三維坐標(biāo)系中的位置。通常粒子系統(tǒng)也有一個指定的形狀,粒子系統(tǒng)的形狀決定了粒子在三維坐標(biāo)系中顯示出的形狀。

粒子系統(tǒng)隨著時間進行變化,粒子系統(tǒng)中每個粒子都進行相應(yīng)的變化。這些變化包括:粒子的位置、粒子顏色、粒子的透明度和粒子的大小。在進行粒子系統(tǒng)渲染時,粒子的當(dāng)前位置加上粒子的速度,就可以得到粒子的新位置。粒子的顏色、透明度和大小的初始值通常在粒子系統(tǒng)中進行統(tǒng)一指定,隨著時間變化進行相應(yīng)的變化。

生物有自己的生命期,粒子系統(tǒng)中每個粒子都有自己的生命期,在生命期中,粒子可以被渲染出來。當(dāng)生命期終止以后,就宣告粒子死亡,該粒子就不再有效,也不能再被渲染出來了。

圖4為粒子系統(tǒng)的通用結(jié)構(gòu)。

3.5 天空頂

在游戲中,天空可以有兩種方法來實現(xiàn),一種是天空盒,一種是天空頂。天空盒在游戲中如果處理不好,渲染出來的霧,就會把天空盒的邊界顯露出來。如果在游戲中采用圓形天空頂取代天空盒,由于以更多的頂點構(gòu)成天空頂,霧將被更平均地渲染。還可以通過實時改變某些個別頂點的顏色創(chuàng)建一些很酷的效果,例如在一天不同時間里模擬真實的日照。[3]

創(chuàng)建天空頂,首先創(chuàng)建一個半球的數(shù)學(xué)方程:

x2 + y2 + z2 = r2

描述了一個球心在笛卡爾坐標(biāo)系原點,半徑為r的球體。可以把它寫成下面的方程:

f(p) = x2 + y2 + z2 - r2 = 0

方程中,p是圓上一點。以上方程處理球體有些困難,我們把它轉(zhuǎn)向使用球面坐標(biāo)系,在球面坐標(biāo)方式下,球體上的一點將由下面的方程決定:

p = (px, py, pz) = f(ρ, φ) = (fx(ρ, φ), fy(ρ, φ), fz(ρ, φ))

方程中,ρ(phi [fai])稱為緯度,而φ(theta)稱為經(jīng)度。那么,球面坐標(biāo)系下球體的方程如下:

fx(ρ, φ) = r sin(ρ) cos(φ)

fy(ρ, φ) = r sin(ρ) sin(φ)

fz(ρ, φ) = r cos(ρ)

其中,r為球體半徑,我們將使用這個方程,因為只要給出一個點的緯度和經(jīng)度,就可以求出該點的x, y, z 值。對于一個球來說,ρ的取值范圍是-90°到90°,φ的取值范圍是0°到360°,即:

-π/2 <= ρ <=π/2

0 <= φ <= 2π

以上是一個完整的球體的取值。

現(xiàn)在已經(jīng)知道了怎樣獲取球體上一個點的坐標(biāo),再制定一點算法規(guī)則,讓有足夠的點來渲染球體。首先,需要一點額外信息,球面上有無限多個點,實際上,只要有兩百多個點,就能渲染出一個優(yōu)美的球體。φ的取值范圍是0°到360°,有無窮多個取值,在這里就只取一個值,稱為Dφ (dtheta),這個值包括了一定的數(shù)量,就可以從0 到2π間反復(fù)取值,沿XZ平面得到 2π/Dφ個點。如果對于取值為30°的一個Dφ,將得到360°/30°= 12個點,Dφ取得越小,就能得到越多的點(注意:如果選擇的Dφ太小,球體將由巨大數(shù)量的頂點所組成,從而影響程序性能)。

算法規(guī)則的偽碼如下:

for (ρ從-π/2到π/2,ρ+= dρ)

{

for (φ從0到2π,φ+= Dφ)

{

px = r * sin(ρ) * cos(φ)

py = r * sin(ρ) * sin(φ)

pz = r * cos(ρ)

}

}

如果還想在游戲中得到更好的效果,還要建立一系列三解形,才能真實地渲染出天空頂。使用的算法將產(chǎn)生一個三角形帶。生成一個三角形帶需要四個頂點,前面三個頂點構(gòu)成一個三角形,而第四個頂點描述了第二個三角形,這個三角形的另外兩個頂點就是前面三角形的第二和第三個頂點。

構(gòu)成三角形頂點是:

ρ, φ

ρ+ Dρ, φ

ρ, φ + D φ

ρ+ Dρ, φ + D φ

以上四個點是構(gòu)成所需的三角形帶,用來正確地渲染球體或天空頂。構(gòu)成球體的頂點數(shù)量,實際上就是把360除以D φ的值和90除以Dρ值相乘。方程如下:

(360/Dφ)*(90/Dρ) = 天空頂?shù)捻旤c數(shù)量

4 三維動畫——Magic Box的實現(xiàn)

基于以上圖像引擎技術(shù),筆者在OpenGL軟件開發(fā)平臺下利用C++語言程式編寫,制作了一個演示版三維動畫軟件——Magic Box,利用了以上引擎技術(shù)構(gòu)建了一個虛擬的空間。其中包括天與地的創(chuàng)建以及建筑物的建造。在空間中應(yīng)用了一部分的粒子效果,例如:火,雨,雪等等。另外還有一些圖像特效,例如:光效,霧效等等。開發(fā)的平臺選擇在Win32位操作系統(tǒng)下進行,能為用戶提供一個與設(shè)備無關(guān)的、面向Win32位的圖像引擎。

5 結(jié)束語

筆者研究設(shè)計的這一套三維動畫軟件《Magic Box》是圖像引擎的一個部分,可以被應(yīng)用于游戲行業(yè)、計算機動畫制作行業(yè)、電影特效行業(yè),也可以用來制作各種工業(yè)監(jiān)控軟件以及圖形建模、圖形拓撲分析、GIS系統(tǒng)、CAD軟件 、工業(yè)SCADA系統(tǒng)、圖形自動開票系統(tǒng)、工作流程設(shè)計、智能表單系統(tǒng)、中文報表系統(tǒng)、圖形管理、工程制圖等專業(yè)應(yīng)用中。其應(yīng)用前景極為廣闊。

參考文獻:

[1] 楊青,楊磊編. 3D游戲編程[M]. 中國科學(xué)技術(shù)出版社,北京希望電子出版社.

[2] (美)Mark DeLoura. 游戲編程精粹1[M]. 王淑禮,張磊,譯. 人民郵電出版社.

[3] (美)Mark A. DeLoura. 游戲編程精粹2[M]. 袁國忠, 陳蔚,譯. 人民郵電出版社.

主站蜘蛛池模板: 欧美高清日韩| 国产精品永久久久久| 老司机精品久久| 永久在线精品免费视频观看| 中文字幕一区二区视频| 国产精品三级专区| 欧美激情福利| 国产人碰人摸人爱免费视频| 亚洲动漫h| 亚洲男人的天堂在线观看| 国产成人做受免费视频| 强奷白丝美女在线观看| 亚洲一区第一页| 亚洲国产成人精品无码区性色| 久久综合色天堂av| 国产麻豆aⅴ精品无码| 在线国产91| 啪啪啪亚洲无码| 精品久久久久久中文字幕女| 91久久偷偷做嫩草影院电| a免费毛片在线播放| 国产一级在线观看www色| 国产综合色在线视频播放线视| 伊人激情综合| 91久久偷偷做嫩草影院精品| 婷婷综合色| a级毛片视频免费观看| www.狠狠| 欧美色图第一页| 国产一级在线播放| 一级毛片免费观看久| 国产精品自拍合集| 9丨情侣偷在线精品国产| 日本伊人色综合网| 欧美精品xx| 免费国产高清视频| 精品久久蜜桃| 99热这里只有精品在线观看| 欧美伦理一区| 国产乱子伦视频在线播放| 国产原创演绎剧情有字幕的| 999国产精品永久免费视频精品久久 | 青青草91视频| 中文字幕永久视频| 国产经典在线观看一区| 久久青草精品一区二区三区| 国产系列在线| 国产精品久久久精品三级| 欧美激情视频二区| 欧美精品三级在线| 欧美狠狠干| 亚洲精品午夜天堂网页| 亚洲第七页| 久久综合婷婷| 丁香五月婷婷激情基地| 成人在线亚洲| 97在线公开视频| 色噜噜综合网| 美女无遮挡拍拍拍免费视频| 国产伦片中文免费观看| 亚洲一级毛片| 久久久久久久久亚洲精品| 一本大道东京热无码av| 亚洲侵犯无码网址在线观看| 国产黑人在线| 久久午夜夜伦鲁鲁片无码免费| 国产精品999在线| 国产成人精品优优av| 综合色亚洲| 伊人久久福利中文字幕| 亚洲av无码成人专区| 亚洲91在线精品| 无码区日韩专区免费系列| 国产97公开成人免费视频| 亚洲精品无码专区在线观看| 日本91视频| 成人精品在线观看| 毛片最新网址| 大陆精大陆国产国语精品1024| 中文无码精品A∨在线观看不卡| 国产欧美中文字幕| 亚洲国产亚综合在线区|