簡介
現(xiàn)行的三維作圖系統(tǒng)開發(fā)大多基于二維平面數(shù)據(jù)進行處理和運算,而且有向更加精確化、數(shù)學化的方向發(fā)展的趨勢。但這未必是三維作圖最佳的發(fā)展方向。
在使用CAD軟件作圖過程中,只用鼠標和鍵盤操作存在不便之處,其最大缺陷是鼠標與鍵盤是基于二維平面進行工作的計算機硬件,操作者在使用時缺乏對三維空間的直觀感受,所以只能靠精確控制數(shù)據(jù)來提升作圖質(zhì)量。現(xiàn)行三維作圖軟件的另一弊端是軟件需要使用人員具備一定的計算機知識,因為基于二維空間和數(shù)據(jù)的三維作圖需要建模人員依照計算機的處理模式進行操作,這使得許多有很強空間想象力的人因為自身技術(shù)水平的限制不能使用計算機這一有力工具進行三維作圖。
從古到今,許多民間藝人都是出色的三維建模者。盡管沒有精確的空間定位,他們?nèi)阅軇?chuàng)作出美妙的三維實體。這啟發(fā)我們開發(fā)一套使用戶能夠憑對空間的直觀感知直接在計算機中“捏”出他們設(shè)想三維模型的三維建模軟件。這套新的系統(tǒng)使用硬件采集作圖動作的數(shù)據(jù),使得用戶可以在計算機中像捏泥人那樣直觀地“捏”出三維實體。同時,開發(fā)一套這樣的空間交互式三維作圖系統(tǒng)可以使計算機按照人的思維方式進行三維建模,而不必受自身計算機知識的限制。
項目的整體設(shè)計思路
系統(tǒng)原理
要實現(xiàn)直觀的空間交互式三維作圖系統(tǒng)的開發(fā),首先需要開發(fā)以空間交互為基礎(chǔ)的作圖硬件系統(tǒng)采集作圖所必需的數(shù)據(jù)。這些數(shù)據(jù)應該涵蓋空間中的基本元素,比如高度、角度,以及平面內(nèi)的位移。其次,需要開發(fā)一個作圖算法把硬件采集的信息運算成三維圖形的空間表示(即坐標)。此外,還需要計算機調(diào)用作圖API繪制圖像并反饋作圖信息。整體工作原理見圖1。
硬件系統(tǒng)
硬件系統(tǒng)是由我們自主設(shè)計開發(fā)的,其功能是采集基于空間交互的實時數(shù)據(jù)并發(fā)送至計算機,其核心是2張我們自行設(shè)計制作的電路板,一張主要用于作圖操作(操作板,見圖2),另一張用于數(shù)據(jù)處理和發(fā)送(控制板,見圖3)。
采集交互動作的方式
采集數(shù)據(jù)的功能主要由數(shù)個按鍵和2個精密電位器完成,其中一個直線電位器采集作圖點的高度,另一個旋轉(zhuǎn)電位器采集作圖點的角度值。操作者可以通過移動及轉(zhuǎn)動操作板來定位空間中的操作點,同時可以將所作的圖形拉伸或旋轉(zhuǎn)。操作板上的8個按鍵可以模擬對4個操作點的擠壓、拉伸及旋轉(zhuǎn),從而實現(xiàn)用戶空間交互的功能。
控制板上有4個用于選擇作圖模式的按鍵,使操作者可以選擇不同的作圖精細程度和作圖模式(對點、對線或?qū)γ孢M行操作),豐富了系統(tǒng)的作圖功能。
在我們的硬件系統(tǒng)中有2個STC12C5410AD單片機,分別將直線電位器和旋轉(zhuǎn)電位器輸出的電壓值轉(zhuǎn)化成10位二進制數(shù)并運算處理,同時這2個單片機還會采集操作點的按鈕信息并將這些信息發(fā)送到STC89C52單片機。STC89C52單片機從2個STC12C5410AD單片機接收作圖信息,把這些數(shù)據(jù)與它采集的作圖模式信息重新打包后發(fā)給計算機。它還接收來自計算機的數(shù)據(jù),驅(qū)動LED七段晶體管顯示作圖點的坐標,豐富了人機交互的內(nèi)容。硬件系統(tǒng)的程序是用匯編語言編寫的。
硬件系統(tǒng)的制作
在開發(fā)過程中,我們首先繪制了硬件的原理圖,之后用Protel軟件繪制了電路板,隨后我們用熱轉(zhuǎn)印方式制作了電路板,安裝原件并焊接。在測試了2張電路板的性能后,我們將整個硬件系統(tǒng)整合成整體并與計算機相連,完整的硬件系統(tǒng)見圖4。
軟件系統(tǒng):作圖算法與實現(xiàn)
軟件程序主要包括3個模塊:一是接口程序,我們使用串口通信控件接收來自單片機的空間作圖數(shù)據(jù)并向單片機發(fā)送坐標值;二是三維作圖算法,用于處理數(shù)據(jù)并最終生成點的坐標,是軟件系統(tǒng)的核心;三是圖像的繪制模塊,調(diào)用OpenGL作為圖形接口生成窗口并使用定點坐標數(shù)組繪制三維圖形。
作圖算法的基本功能是利用接口程序加工成的數(shù)據(jù)生成三維空間中點的坐標。算法采用極坐標思想。程序首先建立表示全部頂點的二維數(shù)組DRAWING[][]。我們將空間分成512個高度平面(數(shù)組第一維),又在每個平面上定義了256個角度(數(shù)組第二維),每個角度上有一個點。通過高度值定位當前所在的平面,通過旋轉(zhuǎn)的角度值定位需要被修改的點所在的角度,而一個點的位置由其所在的高度平面和其到Z的距離(數(shù)組的值)確定。程序先定位點,然后根據(jù)操作點的狀態(tài)對點的位置進行修改。
設(shè)一個點在高度平面h上,所處角度為α,到Z軸的距離為X,即DRAWING[h][α]=X,
若該點被“擠壓”,則有:
DRAWING[h][α]’=X*0.99,(此處數(shù)據(jù)僅用來描述算法,下同)
同時這個點兩側(cè)的共10個點也將被不同程度地“擠壓”,有:DRAWING[h][α+n]’=Xn*[0.99+(In|0.02)],(|n|<=5);
若該點被“拉伸”,則有:
DRAWING[h][α]’=X/0.99;
同時這個點兩側(cè)的共10個點也將被不同程度地“拉伸”,有:DRAWING[h][α+n]’=Xn/[0.99+(|n|*0.02)],(|n|<=5);
這種運算設(shè)計使得點的移動更符合力學規(guī)律。
由于硬件具有模式選擇功能,當用戶選擇對線操作時,可以將一條豎線上的點即DRAWING[H][α](H為數(shù)個h值的集合)都“拉伸”或“擠壓”,而當用戶選擇對面操作時,可以將一個面上的點即DRAWING[H][A](H為數(shù)個h值的集合,A為數(shù)個α值的集合)都“拉伸”或“擠壓”,這其中H、A的大小取決于用戶選擇的作圖精細度,精度越高,H、A的取值范圍越小。
程序還能對整個一個平面進行旋轉(zhuǎn),假設(shè)用戶通過操作板旋轉(zhuǎn)高度平面DRAWING[h][A]β度(β為任意角度,A為256個α值的集合),程序?qū)⑼ㄟ^一個過渡數(shù)組FLAT[256]和一個引入的變量γ來完成運算。
由于硬件端的單片機通過串行口每秒發(fā)送15次數(shù)據(jù),程序可每秒進行15次這一系列的運算,這樣的數(shù)據(jù)刷新速率足以滿足交互式作圖的要求。每次運算結(jié)束后,程序會將刷新過的DRAWING[][[]的值轉(zhuǎn)化成點的坐標值以便繪圖程序直接調(diào)用,對于一個點A,DRAWING[h][α]=X,它最終的三維坐標X,y,z為:
X=(X*cosα)*k;
y=(X*sinα)*k;z=h*k;
其中k和k是比例系數(shù),用于調(diào)整空間圖像的尺寸。
實際使用性能測試與操作樣例
在完成整個系統(tǒng)的設(shè)計,制作,程序編寫后,我們對整個系統(tǒng)進行了性能測試并與其他三維作圖工具進行了一些比較,發(fā)現(xiàn)我們開發(fā)的空間交互式三維作圖系統(tǒng)在可以完成作圖功能的基礎(chǔ)上具有一些突出的優(yōu)點,在構(gòu)建基礎(chǔ)三維圖元方面有許多潛在優(yōu)勢。
該系統(tǒng)作圖具有較好的力學特性體驗
如圖5所示,用空間交互式所圖方法模擬的對一塊泥模型進行擠壓操作。擠壓和拉伸處的曲線十分柔和,符合力學規(guī)律。這種擠壓是空間交互式作圖的一種基本操作,用作圖算法可以很輕易地構(gòu)建出來。而且該系統(tǒng)支持對點、線、面進行不同程度的擠壓,十分方便。
該系統(tǒng)可以比較容易地實現(xiàn)拉伸和旋轉(zhuǎn)
如圖6所示,空間交互式三維作圖系統(tǒng)可以容易地實現(xiàn)圖形的拉伸與旋轉(zhuǎn)。該圖中的水瓶是以一個底面為基礎(chǔ)、操作者在旋轉(zhuǎn)操作板的同時在豎直方向上拉伸操作板構(gòu)建的。這一旋轉(zhuǎn)與拉伸的操作具有連續(xù)性,十分便捷,作圖的效果也很出色。
該系統(tǒng)在基于圓形的作圖方面有明顯的優(yōu)勢
由于該系統(tǒng)的作圖算法是基于極坐標的方式進行運算的,所以在處理圓形為基礎(chǔ)的三維圖形方面有著本質(zhì)上的優(yōu)勢。它在構(gòu)建一些工業(yè)零件、家居用品、工業(yè)產(chǎn)品方面有著巨大的應用前景。
項目前景與展望
我們的研究項目實現(xiàn)了空間交互式三維作圖的設(shè)想,創(chuàng)新了計算機三維作圖的方式。雖然這一系統(tǒng)很多方面還不夠完善合理,但已經(jīng)證明了系統(tǒng)所用作圖方法的可行性以及它與現(xiàn)行三維作圖軟件相比的一些優(yōu)勢。
我們有兩個完善硬件系統(tǒng)的設(shè)想。一是提高擠壓操作質(zhì)量,二是對硬件進行更高級的封裝,提高整個系統(tǒng)的工作效率。
在軟件方面,我們有三個改善系統(tǒng)的設(shè)想。一是完善作圖算法。我們可以在程序中引入更多的物理力學元素甚至定理,也可以定義更多的曲線處理方式,使程序能夠增強三維作圖的現(xiàn)實感,使其進一步直觀化。二是鑒于該系統(tǒng)主要適用于構(gòu)建幾何圖元,我們計劃增加對生成的圖元進行封裝的功能,使其可以與現(xiàn)行的三維作圖軟件接口,這樣用戶可以利用已有資源進行更高端的后期制作。三是將這種空間交互的方式推廣用于動畫制作,使得動畫設(shè)計可以采用力學處理的方式,更加方便、逼真。
我們希望我們開發(fā)的作圖系統(tǒng)能夠得到進一步的完善,使得它得到推廣。相信在更多人的努力下,三維作圖將能變得更加方便、更加節(jié)約時間和成本、具有更多的實用價值,為這個社會創(chuàng)造出更多的驚喜。
專家評語
該項目以空間交互式3D建模方法為研究對象,選題具有重要的應用價值。通過交互式3D控制硬件與軟件,基于單片機的硬件支持,使用戶可以根據(jù)需求和意念來控制3D圖形,這種設(shè)計具有產(chǎn)品化前景,希望進一步完