劉穎軒, 高智斌, 謝健清, 廖國斌, 黃澤銘, 陸英杰, 張俊越, 鄺禹聰
(華南理工大學(xué)廣州學(xué)院,廣州510800)
基于手勢控制的3D建模端口設(shè)計與實現(xiàn)
劉穎軒, 高智斌, 謝健清, 廖國斌, 黃澤銘, 陸英杰, 張俊越, 鄺禹聰
(華南理工大學(xué)廣州學(xué)院,廣州510800)
文中介紹了如何運用手勢進行3D建模,通過曲度傳感器捕獲不同手指的曲度來實現(xiàn)在建模中的各種功能,通過編程實現(xiàn)建模的實時顯示和生成DXF文件,從而導(dǎo)入現(xiàn)有的三維建模軟件。
三維建模;手勢控制;kinect;processing;arduino
人與機器的通信方法多種多樣,從這些方法的發(fā)展趨勢可以看出,趨勢是越來越方便,越來越趨于自然直接的方法。而手勢控制的優(yōu)點就在于,它是運用最自然的語言——肢體語言,不需任何工具,運用身體本身就能實現(xiàn)功能。三維建模是現(xiàn)代工業(yè)生產(chǎn)中必不可少的,而現(xiàn)在傳統(tǒng)的建模方法由于運用了鼠標(biāo)鍵盤等工具,使部分人的創(chuàng)作思維受到了限制。而基于手勢控制的3D建模端口由于沒有借用任何工具,所以它能最大程度地釋放人們的創(chuàng)作靈感。
圖1
本文設(shè)計的建模端口總體功能如圖1所示。該端口設(shè)計是通過運用kinect捕捉人手在空間中的X坐標(biāo)、Y坐標(biāo)和深度坐標(biāo),然后傳輸?shù)接嬎銠C充當(dāng)建模的畫筆坐標(biāo)。4個手指的彎曲分別擔(dān)任4個不同的功能,分別是添加點、移動點、添加線、添加面。手指彎曲程度的獲取,是通過一個安裝好曲度傳感器、Arduino LilyPad單片機、無線通信模塊和小型電源的手套獲得。計算機的實時三維建模是通過Processing編程實現(xiàn)。Arduino單片機和計算機的通信是通過無線模塊來實現(xiàn)。
2.1 硬件總體
本設(shè)計中,采用了Arduino LilyPad單片機、LilyPad XBee無線通信模塊、曲度傳感器、kinect(X-BOX360)等硬件來實現(xiàn)功能。
系統(tǒng)總體功能如下:
1)把曲度傳感器安裝在手套的各個手指上,與Arduino單片機連接,獲得手指彎曲程度。
2)把XBee無線模塊與Arduino單片機連接,將數(shù)據(jù)傳至計算機。
3)5V電源連接Arduino單片機、220V家用電源連接kinect,kinect通過USB傳輸數(shù)據(jù)至計算機。
4)計算機通過運行Processing相應(yīng)程序?qū)崿F(xiàn)三維建模。
2.2 單片機系統(tǒng)設(shè)計
本文采用Arduino LilyPad單片機,它的最大優(yōu)點是輕便小巧,可以縫在衣服上。其整個系統(tǒng)只有兩個硬幣大小,而且可以清洗。它的編程平臺是基于C語言開發(fā)而成,由于它是開源的,所以它有相當(dāng)多而且強大的函數(shù)庫,在編寫程序的時候非??旖莘奖?,而且便于交流。
3.1 Arduino單片機程序設(shè)計
由于Arduino單片機負責(zé)把曲度傳感器的數(shù)據(jù)讀回,而曲度傳感器屬于模擬量的傳感器,所以程序方面在讀取數(shù)據(jù)后,經(jīng)過一個均值濾波算法后,再將數(shù)據(jù)傳送至計算機。
在通信方面波特率采用9600。在Arduino程序編寫中,無線通信只需要通過調(diào)用函數(shù)庫即可。
3.2 Processing程序設(shè)計
1)手部感應(yīng)方面。通過運用Processing中的kinect的OpenNI函數(shù)庫來捕捉手,然后提取X坐標(biāo)Y坐標(biāo)和深度坐標(biāo),在建模中充當(dāng)點的畫筆的坐標(biāo)。
由于kinect的感應(yīng)坐標(biāo)零點與建模零點不一樣,所以感應(yīng)中以第一次捕捉到人手的坐標(biāo)為建模坐標(biāo)的零點,以后感應(yīng)到手的坐標(biāo)減去建模零點坐標(biāo)得出相對坐標(biāo)即可以完成建模。
2)曲度傳感器的矯正。由于每個人的手指都不一樣,所以彎曲的程度也不一樣。因此在開始建模前實行建模手套的手指彎曲校準(zhǔn)。先伸直所有手指然后按下鍵盤“z”儲存此值。然后把所有手指收緊按下鍵盤“x”儲存此值。校準(zhǔn)完成后,運用此值計算總的彎曲程度,當(dāng)手指彎曲度大于70%觸發(fā)功能。以下是校準(zhǔn)手套儲存值的程序語言:
3)建模方面。在建模過程中由于不同手指的功能是不一樣的,所以在不同功能下畫筆點(手的坐標(biāo))的顏色是不一樣的,這樣可以方便區(qū)分功能。
在建模顯示方面,先建立好三維空間,再建立不同的函數(shù),點函數(shù)、線函數(shù)、面函數(shù)等,通過不同手指觸發(fā)不同的功能,畫出不同的圖形。然后通過先前獲得手的坐標(biāo),得到點線面的坐標(biāo),最終建成模型。模型建立完畢后通過按下鍵盤“c”鍵導(dǎo)出DXF文件。
通過本設(shè)計可以看出體感控制建模的可行性和新穎性,不過同時也可以看出其不足之處。目前這種三維建模的端口設(shè)計,還是一個概念性的設(shè)計,只能用于初步的建模。本設(shè)計可以快速地建立一個大概模型,能讓人有一個直觀的印象,但是模型要用于生產(chǎn)還需要經(jīng)過建模軟件的細化。
[1] Enrique Ramos Melgar.Arduino and Kinect Projects[M].Apress. Apr 2012.
[2] 譚亮.processing互動編程藝術(shù)[M].北京:電子工業(yè)出版社,2011.
(編輯立 明)
Design and Implementation for 3D Modeling Interface Based on Gesture Control
LIU Yingxuan,GAO Zhibin,XIE Jianqing,LIAO Guobin,HUANG Zheming, LU Yingjie,ZHANG Junyue,KUANG Yucong
(Guangzhou College of South China University of Technology,Guangzhou,510800)
3D modeling interface by gesture control was implemented.Curvature of the different fingers to achieve a variety of functions in modeling by curvature sensor to capture.Modeling show and DXF files generated by programming.
3D modeling;gesture control;kinect;processing;arduino
TP 317.4
A
1002-2333(2014)05-0095-02
劉穎軒(1993—),男,在讀本科生。
2014-03-03