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