【摘 要】本系統(tǒng)介紹了OpenGL語言的面向過程性特點(diǎn),以及在面向?qū)ο缶幊趟枷胫笇?dǎo)下,借助UML語言,詳細(xì)闡述了光源與材質(zhì)的實(shí)體類與業(yè)務(wù)類的封裝,實(shí)現(xiàn)了光照效果功能模塊的開發(fā),并利用數(shù)據(jù)庫實(shí)現(xiàn)光照效果狀態(tài)的保存,最后實(shí)現(xiàn)了光照渲染下的三維人體模型。
【關(guān)鍵詞】OpenGL 光照技術(shù) 服裝虛擬展示
一、光照的面向?qū)ο笤O(shè)計(jì)(OOD)
本系統(tǒng)對光源與材質(zhì)的各個屬性進(jìn)行了實(shí)體類的封裝,對光源與材質(zhì)的相關(guān)OpenGL函數(shù)進(jìn)行了業(yè)務(wù)類的封裝。面向?qū)ο蟮念惖脑O(shè)計(jì),可以利用類的屬性進(jìn)行方便的值的傳遞和調(diào)用;利用其包裝的功能函數(shù),方便的實(shí)現(xiàn)函數(shù)調(diào)用。
二、光照效果狀態(tài)的保存
在虛擬服裝展示系統(tǒng)中,我們面臨這樣一個問題,有時候我們需要保存當(dāng)前的光照效果的狀態(tài),以備需要時調(diào)用。這時僅僅利用OpenGL就不能解決問題,因?yàn)镺penGL的面向過程性特點(diǎn),它不確切說明結(jié)果應(yīng)該是怎樣。本系統(tǒng)在開發(fā)時,光照效果的實(shí)體類光照對象的屬性值用數(shù)據(jù)庫保存或讀取功能實(shí)現(xiàn),達(dá)到保存光照效果狀態(tài)的目的。
三、光照效果實(shí)現(xiàn)
其中,CLight、CMaterial兩個實(shí)體類,CSetLight、CSetMaterial兩個業(yè)務(wù)類的屬性和方法,光照效果完成的UML活動圖,如圖2所示。通過以上面向?qū)ο蠓治雠c設(shè)計(jì),最終實(shí)現(xiàn)了光照效果。在本系統(tǒng)中,利用光照類的對象與材質(zhì)類的對象,生成了上、下、左、右、前、后稍偏上、后稍偏下共8個光源對象以及具體的材質(zhì)對象,對每個光源與材質(zhì)的任意一個屬性,都可以進(jìn)行交互控制。并設(shè)計(jì)了基于對話框的雙視圖界面,方便交互控制與演示光照效果。
程序中實(shí)現(xiàn)的不同光照效果下的人體模型如圖
四、結(jié)論
本系統(tǒng)利用OpenGL函數(shù)庫,利用面向?qū)ο缶幊趟枷耄_發(fā)了光源與材質(zhì)實(shí)體類與業(yè)務(wù)類,實(shí)現(xiàn)了光照效果的實(shí)現(xiàn)。并提出利用數(shù)據(jù)庫實(shí)現(xiàn)某時刻的光照效果狀態(tài)的保存與讀取。
這一光照效果實(shí)現(xiàn)實(shí)現(xiàn)方法,輕松實(shí)現(xiàn)對放入場景中的三維物體進(jìn)行光照渲染。不僅僅應(yīng)用于服裝虛擬展示中,對其他三維虛擬現(xiàn)實(shí)系統(tǒng),游戲系統(tǒng)的開發(fā)也有很好的借鑒作用。
參考文獻(xiàn):
[1]喬林,費(fèi)廣正,林杜等.OpenGL程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.
[2]王玉華,楊克儉,王玲等.基于OpenGL的光照處理技術(shù)繪制真實(shí)感圖形[J].現(xiàn)代計(jì)算機(jī),2002,(9):11-14
[3]房曉溪.游戲引擎教程[M].北京:中國水利水電出版社,2008.56-101
[4]吳志明,王鵬.基于OpenGL的三維服裝CAD中光照技術(shù)的實(shí)現(xiàn)[J].北京服裝學(xué)院學(xué)報(bào),2005,25(4):25-29 63
[5]Donald Hern,M.Pauline Baker.計(jì)算機(jī)圖形學(xué)[M].第2版.北京:電子工業(yè)出版社,2002.