• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    三維虛擬數(shù)字校園系統(tǒng)的資源封包設(shè)計

    2014-12-03 05:05:00馬瑞安徽電子信息職業(yè)技術(shù)學院軟件學院安徽蚌埠233030
    長江大學學報(自科版) 2014年34期
    關(guān)鍵詞:封包預置腳本

    馬瑞 (安徽電子信息職業(yè)技術(shù)學院軟件學院,安徽 蚌埠233030)

    三維虛擬技術(shù)的應用將會越來越廣泛,其中采用Unity3D技術(shù)開發(fā)的三維虛擬系統(tǒng)具有模型可視化、虛擬與現(xiàn)實交互、實時更新虛擬模型和支持多平臺等優(yōu)點,是目前眾多三維虛擬設(shè)計軟件中開源代碼及功能應用全面的三維虛擬引擎[1-2]。通常情況下,虛擬系統(tǒng)在Web服務器端發(fā)布,設(shè)計人員將系統(tǒng)中所有資源存放在Web服務器供用戶使用。用戶在使用系統(tǒng)時將所需要的系統(tǒng)資源文件全部下載完畢后,軟件才能動態(tài)的加載并創(chuàng)建系統(tǒng)里的場景和角色等對象,然后才能動態(tài)的將腳本綁定在虛擬數(shù)字對象上,動態(tài)地將貼圖賦予虛擬數(shù)字對象,必須動態(tài)地完成各種加載操作之后系統(tǒng)才能有效的運行,這樣會大大影響用戶從系統(tǒng)服務器中得到響應的時間以及在用戶端系統(tǒng)動態(tài)運行的效率。為此,筆者利用Unity3D提供的Prefab和Assetbundle功能對系統(tǒng)里的模型資源、UI資源進行預置、封包和解包,當從服務器上將先預置后封包的Assetbundle文件下載后直接實例化,再放入到三維虛擬數(shù)字校園系統(tǒng)中,這樣可以有效提高系統(tǒng)在Web用戶端的運行效率。

    1 移動平臺封包

    預置是Unity3D中提供給設(shè)計人員的一種資源類型,其是存儲在項目視圖中的一種可重復使用的三維模型資源對象[3]。預置可以重復多次地載入到多個不同場景中,當場景中載入了一個預置對象,系統(tǒng)就會自動創(chuàng)建對應的實例,且所有預置實例都鏈接到原始預置本身,也就是說預置實例都是預置本身的克隆。不管項目存在多少實例,當對預置進行任何更改,將會看到這些更改都會被應用到該預置對象的所有實例中。一般情況下,預置封包時占用很少的存儲空間(不超過1KB)。在實際開發(fā)過程中,預置對象會關(guān)聯(lián)模型、特效、界面、聲音、場景和腳本等資源,關(guān)聯(lián)上述資源后,預置對象的存儲就會隨著變大,因而在系統(tǒng)設(shè)計過程中應盡量減少預置對象的重復關(guān)聯(lián),由此減少系統(tǒng)消耗的內(nèi)存資源[4]。

    一般情況下,設(shè)計人員會把腳本文件綁定到預置對象上,然后再進行資源封包,但是移動平臺不支持腳本更新,如將JumpTest.js這條測試腳本綁定在預置中,系統(tǒng)移動平臺通過服務器下載該封包,再載入到工程中會發(fā)生JumpTest.js測試腳本不能被正常加載和執(zhí)行的現(xiàn)象[5]。在實際系統(tǒng)中,存在需要大量的動態(tài)加載和執(zhí)行腳本文件的需求,為了滿足上述需要,可以在腳本中添加Public變量,通過Inspector腳本中的Public參數(shù)實現(xiàn)腳本更新。如果本地包含JumpTest.js腳本,系統(tǒng)將把該腳本綁定在從服務器端下載的預置中并且被執(zhí)行,但是當本地工程文件中沒有JumpTest.js腳本文件時,那么從服務器端下載的預置中的腳本文件將永遠不被執(zhí)行。因此,應通過在腳本文件中添加Public變量,以及對Public變量參數(shù)的修改來實現(xiàn)移動平臺的腳本更新。

    2 場景資源封包

    場景需要保存模型及該模型文件的相關(guān)文件和坐標信息,并且烘培該場景的光信。由于烘培不能被重新加載,因此只能烘焙場景特有模型,被多場景共用的模型必須動態(tài)加載。由于場景中存在很多公用模型,因而如何設(shè)計封裝規(guī)則封包場景資源就顯得尤為重要[6]。封包場景資源占用內(nèi)存的大?。焦媚P偷拇笮 翀鼍暗膫€數(shù)的大小,這表明場景資源封包會重復占用大量的內(nèi)存資源。通過研究場景封包的策略,首先烘培整個場景,然后丟掉其中的公共模型,只保留特有的模型。采用XML文件記錄被丟掉的公共模型在場景中的坐標數(shù)據(jù),最后將其封包在不同的封包文件中(見圖1)。

    由于系統(tǒng)中公共資源的封包被加載的次數(shù)更多,因此該封包被設(shè)計成在內(nèi)存中常駐。系統(tǒng)場景封包的執(zhí)行過程設(shè)計為,首先系統(tǒng)下載場景的封包,然后依據(jù)場景封包文件中的XML文檔的坐標信息,從內(nèi)存中調(diào)用常駐的公共資源封包動態(tài)地再加載到場景中,最終實現(xiàn)整個場景的加載。

    圖1 公共資源與多場景封包架構(gòu)圖

    3 自動封包設(shè)計

    通常情況下,系統(tǒng)封包都是由設(shè)計人員根據(jù)系統(tǒng)規(guī)劃,人工判斷每個場景中哪些是其特有資源,哪些是和其他場景共用資源,上述處理方式效率低且容易出錯。為此,設(shè)計一種自動封包方法,設(shè)計程序?qū)λ袌鼍斑M行遍歷,記錄資源的被使用信息,判斷哪些資源被場景封包,哪些資源獨立封包,最終完成系統(tǒng)資源的封包工作。

    4 讀取封包

    由于Assetbundle封包可以同時放在服務器或者本地,并且下載讀取的方式完全一樣,因而設(shè)計人員可以在系統(tǒng)開發(fā)階段把資源封包建設(shè)在本地,當系統(tǒng)完成前期測試后再把資源封包上傳到服務器上進行公共測試,這樣有利于系統(tǒng)在公共測試和發(fā)布后的不斷更新[7]。

    讀取封包(WWW bundle=new WWW(path);WWW.LoadFromCacheOrDownload(path,5))分為2種方式:方式1是bundle只能保存在內(nèi)存中,一旦退出系統(tǒng)再進入還得重新下載,因而該方式不適用;方式2是將Unity3D下載Assetbundle到本地中,其原理是通過版本號和下載地址在本地尋找是否有該Assetbundle,如果有則直接返回對象,如果沒有則根據(jù)下載地址重新從服務器或者本地下載。

    5 測試效果

    利用專業(yè)Unity3D性能測試工具Profiler測試系統(tǒng),得到未采用封包策略的系統(tǒng)運行內(nèi)存測試數(shù)據(jù)如圖2所示,而采用封包策略后的系統(tǒng)運行內(nèi)存測試數(shù)據(jù)如圖3所示。比較圖2和圖3可知,未來用封包策略占用的內(nèi)存資源數(shù)據(jù)為0.52GB,而采用封包策略占用的內(nèi)存資源數(shù)據(jù)為386.5MB,表明采用封包策略后系統(tǒng)占內(nèi)存空間明顯減少,因而系統(tǒng)在客戶端的運行效率更高。

    6 結(jié)語

    采用Unity3D提供的Prafab及Assetbundle對三維虛擬數(shù)字校園系統(tǒng)的模型文件進行預置和封包,并采用公共模型Assetbundle單獨封包,這樣可以有效減少常駐內(nèi)存的模型文件數(shù)量,從而起到提高系統(tǒng)運行及數(shù)據(jù)再次加載的效率。今后,對基于Unity3D的三維虛擬數(shù)字校園系統(tǒng)來說,如何提高客戶端的下載速度、場景在客戶端加載的效率及系統(tǒng)在客戶端運行的效率和穩(wěn)定性,需要進一步加以研究并使之完善。

    圖2 未采用封包策略的內(nèi)存測試數(shù)據(jù)圖

    圖3 采用封包策略的內(nèi)存測試數(shù)據(jù)圖

    [1] 王星捷,李春花 .基于Unity3D平臺的三維虛擬城市研究與應用 [J].計算機技術(shù)與發(fā)展,2013(4):241-244.

    [2] 李保杰,于法展,李戰(zhàn)成 .基于OpenGL虛擬校園漫游系統(tǒng)的設(shè)計與實現(xiàn) [J].蘇州科技學院學報,2006,22(19):45-48.

    [3] 朱慧娟 .基于Unity3D的虛擬漫游系統(tǒng) [J].計算機系統(tǒng)應用,2012,21(10):36-39,65.

    [4] 宣雨松.Unity3D游戲開發(fā) [M].北京:人民郵電出版社,2012.

    [5] 鄒靜 .迎接互聯(lián)網(wǎng)的明天——玩轉(zhuǎn)3Dweb[M].北京:電子工業(yè)出版社,2011.

    [6] Ramasundaram V,Grunwald S,Mangeot A,et al.Development of an environmental virtual field laboratory [J].Computers &Education,2005,45(1):21-34.

    [7] Mac E,Cai G,Sharma R.Enabling collaborative geoinformation access and decision-making through a natura,multimodal interface [J].International Journal of Geographical Information Science,2005,19(3):267-292.

    猜你喜歡
    封包預置腳本
    酒駕
    中藥封包在急診老年急性胃腸炎患者中的臨床應用
    基于排隊論的水下預置反艦導彈部署優(yōu)化
    安奇奇與小cool 龍(第二回)
    護膚 巧用保鮮膜
    無沖突規(guī)則校園網(wǎng)絡安全系統(tǒng)的設(shè)計
    門窗(2019年12期)2019-04-20 16:06:52
    用友U8軟件預置會計科目的維護
    電子測試(2018年22期)2018-12-19 05:12:56
    數(shù)據(jù)庫系統(tǒng)shell腳本應用
    電子測試(2018年14期)2018-09-26 06:04:24
    快樂假期
    中學生(2017年19期)2017-09-03 10:39:07
    混料設(shè)計在6061鋁合金激光焊預置Al-Si-Ni粉末中的應用
    焊接(2016年8期)2016-02-27 13:05:12
    武义县| 通江县| 阿克苏市| 古蔺县| 高唐县| 大冶市| 革吉县| 任丘市| 定远县| 汉川市| 韩城市| 林西县| 舞阳县| 景德镇市| 双峰县| 闽清县| 土默特右旗| 永平县| 米脂县| 饶阳县| 开化县| 泗水县| 禄劝| 河间市| 绍兴市| 宁陵县| 买车| 凤庆县| 林西县| 铁力市| 唐河县| 叙永县| 凭祥市| 社会| 林周县| 朝阳县| 泉州市| 龙口市| 南京市| 三门县| 邵武市|