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

動態立方體紋理生成算法

2011-01-01 00:00:00陳茂,顧大權,王忠超,李冠林
計算技術與自動化 2011年1期

摘 要:CEM算法使用六張2D紋理圖來構建虛擬場景中的背景環境。通常其生成的背景環境是固定不變的,不能滿足某些需要背景變換場景的需求。針對這個問題,提出一個動態立方體紋理生成算法,采用映射變換的方法動態的生成立方體紋理圖,實驗結果表明該算法可以構建實現實時、動態的背景場景。

關鍵詞:CEM算法;立方體紋理;映射變換

中圖分類號:TP391.9 文獻標識碼:A

A Dynamic Formation Algorithm of Cube Texture

CHEN Mao,GU Daquan,WANG Zhongchao,LI Guanlin

(Institute of Meteorology, PLA University of Science and Technology, Nanjing 211101, China)

Abstract:CEM algorithm uses six 2D texture map to construction the background in a virtual scenes. Usually the background scenes generated by CEM algorithm is constant. So the algorithm is incompetent when it requires background adjustment . In allusion to this question. A dynamic formation algorithm of cube texture is proposed. The algorithm use mapping transformation method to generate the cube texture dynamically. The result of the simulation demonstrates the method can create real-time,dynamic background scenes.

Key words:CEM algorithm;cube texture;mapping transformation

1 引 言

在虛擬仿真中常用的動態環境映射技術用于近似地表示景物表面對周圍環境的反射。通常采用的動態環境映射技術是動態CEM(Cube Environment Mapping,立方體環境映射)技術[1],可以實時地生成水、金屬、玻璃等物體的反射和折射效果,可以構造逼真實時的虛擬環境。 因此,CEM技術具有很強的應用和研究價值?,F有的CEM算法采用固定六面體來實現環境的反射,其生成的天空背景是固定不變的,當需要在場景中進行大尺度漫游時不符合現實世界實際情況。因此本文提出了一種動態立方體紋理生成算法,可以動態的生成CEM算法所需的立方體紋理圖,使場景更為真實。

2 CEM算法

CEM算法的原理是利用算法現實虛擬世界中光線傳播和反射,以此得到逼真的渲染效果,其具體實現方法是將虛擬世界看作一個封閉的六面體,選取六個正方形2D紋理,分別對應于立方體六個面,用這六張紋理圖來表示現實世界中六個方向的背景畫面,如圖1 所示。

紋理坐標定義為三維向量,從立方體中心指向其表面一點。圖2給出了立方體紋理映射的整個過程。入射視線I從視點到達景物表面O點,O點的法向量為N,經物體的表面反射后生成一條反射光線R?;阽R面反射,入射角等于反射角,因而反射光線公式為

R=2N(NI)-I (1)

圖1 立方體紋理組合示意圖[2]

圖2 光線反射示意圖

該反射光線與立方體紋理圖相交于E點。所以景物表面O點的反射顏色就是E點處的紋理值的函數,顯然反射光線R就是立方體紋理圖的三維紋理坐標。

傳統的CEM算法所需的六張立方體紋理圖是初始設置不變的。而一般來說為了實現虛擬場景的無限可漫游,其天空模型相對于視點來說是固定不變的[3],而在CEM算法所設定的立方體紋理圖沒有改變的前提下,就會造成所繪制天空背景固定不變的情況。根據現實世界的經驗,天空背景離視點的距離很遠,當視點進行小范圍內的漫游時背景紋理的位移很小可以忽略,此時保持背景紋理不變與真實情況相近,可以滿足需求。但在一些需要進行大尺度漫游的虛擬場景中,用固定不變的背景來進行繪制顯然是不合適的,也與實際情況不符。因此本文提出了一個在進行大尺度漫游時動態生成立方體紋理的算法,較好的解決了這個問題。

3 動態立方體紋理生成算法

3.1 算法原理和步驟

本文所提出算法的原理是先采用或生成一張足夠大并能較好模擬天空背景的紋理圖片,通過一定的映射規則映射到立方體的各個面上。在程序運行中進行場景漫游時,根據視點的位置對背景紋理圖片進行調整位移,將位移后的紋理再映射到立方體上,最后得到所需的紋理圖片。生成立方體紋理圖片的流程如圖3所示:

圖3 立方體紋理圖生成流程

本文算法中的重點在于如何將一張2D紋理圖映射到立方體各個面上,使最后生成的立方體紋理滿足視點漫游時的合理調整。本文所提算法在實現這一功能時的中心思想是以客觀世界情況為準,通過模擬真實世界中視點漫游時天空背景相對于視點的變化和映射規律來得到所需的立方體紋理圖。

具體的算法步驟為:

1)以視點為坐標原點(0,0,0),構建一個半徑為R,圓心為(0,0,-r)的半圓曲面S。

2)將初始紋理圖m平行映射到半圓曲面S上。

3)以視點為中心構造一個立方體C,即為最終所求立方體紋理的映射面。

4)選取立方體C上各關鍵點,作視點-關鍵點射線并與半圓曲面S相交,求出相交點坐標。

5)根據立方體關鍵點和相交點的對應關系將曲面S紋理映射到立方體C上[4]

6)組合立方體C上各個面的映射紋理,即為最終所求立方體紋理。

7)在視點進行漫游時,以視點位置為基礎將初始紋理圖m進行位移,再重復2~6步驟。

圖4是本算法中將初始紋理圖m映射到立方體C上的示意圖,其中A,B兩點為圖m中任意選定的兩點,可以看出在視點漫游m發生位移時,A,B兩點在立方體上映射位置的變化。遍歷立方體C上每一點,計算出其在曲面S上的對應紋理數據,最后得到的結果就是符合要求真實性較強的立方體紋理圖。

圖4 映射方法示意圖

3.2 映射算法

算法中最重要的一步就是將紋理圖m上的紋理映射到立方體C上的映射方法,建立以視點為原點的三維坐標系,則曲面S的方程表達式為:

x2+y2+(z+r)2=R2 (2)

在進行從曲面S向立方體C進行映射時,對于立方體C上任意一點p(xp,yp ,zp),其所對應的曲面S上的點d就是從原點過點p的射線與曲面S的交點。射線的方程表達式為:

xxp=yyp=zzp (3)

將其代入公式(2),最后求得交點d的坐標(xd, yd)分別為:

xd=

-xpzpr±x2pR2x2p+R2y2p+R2z2p-r2x2p-r2y2px2p+y2p+z2p(4)

yd=

-ypzpr±y2pR2x2p+R2y2p+R2z2p-r2x2p-r2y2px2p+y2p+z2p(5)

最后求得的交點坐標有一正一負兩個解,而在本文算法中射線從原點發出,并且曲面S具有以原點為中心的部分對稱性。因此結果xd, yd與xp,yp同號,具有相同的正負值。根據這個特性,最終確定了交點d坐標的數值,而點d的z坐標在算法中不需要,在這里不用求解。

由于初始紋理圖m采用平行映射的方法映射到曲面S上,立方體C上任一點p在圖m上對應點的(x,y)坐標就是交點d的(x,y)坐標。知道任一點p對應圖m上坐標的解法后,對立方體上所有點按照上述公式進行求解,將各點映射結果進行組合后即可得到最終結果[5]。如映射結果坐標超出圖m范圍以外,則可通過對圖m進行擴展來確保結果不至于為空[6]。

3.3 關鍵點選擇

理論上對立方體上所有點進行求解,所得出的結果是最精確,最符合實際要求的。但這樣算法的時間復雜度太大,在一些要求實時性的場景仿真中不能接受。本文算法在實際操作中進行了一個算法復雜度和準確度的平衡,只在立方體表面采用了幾個關鍵點,在這些關鍵點的基礎上將立方體每個面劃分為8個三角片,關鍵點的選取和三角片的劃分如圖5所示:

圖5 關鍵點選取和三角片劃分

圖5中左邊立方體中紅點所示即為所選取關鍵點,如圖所示在立方體上5個面共選取25個點,以這25個關鍵點為基礎,將立方體頂部和前后左右5個面各劃分出8個三角片來,圖5中間圖案為立方體頂部劃分示意圖,右邊為另外四個面劃分示意圖。計算出每個三角片三個頂點在紋理圖m上的對應坐標,再通過線性插值的方法計算出立方體三角片上每一點的紋理數據。

對于立方體前后左右四個面,本文算法并沒有將其與頂部一樣的處理,而是在各面的下端留下1/3的位置沒有進行劃分。這主要是考慮到若進行全部劃分,那么在進行映射計算時,這4個面下端的關鍵點在曲面上對應的坐標絕對值較大,不僅提高了對初始紋理圖m的尺寸要求,其最后得到的結果也會出現m上較大區域的紋理映射到很小一塊三角片上,壓縮失真比較嚴重。而一般利用立方體紋理圖來繪制天空背景的場景中,由于地面或海洋的遮擋,處于地平面以下也就是4個面下半部的立方體紋理實際上是不需要的?;谕瑯拥目紤],對立方體的底面也不作處理。對于各個面下部的空余部分和地面的處理,本文算法采用了顏色填充的方法,選取合適的顏色對剩余部分進行填充,補足立方體紋理圖的需求。

3.4 參數確定

在本文算法中,主要有兩個參數即球面半徑R和球面圓心坐標z值-r,本文算法是通過模擬現實世界中的天空背景對于立方體的映射.球面半徑R即為天空球面的半徑,r為地球的半徑,即R=r+h,h為地面到天空的高度。R和r的比值最后決定了所求立方體紋理圖不同部位壓縮情況變化,一個簡單的對應關系是,R和r的比值越小,立方體紋理圖靠近底面部位壓縮情況同頂部相比其壓縮比率越大;R和r比值越大,立方體紋理圖各部分壓縮情況越相近。在R和r的比值的確定上,通過查詢資料和結果驗證,最終確定R和r的比值為61/60,其所得出的結果是比較符合現實情況的。

在已確定R與r的比值后,確定這兩個參數的絕對值需要考慮的是初始紋理圖m的尺度大小。根據公式(4)(5)可得知,求出的交點d的坐標xd和yd與r和R是線性關系。對于一張已選定的紋理圖m來說,存在一個合適的R和r值,使最終得到的立方體紋理尺度適中,不至于使最后結果天空背景上云的尺寸過大或過小。在本文算法中通過實驗結果分析,逐步調整參數r和R的值,使最終的結果符合需求。

4 實驗結果

本程序運行的平臺是操作系統windows xp,顯卡RandonX1450,顯存128M,CPU INTEL Core(TM)2 1.66GHZ,內存1GB編譯環境VC6.0,圖形接口采用D3D,最后得到的實驗結果如圖6所示[7]

圖6 實驗結果

圖6中a是在算法中使用的初始紋理圖,b~f是生成的立方體各面紋理,g是視點漫游一個距離后生成的立方體頂部紋理。從f和g的對比中可以看出,本文算法可以根據場景中視點位置的變化來動態的生成立方體紋理,解決了傳統方法中所構建的天空背景固定不變的問題,使仿真結果更加逼近真實。在結果生成的立方體紋理中有些部位出現了不規則拉伸情況,這是由于在映射關鍵點之間采用了線性插值的方法,而實際上各點之間是一個非線性的變化。本文算法考慮到復雜度和準確度的平衡,采取了選取關鍵點折中方案,其結果有一定的誤差。如何選取合適的關鍵點并對立方體各面進行三角片劃分,在保證效率的前提下使結果更為準確,是對本算法研究下一步要做的工作。

5 結 論

本文提出的立方體紋理動態生成算法以2D天空紋理圖為基礎,通過關鍵點映射和線性插值的方法生成了所需的5張立方體紋理圖。在視點進行漫游時,通過對初始紋理圖的位移再映射,可以實現對立方體紋理的調整變化。實驗結果表明本算法有效,可以用于需要進行大范圍視點漫游的場景仿真中。

參考文獻

[1] NVIDIA Corporation,OpenGL Cube Map,Texturing [EB/OL],1999,http://developer.nvidia.com/object /cube_map_ogl_tutorial.htm

[2] 沈璐.基于DirectX的三維圖像開發,[EB/OL],2004-7-1. http://www.cqvip.com/QK/87226X/2004007/10766059.html

[3] 顧大權,范茵,許屏,等.建立天空場景的模擬算法[J].氣象科技,2007,(35)2:292-296.

[4] 彭國倫.3D繪圖程序設計[M].北京:科學出版社,2009.

[5] Dale Kirkland,3Dlabs.WGL_ARB_pbuffer,[EB/OL],2002—3—12,http://www.opengl.org/registry/specs/ARB/wgl_pbuffer.txt

[6] CHEN J.X.,LOBON.V.,Real.Time Fluid Simulation in a Dynamic Virtual Environment [J].IEEE Computer Graphics and Applications,1 997,l 7(3):52-61

[7] Bimal Poddar,Intel,WGL_ARB_render_texture,[EB/OL],2001—6-16. http://oss.sgi.com/projects/ogl_sample/registry/ARB/wgl_render_texture.txt

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 国产黄色视频综合| 国产美女在线观看| 特级精品毛片免费观看| 色国产视频| 成人韩免费网站| 亚洲男人的天堂久久精品| 亚洲精品卡2卡3卡4卡5卡区| 毛片视频网| 亚洲天堂免费| 亚洲第一网站男人都懂| 国产精品一区在线麻豆| 久久久久88色偷偷| 乱色熟女综合一区二区| 伊人精品视频免费在线| 日韩a级片视频| 中国国产一级毛片| 亚洲成aⅴ人片在线影院八| 亚洲一区波多野结衣二区三区| 最新国产麻豆aⅴ精品无| 尤物亚洲最大AV无码网站| 青青草原偷拍视频| 91久久精品国产| 国产成人综合久久精品尤物| 亚洲另类国产欧美一区二区| 97视频精品全国在线观看| 久久无码av三级| 欧美国产日韩在线| 美女毛片在线| 免费在线观看av| 国产白浆视频| 亚洲精品国产综合99久久夜夜嗨| 国产网站在线看| 真人免费一级毛片一区二区| 久久国产精品嫖妓| 国产色偷丝袜婷婷无码麻豆制服| 日韩精品欧美国产在线| 五月婷婷综合网| 国产成人精品亚洲77美色| 国产精品福利导航| 欧美在线综合视频| 四虎影院国产| 国产sm重味一区二区三区| julia中文字幕久久亚洲| 久久五月天综合| 青青青国产精品国产精品美女| 久久精品丝袜| 日韩AV无码免费一二三区| 福利在线不卡一区| 一区二区三区四区精品视频 | 波多野结衣爽到高潮漏水大喷| 国内精自视频品线一二区| 人妻无码中文字幕一区二区三区| 一级毛片在线播放免费| 日韩av无码DVD| 毛片免费在线视频| 亚洲精品卡2卡3卡4卡5卡区| 日韩经典精品无码一区二区| 日韩人妻少妇一区二区| 亚洲天堂视频在线播放| 婷婷激情亚洲| 亚洲高清资源| 午夜精品久久久久久久99热下载| 97久久超碰极品视觉盛宴| 亚洲精品国产首次亮相| 久久a毛片| 欧美成人一级| 色爽网免费视频| AV无码国产在线看岛国岛| 免费一极毛片| 欧美日本激情| 这里只有精品在线播放| 国产亚洲精久久久久久无码AV| 久久99这里精品8国产| 亚洲女人在线| 四虎国产在线观看| 国产成人综合久久精品尤物| 国产呦视频免费视频在线观看| 中国一级毛片免费观看| 国产精品青青| 在线观看视频99| 国产精品女在线观看| 欧美影院久久|