国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種三維模型文件設(shè)計(jì)及其在光線跟蹤中應(yīng)用

2015-09-27 08:23:02楊衛(wèi)平張子頔
現(xiàn)代計(jì)算機(jī) 2015年29期
關(guān)鍵詞:柵格頂點(diǎn)光線

楊衛(wèi)平,張子頔

(山東科技大學(xué)電氣信息系,濟(jì)南 250031)

一種三維模型文件設(shè)計(jì)及其在光線跟蹤中應(yīng)用

楊衛(wèi)平,張子頔

(山東科技大學(xué)電氣信息系,濟(jì)南250031)

0 引言

隨著次世代游戲的發(fā)展,三維游戲畫(huà)面進(jìn)入了高品質(zhì)、高特效的時(shí)代。開(kāi)發(fā)人員為了能夠表現(xiàn)更加豐富逼真的三維場(chǎng)景,往往會(huì)使用更大規(guī)模和更先進(jìn)復(fù)雜的模型。然而,大規(guī)模復(fù)雜模型對(duì)網(wǎng)絡(luò)傳輸和數(shù)據(jù)處理提出了更高要求。提高網(wǎng)絡(luò)傳輸和數(shù)據(jù)處理效率無(wú)法長(zhǎng)期滿足先進(jìn)三維程序制作的要求。因此,需要一種能夠自然表達(dá)大規(guī)模復(fù)雜模型、占用空間小且適合于讀取的模型文件格式。

現(xiàn)有的文件類型在表達(dá)大規(guī)模復(fù)雜模型時(shí)顯得力不從心,對(duì)于不同的三維應(yīng)用開(kāi)發(fā)人員通常需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換以兼容不同的工作場(chǎng)景。主流3D模型文件格式的5個(gè)特征:1.文件格式和運(yùn)行時(shí)例程庫(kù)的可擴(kuò)展性;2.連續(xù)LOD能力;3.基于剛體和骨架的動(dòng)畫(huà);4.壓縮;5.漸進(jìn)流傳輸[1]。在現(xiàn)有的主流文件格式中,并不能滿足未來(lái)的要求。這在性能要求更為苛刻的嵌入式設(shè)備上更為突出,如Android平臺(tái)。

1 通用三維模型文件數(shù)據(jù)交換方法

通用三維模型文件主要用于建模軟件與目標(biāo)使用程序之間進(jìn)行信息共享,因此,文件源數(shù)據(jù)由建模軟件提供。一個(gè)3D模型都是由頂點(diǎn)、邊、面3種圖形元素構(gòu)成的[1]?,F(xiàn)代模型還包括場(chǎng)景位置信息、紋理材質(zhì)、動(dòng)畫(huà)信息等。因此,需要一種合理的描述性結(jié)構(gòu),自然地表達(dá)出數(shù)據(jù)之間的關(guān)系。

現(xiàn)代三維程序常常要處理數(shù)以萬(wàn)計(jì)的頂點(diǎn)信息。通過(guò)元數(shù)據(jù)與面向?qū)ο蟮木幊棠J较嘟Y(jié)合,可以高效地管理這些數(shù)據(jù)。當(dāng)用戶進(jìn)行再次開(kāi)發(fā)時(shí),僅需要繼承、重構(gòu)原有的數(shù)據(jù)類型并新增數(shù)據(jù)字段即可,保證了文件格式的可擴(kuò)展性。之后,文件格式使用對(duì)象序列化將數(shù)據(jù)存儲(chǔ)。

圖1 文件數(shù)據(jù)交換方法

2 通用三維模型文件結(jié)構(gòu)設(shè)計(jì)

現(xiàn)代三維程序要求文件格式能夠自然表達(dá)數(shù)據(jù)之間的關(guān)系以方便程序開(kāi)發(fā)和維護(hù)。因此使用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想組織元數(shù)據(jù)格式和數(shù)據(jù)結(jié)構(gòu)。這樣,程序如果需要修改,只需繼承基類即可在不更改程序的情況下增加功能。

本文件結(jié)構(gòu)為保證文件格式的可擴(kuò)展性、壓縮以及能夠流式傳輸,因此使用對(duì)象序列化設(shè)計(jì)。C++Boost開(kāi)發(fā)庫(kù)實(shí)現(xiàn)對(duì)象序列化。本文件使用Android移動(dòng)平臺(tái)進(jìn)行測(cè)試,以保證文件在嚴(yán)格條件下良好運(yùn)行。

2.1ZZDObj物體描述

ZZDObj是用于描述三維場(chǎng)景中的物體對(duì)象的。每一個(gè)三維物體都是由多邊形構(gòu)成的。假設(shè)有一正方體,如果將它用三角形表示:

那么,通過(guò)三角形表示將會(huì)有12個(gè)三角形,而正方體有8個(gè)頂點(diǎn),這樣會(huì)有很多頂點(diǎn)重復(fù)存儲(chǔ),浪費(fèi)了存儲(chǔ)空間。因此,應(yīng)將頂點(diǎn)數(shù)據(jù)與多邊形表示獨(dú)立抽象出來(lái)。

進(jìn)一步,大規(guī)模復(fù)雜模型通常由很多獨(dú)立的子模型構(gòu)成,使用子模型構(gòu)建模型不僅方便建模還有利于數(shù)據(jù)存儲(chǔ)。因此,將每一個(gè)子模型抽象成網(wǎng)格對(duì)象,這樣就可以在每個(gè)網(wǎng)格對(duì)象中保存相應(yīng)的信息,如:模型矩陣、骨骼信息。

包含了兩個(gè)線性表對(duì)象,分別用于存儲(chǔ)組成該物體的網(wǎng)格對(duì)象和動(dòng)畫(huà)信息。

另外,它還包含了用于boost訪問(wèn)的友元聲明,以及boost序列化方法,這些信息將在序列化時(shí)使用。

2.2ZZDMesh網(wǎng)絡(luò)描述

ZZDMesh類用于描述組成物體的子物體網(wǎng)格信息,同樣,它包括了boost訪問(wèn)信息以及對(duì)象序列化方法。

在三角形網(wǎng)格中,每個(gè)三角形都和其他三角形共享邊,因此,三角形網(wǎng)格ZZDMesh類需要存儲(chǔ)三類信息,頂點(diǎn)、邊、面。

圖2 模型結(jié)構(gòu)表示

通常,相鄰的三角形可以共享連接的頂點(diǎn),使用索引信息就可以減少用于保存三角形信息的存儲(chǔ)空間。

圖3 索引三角形

因此,它的數(shù)據(jù)成員包括了用于組成網(wǎng)格對(duì)象的頂點(diǎn)集合以及面片索引信息,以及用于描述網(wǎng)格相對(duì)位置的矩陣信息。線性表face將保存三角形頂點(diǎn)列表的索引及其他信息。因?yàn)?,三角形頂點(diǎn)列表索引保存的順序有“順時(shí)針”和“逆時(shí)針”的區(qū)別,不同的保存方式會(huì)影響三角形的“正面”和“反面”,因此,使用一個(gè)標(biāo)志位記錄保存順序。

2.3頂點(diǎn)、紋理、面片

每個(gè)網(wǎng)格對(duì)象都是由多個(gè)圖元組成的,圖元信息包括頂點(diǎn)位置、紋理坐標(biāo)等信息。在索引三角網(wǎng)格中,每個(gè)頂點(diǎn)包含了一個(gè)三維位置坐標(biāo)。

Vertex類是用于描述頂點(diǎn)的類。它包括了用于描述頂點(diǎn)的位置坐標(biāo)信息、法線信息、頂點(diǎn)顏色、紋理坐標(biāo)等。

Texture類是用于描述紋理信息的類,它描述了紋理文件的文件名、路徑等信息。

Face類包含了用以描述每個(gè)三角形面片的信息,它包含了該三角形所用到的頂點(diǎn)索引,面片的紋理信息,

3 模型信息導(dǎo)出

首先聲明用于寫(xiě)入的存檔類型,它包括text_ oarchive、binary_oarchive和xml_oarchive。它們分別把數(shù)據(jù)輸出為文本類型、二進(jìn)制類型和XML類型。當(dāng)使用文本類型或XML類型時(shí),讀取信息要將數(shù)據(jù)從字符串類型轉(zhuǎn)換為對(duì)象類型,這樣會(huì)消耗大量的時(shí)間,尤其是規(guī)模龐大的模型文件。同時(shí),模型文件加載要求很高的效率,使用耗時(shí)低二進(jìn)制文件類型則是最佳選擇。

模型文件的導(dǎo)出使用了3ds Max SDK用于制作開(kāi)發(fā)模型導(dǎo)出插件,在使用其他文件格式轉(zhuǎn)換工具時(shí),只需要轉(zhuǎn)換成兼容格式文件即可使用。

現(xiàn)代建模程序使用場(chǎng)景樹(shù)管理場(chǎng)景對(duì)象,遍歷場(chǎng)景樹(shù)并選出想要導(dǎo)出的模型。當(dāng)?shù)玫较胍獙?dǎo)出的模型信息后,需要對(duì)其進(jìn)行如下處理:

為了能夠清晰的描述子模型對(duì)象,還需要導(dǎo)出模型矩陣信息。在三維應(yīng)用中,子模型對(duì)象矩陣信息將用以物體重組。使用如下算法,將模型頂點(diǎn)位移至正確位置:

其中,pk是每一個(gè)坐標(biāo)頂點(diǎn),它們分別乘以子模型矩陣,xmat、ymatzmat、1為子模型偏移向量以及歸一化參數(shù),最終,pfinal為轉(zhuǎn)換后的正確位置。

4 通用三維模型文件在光線跟蹤引擎中的應(yīng)用與實(shí)現(xiàn)

在Android手機(jī)上使用zzd模型文件時(shí)文件,應(yīng)在光線跟蹤器初始化之前載入程序。zzd模型文件載入后進(jìn)行反序列化操作。之后,對(duì)模型文件進(jìn)行數(shù)據(jù)結(jié)構(gòu)構(gòu)建,光線跟蹤器將會(huì)追蹤每一條發(fā)射自屏幕的反向光線并與場(chǎng)景中每一個(gè)物體進(jìn)行相交測(cè)試,通過(guò)跟蹤測(cè)試可以得到每一個(gè)像素點(diǎn)顏色。核心算法如下:

創(chuàng)建文件流并反序列化裝配模型對(duì)象

for each屏幕像素

從像素中心向模型對(duì)象投射一條光線

圖4 光線跟蹤下的zzd格式模型

計(jì)算光線與模型對(duì)象的碰撞點(diǎn)

if(光線與某一模型對(duì)象發(fā)生碰撞)

由模型對(duì)象材質(zhì)和光照信息計(jì)算像素的顏色值else

將像素的顏色值設(shè)定為背景色

5 性能優(yōu)化

5.1數(shù)據(jù)壓縮機(jī)數(shù)據(jù)庫(kù)管理

在大規(guī)模復(fù)雜三維場(chǎng)景中,采用分離式文件存儲(chǔ)模式會(huì)帶來(lái)諸多問(wèn)題。首先,分離存儲(chǔ)每一個(gè)模型將會(huì)使程序模型文件變多,在修改有相互關(guān)系的模型時(shí)會(huì)帶來(lái)很大的不便。其次,程序打開(kāi)、關(guān)閉每一個(gè)模型文件都需要分配、釋放相應(yīng)的內(nèi)存句柄,這會(huì)帶來(lái)一定的性能損耗。

因此,不僅會(huì)導(dǎo)致數(shù)據(jù)難以維護(hù)還會(huì)降低運(yùn)行速率。然而,使用單一模型文件則會(huì)大大降低程序可靠性,如果某個(gè)模型數(shù)據(jù)損壞,則整個(gè)模型文件將會(huì)無(wú)法使用。

使用SQLite對(duì)模型資源進(jìn)行管理可以降低程序耦合性又可將多個(gè)模型文件統(tǒng)一管理,并且能夠保證數(shù)據(jù)的可靠存儲(chǔ)和高效的性能[3]。

5.2DOD和網(wǎng)絡(luò)加速

在三維場(chǎng)景中,較多的三角形會(huì)影響三維應(yīng)用的運(yùn)行速度,應(yīng)用細(xì)節(jié)層次LOD技術(shù)可減少模型三角形面,同時(shí)又能保證模型視覺(jué)效果。LOD技術(shù)通過(guò)動(dòng)態(tài)確定物體與人眼(三維程序通常為視平面)的距離來(lái)連續(xù)的使用不同優(yōu)化級(jí)別的網(wǎng)格模型,不僅保證了速度,還不降低視覺(jué)效果。

統(tǒng)一柵格是一種空間數(shù)據(jù)結(jié)構(gòu),當(dāng)遍歷時(shí)這種數(shù)據(jù)結(jié)構(gòu)僅有非常小的數(shù)據(jù)交互,統(tǒng)一柵格由軸對(duì)齊包圍盒體對(duì)象構(gòu)成,其中盒體又被細(xì)分為多個(gè)尺寸的柵格單元,每一個(gè)柵格單元亦是一個(gè)軸對(duì)齊包圍盒體。與柵格碰撞的某一光線將穿越其中的柵格單元,且只與這一類柵格單元內(nèi)的對(duì)象進(jìn)行相交測(cè)試。柵格單元將進(jìn)行遍歷,光線首次碰撞的物體為最近碰撞對(duì)象,該光線也將在此處停止。

創(chuàng)建柵格對(duì)象需要按照如下步驟進(jìn)行:

(對(duì)于含有三角形Ti的場(chǎng)景)

①計(jì)算包含三角形Ti包圍盒體單元(b1,b2)

②對(duì)三角形包圍盒進(jìn)行相交測(cè)試

③如果包圍盒相交測(cè)試為真,記錄此包圍盒引用

圖5 加速效果對(duì)比(采樣點(diǎn)230)

由圖5可以看出,使用柵格+LOD加速可以大大提高系統(tǒng)運(yùn)行速度。提高運(yùn)行速度在10倍以上,這主要是因?yàn)闁鸥窦铀倏梢栽诿看喂饩€相交運(yùn)算中,消減大量的多余面片,對(duì)于計(jì)算量龐大的三角面片模型計(jì)算此項(xiàng)加速技術(shù)顯得尤為重要。

6 結(jié)語(yǔ)

通過(guò)實(shí)驗(yàn)表明,本文件格式在Android移動(dòng)三維程序中表現(xiàn)良好,可以自然的描述場(chǎng)景與模型的關(guān)系,通過(guò)優(yōu)化手段,文件處理時(shí)間大大縮短,使其擁有優(yōu)秀的加載讀取速率。同時(shí),這種平臺(tái)無(wú)關(guān)的文件格式可以輕松部署到各種主流平臺(tái),也可作為移動(dòng)手機(jī)游戲模型文件。

[1]謝曉竹,呂麗剛,張申.基于彈藥庫(kù)視頻監(jiān)控的背景提取及閾值獲取[J].系統(tǒng)仿真學(xué)報(bào),2006,18:400-402.DOI:10.3969/j.issn. 1004-731X.2006.z2.114.

[2]周莉,蘇鴻根.通用3D模型文件格式和算法的研究及其OpenGL實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(2):433-436.

[3]楊衛(wèi)平,張子頔.基于SQLite的3D游戲引擎資源管理系統(tǒng)設(shè)計(jì)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2014,(19):57-61.DOI:10.3969/j.issn.1007-1423.2014.19.015.

[4]焦衛(wèi)東,盧朝陽(yáng),黃瑾.圖像描述中Delaunay三角形網(wǎng)格的快速生成方法[J].西安電子科技大學(xué)學(xué)報(bào),2007,34(3):348-353.DOI: 10.3969/j.issn.1001-2400.2007.03.003.

Three-Dimensional Model;File Format;Ray Tracing;Android

Design of a Three-Dimensional Model File and Its Application in Ray Tracing

YANG Wei-ping,ZHANG Zi-di
(Department of Electrical Engineering and Information Technology,Shandong University of Science and Technology,Jinan 250031)

1007-1423(2015)29-0061-05

10.3969/j.issn.1007-1423.2015.29.015

楊衛(wèi)平(1960-),女,山東菏澤人,碩士,教授,研究方向?yàn)橛?jì)算機(jī)圖像處理

2015-09-22

2015-09-29

現(xiàn)代三維程序能夠表現(xiàn)逼真復(fù)雜的場(chǎng)景,智能手機(jī)系統(tǒng)針對(duì)這方面的需求越來(lái)越明顯,而現(xiàn)有三維模型文件格式難以滿足目前及未來(lái)智能手機(jī)端更復(fù)雜的大規(guī)模三維程序的要求。給出一種新型的三維模型文件格式(zzd),這種新型文件格式具有可靠的結(jié)構(gòu),能夠確保大規(guī)模復(fù)雜模型的存儲(chǔ),同時(shí)具備良好的可擴(kuò)展性、耦合性,能夠高效的讀取載入,并進(jìn)行模型壓縮和流式傳輸。經(jīng)采用光線跟蹤算法對(duì)其在Android平臺(tái)下進(jìn)行實(shí)驗(yàn)應(yīng)用。實(shí)驗(yàn)表明,該文件格式能夠適應(yīng)三維場(chǎng)景應(yīng)用需求。

三維模型;文件格式;光線跟蹤;Android

張子頔(1992-),男,山東濟(jì)南人,本科

The modern three-dimensional programsare capable of showing realistic and complex scenes,the needs of this area for the smart phone system become more and more insufficient.Nevertheless,the existing three-dimensional model file format is difficult to satisfy current and future requirements of a complex and large-scale three-dimensional application in smart phone.Presents a novel three-dimensional model file format(zzd),this new file format has a reliable structure satisfy the requirements of the large-scale storage of complex models.It has good scalability,coupling,can efficiently read loads,and model compression and streaming.The file format and the application is experimented by using ray tracing algorithm on the Android platform.Experiments indicate that the file format can accommodate three-dimensional scene application requirements.

猜你喜歡
柵格頂點(diǎn)光線
春日暖陽(yáng)
過(guò)非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
基于鄰域柵格篩選的點(diǎn)云邊緣點(diǎn)提取方法*
“你看不見(jiàn)我”
中外文摘(2019年8期)2019-04-30 06:47:36
關(guān)于頂點(diǎn)染色的一個(gè)猜想
淘氣的光線
流動(dòng)的光線
不同剖面形狀的柵格壁對(duì)柵格翼氣動(dòng)特性的影響
基于CVT排布的非周期柵格密度加權(quán)陣設(shè)計(jì)
動(dòng)態(tài)柵格劃分的光線追蹤場(chǎng)景繪制
丰镇市| 长寿区| 平果县| 庄河市| 浮梁县| 通山县| 腾冲县| 榕江县| 云南省| 那坡县| 阿尔山市| 河间市| 屏山县| 铁力市| 贵州省| 慈溪市| 梁平县| 准格尔旗| 大埔县| 女性| 乌拉特前旗| 楚雄市| 米泉市| 中山市| 马龙县| 吴江市| 嘉兴市| 金寨县| 望城县| 中山市| 宁安市| 乐山市| 河源市| 四平市| 甘孜| 永兴县| 黑河市| 肥东县| 都昌县| 绥阳县| 宁乡县|