摘 要 三維圖形引擎技術(shù)換言之就是三維游戲引擎技術(shù),目前成為了時(shí)下最叫人倍受關(guān)注和創(chuàng)新發(fā)展最快的技術(shù)之一?,F(xiàn)今相較于國(guó)外日本、韓國(guó)以及一些歐美國(guó)家而言,我國(guó)現(xiàn)今的三維技術(shù)目前還處于起步開(kāi)發(fā)階段。本文主要是從3dmax建模和DirectX創(chuàng)建引擎來(lái)實(shí)現(xiàn)對(duì)一個(gè)三維圖形進(jìn)行交互,檢測(cè)等的實(shí)現(xiàn)方法研究。
關(guān)鍵詞 圖形引擎 3Dmax建模 設(shè)計(jì)研究
中圖分類(lèi)號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
0前言
地球上的人類(lèi)以及其它物種自誕生就在一個(gè)充滿三維物體的三維空間中,而為了使計(jì)算機(jī)能夠準(zhǔn)確地再現(xiàn)這些人或物體,則必須在三維空間中描繪這些物體?,F(xiàn)今社會(huì)發(fā)展正處于一個(gè)信息高爆發(fā)的時(shí)代,人們常常在茫茫的數(shù)據(jù)海洋面前顯得不知所措,一時(shí)難以抓住隱藏在數(shù)據(jù)之中的本質(zhì)、結(jié)構(gòu)和規(guī)律,所以我們需要通過(guò)計(jì)算機(jī)是這些實(shí)物以抽象化等形式通過(guò)一定的軟件使之表現(xiàn)出來(lái)這些物體和信息加深對(duì)現(xiàn)今社會(huì)的掌握和了解。從而促進(jìn)現(xiàn)代社會(huì)的發(fā)展和充實(shí)人們的生活。三維圖形引擎技術(shù)是種圖形生成和圖像理解相結(jié)合的技術(shù),它賦予人們一種仿真的、三維的并且具有實(shí)時(shí)交互的能力,尤其是以可視化技術(shù)為基礎(chǔ)發(fā)展起來(lái)的虛擬現(xiàn)實(shí)技術(shù)、三維仿真技術(shù)以及科學(xué)計(jì)算可視化技術(shù),它們的發(fā)展及其相互結(jié)合使人類(lèi)認(rèn)識(shí)和駕馭世界的技能得到了極大的延伸。人們可以在三維圖形世界中用以前不可想象的手段來(lái)獲取信息,或發(fā)揮自己的創(chuàng)造性思維。
本次課題研究對(duì)象為對(duì)一個(gè)基于3DS MAX建模、DirectX技術(shù)實(shí)現(xiàn)的三維圖形游戲引擎技術(shù)設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)。該系統(tǒng)主要實(shí)現(xiàn)對(duì)模型的視景交互、實(shí)時(shí)碰撞檢測(cè)以及特殊效果的模擬等功能。
1建模的設(shè)計(jì)與實(shí)現(xiàn)
(1)軟件建模方法。場(chǎng)景空間的建摸方法一般有兩種:第一是把制作好的房屋和地形效果平面圖導(dǎo)入3DS MAX中,在3DS MAX中直接利用擠出(Extrude)命令生成立體空間模型。第二種方法則是直接在DirectX中生成一些特定的空間地形效果,同時(shí)通過(guò)3DMax構(gòu)建簡(jiǎn)單的房子等模型效果,然后導(dǎo)入到圖形場(chǎng)景空間中。
(2)設(shè)計(jì)與實(shí)現(xiàn)。場(chǎng)景建模是3Dmax建模的重要環(huán)節(jié)之一,同時(shí)也是最為基本的功能之一,所以如何選擇合適的建模方法也是極其重要的。為了讓場(chǎng)景具有一定的真實(shí)感,所以在建模過(guò)程中應(yīng)該注意兩個(gè)方面:第一是注意創(chuàng)建模型原件的實(shí)際尺寸。第二是在滿足設(shè)計(jì)效果圖的前提下,盡量將模型做得精簡(jiǎn)美觀,減少模型重復(fù)面的出現(xiàn),提高對(duì)模型修改和渲染的速度。
建立了空間場(chǎng)景模型之后,在導(dǎo)入模型之前在創(chuàng)建房屋時(shí),需把房間體模型轉(zhuǎn)換成相關(guān)線框形式,選中要?jiǎng)?chuàng)建的房屋模型的基本圖元,再選擇所創(chuàng)建面的左右兩個(gè)邊,再使用多次擠出(Extrude)命令和進(jìn)行多邊形編輯(Polygon),最終完成房子模型的建模。
2系統(tǒng)邏輯功能設(shè)計(jì)
一個(gè)完整的程序當(dāng)中個(gè)都會(huì)存在于一個(gè)初始化程序,這一表現(xiàn)尤其表現(xiàn)在大型程序當(dāng)中如:游戲場(chǎng)景、網(wǎng)絡(luò)編程等。程序的初始化它可以防止程序發(fā)生不可預(yù)知的錯(cuò)誤,同時(shí)也可以用做程序出錯(cuò)時(shí)的依據(jù),方便查出程序當(dāng)中的錯(cuò)誤原因,這是一個(gè)良好的編程習(xí)慣。在這里D3D初始化的作用就是初始化程序的運(yùn)行功能,防止程序發(fā)生錯(cuò)誤產(chǎn)生不必要的錯(cuò)誤發(fā)生。
D3D初始化步驟:(1)獲得D3D程序的應(yīng)用接口指針。(2)檢查相關(guān)設(shè)備技術(shù)的功能特性,確定顯卡等設(shè)備是否正常運(yùn)行、是否支持硬件頂點(diǎn)處理。 (3)初始化一個(gè)D3D應(yīng)用窗口結(jié)構(gòu)來(lái)作為實(shí)例,這個(gè)窗口包含大量的數(shù)據(jù)對(duì)象,它允許我們創(chuàng)建一個(gè)D3D窗口對(duì)象程序。
對(duì)于模型的創(chuàng)建我們一般采用的3Dmax建模工具來(lái)構(gòu)造一個(gè)較為復(fù)雜的具有真實(shí)感模型,然后使用3Dmax建模工具插件將模型轉(zhuǎn)換成.X特殊模型文件格式。對(duì)于生成的X模型文件而言,當(dāng)一個(gè)程序需要被訪問(wèn)時(shí)他必須先訪問(wèn)X文件。訪問(wèn)X文件時(shí)通過(guò)調(diào)用程序DirectXFileCreate函數(shù)創(chuàng)建一個(gè)DX的應(yīng)用窗口接口,此接口就代表了一個(gè)X文件的調(diào)用路徑或者說(shuō)是生成路徑。創(chuàng)建IDirectXFile接口后,需注冊(cè)一個(gè)系統(tǒng)的定制模版或者標(biāo)準(zhǔn)模版。定制模版是用戶根據(jù)自己習(xí)慣和愛(ài)好定制的模板,標(biāo)準(zhǔn)模板則是微軟公司自己定義的一種固定的模板。
系統(tǒng)通過(guò)調(diào)用系統(tǒng)函數(shù)IDirectXFile ::RegisterTemplates函數(shù)來(lái)注冊(cè)模版。注冊(cè)模版之后通過(guò)調(diào)用IDirectXFile::CreateEnumObject函數(shù)打開(kāi)X文件來(lái)檢查數(shù)據(jù)對(duì)象。在我們圖形引擎構(gòu)建模型中存在兩種類(lèi)型,一種是靜態(tài)模型,另一種是動(dòng)態(tài)模型。對(duì)于不同的模型類(lèi)型則要采取不同的方式來(lái)進(jìn)行繪制和生成。
3總結(jié)
當(dāng)下游戲場(chǎng)景、建筑、房地產(chǎn)、室內(nèi)場(chǎng)景設(shè)計(jì)與游戲和裝修相關(guān)行業(yè)的繁榮發(fā)展使得三維建模技術(shù)已經(jīng)達(dá)到了一個(gè)很高的程度,這種方案的設(shè)計(jì)將借助計(jì)算機(jī)變得更加輕松和高效,同時(shí)也會(huì)產(chǎn)生更加高效的場(chǎng)景設(shè)計(jì)模型。虛擬現(xiàn)實(shí)技術(shù)在各種技術(shù)應(yīng)用的驅(qū)動(dòng)和需求的刺激下,得到不斷的高效的推陳出新,其應(yīng)用的相關(guān)領(lǐng)域也會(huì)更加靈活和廣泛。
參考文獻(xiàn)
[1] David H.Eberly.3D Game Engine Design.Magic Software,2003.
[2] 李建平.從零學(xué)習(xí)3ds Max的新手.上??茖W(xué)普及出版社,2008.