李輝
摘 要: 對虛擬商城漫游系統(tǒng)設(shè)計模式與流程進行分析,以3DS MAX和Virtools為開發(fā)工具進行了系統(tǒng)開發(fā)與實現(xiàn)。根據(jù)漫游系統(tǒng)的特點和需求,采用了多邊形建模技術(shù)、紋理貼圖技術(shù)和烘焙技術(shù)實現(xiàn)商城場景和模型細節(jié)制作?;赩irtools內(nèi)嵌腳本語言和內(nèi)置行為交互模塊相結(jié)合的方式,實現(xiàn)了商城漫游、商品展示、碰撞檢測等交互性能,有助于節(jié)約系統(tǒng)資源,提高系統(tǒng)開發(fā)效率,提升系統(tǒng)程序的復(fù)用性和可維護性,增強用戶沉浸感、交互性、構(gòu)想性。
關(guān)鍵詞: 虛擬商城漫游系統(tǒng); 3DS MAX軟件; Virtools工具; 設(shè)計模式
中圖分類號: TN911?34 文獻標(biāo)識碼: A 文章編號: 1004?373X(2016)08?0045?03
Design mode of virtual mall roaming system and its application
LI Hui
(Department of Information Technology, Chengdu Agricultural College, Chengdu 611130, China)
Abstract: The design pattern and process of virtual mall roaming system are analyzed in this paper. The development and implementation of system are completed by 3DS MAX and Virtools. According to the characteristics and demand of roaming system, polygon modeling, texture mapping technology and baking technology are adopted to realize mall scenarios and model details. interactive performances of mall roaming, commodity exhibition and collision detection, were realized based on a combination of Virtools embedded scripting language (VSL) and built?in behavior (BB) interaction module. It is conductive to system resources saving, improvement ment of system development efficiency, reusability and maintainability of the system program, and enhancement of the user immersion and interaction.
Keywords: virtual mall roaming system; 3DS MAX software; Virtools tool; design mode
虛擬現(xiàn)實技術(shù)是一種集合多傳感器技術(shù)、仿真技術(shù)、多媒體技術(shù)、人工智能技術(shù)等為一體的工具,借助計算機建立比較真實的虛擬環(huán)境,設(shè)置人機接口,確保用戶與虛擬環(huán)境直接交互,用戶感受更直觀、立體的現(xiàn)實場景[1]。虛擬商城漫游系統(tǒng)能展現(xiàn)逼真的商城環(huán)境和商品信息,支持用戶借助網(wǎng)絡(luò)展開遠程訪問,在商城產(chǎn)品環(huán)境、對外宣傳方面起著重要的作用。
1 設(shè)計虛擬商場漫游系統(tǒng)所用工具
1.1 3DS MAX軟件
3DS MAX是基于PC系統(tǒng)開發(fā)出現(xiàn)的三維動畫制作軟件,該軟件廣泛應(yīng)用于廣告、動漫、建筑設(shè)計、游戲開發(fā)、教學(xué)等多個領(lǐng)域。相比較而言,我國采用3DS MAX軟件設(shè)計建筑效果圖、動畫技術(shù)比較成熟,該軟件具有擴展性能好、插件豐富、便于操作、功能強大等優(yōu)點,成為設(shè)計、開發(fā)虛擬環(huán)境的必然選擇。
1.2 Virtools軟件
Virtools軟件是包含多種功能的三維開發(fā)工具,可以把已有的檔案格式進行整合,主要由開發(fā)、生成、發(fā)布三個模塊相互組合完成。開發(fā)模塊包含大量的應(yīng)用程序、軟件開發(fā)的工具包,其中主要的創(chuàng)作工具有Virtools Dev。在上述開發(fā)環(huán)境中,用戶能夠快速、準(zhǔn)確地建立應(yīng)用程序,并依據(jù)自身需求,對三維模型、圖片、聲音等對象展開各項操作[2]。
在Virtools開發(fā)模塊中,用戶能夠快速、簡便地創(chuàng)建應(yīng)用程序,并依據(jù)自身的需要,生成模塊主要有行為引擎、渲染引擎兩個部分。行為引擎實現(xiàn)管理、處理對象、輸入?yún)?shù)、設(shè)置屬性等操作。發(fā)布模塊主要包括EXE文件生成器、Web播放器,前者可將應(yīng)用程序直接打包成為EXE文件,后者能夠創(chuàng)建以B/S為基礎(chǔ)的網(wǎng)絡(luò)虛擬環(huán)境,如圖1所示。Virtools軟件具有強大、方便的交互、實時響應(yīng)能力,但其自身不具備為三維實體建模或制作動畫能力,因此,開發(fā)3D產(chǎn)品時,該軟件必須與Maya,3DS MAX軟件結(jié)合使用。
2 設(shè)計虛擬商場漫游系統(tǒng)的步驟
虛擬商場漫游系統(tǒng)設(shè)計主要流程如圖2所示。
2.1 三維場景建模
對整個虛擬場景建設(shè)是進行商場漫游系統(tǒng)設(shè)計的基礎(chǔ),場景建模質(zhì)量與系統(tǒng)運行效果、三維畫面的逼真程度密切相關(guān),必須對真實的商場場景布局進行研究、分析,確定設(shè)計的漫游系統(tǒng)所需的場景和范圍[3]。采用3DS MAX軟件中的點、線、面、體等工具,逐步構(gòu)建虛擬場景的各個區(qū)域。對于必須精細建模的物體,必須采用精確的幾何圖形進行創(chuàng)建,如圖3所示。
部分非重點對象在確保其視覺不失真的基礎(chǔ)上,構(gòu)建一系列簡單的模型,盡量使用參數(shù)化辦法進行構(gòu)建。必須注意,構(gòu)建對象時,盡量減少使用幾何體分段數(shù),復(fù)雜的幾何對象可以采用紋理貼圖進行代替,并將場景內(nèi)部不可見的面展開刪除操作。在圖4中,場景中建設(shè)的盆栽,借助貼圖方式替代傳統(tǒng)建模形式,并將該虛擬場景內(nèi)家具不可見面進行刪除,基于不影響整體效果狀態(tài)下,有效節(jié)省創(chuàng)建場景所用時間,提升場景的實時渲染效果和渲染速度。使用3DS MAX軟件操作時,一般借助復(fù)制的方式增多相同物體數(shù)量。進行復(fù)制操作時,主要采用Copy(復(fù)制)、Reference(參考)、Instance(實例)三種復(fù)制方法。文中使用Instance對物體進行復(fù)制,如圖3中的設(shè)計的床頭柜,借助Instance形式對物體實施復(fù)制操作,所復(fù)制的物體可隨原物體的改變而變化[4]。因此,根據(jù)一個物體就能合理控制所有復(fù)制物體,進而輸出成為.nmo模式,編輯器自行把上述復(fù)制的物體包含原物體輸出一個物體狀態(tài)展開存儲操作,能夠縮減編譯所用時間,緩解或解決存儲文件過大、過小的問題。
創(chuàng)建好上述模型后,觀看模型發(fā)現(xiàn)其逼真度較低。因此,在導(dǎo)入Virtools操作前,必須對創(chuàng)建的模型進行材質(zhì)、貼圖、烘焙等各項操作。材質(zhì)具有模擬各種材料視覺效果的功能,貼圖作為物體表面紋理,采用增設(shè)模型紋理、質(zhì)地、色彩等操作,確保模型具有較強的真實感。在3DS MAX軟件中,建立、編輯模型材質(zhì)或貼圖均借助材質(zhì)編輯器(Meterial)進行操作。因Virtools Dev工具缺少雙重材質(zhì)導(dǎo)入功能,換句話來說,對多維、多面材質(zhì)模型展開操作,實施烘焙后即可順利將材料導(dǎo)入Virtools中。烘焙是指將模型場景內(nèi)的光照等信息渲染形成一張貼圖的方式,之后將烘焙完成的貼圖重新貼到場景內(nèi)的技術(shù),上述操作可在實時3D應(yīng)用系統(tǒng)中降低渲染器負擔(dān),提高操作的幀速率。常見的烘焙方式主要包括Complete Map,Lighting Map兩種形式。本文使用Complete Map方式展開烘焙操作,該工具幾乎支持3DS MAX多數(shù)材質(zhì),例如:復(fù)合材質(zhì)、多維材質(zhì)等,烘焙完成的圖片光感效果極好。必須注意,想要獲得最佳的烘焙效果,需合理設(shè)計烘焙尺寸,盡可能做大一些,否則比較模糊,效果不佳。若烘焙完成的物體曝光度過大,必須再次調(diào)整燈光倍增值、材質(zhì)高光等各項參數(shù)。物品再次實施烘焙操作時,必須清除上一次物體烘焙結(jié)果,不然會出現(xiàn)烘焙貼圖錯誤的情況。烘焙操作流程如下:將編輯器內(nèi)自動出現(xiàn)的貼圖坐標(biāo)進行刪除操作,如果在Render To Textures面板中對烘焙結(jié)果實施清除。合理設(shè)置再次烘焙各項參數(shù),導(dǎo)出并存儲相關(guān)數(shù)據(jù)信息[5]。
3 虛擬商城漫游系統(tǒng)實現(xiàn)效果
3.1 場景模型導(dǎo)入到Virtools
對模型或角色動畫進行導(dǎo)出操作前,必須在3DS MAX軟件中安裝相應(yīng)的3DS MAX Exporer.exe,同時對是否安裝MAX2 Virtools.DLE文件加載項進行檢測。對所創(chuàng)建的模型或角色動畫進行數(shù)據(jù)轉(zhuǎn)換,保存成Virtools Dev工具默認的.nmo格式文件。導(dǎo)入Virtools后,若發(fā)現(xiàn)導(dǎo)入的圖片或模型顯示黑色,需在材質(zhì)設(shè)置選項中合理調(diào)整自發(fā)光參數(shù),即能恢復(fù)正常的貼圖效果[6]。
3.2 商城漫游場景的交互實現(xiàn)
基于Virtools的虛擬現(xiàn)實系統(tǒng)交互方式主要有內(nèi)置的行為交互模塊(Building Blocks,BB)和Virtools腳本語言(VSL)兩種。BB方法操作簡便,流程清晰,但模塊及功能有限,容易出現(xiàn)參數(shù)繁瑣,程序臃腫,復(fù)用性差等問題;VSL靈活自由,復(fù)用率高,有助于提高系統(tǒng)運行效率。本系統(tǒng)中較為常見、簡單的交互,采用內(nèi)置BB實現(xiàn);對于繁雜場景下靈活多變,可重用性需求高的交互功能,采用VSL實現(xiàn)。
系統(tǒng)采用鍵盤控制角色動作,一旦用戶觸發(fā)相應(yīng)按鍵,系統(tǒng)就會完成用戶指令響應(yīng)。為實現(xiàn)虛擬角色站在地面上,并避免其在行走過程中與墻壁等障礙物發(fā)生碰撞,通過Virtools內(nèi)置BB實現(xiàn)。增設(shè)Character Controler至虛擬角色的Script內(nèi),對虛擬角色各項參數(shù)實施編輯。增加Prevent Collision,Object Slider至虛擬場景角色的Script,并對各項輸入?yún)?shù)展開編輯。這時,應(yīng)該對地面設(shè)置“Floor”屬性,并對可能出現(xiàn)的碰撞物體賦予“Obstacles”屬性[7]。
系統(tǒng)采用一個第一人稱攝像機作為用戶視角,為角色和攝像機創(chuàng)建Parent關(guān)系,攝像機跟隨角色產(chǎn)生運動,通過鍵盤控制角色運動方向,通過鼠標(biāo)動作控制漫游視角變化。虛擬角色漫游交互采用VSL實現(xiàn),主要代碼如下:
Void main( ){GUID inputguid=GetInputManagerGuid();
InputManager iM=InputManager.Cast(bc.GetManagerByGuid(inputguid);
Vector oldPos,newPos;
Vector SpeedW(0,0,-0.2), SpeedL(-0.2,0,0), SpeedY(0, -0.2,0), SpeedZ(0,0,-0.2)); //定義各個方向的轉(zhuǎn)動速度
Float rotateAngle=0.02; //定義轉(zhuǎn)動的角度系數(shù)
Vector2D MPin;
Vector MosPos;
iM.GetMouseRelativePosition(MosPos);
//獲取鼠標(biāo)實時位移向量MosPos
iM.GetMousePosition(MPin,false); //獲取鼠標(biāo)當(dāng)前坐標(biāo)
bool IsMosIn;
if(Mpin.x>=0&&Mpin.x<=800&& Mpin.y>=0&&Mpin.y<=600) IsMosIn=true;
else IsMosIn=false; //判定鼠標(biāo)是否在窗口內(nèi)
if(iM.IsMouseButtonDown(CK_MouseButton_Left)&& IsMosIn)
{Vector AxisY(0,1,0);
floatRotateAngleX=MosPos.x*(-0.005);
floatRotateAngleY=MosPos.y*(-0.005);
Man.rotate(AxisY,RotateAngleX); //Man為VSL模塊的輸入
參數(shù),類型為Character,控制人物在左右方向上移動
VectorAxis;
MyCamera.GetOrientation(Null, Null,Axis, Null);
MyCamera.Rotate(Axis, -rotateAngleY);
//MyCamera為VSL模塊輸入?yún)?shù),類型為Camera。控制攝像
機在上下方向上轉(zhuǎn)動
}
//當(dāng)鼠標(biāo)在窗口內(nèi),且按下鼠標(biāo)左鍵時,控制視角方向變動
If(iM.isKeyDown(CKKEY_W)) Man.Translate(SpeedW, Man); //當(dāng)按下W鍵,人物向前移動
…… //其他方向移動,同理 }}
3.3 虛擬商品模型三維交互展示實現(xiàn)
商品模型三維展示交互效果包括模型移動、旋轉(zhuǎn)、縮放等。例如:用戶進行商品觀摩時,可通過鼠標(biāo)按鍵對模型進行旋轉(zhuǎn)觀看,有助于全方位、多角度了解商品外觀和特點。模型角度旋轉(zhuǎn)操作使用基于VSL開發(fā)的自定義BB“MouseRotate”和“While”循環(huán),可實現(xiàn)用鼠標(biāo)按一定軸向(“1”為y軸)和單位角度來旋轉(zhuǎn)模型。
inputManager iM =InputManager.Cast(bc.GetManagerByGuid(GetInputManagerGuid()));
RenderContext rc=bc.GetPlayerRenderContext();
IntersectionDesc desc;
rcx.Pick(x,y,desc);
//根據(jù)鼠標(biāo)的位移來旋轉(zhuǎn)模型,x和y是鼠標(biāo)的位置坐標(biāo)
ent=desc.Object; //當(dāng)鼠標(biāo)左鍵點選模型,先將“ent”初始
化為模型的位移
iM.GetMouseRelativePosition(speed);
speed.x*=RSpeed; //RSpeed為單位旋轉(zhuǎn)角度
float delta=bc.GetDeltaTime()/1000;
If(axis==1){ ent.Rotate(1,0,0,0,ent);
//以y軸為旋轉(zhuǎn)軸方向,對模型進行旋轉(zhuǎn)
ent.Rotate(0,1,0,speed.x*delta,ent);
ent.Rotate(0,0,1,0,ent); }
3.4 虛擬商場中自動開關(guān)門的實現(xiàn)
采用虛擬場景行為模塊內(nèi)的Proximity判定創(chuàng)設(shè)角色與商城門兩者間的距離,如果虛擬對象和門之間距離比設(shè)置閾值小,自動執(zhí)行“開門”操作。如果兩者距離明顯大于所設(shè)定閾值,實施“關(guān)門”操作。采用“Rotate”對門旋轉(zhuǎn)狀態(tài)進行控制,如圖5所示。
系統(tǒng)以VMO文件格式保存,發(fā)布成HTML網(wǎng)頁格式,用戶可以在瀏覽器上進行多視點、多場景的交互式漫游瀏覽,最大程度地提高漫游的真實感,對商城的宣傳發(fā)揮著重要作用。
4 結(jié) 語
本文對虛擬商城漫游系統(tǒng)設(shè)計模式與流程進行分析總結(jié),基于3DS MAX和Virtools開發(fā)工具進行了系統(tǒng)開發(fā)與實現(xiàn)。對復(fù)雜場景的虛擬漫游研究是計算機圖形學(xué)領(lǐng)域的一個重要課題,在確保在線實時漫游速度和漫游真實感的同時,漫游系統(tǒng)的場景優(yōu)化策略和碰撞檢測技術(shù)將是本文下一步的研究方向。
參考文獻
[1] 朱玉.基于 Unity3D 漫游系統(tǒng)的設(shè)計與研究[J].信息安全與技術(shù),2014,23(12):78?81.
[2] 陳山.基于街景地圖服務(wù)的虛擬實景漫游系統(tǒng)設(shè)計[J].計算機與數(shù)字工程,2015,13(6):1121?1124.
[3] 唐菲菲,果連成,張珣.智能家居系統(tǒng)全景界面可控點自動識別的研究[J].現(xiàn)代電子技術(shù),2013,36(2):32?35.
[4] 歐陽攀,李強,盧秀慧.基于Unity3D的虛擬校園開發(fā)研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):19?22.
[5] 肖君,霍超塵.基于3DS MAX與VRP的虛擬商城漫游系統(tǒng)的優(yōu)化[J].中國電子商務(wù),2013,11(2):61?62.
[6] 于力超,張賢鋒.基于WebGL的網(wǎng)上虛擬太陽系漫游系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦與信息技術(shù),2015,23(1):49?53.
[7] 胡春花,陳曉梅.基于虛擬現(xiàn)實的3D演出場館漫游系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2014,37(31):7473?7476.