[摘要] 對(duì)商品的三維網(wǎng)絡(luò)模型進(jìn)行研究,探討了應(yīng)用VRML建模語言實(shí)現(xiàn)在網(wǎng)絡(luò)上展示虛擬三維商品的方法,結(jié)合實(shí)例說明商品三維模型展示的實(shí)現(xiàn)步驟。解決了虛擬商品三維展示系統(tǒng)要解決的關(guān)鍵問題。
[關(guān)鍵詞] 虛擬現(xiàn)實(shí) VRML 三維展示
一、引 言
虛擬商品三維展示系統(tǒng),由服務(wù)器端和客戶端組成。服務(wù)器端由VRML文件、商品的查詢、管理和發(fā)布構(gòu)成。客戶端包括Web瀏覽器和VRML瀏覽器插件兩部分。用戶通過Web瀏覽器完成網(wǎng)頁中三維商品的查看和操作。在實(shí)際開發(fā)中,含有三維模型的VRML文件往往是通過三維設(shè)計(jì)軟件制作得到。再通過三維軟件的導(dǎo)出功能,將三維模型導(dǎo)出為VRML文件。最后,編寫HTML程序?qū)RML腳本嵌入網(wǎng)頁之中,實(shí)現(xiàn)虛擬商品的發(fā)布。
二、虛擬商品的代碼處理
1.用戶視點(diǎn)的調(diào)整。打開三維軟件導(dǎo)出的VRML文件時(shí),我們發(fā)現(xiàn)眼前一片漆黑或什么都看不到。這是由于用戶距虛擬場(chǎng)景中的物體距離太近的緣故,需要調(diào)整觀察者的視角。在VRML程序的前面,添加如下代碼可得到解決:
Viewpoint {
position0.0 0.0 500.0# 修改視點(diǎn)的位置
}
其中,position域的域值用于設(shè)置觀察視點(diǎn)在VRML場(chǎng)景中的空間位置,由一個(gè)X、Y、Z的三維坐標(biāo)確定。在此,我們希望拉遠(yuǎn)與虛擬場(chǎng)景中商品模型的距離,則加大Z軸的值。比如,將Z的默認(rèn)值由10改為500。
2.模型材質(zhì)的創(chuàng)建。對(duì)于導(dǎo)出的VRML文件,還會(huì)出現(xiàn)三維模型的材質(zhì)紋理丟失的情況。這就需要對(duì)虛擬場(chǎng)景中的商品模型的紋理重新進(jìn)行創(chuàng)建。VRML紋理映射使用Appearance節(jié)點(diǎn)的texture域或textureTransform域,對(duì)于復(fù)雜造型還可使用TextureCoordinate節(jié)點(diǎn)進(jìn)行精確紋理映射,后者具有紋理坐標(biāo)系變換功能。
例如,對(duì)于一個(gè)三維廣告牌模型,在VRML中為其添加圖像紋理如下。
Shape {
appearanceAppearance{
textureImageTexture{# 模型貼圖
url [“Guangao.jpg”]
}
}
geometry Box { # 廣告牌模型
size 3.0 4.0 0.04
}
}
3.多場(chǎng)景模型的組合。對(duì)于一個(gè)復(fù)雜的造型,往往將其分割成多個(gè)模型,再組合而成。即,建立獨(dú)立的場(chǎng)景造型文件,然后用VRML的內(nèi)聯(lián)節(jié)點(diǎn)將其融合,從而簡(jiǎn)化復(fù)雜造型的設(shè)計(jì)與調(diào)試,便于維護(hù)和多人開發(fā)。
例如,某臺(tái)燈模型由3個(gè)場(chǎng)景文件組成,主場(chǎng)景文件為lamp.wrl,燈罩場(chǎng)景文件為lamp-chimney.wrl,燈架場(chǎng)景文件為lamp-support.wrl。
燈罩場(chǎng)景文件關(guān)鍵代碼如下:
Shape {
appearance Appearance {
textureImageTexture {# 燈罩貼圖
url“tietu1.jpg”
}
}
geometry Extrusion { # 燈罩模型
crossSection [
1.00.0
0.924-0.383… …]… …
}
}
燈架場(chǎng)景文件關(guān)鍵代碼如下:
Shape {
appearance Appearance {
textureImageTexture {# 燈架貼圖
url“tietu2.jpg”
}
}
geometry Extrusion {# 燈架模型
crossSection [
1.00.0
0.924-0.383… …
]… …
}
}
主架場(chǎng)景文件關(guān)鍵代碼如下:
Transform {
translation0.0 1.3 0.0
children [
Inline {# 引入燈罩模型
url“l(fā)amp-chimney.wrl”
}
]
}
Transform {
translation0.0 -1.3 0.0
children [
Inline {# 引入燈架模型
url“l(fā)amp-support.wrl”
}
]
}
在VRML瀏覽器中得到的最終結(jié)果如下圖所示。
三、虛擬商品的發(fā)布
VRML嵌入網(wǎng)頁有多種方式。其一,可以在網(wǎng)頁中設(shè)置超鏈接,其目標(biāo)即VRML文件。這種情況下,瀏覽器會(huì)為該VRML文件單獨(dú)打開一個(gè)窗口進(jìn)行顯示。其二,在網(wǎng)頁中利用HTML語言的embeded元素來嵌入VRML文件。例如,
… …
… …
四、結(jié)束語
針對(duì)虛擬商品三維展示系統(tǒng)設(shè)計(jì)的實(shí)現(xiàn)進(jìn)行研究。通過VRML實(shí)現(xiàn)用戶在二維網(wǎng)頁中查看三維商品模型。說明了虛擬場(chǎng)景中模型的創(chuàng)建方法,對(duì)導(dǎo)出的VRML所存在的問題進(jìn)行了處理,實(shí)現(xiàn)了虛擬三維商品在網(wǎng)絡(luò)上的發(fā)布。
參考文獻(xiàn):
[1]汪志達(dá)葉偉:VRML虛擬現(xiàn)實(shí)網(wǎng)頁設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006
[2]趙小雨薛海燕:基于VRML的三維網(wǎng)站設(shè)計(jì)[J].甘肅科技,2008,(3)
[3]http://www.cortona3d.com,[EB/OL]