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

基于3DS文件讀取的虛擬場景實現(xiàn)

2012-07-13 06:30:04馬建倉
電子設計工程 2012年23期
關鍵詞:信息模型

陳 曉,馬建倉

(西北工業(yè)大學 電子信息學院,陜西 西安 710129)

隨著計算機圖形學的發(fā)展,計算機動畫、科學計算可視化和虛擬現(xiàn)實逐漸成為計算機圖形學領域中3大重要技術,其中三維現(xiàn)與廣泛應用于建筑學、醫(yī)學、模擬仿真、虛擬現(xiàn)實等諸多領域[1]對大多數(shù)人來說,計算機真實感圖形已不再是一個陌生的名詞,它正日益廣泛的深入到人們日常的工作、學習和生活中,在影視特技、廣告動畫中,人們已經領略到計算機真實感圖形的神奇魅力。真實感圖形是一種計算機生成技術,它首先在計算機中構造出所需場景的幾何模型,然后根據(jù)假定的光照條件,計算畫面上可見的各個景物表面的光亮度,從而產生逼真的視覺效果。

文中主要針對Autodesk公司的3DMAX軟件建立幾何模型,從而對生成的3DS文件進行編程,實現(xiàn)3DS文件的讀取、重繪及控制。傳統(tǒng)的基于過程的設計方法,由于相關函數(shù)多而且散雜同時數(shù)據(jù)又與函數(shù)分離,導致不便于程序的移植,為了克服這些缺點,本文采用了面向對象的程序設計方法,將3DS文件的形體數(shù)據(jù)讀入到類中,然后利用光線追蹤技術[2]實現(xiàn)對三維模型的渲染,使得生成的場景更加逼真,具有真實感。

1 3DS文件和OpenGL的繪制流程簡介

1.1 3DS文件簡介

3DS文件是基于塊(chunk)結構存儲的。一個塊開始是2個字節(jié)的ID,4個字節(jié)的塊長度信息,然后是塊的主要數(shù)據(jù)。將3DS文件以16進制方式打開如圖1所示,數(shù)據(jù)按照低位在前,高位在后的方式存儲。例如,2個16進制字節(jié)FFAF組成的整型數(shù),表明AF是高字節(jié),F(xiàn)F是低字節(jié);對于長整型數(shù),如。938E 0600,表明8E93是低位字,0006是高位字。

圖1 3DS文件的16進制數(shù)據(jù)構成Fig.1 3 DS file hexadecimal data form

3DS文件中 有一個基本塊,其ID是4D4D,每個3DS文件的開頭都是這樣的一個塊。基本塊中的子塊是3D編輯塊和關鍵幀塊,前者的ID是3D3D,后者的ID是B000.圖2說明了3DS的塊結構以及各個塊之間的嵌套關系。下面對主要的幾個塊進行簡單介紹。

1)主編輯塊(0X3D3D)

描述場景數(shù)據(jù)的主編輯塊存儲了當前編輯場景的狀況和當前窗口的配置數(shù)據(jù),這些數(shù)據(jù)是用于顯示三維圖形的重要幾何信息,也是基于OPENGL裝載3DS文件的重點煙酒部分。

2)材質塊(0XAFFF)

材質塊定義了使用與物體上的材質屬性,包括材質的名稱,顏色以及貼圖等。如果讀入的材質包含貼圖,則貼圖所對應的文件名、透明度信息、位置和纏繞方法也都存儲在材質塊的響應子塊中。

圖2 3DS文件塊結構Fig.2 3 DS file chunk structure

3)物體塊(0X4000)

物體塊下有物體網格塊 (0X4100)和物體材質塊(0X4130)。物體網格塊存儲的是模型的頂點、頂點的紋理坐標、面信息以及邊信息等。物體材質塊中存儲的是當前物體上所賦予的材質,該塊與材質塊的區(qū)別是,材質塊存儲的是3DS文件中材質庫中的信息,而物體材質塊中存儲的是當前物體上的材質信息。

4)其他塊

當遇到塊信息未知或對模型顯示不起作用的塊時(如關鍵幀塊),可不進行處理直接讀入下一個塊。

1.2 OpenGL的繪制流程

OpenGL全稱為“開放式圖形庫”,是由SGI公司開發(fā)的三維圖形API,目前在圖形開發(fā)領域已經成為工業(yè)標準。OpenGL是一種強大的三維圖形開發(fā)工具,是圖形硬件的軟件接口[3],OpenGL主要工作是將三維的物體投影到一個二維平面上,之后處理得到的像素,進行顯示。首先將物體轉化為可以描述物體幾何性質的頂點與描述圖像的像素,在執(zhí)行其他操作后,最終將這些數(shù)據(jù)轉化為像素數(shù)據(jù)。

1)針對每個頂點的操作和幾何要素裝配

每個頂點的空間坐標需要經過模型取景矩陣變換、法向矢量矩陣變換,若允許紋理自動生成,則由變換后的頂點坐標所生成的新紋理坐標替代原有的紋理坐標,再經過當前紋理矩陣變換。然后根據(jù)幾何要素類型決定采取不同的幾何要素裝配方式。

2)像素操作

由主機讀入的像素首先解壓縮成適當?shù)慕M分數(shù)目,然后進行數(shù)據(jù)放大、偏置,并經過像素映射處理,根據(jù)數(shù)據(jù)類型的限制在適當?shù)娜≈捣秶鷥取O袼刈詈髮懭爰y理內存,使用紋理映射或光柵化生成像素段。

3)像素段操作

當使用紋理映射時,每個像素段將產生紋素,再進行霧效果計算、反走樣處理,接著進行剪裁處理、一致性檢驗、模板檢驗、深度緩沖區(qū)檢驗和抖動處理。

2 3DS文件的讀取與控制

3DS文件中采用的是塊結構,并且塊與塊之間存在嵌套的關系,所以對3DS文件中三維模型數(shù)據(jù)的讀取采用遞歸的方法。返回上一級的條件是當前已經讀入的塊字節(jié)數(shù)是否等于塊的長度,從父塊跳轉到子塊可用switch語句實現(xiàn),通過子塊的ID判斷進入那個子塊分支。當遇到沒有必要讀入的塊時,可通過ID判斷,若不需要此塊信息,則可將文件指針向前移動(塊長度—6)個字節(jié)[5]然后break跳過該塊,處理下一塊。當遇到需要讀入的塊時,例如材質塊,通過判斷當ID為0XAFFF(EDIT-MATERIAL)時,首先自加記錄材質數(shù)目的變量,然后為當前材質塊分配一塊空白的結構,接著遞歸讀出相關信息。當主塊讀完后,整個讀入程序結束。讀入程序的主要流程圖如圖3所示。

圖3 3DS文件處理流程圖Fig.3 3DS document processing flow chart

通過面向對象的編程,實現(xiàn)了3DS文件數(shù)據(jù)信息的讀取,對象的繪制就是根據(jù)類中保存的信息進行繪制,場景控制主要是基于D3D InputSystem實現(xiàn)鍵盤和鼠標的控制操作。用OpenGL繪圖命令繪制出來,主要代碼如下。

3 光線追蹤技術

光線追蹤時一種真實地顯示物體的方法。光線追蹤算法是生成真實感圖形的主要算法之一。它通過跟蹤每一條從視點出發(fā)的光線,計算光線與景物交點的光強,可以精確地在三維實體上產生陰影、反射、折射及表面紋理等真實感很強的光學效果。標準的光線追蹤算法需要計算每一條與景物空間相交的光線,并且要根據(jù)景物的性質進行光的反射、折射等計算,計算量非常龐大,因此很難滿足真實感圖形顯示的實時性要求,為了提高顯示的實時性,一般通過提高光線追蹤算法的效率及并行處理技術來實現(xiàn)。

在本文中采用二叉空間剖分[6](BSP)加速技術,來提高光線追蹤的效率。它由Schumacker于1969年首先提出,90年代初期由John Carmack和John Romero最早在第一人稱視角游戲Doom中引入。自那以后,幾乎所有的第一人稱射擊類游戲都采用BSP技術。BSP樹能應用在深度排序、碰撞檢測、繪制、節(jié)點裁剪和潛在可見集的計算,極大地加速了三維場景的漫游。它基于這樣一個事實:空間中的任何平面都將整個空間分割成兩個半空間,位于該平面某一側的所有點構成了一個半空間,位于另一側的點則定義了另一個半空間,該平面則是將兩個半空間剖分開來的分割面。根據(jù)這種空間剖分的方法,可以建立起對整個幾何場景和場景中各種物體幾何的描述。BSP樹的根節(jié)點就是整個場景,每個節(jié)點所代表的區(qū)域被平面分成兩部分,一部分是平面前面(左側)區(qū)域的子節(jié)點,另一部分是平面后面(右側)區(qū)域的子節(jié)點。對子節(jié)點剖分,一直向下遞歸直到空間內部沒有多邊形或者剖分的深度達到指定的數(shù)值時才停止。BSP樹具有內存開銷小,剖分產生的無效區(qū)域少,樹結構比較平衡及樹的深度較淺等優(yōu)點。

4 實驗仿真

基于上述方法,本文設計實現(xiàn)了三維場景模型的讀取、繪制和操作,在此基礎上實現(xiàn)了基于BSP的光線追蹤算法,并且在場景中實現(xiàn)了簡單的粒子系統(tǒng)。仿真場景圖如圖4所示。此圖(b)中的亮光區(qū)域即為手槍子彈的爆炸(粒子系統(tǒng))演示。

圖4 基于3DS文件實現(xiàn)的虛擬場景Fig.4 Based on the 3 DS file virtual scene

5 結 論

3DS是一種通用的保存三維模型的數(shù)據(jù)格式,因此研究該格式的讀取和繪制很有重要的實際意義。本文基于面向對象的編程方法對3DS文件進行讀取,利用OpenGL進行重繪,大大降低OpenGL建立復雜模型的難度,可以較容易的得到真實的三維復雜物體模型。在此基礎上運用光線追蹤技術,對三維模型場景進行實時渲染,使得生成的場景更加逼真,具有真實感。

[1]于瑩瑩.在VC中利用OpenGL實現(xiàn)動態(tài)效果圖像的技巧[J].微型電腦應用,2002,18(6):50-52.

YU Ying-ying.In the VC using OpenGL realize dynamic image skills[J].Microcompute Applications,2002,18(6):50-52.

[2]彭群生,鮑虎軍,金小剛.計算機真實感圖形的算法基礎[M].北京:科學出版社,1999.

[3]Wright R S,Lipchak B.OpenGL超級寶典[M].徐波,譯.3版.北京:人民郵電出版社,2005.

[4]郭景,雷鳴.3DSMAX模型在OpenGL中的讀取與重現(xiàn)[J].自動化與儀表,2002,17(5):46-49.

GUO Jing,LEI Ming.3DSMAX model in the OpenGL reading and reappear[J].Automation and Instrumentation,2002,17(5):46-49.

[5]殷素峰,高雪強,楊勝強.在OpenGL環(huán)境下開發(fā)3DS文件瀏覽器[J].工程圖學學報,2005(6):22-25.

YAN Su-feng,GAO Xue-qiang,YANG Sheng-qiang.Development 3DS file browser based on OpenGL[J].Journal of Engineering Graphics,2005(6):22-25.

[6]Kaplan M.Space-tracing:a constant time ray-tracer[C]//SIGGRAPH’85 State of the Art Image Syn Sem Notes,1985:149-158.

猜你喜歡
信息模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
一個相似模型的應用
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 18禁影院亚洲专区| 国产鲁鲁视频在线观看| 国产男人的天堂| 中文字幕久久亚洲一区| 国产精品yjizz视频网一二区| 日本欧美中文字幕精品亚洲| 成人国产精品视频频| 40岁成熟女人牲交片免费| 亚洲天堂色色人体| 九九久久精品免费观看| 香蕉久久国产超碰青草| 国产精品制服| 欧洲熟妇精品视频| 欧美翘臀一区二区三区| 最新国产麻豆aⅴ精品无| 99热这里都是国产精品| 亚洲综合久久成人AV| 久久久久亚洲精品成人网| 国产一区二区网站| Jizz国产色系免费| 免费av一区二区三区在线| h网站在线播放| 国产午夜人做人免费视频中文| 伊人婷婷色香五月综合缴缴情| 996免费视频国产在线播放| 手机在线国产精品| 成人午夜久久| 国产美女一级毛片| 亚洲天堂视频在线免费观看| 99热最新在线| 欧洲高清无码在线| 91亚洲精选| 色婷婷久久| 欧美性精品不卡在线观看| 好吊妞欧美视频免费| 又爽又大又光又色的午夜视频| 91娇喘视频| 免费一级毛片完整版在线看| 久久久久国色AV免费观看性色| 99热国产这里只有精品无卡顿"| 极品国产一区二区三区| 中国精品久久| 六月婷婷激情综合| 国产久草视频| 久久亚洲天堂| 五月婷婷欧美| 小13箩利洗澡无码视频免费网站| 婷婷伊人久久| 欧美v在线| 国产精品.com| 欧美五月婷婷| 亚洲 欧美 偷自乱 图片 | 沈阳少妇高潮在线| 精品国产免费第一区二区三区日韩| 91免费在线看| 无码网站免费观看| 欧美视频免费一区二区三区| 日韩一级毛一欧美一国产| 亚洲色图欧美在线| 亚洲男人在线天堂| 亚洲中文字幕久久无码精品A| 成人在线不卡| 久久免费精品琪琪| 精品无码一区二区三区在线视频| 特级做a爰片毛片免费69| 亚洲欧美激情小说另类| 午夜福利网址| 亚洲精品国产自在现线最新| 国产玖玖视频| 香蕉eeww99国产精选播放| 亚洲无码高清免费视频亚洲| 免费国产高清视频| 久久婷婷色综合老司机| 欧美精品高清| 亚洲第一极品精品无码| 日韩小视频在线播放| 99视频国产精品| 激情午夜婷婷| 国产福利免费在线观看| 强奷白丝美女在线观看| 久久成人国产精品免费软件| 亚洲综合狠狠|