張學(xué)棟,孫 寧
(桂林電子科技大學(xué)機(jī)電工程學(xué)院,廣西桂林 541004)
反求工程中的重構(gòu)過程,是首先利用可靠的實驗方法測量出實體體數(shù)據(jù)場,有質(zhì)量分布的坐標(biāo)位置數(shù)值取1,沒有質(zhì)量分布的坐標(biāo)位置數(shù)值取0。其次,用體素填充數(shù)值為1的坐標(biāo)位置,用這種堆積的方法,構(gòu)造出實體的粗糙模型。最后,用曲面構(gòu)造技術(shù)光滑實體的輪廓表面,使構(gòu)造的實體最終模型最大程度地再現(xiàn)實體原形。目前,反求工程的難點(diǎn)和研究重點(diǎn),就在于實體輪廓的光滑處理。本文著重闡述了利用目前國際最流行的基于非均勻有理B樣條理論的蒙皮法構(gòu)造曲面的過程。
任何一個三維空間,都可以離散成有限的單元體集合,這些單元體的信息集合,稱作三維體數(shù)據(jù)場。該數(shù)據(jù)通常是三維離散數(shù)據(jù),一般稱為體數(shù)據(jù)。對于形狀規(guī)則的、可以用數(shù)學(xué)表達(dá)式表示的實體,體數(shù)據(jù)來源可以用科學(xué)計算,借助于計算機(jī)軟件來生成。對于形狀不規(guī)則的、無法用數(shù)學(xué)表達(dá)式表示的實體,體數(shù)據(jù)的獲得就只能用測量的方法。在反求工程中,大部分的體數(shù)據(jù)都需要用測量的方法來獲得。本實驗組利用以專利《一種測量三維為體輪廓的設(shè)備和方法》為理論基礎(chǔ)的獨(dú)創(chuàng)的三維測量裝置,即基于浮力的測量系統(tǒng)來獲得體數(shù)據(jù)。體數(shù)據(jù)在邏輯上被組織成一個三維的數(shù)組空間(如圖1所示),每一個數(shù)組成員存儲一個單元體信息,叫做體素(Voxel),每個體素都由層號、行號和列號數(shù)據(jù)結(jié)構(gòu)構(gòu)成。
圖1 體元素示意圖
以立方體體素作為積木塊,用空間位置枚舉法來構(gòu)造實體。用VB.NET語言編寫程序[3],調(diào)用Solidworks2007 API函數(shù)進(jìn)行二次開發(fā),來實現(xiàn)三維實體重構(gòu)[1]。圖2所示分別為重構(gòu)的球體、圓錐體和三個半球槽[5]。
圖2 球、圓錐和三個半球槽的重構(gòu)示意圖
由圖2可見,由立方體體素構(gòu)建的實體輪廓表面并不光滑,因此必須對實體輪廓表面進(jìn)行光滑處理。
3.1.1 逆向反求工程中的曲面重構(gòu)方法
曲面構(gòu)造法的方法研究,一直是受到廣泛重視的內(nèi)容。通過測量數(shù)據(jù)建立產(chǎn)品表面模型或?qū)嶓w模型的方法有很多,根據(jù)不同的應(yīng)用對象和應(yīng)用場合,有不同的處理手段。按曲面模型的表達(dá)形式分類,逆向反求工程中的曲面重構(gòu)方法大致可分為:
(1)三角Bezier曲面為基礎(chǔ)的三邊域曲面構(gòu)造方案。三角區(qū)面以其構(gòu)造靈活、邊界適應(yīng)性好及不受拓?fù)浣Y(jié)構(gòu)的限制的特點(diǎn),在散亂點(diǎn)數(shù)據(jù)的曲面插值上起著重要作用。但絕大多數(shù)的CAD/CAM系統(tǒng)采用的是拓?fù)渚匦吻妫虼擞萌怯虻那嬷亟ǚ椒ㄅc一般的曲面造型模塊難以做到方法學(xué)上的統(tǒng)一,從而兩者不兼容。
(2)以多面體方式來描述曲面物體。由于整個過程是自動進(jìn)行的,使用較為簡單方便,但其表達(dá)形式不為大多數(shù)CAD軟件所支持,在此基礎(chǔ)上,生成NURBS表面,才能進(jìn)行后續(xù)處理。另外,這種方法不能精確地表示二次規(guī)則曲線曲面(如球體、圓柱等)。
(3)以B樣條或NURBS曲面為基礎(chǔ)的四邊域曲面構(gòu)造方案矩形域參數(shù)曲面擬合。矩形域參數(shù)曲面擬合方法,一直是曲面擬合方面的研究重點(diǎn),應(yīng)用對象主要是由復(fù)雜曲面組成的產(chǎn)品,如汽車、飛機(jī)、船舶等,這類產(chǎn)品既不是完全由簡單二次曲面組成,也不像人臉那樣毫無規(guī)律而言。矩形域曲面重構(gòu)直接處理的數(shù)據(jù)是柵格數(shù)據(jù),數(shù)據(jù)在空間拓?fù)湫问綖榫匦?。常用的曲面?gòu)造有Bezier、B樣條(B-Spline)、NURBS等方法。其中,許多的研究成果己在CAD軟件中廣泛應(yīng)用。
在逆向工程中,型值點(diǎn)數(shù)據(jù)(三維數(shù)據(jù))具有大規(guī)模的特點(diǎn),其B樣條曲面的擬合有其自身特點(diǎn)。在B樣條曲面擬合中,需研究的首要問題,是單一矩形域內(nèi)曲面的散亂數(shù)據(jù)點(diǎn)的曲面擬合問題。在眾多的研究中,Weiyin M和J P Kruth的工作較具代表性。他們首先根據(jù)邊界構(gòu)造一個初始曲面,然后將型值點(diǎn)投影到這個初始曲面上,接著根據(jù)投影位置算出其參數(shù)分布,從而解決散亂數(shù)據(jù)的參數(shù)分配問題。根據(jù)這一型值點(diǎn)參數(shù)分配擬合出一張新的NURBS曲面,然后再對型值點(diǎn)參數(shù)進(jìn)行優(yōu)化,使所擬合曲面離給定型值點(diǎn)誤差最小。
3.1.2 矩形域參數(shù)曲面擬合的曲面重構(gòu)方法
本研究的數(shù)據(jù)具有分層均勻規(guī)則特點(diǎn),經(jīng)過處理提取的邊界體數(shù)據(jù),仍然具有這一特點(diǎn)。綜合分析三種曲面重構(gòu)方法,結(jié)合本文處理的數(shù)據(jù)特點(diǎn),選擇矩形域參數(shù)曲面擬合方法。
矩形域參數(shù)曲面擬合方法的曲面重構(gòu)主要有兩種方法:
(1)先將測量點(diǎn)擬合成曲線,在通過曲面造型的方式,將曲線構(gòu)建成曲面片;
(2)直接對測量數(shù)據(jù)擬合,生成曲面片,最終經(jīng)過曲面的過渡、拼接和裁剪等曲面編輯操作,完成曲面模型的構(gòu)建。
方法(1)以Solidworks軟件中放樣生成曲面為典型代表;方法(2)以UG中的點(diǎn)云擬合曲面為典型代表。本課題使用Solidworks三維設(shè)計軟件作為開發(fā)平臺,結(jié)合數(shù)據(jù)本身特點(diǎn),選用方法(1)作為曲面構(gòu)建方法。
曲線是構(gòu)建曲面的基礎(chǔ),在逆向工程中,一種常用的模型重構(gòu),就是先將數(shù)據(jù)點(diǎn)通過插值或逼近擬合成樣條曲線,再利用CAD造型工具如sweep、blend、lofting、四邊曲面boundary等,完成曲面或曲面片造型。
NURBS用作計算,可以被計算機(jī)容易地處理,浮點(diǎn)錯誤相對穩(wěn)定,對內(nèi)存的需求相對較小,并且可以表示任何曲線和曲面.它是基于有理貝齊爾曲線的非有理B樣條方法的推廣。
非均勻有理B樣條曲線定義為
式中,di為控制點(diǎn);wi為權(quán)因子;Bi,k(u)(i=0,1,2…n)為K階K-1次非均勻B樣條。
該樣條的基函數(shù)由下列遞推公式給出
式中,節(jié)點(diǎn)矢量U=[u0+u1,…um](m=n+k);對于非周期的B樣條,節(jié)點(diǎn)矢量兩端去k重節(jié)點(diǎn),即u0=u1=…=uk-1;um-k+1=um-k+2=…=um,以便曲線保持NURBS曲線的端點(diǎn)。
由于NURBS(Non-Uniform Rational B-spline即非均勻有理B樣條)具有的各種優(yōu)越性,它成為了STEP標(biāo)準(zhǔn)中制定的自由曲線曲面的唯一表示標(biāo)準(zhǔn),為CAGD(Computer Aided Geometric Design計算機(jī)輔助設(shè)計)提供了統(tǒng)一的數(shù)學(xué)描述方法,并且在曲面造型中得到廣泛的應(yīng)用,成為目前CAD軟件中描述產(chǎn)品幾何形狀的通用方法。
NURBS的曲面表達(dá)式如下:
其中,沿u向和v向的節(jié)點(diǎn)矢量的節(jié)點(diǎn)數(shù),分別為(r+1)和(s+1)(r=n+k,s=m+l)。
曲線的構(gòu)建十分重要,它是曲面構(gòu)造的前提。構(gòu)造曲線需要型值點(diǎn),因此首先必須進(jìn)行輪廓數(shù)據(jù)點(diǎn)提取。
對于單獨(dú)一層薄片來說,每個體素就是一個正方體,從圖3可以發(fā)現(xiàn),薄層邊緣輪廓點(diǎn)最多只有3個實孔單元體素與其相鄰,內(nèi)部點(diǎn)必然有4個實孔單元體素與其相鄰,所以可以通過檢測該層所有體素頂點(diǎn)的重合度,提取出截面輪廓點(diǎn)。
圖3 邊緣輪廓數(shù)據(jù)點(diǎn)的提取
利用插值法對提取的輪廓數(shù)據(jù)點(diǎn)進(jìn)行曲線擬合。曲線插值法擬合曲線,就是令曲線通過所有測量點(diǎn)。這種方法的優(yōu)點(diǎn),是插值點(diǎn)的擬合誤差為0,且不需要構(gòu)造新的數(shù)據(jù)點(diǎn)來進(jìn)行擬和,減小了數(shù)據(jù)量處理和因引入和刪減數(shù)據(jù)帶來的誤差。一般在插值之前,要先去掉測量壞點(diǎn),這也就是在數(shù)據(jù)處理時數(shù)據(jù)簡化的目的所在[4]。插值法擬合曲線的流程圖如圖4。
圖4 插值法擬合流程
蒙皮是傳統(tǒng)的曲面生成領(lǐng)域中的常用方法,曲面的插值不再是通過給定的數(shù)據(jù)點(diǎn)陣,而是直接通過一簇曲線。其主要任務(wù),是通過一組有序的稱為截面曲線的空間曲線擬合的一張曲面,可形象地看成給一簇截面曲線構(gòu)成的骨架蒙上一張光滑的皮。
用常規(guī)的NURBS插值方法進(jìn)行曲面重構(gòu),需要求解大型的線性方程組,且重構(gòu)曲面只能過插值點(diǎn),計算復(fù)雜且存在不穩(wěn)定現(xiàn)象。采用NURBS蒙皮技術(shù),則可以通過所有的截面曲線(截形線),且將曲面擬合問題轉(zhuǎn)化為兩步曲線的擬合或插值問題,比較穩(wěn)定,適合于截面數(shù)據(jù)構(gòu)造曲面。
本課題研究中,根據(jù)Solid works曲線、曲面造型的特點(diǎn),提出了利用角度對應(yīng)引導(dǎo)線消除截面線對應(yīng)型值點(diǎn)不對應(yīng)產(chǎn)生的扭曲現(xiàn)象,角度對應(yīng)引導(dǎo)線用3D樣條曲線繪制,構(gòu)建方法如下:
(1)先根據(jù)式(5),算出每一層的重心坐標(biāo);
(2)建立過以重心坐標(biāo)橫坐標(biāo)為X軸、縱坐標(biāo)為Y坐標(biāo)的新坐標(biāo)系。對于NURBS曲線同樣進(jìn)行坐標(biāo)變換。對于每一層形成的NURBS曲線在新坐標(biāo)系內(nèi),構(gòu)造通過新原點(diǎn)(重心)的角度射線,必然會與之相交,這樣可以求得交點(diǎn)。其中可以根據(jù)情況,選定射線每次轉(zhuǎn)動角度。
(3)將每一層得到的對應(yīng)角度的交點(diǎn)統(tǒng)一起來,這樣可以避免出現(xiàn)扭曲現(xiàn)象。
(4)將求得的交點(diǎn)進(jìn)行坐標(biāo)轉(zhuǎn)換,轉(zhuǎn)換為初始坐標(biāo)系內(nèi)的交點(diǎn)坐標(biāo)。
(5)求得的有序型值點(diǎn)方陣,為要求曲面的型值點(diǎn),求出對應(yīng)控制頂點(diǎn)方陣,即可滿足型值點(diǎn)一一對應(yīng)如圖5(a)所示。
圖5 角度引導(dǎo)線
利用Solidworks中3D草圖繪制功能構(gòu)造的對應(yīng)的型值點(diǎn)連線,作為構(gòu)造曲面的角度對應(yīng)引導(dǎo)線。利用角度引導(dǎo)線,控制調(diào)整截面線起點(diǎn)(如圖5a),生成圓柱體曲面(如圖5b)可以消除曲面扭曲失真現(xiàn)象。
圖6為圖1重構(gòu)實體經(jīng)過蒙皮后的結(jié)果。
圖6 光滑處理后的實體圖形
首先對圓錐斑馬條紋,選取球形影射,對原始理想曲面、無引導(dǎo)線曲面、采用角度引導(dǎo)線的曲面分別進(jìn)行條紋演示(如圖7所示)。圖7 a為理想模型斑馬條文圖,圖7 b為未采用引導(dǎo)線重構(gòu)模型斑馬條文圖,圖7 c為采用4條引導(dǎo)線重構(gòu)模型斑馬條文圖。從圖中可以看出,采用引導(dǎo)線后,曲面斑馬條文紊亂有所改善,說明采用引導(dǎo)線重構(gòu)曲面光順程度提高。
圖7 斑馬條紋圖
剖切理想實體和構(gòu)造實體,對得到的截面輪廓進(jìn)行誤差分析。本節(jié)以實心圓錐體為例,通過三種剖切面即過中心線斑馬條文紊亂區(qū)域主剖、過中心線斑馬條文規(guī)則區(qū)域主剖、平行于底平面的底剖進(jìn)行誤差分析。
平行于底面剖切誤差分析方法:作平行于底面的平面剖切模型,在模型剖切截面上,以理論中心為直線端點(diǎn),每10°繪制一條直線與截面輪廓線相交求取交點(diǎn),利用測量模塊測量每一個交點(diǎn)與理論中心點(diǎn)之間的距離并記錄。通過與對理想模型進(jìn)行同樣剖切獲得的理想標(biāo)準(zhǔn)數(shù)據(jù)相減,得出平行于底面剖切截面誤差(如圖8)。圖中繪制了第20層和第30層兩個截面誤差圖,從圖中可以看出,截面最大誤差約0.6 mm。
圖8 平行于底面剖切誤差圖
過中心軸線剖切的誤差分析方法:作過中心軸線的平面剖切模型,在剖切截面上,平行于底面繪制平行線,間距1 mm,求取平行線與截面輪廓的交點(diǎn),測量每個點(diǎn)并記錄,與理想模型值進(jìn)行誤差分析。
由圖8可見,圓錐表面粗在斑馬條文紊亂區(qū)域和相對規(guī)則區(qū)域,所以分別沿斑馬條紊亂區(qū)域和相對規(guī)則區(qū)域,進(jìn)行剖切誤差分析(如圖9)。從圖9可以看出,斑馬條文相對規(guī)則區(qū)域誤差明顯小于紊亂區(qū)域。
圖9 過軸線剖切誤差圖
本文首先給出了由立方體體素重構(gòu)的實體示例,接著介紹了目前流行的曲面構(gòu)造方法和構(gòu)造技術(shù),采取適合本文的四邊域NURBS法。在構(gòu)造曲線之前,對于數(shù)據(jù)層進(jìn)行輪廓數(shù)據(jù)點(diǎn)提取。接著詳細(xì)介紹了NURBS曲線插值方法,采用均勻參數(shù)法構(gòu)造曲線。傳統(tǒng)蒙皮法可能出現(xiàn)層間數(shù)據(jù)點(diǎn)不對應(yīng)、甚至曲面扭曲的現(xiàn)象,提出了角度對應(yīng)引導(dǎo)線生成,來消除這方面對實體構(gòu)造的影響。通過描述曲面編輯各種功能,選取了合適的功能來實現(xiàn)實體表面用曲面來代替,使得實體更加接近理想實體模型,最后給出了曲面蒙皮后的實體示例和誤差分析。
[1][美]SolidWorks公司.SolidWorks高級教程二次開發(fā)與API[M].杭州新迪數(shù)字工程系統(tǒng)有限公司編譯.北京:機(jī)械工業(yè)出版社,2009.
[2]施法中.計算機(jī)輔助幾何設(shè)計與非均勻有理B樣條[M].北京:高等教育出版社,2001.
[3]陳語林.Visual basic.NET程序設(shè)計教程[M].北京:中國水利水電出版社,2005.
[4]歐陽黎健.反求工程中預(yù)數(shù)據(jù)處理與模型修正[D].大連:大連交通大學(xué),2006.
[5]任志偉.一種基于Solidworks三維規(guī)則點(diǎn)云數(shù)據(jù)場的重構(gòu)方法[J].機(jī)械工程與自動化,2008,(4):7-9.