尹永福,范萍萍,邢魯超,徐家川
(山東理工大學交通與車輛工程學院,山東淄博255091)
逆向工程是指用一定的測量手段對汽車模型或實物進行測繪,根據測繪數據利用三維幾何建模方法重構空間模型的過程[1].在汽車車身設計中,最主要的逆向技術就是車身A級曲面的重構.矩形域參數曲面的擬合方法一直是曲面重構方面研究的重點.目前矩形域參數曲面的重構主要有兩種方法:一種是先將測量點擬合成曲線,再通過曲面造型的方式將曲線構建成曲面[2-5],該方法必須首先保證擬合曲線的精度,但即使擬合曲線滿足精度要求,也不能保證由擬合曲線生成的曲面在規定的誤差要求之內;另一種是由測量數據直接擬合曲面[2],該方法省去了擬合曲線的步驟,提高了擬合的效率,而且已經在軟件當中有所應用,如UG的pointcloud,Pro/E的scantools,CATIA的fit to geometry功能等,但是采用該方法擬合的曲面不能很好地滿足邊界條件,需要對曲面邊界進行裁剪操作,以便完成曲面模型的構建.因此,本文利用UG/Open API提供的曲面擬合與裁剪的函數,通過VC++編程實現車身A級曲面的擬合與裁剪,并將其集成到UG軟件中,以提高車身A級曲面重構的自動化程度.
A級曲面是指車身外表面中的高可見區域曲面,包括發動機罩、前后翼子板、前后保險杠、車門、A柱、B柱、C柱、后背門、頂蓋、側圍以及內飾件中的高可見區域等[6].對于車身A級曲面造型特征要求,參照文獻[7-9] 的定義可歸納如下:
(1)曲面片滿足G2連續,單個曲面的補片數(patch數)在u,v兩個參數方向上都是1(即Bézier曲面).
(2)曲率變化分布均勻,控制頂點分布規則,各行控制頂點間角度變化均勻.
(3)不存在奇異多余的拐點.
(4)應變能很小.
另外,文獻[9] 對利用B樣條和Bézier曲面表示A級曲面的優劣進行了比較,從而得出采用Bézier曲面表示A級曲面更有優勢,并給出了車身A級曲面采用Bézier方法表示時曲面次數的選取規則:基本曲面采用的Bézier曲面次數為2~5次,盡量選用低次的;過渡曲面(拼接方向)采用的次數至少為5次,需要撓率連續時可以采用7次.綜上所述,在對車身A級曲面進行逆向設計時需采用Bézier曲面的表示方法.
當應用Bézier曲面進行逆向曲面造型時,首先要根據給定的型值點反求出Bézier曲面的控制頂點,然后再通過求出的控制頂點繪制Bézier曲面.
對于給定呈拓撲矩形陣列的數據點陣pij,i=0,1,…m;j=0,1,…,n,把每排數據點的相鄰兩點用直線段連接,就組成一個在拓撲意義上的矩形網格.曲面逆向設計要求求解一個曲面插值于所給定的(m+1)×(n+1)個矩形網格頂點,即求解一個m×n次Bézier曲面片[8],即

其中:Bin(t)=(1-t)n-i(0≤i≤n)為伯恩斯坦基函數;bij(0≤i≤m,0≤j≤n)為所求Bézier曲面的控制頂點.
UG/Open API提供了通過點云擬合曲面的函數UF_MODL_create_surf_from_cloud,其參數見表1.若令u_patches=1,v_patcher=1,則擬合的曲面即為Bézier曲面.
在車身A級曲面的逆向設計過程中,曲面的裁剪主要包括根據邊界線對曲面進行裁剪及根據面與面的交線對曲面裁剪兩類.對于復雜的車身曲面來說,不可能由一張曲面表示,所以根據面與面之間的交線對曲面進行裁剪就成為曲面重構過程中的主要問題.現有的軟件已經可以實現根據給定的邊界線對曲面進行裁剪的功能,但是對于相交曲面的裁剪一般是先提取出兩個面的交線再進行裁剪,因此需要反復調用抽取交線的命令,從而大大降低了曲面重構的自動化程度.因此,我們將抽取交線的函數集成到曲面建模插件中,方便曲面的裁剪.

表1 曲面擬合函數參數表
抽取相交曲面之間交線的二次開發函數為UF_MODL_intersect_objects,函數的參數見表2.

表2 曲面求交函數參數表
對于提取出交線的曲面進行裁剪,只需調用裁剪曲面函數“UF_MODL_trim_sheet”就可以很方便地對曲面進行裁剪,其參數見表3.

表3 曲面裁剪函數參數表
程序的總體設計主要包括點云數據的選取、曲面的擬合、曲面求交以及曲面裁剪四部分.程序流程如圖1所示.

圖1 程序流程圖
程序的界面設計包括曲面階次的定義編輯框及點云選取、曲面擬合、曲面求交與裁剪四個按鈕.圖2為程序的操作界面圖.

圖2 程序的操作界面
圖2中的“階次定義”用來指定所生成曲面在u,v方向的階次;“選擇點云”按鈕用來選取點云數據;“生成曲面”按鈕用來生成Bézier曲面;“曲面求交”按鈕用來對創建的多個Bézier曲面求交線,如果曲面有單獨的邊界,則操作過程中就不需要此按鈕;“裁剪曲面”按鈕用來根據求出的交線或單獨的曲面邊界裁剪曲面.因此,程序能夠通過點云直接創建Bézier曲面,并能按照給定的邊界快速裁剪曲面,從而可以提高曲面重構的自動化程度.
按照程序的總體設計要求,對程序的具體實現進行必要的說明。由于篇幅的關系,這里主要給出曲面擬合與裁剪的關鍵程序,并對程序中關鍵參數的選取進行簡單介紹.
擬合曲面的主要程序如下:

其中,參數bnd_corners賦值為NULL,表示使生成的曲面在指定的X-Y平面上的投影四邊形為點云數據的最小包圍盒.如果指定了邊界的4個角點,則生成的曲面嚴格地經過4個邊界角點,但是并不能保證整個曲面邊界很好地貼近點云邊界,而且程序在執行過程中的穩定性不好,有時無法生成曲面或生成的曲面容易出現扭曲、跳躍.所以,此參數賦值為NULL,可以優先保證曲面有良好的光順性,至于曲面邊界條件的滿足,則可以通過曲面的裁剪函數實現.
由于通過點云擬合的曲面不能很好地滿足點云邊界條件,所以需要對點云邊界進行裁剪使其符合點云邊界特征的要求.對于不與其它曲面相交的邊界,需要通過Bézier曲線擬合點云的邊界線,并將其作為裁剪工具線;對于與其它曲面相交的邊界需要先提取兩個曲面的交線,以此作為裁剪曲面的工具線.曲面裁剪時的輸入參數主要包括要裁剪的曲面、裁剪工具線及其數目和投影方向、定義曲面上要保留的區域等.因此,需要調用單選對話框函數(UF_UI_select_with_single_dialog)選擇要裁剪的曲面并獲取鼠標單擊的位置坐標,同時調用類選擇器對話框函數(UF_UI_select_with_class_dialog)選取裁剪工具線,由于裁剪曲線是各自獨立的,為了裁剪方便,我們需將各條邊界曲線連接為一個閉合的樣條曲線,這里需要用到創建連接曲線的函數(UF_CURVE_create_joined_curve),最后,調用裁剪函數(UF_MODL_trim_sheet)裁剪曲面.
裁剪曲面的主要程序如下:
void creatb::OnButton4()
{… …
//獲取鼠標的位置坐標,指定曲面保留部分
double cursor[3] ;
//選擇需要裁剪的目標曲面
UF_UI_select_with_single_dialog(cue,title,UF_UI_SEL_SCOPE_NO_CHANGE,init_proc1,NULL,&res-ponse,&object,cursor,&view);
… …
//選擇裁剪工具線
UF_UI_select_with_class_dialog(cue1,title1,UF_UI_SEL_SCOPE_NO_CHANGE,init_proc2,NULL,&response1,&count1,&object1);
//創建連接的曲線,這是裁剪程序穩定與否的關鍵


通過VC++編譯的DLL文件可在UG中作為一個插件運行.本節通過對一個汽車模型的頂蓋與前后車窗數據進行擬合來檢驗程序的可行性.
打開UG新建一個部件,導入點云數據,點擊新增的菜單欄上的“曲面模塊—擬合曲面”按鈕,彈出如圖2所示的程序操作界面,其運行情況如圖3所示;然后指定所要生成的曲面在u,v方向的階次,單擊“選擇點云”按鈕,選取各個點云數據,最后單擊“生成曲面”按鈕創建擬合曲面.分別創建完3個曲面之后,選擇“插入—曲線—樣條”命令擬合各曲面的4條邊界線(單段為Bézier曲線),單擊“裁剪曲面”按鈕,按照要求依次選擇生成的曲面及創建的4條邊界線,然后單擊鼠標中鍵確定,從而得到汽車模型的各個曲面,進而利用“編輯—變換”命令將曲面對稱后可得到頂蓋的完整模型,如圖4所示.

圖3 插件在UG中的運行情況

圖4 汽車模型的頂蓋與前后車窗
車身A級曲面的評價方法包括控制頂點、斑馬線、曲率梳等,對于車身整體的光順性一般采用斑馬線來評價.本節利用UG的“斑馬線”命令對曲面的光順性進行檢查,曲面的斑馬線圖如圖5所示.從圖5中可以看出,斑馬線粗細均勻,間隔距離變化一致,沒有拐點,滿足文獻[1] 中給出的A級曲面的要求.

圖5 曲面的斑馬線圖
通過UG/Open API二次開發平臺實現了點云數據的快速曲面擬合,并集成了曲面的修剪功能,便于曲面的邊界裁剪及與后續擬合曲面拼接后的裁剪.同時,該曲面模塊還可以繼續完善,添加曲面的拼接、曲面的光順等其他功能.
[1] 徐家川,雷雨成,洪英武,等.逆向工程中車身A級曲面的評價方法[J] .汽車技術,2007(4):4-8.
[2] 張順琦,秦觀生,鄧瑞君,等.基于UG二次開發的點云數據曲面建模[J] .中國制造業信息化:學術版,2010,39(5):33-37.
[3] 晁永生,劉海江,孫文磊.以UG為平臺的逆向工程數據處理技術[J] .現代制造工程,2010(1):30-32.
[4] 王海南,胡迪,李蔓華.UG逆向模塊開發的應用研究[J] .新技術新工藝,2007(8):25-26.
[5] 何耀華,榮輝.UG在車身造型設計中曲面及實體構建的應用研究[J] .武漢大學學報:工學版,2006,39(6):71-74.
[6] 徐家川,雷雨成,洪英武,等.汽車車身A級曲面光順方法[J] .汽車技術,2008(2):17-20.
[7] 徐家川,李迪,李旭.汽車車身A級曲面的表示與次數選擇[J] .汽車技術,2010(9):58-61.
[8] 施法中.計算機輔助幾何設計與非均勻有理B樣條[M] .北京:北京航空航天大學出版社,1994.
[9] 朱心雄.自由曲線曲面造型技術[M] .北京:科學出版社,2000.