徐佳
山西工商學(xué)院,山西太原 030001
隨著時(shí)代的發(fā)展,人們對(duì)自己居住環(huán)境的個(gè)性化要求也越來(lái)越多[1]。由于智能家居設(shè)備較為昂貴,樣板間在建造過(guò)程中成本過(guò)高、時(shí)間空間受限和材料不可循環(huán)利用等問(wèn)題,虛擬樣板間被廣泛應(yīng)用。
智能家居涉及的技術(shù)包括綜合布線技術(shù)、計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、醫(yī)療電子技術(shù)等[2]。目前,智能家居產(chǎn)品造價(jià)昂貴,開(kāi)發(fā)成本較高,尚未達(dá)到普及狀態(tài)[3]。
虛擬現(xiàn)實(shí)[4]技術(shù)簡(jiǎn)稱VR(Virtual Reality),是一種利用計(jì)算機(jī)來(lái)模擬現(xiàn)實(shí)中的三維場(chǎng)景。該技術(shù)具有三大特點(diǎn):沉浸性、交互感、構(gòu)想性[5],開(kāi)發(fā)出的虛擬環(huán)境,通過(guò)佩戴特殊設(shè)備,使得用戶仿佛處于真實(shí)的環(huán)境中,可以滿足人們對(duì)聽(tīng)覺(jué)、視覺(jué)等的感官要求。
由于人類對(duì)家居智能化、個(gè)性化、舒適化等的要求日益增多,二維設(shè)計(jì)作品已遠(yuǎn)遠(yuǎn)無(wú)法滿足。針對(duì)上述問(wèn)題,本文將智能家居與虛擬現(xiàn)實(shí)技術(shù)相結(jié)合,研究了基于Unity3D的智能家居虛擬仿真系統(tǒng),不僅可以滿足客戶的個(gè)性化要求,同時(shí)也縮短了智能家居的開(kāi)發(fā)周期與建造成本,還可以減少家居產(chǎn)品的損耗,為用戶的家居個(gè)性化定制提供便利。
Unity3D是一款支持建筑可視化、三維動(dòng)畫、視頻游戲等多平臺(tái)綜合游戲開(kāi)發(fā)的軟件[6]。本文利用Unity3D中的關(guān)鍵技術(shù),并結(jié)合C#語(yǔ)言編寫實(shí)現(xiàn)了智能家居虛擬仿真系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了整體家居室內(nèi)外的場(chǎng)景模擬,具備漫游功能。同時(shí)實(shí)現(xiàn)了家居中燈光、電視機(jī)、窗簾、天然氣、洗衣機(jī)的智能化功能控制模擬。本系統(tǒng)為了提升整個(gè)場(chǎng)景的視覺(jué)效果,運(yùn)用了Unity3D中關(guān)鍵技術(shù),比如全屏抗鋸齒、高動(dòng)態(tài)范圍、層次細(xì)節(jié)技術(shù)等。
系統(tǒng)仿真技術(shù)就是利用虛擬現(xiàn)實(shí)技術(shù)將實(shí)體的模型通過(guò)計(jì)算機(jī)以三維的形式呈現(xiàn)出來(lái),從而達(dá)到數(shù)據(jù)的可視化。通常仿真系統(tǒng)能否給用戶提供高質(zhì)量的沉浸感覺(jué),是由模擬實(shí)時(shí)性和系統(tǒng)運(yùn)行實(shí)時(shí)性和模型的逼真度這兩方面來(lái)決定的。
本系統(tǒng)從用戶的視角出發(fā),以普通住宅小區(qū)為例,通過(guò)調(diào)研,對(duì)周邊環(huán)境進(jìn)行真實(shí)模擬,運(yùn)用虛擬現(xiàn)實(shí)技術(shù)來(lái)表達(dá)智能化,通過(guò)基于Unity3D渲染引擎模擬現(xiàn)實(shí)中的智能家居功能演示,充分展示了智能在家居中為用戶帶來(lái)的便利。同時(shí)該仿真系統(tǒng)普適性較強(qiáng),可以根據(jù)用戶DIY進(jìn)行調(diào)整。
整個(gè)仿真系統(tǒng)建立過(guò)程中,所要用到的技術(shù)有三類:數(shù)據(jù)采集技術(shù)、建模技術(shù)、渲染技術(shù)。首先,對(duì)前期收集到的數(shù)據(jù)在AutoCAD中進(jìn)行二維化處理;其次,利用Sketchup建模軟件進(jìn)行整個(gè)場(chǎng)景模型的建立,模型優(yōu)化,紋理貼圖;再次,選用內(nèi)置NVIDLAPhysX物理引擎的Unity3D軟件進(jìn)行仿真平臺(tái)的搭建,實(shí)現(xiàn)家居場(chǎng)景的虛擬仿真、虛擬漫游;最后,利用Unity3D中內(nèi)置的柔和陰影與烘焙高度完善的光影渲染系統(tǒng),對(duì)整個(gè)場(chǎng)景進(jìn)行渲染,使得整個(gè)畫面生動(dòng)逼真。如圖1所示為整個(gè)仿真系統(tǒng)技術(shù)路線圖。
整個(gè)仿真系統(tǒng)宏觀上分為二個(gè)模塊:漫游功能、智能家居功能實(shí)現(xiàn)。整體設(shè)計(jì)規(guī)劃自頂向下逐步細(xì)化,遵循瀑布模型。如圖2所示為仿真系統(tǒng)室內(nèi)場(chǎng)景智能化功能分類圖。
1、模型制作與優(yōu)化
目前的建模技術(shù)有模擬建模、半模擬建模和測(cè)量建模[7]。本系統(tǒng)采用的是測(cè)量建模,用AutoCAD把設(shè)計(jì)好的二維平面圖制作完成,導(dǎo)入Sketchup中依圖而建,依據(jù)設(shè)計(jì)圖中參考尺寸制作出單體三維模型,分別單個(gè)成組,然后再組織成三維場(chǎng)景。Sketchup軟件小型、輕便,整個(gè)建模過(guò)程主要以“畫線成面,推拉成型”為特點(diǎn),而且在建模過(guò)程中可以為模型表面賦予紋理貼圖,用戶不需要頻繁的切換坐標(biāo)系,建立了真實(shí)的三維模型。該建模軟件內(nèi)置多種簡(jiǎn)便、實(shí)用的小工具,比如:平行工具、量角工具、推拉工具等,幫助用戶高效的建立模型。整個(gè)場(chǎng)景運(yùn)行是否流暢的關(guān)鍵因素之一是模型的三角面數(shù)量能否做到精簡(jiǎn)。在構(gòu)建場(chǎng)景的過(guò)程中,個(gè)體模型之間會(huì)出現(xiàn)相鄰模型共面或需要分割的情況,此時(shí)用到了Sketchup軟件中強(qiáng)大的耦合與分割功能來(lái)解決。通過(guò)耦合功能,將模型組合過(guò)程中出現(xiàn)的重復(fù)的線與面進(jìn)行自動(dòng)的篩選并刪除,從而合為一體。通過(guò)分割功能,添加分割邊線將模型分為兩部分。
本仿真系統(tǒng)以普通住宅小區(qū)為依托,整個(gè)房屋共分為上下兩層,房屋一樓設(shè)置書房、客廳、廚房等。該類平面圖的格式為.dwg,將其導(dǎo)入到Sketchup中,將每個(gè)模塊獨(dú)立成組進(jìn)行建立,同時(shí)將相對(duì)尺寸進(jìn)行標(biāo)注。模型房屋二樓設(shè)置了主臥、兒童房等。此時(shí)建好的模型簡(jiǎn)稱白模,為了使得建筑物更加逼真,要采用紋理映射技術(shù)。紋理映射數(shù)據(jù)是三維實(shí)體的表面所呈現(xiàn)的紋理信息[8]。通過(guò)建筑實(shí)物采集紋理數(shù)據(jù),選擇光線飽滿度較高的天氣拍攝,但要避免陽(yáng)光直射;拍攝時(shí)要盡量水平垂直拍攝,紋理映射像素一般要求為2n。如果紋理照片不規(guī)則,需要給這些面添加UVW貼圖坐標(biāo)修改器,在這個(gè)修改器中修改貼圖的重復(fù)值、貼圖的投影方式,保證相鄰兩個(gè)面的貼圖的窗縫、門縫、磚縫等對(duì)齊[9]。
2、場(chǎng)景構(gòu)建及關(guān)鍵技術(shù)
將Sketchup中進(jìn)行紋理貼圖技術(shù)處理后的場(chǎng)景模型文件以.fbx格式將材質(zhì)不同的模型雙面導(dǎo)出,同時(shí)要注意將整個(gè)場(chǎng)景中的紋理貼圖全部導(dǎo)出。將導(dǎo)入的模型導(dǎo)入U(xiǎn)nity3D中,為了點(diǎn)亮整個(gè)場(chǎng)景,添加了平行光,通過(guò)調(diào)整紅綠藍(lán)三個(gè)旋轉(zhuǎn)軸讓光束照射的方向與屏幕呈60°較好。
在Unity3D引擎中,對(duì)各個(gè)模型添加了LOD(層次細(xì)節(jié)技術(shù))。整個(gè)系統(tǒng)在加載模型過(guò)程中會(huì)自動(dòng)根據(jù)用戶視距來(lái)調(diào)用顯示不同精細(xì)程度的簡(jiǎn)化模型,實(shí)時(shí)的動(dòng)態(tài)改變場(chǎng)景的復(fù)雜度,以達(dá)到提高場(chǎng)景渲染效率。在場(chǎng)景中,當(dāng)模型中的線段和邊線經(jīng)過(guò)光柵化處理后會(huì)呈現(xiàn)出鋸齒狀,這種情況被稱為走樣,嚴(yán)重影響圖像的畫質(zhì),因此加入全屏抗鋸齒技術(shù)。該技術(shù)大致可劃分為六類,本場(chǎng)景中使用的是4倍的快速近似抗鋸齒。該技術(shù)解決的關(guān)鍵問(wèn)題是消除圖形的邊緣鋸齒。將造成鋸齒狀的像素點(diǎn)與非鋸齒狀的像素點(diǎn)進(jìn)行線性的運(yùn)算,取平均值,從而減少鋸齒,達(dá)到平滑的效果。如圖3所示為未添加全屏抗鋸齒前與添加全屏抗鋸齒后的效果對(duì)比圖,由此可得,添加了快速近似抗鋸齒后家居模型邊線邊緣變得平滑,提升了場(chǎng)景的視覺(jué)效果。
為了充分體現(xiàn)該系統(tǒng)的交互性,在Unity3D軟件中使用了路徑漫游功能。常見(jiàn)的漫游方式有3種,分別為第一人稱漫游、飛行漫游、第三人稱漫游。本系統(tǒng)使用第一人稱漫游,又稱行走漫游。此漫游方式屬于自主交互性漫游,用戶通過(guò)對(duì)鼠標(biāo)、鍵盤或者其他設(shè)備來(lái)控制整個(gè)系統(tǒng)的行走路線。如果用戶對(duì)系統(tǒng)布局不是很熟悉的話,使用該漫游方式會(huì)容易迷路。故根據(jù)貝塞爾曲線定理,在場(chǎng)景范圍內(nèi)構(gòu)建尋路網(wǎng)格,對(duì)場(chǎng)景中三維平面上的關(guān)鍵路徑點(diǎn)參數(shù)進(jìn)行相關(guān)設(shè)置,從而讓用戶十分方便的沿著設(shè)定好的路線漫游。
本系統(tǒng)所采用的渲染技術(shù)為正向渲染,該渲染方式共涉及兩部分:
(1)系統(tǒng)利用遮擋剔除技術(shù)對(duì)場(chǎng)景中當(dāng)前攝像機(jī)范圍外的一些不可見(jiàn)的三角面進(jìn)行刪除,這些物體就不需要占用CPU、GPU,從而減少每幀的渲染量;
(2)根據(jù)開(kāi)發(fā)者在場(chǎng)景中所布置的光源以及光源的強(qiáng)度來(lái)決定采取單通道或多通道方式對(duì)物體進(jìn)行渲染。采用該方式渲染,不僅減少系統(tǒng)的內(nèi)存占用率,同時(shí)提高了漫游效率。使用該渲染技術(shù),不僅降低了計(jì)算機(jī)內(nèi)存的占用率,同時(shí)也提升了場(chǎng)景的運(yùn)行效率。
智能家居仿真系統(tǒng)的相關(guān)功能是基于Unity3D的關(guān)鍵技術(shù)與C#語(yǔ)言功能相結(jié)合實(shí)現(xiàn)的。主要功能有家居中燈光、窗簾、電視機(jī)、洗衣機(jī)、天然氣功能的智能控制模擬。在整個(gè)家居中,燈光的控制是整個(gè)系統(tǒng)的核心部分,該燈光選用spotlight,啟用了Unity3D中光照組件的.SteActive屬性,修改了燈控代碼,使得用戶能自主的通過(guò)點(diǎn)擊系統(tǒng)界面上的按鈕來(lái)實(shí)時(shí)控制整個(gè)環(huán)境中燈的亮滅。
燈光控制主要程序:
if(open1){
bedroomlights.SetActive(false);//燈光關(guān)閉
}else{
bedroomlights.SetActive(true);//燈光開(kāi)啟
}
open1=!open1;
在Unity3D中為窗簾模型添加了Animation動(dòng)畫組件,包含兩部分:打開(kāi)動(dòng)畫、收縮動(dòng)畫。調(diào)用窗簾模型Transform的屬性使得窗簾沿著設(shè)定的Z坐標(biāo)軸進(jìn)行縮放。同時(shí)設(shè)置從0到8為打開(kāi)模式,從8到18為關(guān)閉模式。圖4是窗簾的Animation界面控制示意圖。
電視機(jī)控制模擬是通過(guò)Unity3D中的StartCoroutine ( )函數(shù)實(shí)現(xiàn),其原型為public function stratCoroutine (methodName:string, value:object=null): Coroutine;首先在電視模型上添加一個(gè)面,將準(zhǔn)備好的演示文件添加進(jìn)入。由于演示文件導(dǎo)入U(xiǎn)nity3D中后,會(huì)分為兩部分,一部分是視頻文件,一部分是音頻文件。所以需要添加小喇叭模型,綁定對(duì)應(yīng)的音頻文件。通過(guò)使用C# 語(yǔ)言編寫功能程序,控制電視機(jī)的音視頻實(shí)時(shí)播放與實(shí)時(shí)關(guān)閉。圖5為電視機(jī)播放時(shí)的畫面。
洗衣機(jī)工作控制功能是通過(guò)改變洗衣機(jī)模型的i.active屬性值來(lái)實(shí)現(xiàn)。i.active屬性為bool類型,值為true時(shí)代表工作,false時(shí)代表未工作。廚房中天然氣的開(kāi)關(guān)控制非常重要,本系統(tǒng)通過(guò)火焰的有無(wú)來(lái)體現(xiàn)天然氣的開(kāi)關(guān)?;鹧姹旧韺儆赨nity3D中的粒子系統(tǒng),通過(guò)代碼編寫實(shí)現(xiàn)該功能。如圖6所示為開(kāi)啟天然氣示意圖。
在Unity3D平臺(tái)上研發(fā)了智能家居虛擬仿真系統(tǒng),模擬實(shí)現(xiàn)了家居的部分智能化功能,解決了傳統(tǒng)實(shí)物建造周期長(zhǎng)、成本昂貴等問(wèn)題。Unity3D擁有強(qiáng)大的跨平臺(tái)功能,本系統(tǒng)可以非常方便的在Windows、Mac、Android等系統(tǒng)發(fā)布。小巧輕便,可適性強(qiáng),同時(shí)可以根據(jù)用戶DIY個(gè)性定制,操作簡(jiǎn)單,交互性強(qiáng),加強(qiáng)了用戶在視覺(jué)、聽(tīng)覺(jué)上的感官認(rèn)識(shí),有助于智能家居技術(shù)的宣傳工作。