吳保文,楊柏軍
(文山學(xué)院 信息科學(xué)學(xué)院,云南 文山 663099)
基于3ds Max與Unity 3D的虛擬展廳圖片更新的實(shí)現(xiàn)
吳保文,楊柏軍
(文山學(xué)院 信息科學(xué)學(xué)院,云南 文山 663099)
隨著虛擬現(xiàn)實(shí)的不斷普及,虛擬展廳通過虛擬現(xiàn)實(shí)技術(shù)在電腦上的模擬重建,實(shí)現(xiàn)了生活中場景及展品的展示。對(duì)3ds Max與Unity 3D的虛擬展廳中展示圖片的更新問題進(jìn)行研究,結(jié)合C#腳本語言,介紹了在不修改3ds Max 模型和Unity 3D源文件的前提下,只需要把圖片放到指定的文件目錄中,就可以實(shí)現(xiàn)對(duì)虛擬展廳中的展示圖片進(jìn)行自動(dòng)更新的方法。
虛擬展廳;Unity 3D;展圖自動(dòng)更新
隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,越來越多的數(shù)字展廳通過互聯(lián)網(wǎng)絡(luò)平臺(tái)進(jìn)行展示,打破了傳統(tǒng)展廳時(shí)間、空間的限制,實(shí)現(xiàn)24小時(shí)的展示,充分利用互聯(lián)網(wǎng)的傳播優(yōu)勢(shì)加強(qiáng)了宣傳力度[1]。目前,基于網(wǎng)絡(luò)平臺(tái)的虛擬展廳更多地注重展廳的美化和用戶的漫游交互體驗(yàn),而忽略了展廳管理維護(hù)和重復(fù)使用的效率。
三維模型的建立與編輯對(duì)技術(shù)人員專業(yè)技能和計(jì)算機(jī)硬件設(shè)備有較高的要求。本數(shù)字展廳是以書畫展廳設(shè)計(jì)為例,使用3ds Max構(gòu)建三維模型,在Unity 3D中實(shí)現(xiàn)漫游和交互的同時(shí),把展廳中展圖的更新作為研究重點(diǎn),實(shí)現(xiàn)了在不打開和編輯展廳源文件的情況下,只要將展出的圖畫作品按照一定的尺寸規(guī)格放入到指定文件夾中,就可以實(shí)現(xiàn)展廳中圖畫的更新。
以書畫作品為主題的虛擬展廳采用了AutoCAD繪制平面圖,然后在3ds Max中完成三維模型的建立,最后在Unity 3D中實(shí)現(xiàn)漫游、交互和圖片的更新,具體開發(fā)思路和流程如圖1所示。
2.1 展廳平面圖的繪制
數(shù)字展廳平面圖的繪制在AutoCAD繪圖軟件中完成。實(shí)現(xiàn)方法是在AutoCAD中將工作模式切換為三維繪圖模式,在俯視圖(x y平面)上畫出長方形,如果是使用線條工具逐一畫出的長方形,畫好后需要使用面域工具對(duì)其進(jìn)行面域,將線條合成一個(gè)整體。然后在俯視、仰視外的前/中/后/左任意視圖中用三維工具中的拉升工具對(duì)中長方形進(jìn)行長度拉升,完成展廳平面圖的繪制。
圖1 虛擬展廳開發(fā)流程
2.2 展廳三維模型的建立
展廳主要利用3ds Max對(duì)墻體、展臺(tái)、畫框、裝飾物等建立模型。首先在3ds Max中導(dǎo)入平面圖,然后利用3d捕捉開關(guān)的圖形按鈕對(duì)平面圖中的直線進(jìn)行擠出命令操作,按平面圖建立三維墻體。墻體模型建立后,使用移動(dòng)攝影機(jī)進(jìn)入模型內(nèi)部繪制展臺(tái),然后再對(duì)展廳進(jìn)行場景渲染,完成后將建好的模型導(dǎo)出為FBX格式,同時(shí)注意勾選“嵌入的媒體”選項(xiàng),這樣才可以確保模型在導(dǎo)出時(shí)貼圖不會(huì)丟失。
2.3 場景漫游的實(shí)現(xiàn)
Unity 3D中集成了Character Controllers角色控制器組件,常用于第一人稱和第三人稱的角色控制。角色控制器內(nèi)部的膠囊狀的碰撞體可以用于碰撞檢測(cè),從而實(shí)現(xiàn)人物前后左右的任意行走,可以觀察到所建場景的任意一個(gè)角度,不會(huì)產(chǎn)生人物與建筑的穿插,使人物行走觀察更為合理[2]。本展廳中使用的是第一人稱角色控制,可以從unity標(biāo)準(zhǔn)資源包中導(dǎo)入第一人稱角色控制器預(yù)設(shè)。第一人稱角色控制器的視角特性是看不到本身,因此該子物體只是角色控制器的一個(gè)圖形描述,主要幫助用戶可以在場景中查看角色控制器的位置,在實(shí)際使用時(shí)用戶可以關(guān)閉此圖形子物體的渲染。在室內(nèi)漫游中,相機(jī)按照指定路徑自動(dòng)漫游簡稱自動(dòng)巡路。除了可以以第一人視角通過操作鍵盤和鼠標(biāo)進(jìn)行實(shí)時(shí)漫游外,還可以設(shè)計(jì)按照指定路徑進(jìn)行巡回往復(fù)的不間斷瀏覽[3]。
3.1 展圖的制作
展圖在進(jìn)行替換之前需要根據(jù)展廳中展臺(tái)的大小進(jìn)行修改,這樣才能保證更換后保持原有圖片的比例不變形。以書畫展廳一為例,主站臺(tái)1至3號(hào)和5至10號(hào)的規(guī)格為80×160像素,4號(hào)主展臺(tái)的規(guī)格為1950×1300像素,在編寫程序時(shí)把圖片名按照展臺(tái)的順序命名為1.jpg、2.jpg、....10.jpg,并按相應(yīng)規(guī)格調(diào)整好比例,這樣才能被相對(duì)應(yīng)的展臺(tái)所識(shí)別。
3.2 展圖更新的實(shí)現(xiàn)
以展示臺(tái)1的圖片更新為例,實(shí)現(xiàn)步驟如下:
(1)定義一個(gè)Gameobject類型物體s1,并在場景中將實(shí)例展示臺(tái)1命名為s1,這樣s1就代表了展示臺(tái)1:public GameObject s1。
(2)定義一個(gè)string類型數(shù)據(jù)path1,用于指定圖片1的路徑:public string path1 =@"E:szzt utu1. jpg"。
(3)定義一個(gè)texture2d類型物體test,它的作用是作為從指定路徑加載進(jìn)的texture2d的臨時(shí)載體:public Texture2D test。
(4)根據(jù)路徑加載外部圖片的原理,定義jiazai函數(shù),函數(shù)中將加載一次所有路徑中的圖片。
public void jiazai(){
Texture2D tex= new Texture2D(1, 1);
if (File .Exists (path1 )==true ) {
//檢測(cè)路徑path1中的文件是否存在,存在才執(zhí)行下面的讀取圖片的代碼;
byte [] rawJPG = File.ReadAllBytes(path1);
//定義一個(gè)byte類型的數(shù)據(jù)暫時(shí)存儲(chǔ)由readallbyte函數(shù)根據(jù)路徑將文件轉(zhuǎn)換成的byte數(shù)據(jù);
test.LoadImage(rawJPG);
//由loadimage函數(shù)將byte類型數(shù)據(jù)rawjpgz轉(zhuǎn)換為名為test的texture2d類型數(shù)據(jù);
test = tex;
s1.renderer .material .mainTexture = test;
//將texture2d類型數(shù)據(jù)賦給是s1的mainTexture,s1便展示出新貼圖。
(5) 判定現(xiàn)在場景中的貼圖與當(dāng)前路徑中的圖片是否一致,從而決定是否要把路徑中的圖片加載到場景中。
定義Pd()函數(shù)來判斷當(dāng)前場景的圖片是否與路徑中的圖片一致,根據(jù)判斷結(jié)果決定控制加載開關(guān)的bool數(shù)據(jù)gb的值為true或者false。
定義check函數(shù),比較圖片test2d和s1物體的貼圖,如果相同則表示已經(jīng)加載了路徑中的圖片,將gb的值改為true。
(6)定義Update更新函數(shù),根據(jù)gb的值來判斷圖片加載的情況,使用jiazai()函數(shù)對(duì)所有路徑上的圖片進(jìn)行加載,加載完后將gb值變成true,表示圖片更新已經(jīng)完成。
本文應(yīng)用Unity 3D實(shí)現(xiàn)了Windows文件操作管理展廳圖片的更新,將技術(shù)管理人員從繁瑣低效的模型編輯工作中解脫出來,為展廳的管理和二次使用提供了便捷的操作方式。此方法為虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于數(shù)字博物館多種展品類型的更新實(shí)現(xiàn)提供了參考。
[1] 年愛華. 基于Unity 3D的三維虛擬展廳的設(shè)計(jì)與實(shí)現(xiàn)[J].廣東交通職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015(8):55-57.
[2] 胡安林. 3ds Max材質(zhì)與貼圖應(yīng)用技法精粹[M].北京:科學(xué)出版社,2008:98.
[3] 干建松. 基于Unity3D的室內(nèi)漫游的關(guān)鍵技術(shù)研究[J].鹽城工學(xué)院學(xué)報(bào)(自然科學(xué)版),2011(12):56-59.
Virtual Showroom Pictures Updated Implementation Based on 3ds Max with Unity 3D
WU Baowen,YANG Baijun
(School of Information Science, Wenshan University, Wenshan Yunnan 663099, China )
With the popularity of virtual reality, virtual showrooms by virtual reality technology in computer simulation of reconstruction, realize the display of exhibitions and life scenes. In this paper, based on 3ds Max and Unity 3D, virtual showroom display pictures updating problem is studied, and in combination with C# script language, the paper introduces the automatic picture updating method of only putting the pictures in the speci fi ed fi le directory without modifying the 3ds Max model and Unity3D source fi les.
virtual showrooms; Unity 3D; exhibition fi gure updated automatically
TP393
A
1674-9200(2016)06-0056-03
(責(zé)任編輯 劉常福)
2016-06-21
文山學(xué)院大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項(xiàng)目“基于3DMAX和VRP的校園文化數(shù)字展廳的設(shè)計(jì)與實(shí)現(xiàn)”。
吳保文,女,云南文山人,文山學(xué)院信息科學(xué)學(xué)院講師,碩士,主要從事數(shù)字媒體應(yīng)用研究;楊柏軍,男,云南楚雄人,文山學(xué)院信息科學(xué)學(xué)院2012級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生。