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

?

基于Java3D虛擬場景的關(guān)鍵技術(shù)

2014-12-09 23:29羅建華
無線互聯(lián)科技 2014年11期

羅建華

摘 要:文章主要從場景數(shù)據(jù)、LOD算法、VRML場景淺談Java3D虛擬場景的關(guān)鍵技術(shù),并簡要分析場景數(shù)據(jù)、LOD算法、VRML場景的一些缺點(diǎn)及改進(jìn)方法。

關(guān)鍵詞:Java3D虛擬場景;場景數(shù)據(jù);LOD算法;VRML場景

隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,三維虛擬場景技術(shù)將人類的交流帶入了新的領(lǐng)域,人們?cè)谌S虛擬場景中會(huì)產(chǎn)生身臨其境的感覺。三維虛擬場景技術(shù)高度融合了人工智能、計(jì)算機(jī)、通信、熱學(xué)、數(shù)學(xué)、機(jī)械、心理學(xué)和社會(huì)學(xué)學(xué)等多個(gè)方面的科學(xué)知識(shí)和學(xué)科知識(shí)。文章就Java3D虛擬場景的關(guān)鍵技術(shù)進(jìn)行簡要說明。

1 場景數(shù)據(jù)存取

1.1 傳統(tǒng)場景數(shù)據(jù)存取存在的問題

當(dāng)前的Java3D API不具將Java3D場景圖直接寫入文件中的功能,而且JAVA3D數(shù)據(jù)存取序列化也具備Java3d的場景圖對(duì)象,導(dǎo)致Java3d的場景數(shù)據(jù)只能采用即時(shí)存取的方式,而不能直接將場景數(shù)據(jù)作為可以直接保存的序列流。但是在即時(shí)存取方式下,只有在創(chuàng)建期間才能修改或者訪問的Java3dAPI的場景圖對(duì)象,Java3api被編輯或?yàn)g覽,則無法保存場景圖對(duì)象。這一特點(diǎn)導(dǎo)致在通過重復(fù)原先操作才再次生成編輯得到的場景,編輯后的場景不能作為成品被保存或者調(diào)用,這一缺點(diǎn)給用戶實(shí)際應(yīng)用過程中帶來許多麻煩。

1.2 場景數(shù)據(jù)存取優(yōu)化措施

如果Java3d場景圖可以作為序列直流直接保存,則可以很好的解決以上問題。為實(shí)現(xiàn)Java3d數(shù)據(jù)的序列化存取,在對(duì)具體三維場景的Java3d結(jié)構(gòu)做封裝操作是采用自定義的Java對(duì)象進(jìn)行分裝Java對(duì)象的數(shù)據(jù)僅包含三維場景的數(shù)據(jù),而在實(shí)例化調(diào)用Java3d場景對(duì)象中,只有在Java3D方法中才實(shí)施實(shí)例化調(diào)用。這種做法將三維場景的序列化只對(duì)Java對(duì)象的數(shù)據(jù)文件成員才起作用,從而可以達(dá)到Java3D場景對(duì)象支持Java的數(shù)據(jù)存取序列化。

2 LOD算法

2.1 傳統(tǒng)LOD算法的弊端

細(xì)節(jié)層次模型LOD是一種既可以降低場景復(fù)雜度,又可以提高圖形實(shí)時(shí)顯示速度的有效方法。但是傳統(tǒng)LOD算法也具有很明顯的缺點(diǎn)。按照傳統(tǒng)的LOD思路,由于物體視距存在差異,需要建立多個(gè)LOD模型。在構(gòu)建含物體的數(shù)量龐大的場景中,在場景內(nèi)的物體都需要滿足視距變化以及實(shí)施運(yùn)算,則需要在場景中建立多級(jí)模型,導(dǎo)致LOD模型的數(shù)量更為龐大[1]。龐大的LOD數(shù)量模型不僅會(huì)導(dǎo)致代碼量的增大,而且多于的物體多級(jí)模型也需要在網(wǎng)絡(luò)傳輸中占用寬帶,造成網(wǎng)絡(luò)擁擠。

2.2 LOD算法的改進(jìn)

通過研究可以發(fā)現(xiàn),相鄰兩級(jí)LOD模型代碼中的大部分?jǐn)?shù)據(jù)具有一致性,知識(shí)相鄰兩級(jí)LOD模型之間至有部分細(xì)節(jié)數(shù)據(jù)代碼的差別。即在視點(diǎn)能夠分辨物體輪廓至逐漸逼近物體模型的過程,相鄰兩級(jí)LOD模型代碼之間為逐漸增加的關(guān)系。相鄰兩級(jí)LOD模型代碼中相同的部分?jǐn)?shù)據(jù)只在其中一個(gè)LOD模型中保留,而不知兩個(gè)LOD模型中都保留,并且在每次視點(diǎn)靠近一級(jí)就多現(xiàn)實(shí)一些模型細(xì)節(jié)。依照上述思路進(jìn)行模型設(shè)計(jì),只要建立一個(gè)LOD模型并且顯示相關(guān)細(xì)節(jié)分析即可,就可以有效避免針對(duì)同一物體建立不同的LOD模型,以表明數(shù)據(jù)代碼重復(fù)多余。而且傳統(tǒng)LOD算法下圖像跳變與LOD模型過多導(dǎo)致的數(shù)據(jù)矛盾有問題也可以得到有效的解決,其原因在于改良的LOD算法中的LOD模型內(nèi)部層次更加細(xì)化,LOD切換時(shí)的變化更少,對(duì)圖像跳變的影響也更小。而且改良的LOD算法在JAVA3d中可得到很好的實(shí)現(xiàn)。依據(jù)Java3D的語法,雖然JAVA3d代碼將模型封裝成類,并且無法改動(dòng)。但是為了提高JAVA3d的交互性,JAVA3D的語法中也包含了CAPABILITY命令,該命令實(shí)現(xiàn)了用戶輸入或其它控制操作可以改變渲染過程中物體的變換和物體大小、形狀、顏色等方面變動(dòng)[2]。此外,該方式還可以實(shí)現(xiàn)調(diào)用和限制已封裝編譯的模型,從而達(dá)到在不增加多于數(shù)據(jù)代碼的基礎(chǔ)上分層次地顯示物體模型的目的。

3 VRML場景

3.1 VRML場景的缺點(diǎn)

VRML(虛擬顯現(xiàn)實(shí)造型語言,Virtual Reality Modeling Language)多用于實(shí)現(xiàn)網(wǎng)頁中的三維動(dòng)畫效果以及用戶交互。VRML存在一些嚴(yán)重的缺陷。VRML作為一種標(biāo)記語言,VRML的語言能力可以通過腳本語言的方式得到增強(qiáng),但是VRML無法對(duì)文件系統(tǒng)操作的應(yīng)用,不能訪問本地?cái)?shù)據(jù),也不具備在本地磁盤上進(jìn)行寫數(shù)據(jù)操作的能力。此外,VRML文件只能同時(shí)表示單一的場景圖,如果用戶需要進(jìn)行修改場景圖操作,必須通過修改VRML源文件方式才能實(shí)現(xiàn)。如果某一個(gè)VRML文件處于加載狀態(tài),而某個(gè)場景由該VRML文件定義為初始狀態(tài),用戶對(duì)VRML的操作必然會(huì)改變場景圖,但是VRML不具備存盤功能,因而場景在改變后也會(huì)丟失。當(dāng)重新加載文件時(shí),場景又會(huì)恢復(fù)到初始狀態(tài)。最后,瀏覽VRML文件的瀏覽器必須滿足已安裝插件的要求,這一要求導(dǎo)致用戶的體驗(yàn)極為麻煩。

3.2 VRML場景的調(diào)用

如果采用VRML描述虛擬場景,并且使用Java3D編寫應(yīng)用程序,要實(shí)現(xiàn)對(duì)VRML場景中對(duì)象的操作,必須將VRML描述的節(jié)點(diǎn)對(duì)象轉(zhuǎn)換為JAVA3D對(duì)象,將使用Java3d場景圖的組織結(jié)構(gòu)將經(jīng)Java3d轉(zhuǎn)換后的節(jié)點(diǎn)組織起來,再依據(jù)常規(guī)JAVA3d程序逐一添加功能。與之對(duì)應(yīng)的VRML文件則被解析和轉(zhuǎn)換成一系列的JAVA3D的Shape3D節(jié)點(diǎn)對(duì)象,并且被加入TransformGroup組中。依照以上操作即可實(shí)現(xiàn)在JAVA3D中調(diào)用VRML場景。

[參考文獻(xiàn)]

[1]季婷.基于Java3D的LOD算法的研究與優(yōu)化[J].天津職業(yè)院校聯(lián)合學(xué)報(bào).2013,(02).

[2]袁劍鋒.VRML與Java 3D轉(zhuǎn)換關(guān)鍵技術(shù)的研究[J].計(jì)算機(jī)與現(xiàn)代化.2010,(09).