唐夢菲,陳瑤,高建民
(北京林業(yè)大學材料科學與技術(shù)學院,北京 100083)
人們生活水平的提高與現(xiàn)代科技的發(fā)展對家具產(chǎn)品提出了更高的要求,傳統(tǒng)的家具難以滿足當下年輕人追求個性及更加有趣的生活方式的需求,現(xiàn)代化、自動化的智能家具是未來發(fā)展的趨勢。智能家具的設計常采用類比推理法,即將其他領域的一些原理和方法應用到智能家具中,如藍牙、WiFi是手機的常見功能,將這些功能安裝到家具身上可以賦予家具新的功能[1]。衣柜的基本屬性是存儲衣物,而借助嵌入式系統(tǒng)、各種傳感器、機械裝置、攝像頭可以實現(xiàn)衣物殺菌、消毒、識別等[2-3],為衣柜附加額外功能,讓衣柜智能起來,為人們提供更便捷的生活。智能家具在設計方法上大多數(shù)為理論系統(tǒng)設計,少部分為關鍵部件實物驗證,極少數(shù)為整體生產(chǎn)。實物生產(chǎn)的優(yōu)點是可以使人直觀地體驗智能家具的效果,但缺點是由于家具本身體積較為龐大,整體實物生產(chǎn)對空間、時間、成本都有一定要求且出現(xiàn)錯誤修改不方便。而通過Unity 3D對家具功能進行效果模擬,設計人員可以暫不生產(chǎn)家具主體,通過模型繪制在軟件的模擬環(huán)境中對家具的效果、功能進行分析,從而減少費用并節(jié)約時間。本研究利用單片機、傳感器、CAD和3d Max軟件,結(jié)合蒙德里安的代表作《紅黃藍的構(gòu)成》設計一款符合年輕消費者需求的手勢感應自動開關門衣柜,并基于Unity 3D平臺將開關門效果進行模擬。
1 Unity 3D的應用
Unity 3D產(chǎn)品最初于2005年發(fā)布,當時為一款面向OS X的游戲引擎,目前是一個可輕松創(chuàng)建交互式內(nèi)容、跨平臺的專業(yè)引擎平臺[4]。開發(fā)者可以使用Unity 3D創(chuàng)建產(chǎn)品或從外部導入產(chǎn)品,配置物理性能并進行虛擬產(chǎn)品測試。
目前Unity 3D在VR場景漫游方面應用較多。如熊巍等[5]利用Unity 3D作為開發(fā)環(huán)境,模擬化學實驗的操作流程,達到輔助教學的目的?;魫矍宓萚6]通過3d Max建模,Unity 3D模擬鉆井工程的八大作業(yè)系統(tǒng),為后期培訓教學帶來了便利。
在家具方面主要用于家具系統(tǒng)的開發(fā)。比如室內(nèi)VR仿真[7]、家裝漫游系統(tǒng)的開發(fā)[8]、虛擬家裝設計等[9]。馬利波[10]利用Unity 3D模擬明式家具的結(jié)構(gòu)和制作工藝,讓家具展示擁有了交互性、動態(tài)性;張飛[11]利用Unity 3D制作了一個具有交互功能的新中式家具選擇場景,讓消費者更直觀地了解家具在室內(nèi)的狀態(tài)。
2 Unity 3D用于智能家具設計的原理
Unity 3D作為一個游戲引擎能夠應用于智能家具的設計主要基于以下幾點:
1)強大的多平臺協(xié)作能力[12],可以接收大部分主流3D制作軟件的文件,包括家具設計常用的CAD和3d Max;
2)豐富的組件功能和插件功能。Unity 3D編輯器中包含2D與3D場景設計工具、NVIDIA PhysX物理引擎、光照、音頻系統(tǒng)、Sprite管理工具、GUI插件、粒子效果和關鍵幀清單動畫系統(tǒng)[13],可以滿足智能家具常見功能的模擬;
3)可以通過串口與外部機械元件通信,接收單片機指令,實現(xiàn)家具功能外部控制,內(nèi)部模擬。
3 設計案例
衣柜作為家庭中必不可少的一種家具,主要功能是存放衣物、裝飾室內(nèi)空間。目前對于智能衣柜的設計還處于起步階段,其設計開發(fā)還有很多可研究的空間。
3.1 設計背景
產(chǎn)品定位為當下80、90后年輕人,因為年輕人對新鮮事物興趣度較高,其思想和觀念相對比較前衛(wèi),更追求個性化、與眾不同,對于產(chǎn)品美觀性的重視往往超過對產(chǎn)品價值的考慮[14]。
外觀設計是受蒙德里安《紅黃藍的構(gòu)成》作品的啟發(fā)(圖1)。蒙德里安的主要理念是:自然界中的各種元素都可以用簡單的水平、垂直線來表示[15]。而《紅黃藍的構(gòu)成》這幅作品將水平垂直線與三原色置于大小看似毫無規(guī)矩的網(wǎng)格結(jié)構(gòu)中,使每種元素的位置和面積最終達到一種和諧與平衡。

圖1 紅黃藍的構(gòu)成Fig. 1 Composition with red, blue, and yellow
3.2 系統(tǒng)總體結(jié)構(gòu)
本研究以家具智能化理論為基礎,設計一款可以手勢自動開關門的智能衣柜,應用CAD、3d Max軟件設計衣柜的造型,在外部依靠傳感器和單片機控制,通過軟件與硬件兩部分,結(jié)合Unity 3D技術(shù)在電腦中模擬衣柜開關門的效果。系統(tǒng)總體結(jié)構(gòu)框圖如圖2所示。

圖2 系統(tǒng)結(jié)構(gòu)框圖Fig. 2 System structure diagram
3.3 設計方法
3.3.1 衣柜模型建立
在造型上,《紅黃藍的構(gòu)成》畫作中水平垂直線以及紅黃藍三色的元素都在本設計中有所體現(xiàn),并在該畫作的風格基礎上將顏色加深為深紅、深藍和姜黃色,而黑色的部分可以用來安裝元器件,使其在柜體中不是很顯眼,到達“隱形”的效果。
材質(zhì)部分,門板都采用亞克力板,打造輕盈、簡潔的形象。
在結(jié)構(gòu)上,衣柜的分區(qū)設計成中間為移門衣柜,用于懸掛易皺或熨燙平整的外套等衣物;左側(cè)為轉(zhuǎn)門,用于存放擺放疊好的衣物、換季衣被、儲物盒等;右側(cè)為抽拉門,上層可放置短款衣物,下層為褲掛。多變的開門方式為衣柜增加一些趣味性,更大化利用了柜內(nèi)空間,更方便了衣服的拿取。通過CAD和3d Max建立衣柜的模型,效果圖如圖3。

圖3 設計案例效果Fig. 3 Designs of case rendering
3.3.2 程序編寫及硬件連接
光電感應開關門部分本研究選用STC89C52型單片機、E18-D80NK型光電開關作為外部元器件。STC89C52型單片機是較為經(jīng)典的具有MCS-51內(nèi)核、8位CPU的單片機。
E18-D80NK型光電開關是基于紅外線反射原理的光電開關,采用三線制導線連接,檢測距離可以根據(jù)要求進行調(diào)節(jié),距離可調(diào)節(jié)范圍為3~80 cm,工作電壓為5~36 V,工作環(huán)境溫度為-25 ℃~+55 ℃。電路圖見圖4。

圖4 電路圖Fig. 4 Circuit diagram

圖5 系統(tǒng)程序框圖Fig. 5 System program block flow diagram
開發(fā)環(huán)境為keil uvision3,系統(tǒng)邏輯程序如圖5所示。系統(tǒng)控制原理如下:首先需要將程序以及紅外模塊依次初始化,接下來判斷紅外傳感器A或紅外傳感器B是否有信號。若紅外傳感器A檢測到了信號,且把檢測變量對2取余數(shù)后,判斷結(jié)果是否為奇數(shù),若為奇數(shù),則A電機正轉(zhuǎn)3 s,否則A電機反轉(zhuǎn)3 s,3 s后A電機停轉(zhuǎn),紅外模塊恢復初始化;若紅外傳感器B檢測到信號,且把檢測變量對2取余數(shù),判斷是否為奇數(shù),若為奇數(shù),則B電機正轉(zhuǎn)3 s,否則B電機反轉(zhuǎn)3 s,3 s后B電機停轉(zhuǎn),紅外模塊恢復初始化;若紅外傳感器A、B均未檢測到信號,則A、B電機不轉(zhuǎn),紅外模塊保持初始化。后續(xù)重復以上操作,同時發(fā)送字符串“open”和“close”到Unity 3D中。將編寫好的程序通過STC-ISP軟件冷啟動上電燒錄進單片機。
3.3.3 創(chuàng)建Unity 3D工程及模型導入
Unity 3D平臺中支持許多常見的3D模型制作軟件,最常用的為.FBX文件格式。首先將在3d Max中做好的衣柜立體模型文件備份后,保存為.FBX 格式文件導出,圖6為文件導出圖,導出后置于工程文件夾中的Assets文件夾下,并在場景視圖中打開。由于模型、材質(zhì)都已在3d Max中創(chuàng)建好,因此在Unity 3D中不需要重復添加。將模型拖到Project面板下,對模型進行簡單烘焙,調(diào)整攝像機位置,使模型出現(xiàn)在畫面中。

圖6 FBX文件導出Fig. 6 Import FBX file

圖7 開關門動畫腳本Fig. 7 Switch door animation script
3.3.4 組件功能建立
物體是組件的容器。在Unity 3D中,物體的大部分功能的實現(xiàn)都是由組件來完成的,腳本也是一種組件。腳本開發(fā)環(huán)境為Microsoft Visual Studio。依次點擊Create-C#Script創(chuàng)建C#腳本。為了多角度觀察衣柜,通過bool函數(shù)判定當前無法切換視角,當相機速度大于0,改變bool值來切換視角;通過Vector3.SmoothDamp函數(shù)設置當前攝像機的位置和要接近的位置,腳本圖如圖7所示。本研究用到的另一種組件為變換Transform組件,變換組件表示了對象的位置、朝向和縮放的信息,且是每個對象必須有且無法刪除的。打開動畫設置界面,選擇右門這個組件,添加動畫。打開錄制模式,選擇關鍵幀,更改Transform面板下門的position中x的數(shù)值為單扇門寬度,使之能移動到合適的位置。
3.3.5 串口通信
由于單片機和計算機的電平不同,需要一個電平轉(zhuǎn)換芯片MAX232。MAX232芯片可以將計算機輸出的電平轉(zhuǎn)換為單片機可以識別的0V/5V電平,從而實現(xiàn)了計算機和單片機之間的通信。
進行串口通信時首先需要將單片機的COM端口打開,并在Unity 3D中識別該端口,在keil uVision3中編寫開關門字符串分別為“open1”和“close1”單片機發(fā)送串口數(shù)據(jù)部分程序如下:
void SendrStr(const uint8 *ptr)
{
do
{
SendOneByte(*ptr);
}while(*ptr++!=′