文 勃,姜喜民,顧 佳,王 川,杜偉平
(1.中車青島四方機車車輛股份有限公司,山東 青島 266031) (2.西安電子科技大學(xué)機電工程學(xué)院,陜西 西安 710071)
目前,拆裝動畫已廣泛應(yīng)用于復(fù)雜產(chǎn)品生命周期的各個階段,如產(chǎn)品設(shè)計階段的虛擬裝配動畫,工藝設(shè)計階段的裝配路徑仿真,產(chǎn)品宣傳、培訓(xùn)使用的功能演示動畫,以及維護維修階段的拆卸動畫等。與傳統(tǒng)的通過文字、靜態(tài)圖片或工程圖來表達復(fù)雜產(chǎn)品功能或裝配關(guān)系相比,拆裝動畫能反映復(fù)雜產(chǎn)品裝配體中零部件之間的裝配約束關(guān)系,并能直觀地展示出復(fù)雜產(chǎn)品零部件的裝配順序、裝配路徑和機構(gòu)運動關(guān)系,以及零部件之間是否存在干涉等。隨著航空、航天、船舶、汽車、工程機械、軌道交通等領(lǐng)域大型產(chǎn)品的零部件結(jié)構(gòu)越來越復(fù)雜,精度要求越來越高,零部件越來越多,對拆裝動畫的制作需求越來越迫切。
國內(nèi)外研究人員對拆裝動畫制作進行了大量的研究。Kumamoto等研發(fā)了爆炸視圖及動畫制作軟件,然而該軟件要求用戶指定裝配序列以及模型的爆炸方向[1];劉云華等[2]將裝配模型轉(zhuǎn)化成輕量化模型,并將模型的裝配位置和爆炸位置作為拆裝動畫的關(guān)鍵幀,從而實現(xiàn)裝配動畫的自動生成;王帥[3]開發(fā)了基于Pro/E的自動爆炸圖以及拆裝動畫制作工具;田富君等[4]研究了基于3DPFD的裝配動畫生成方法。在應(yīng)用方面,大部分商品化三維CAD系統(tǒng)都有動畫制作功能,如達索公司的CATIA、3DVIA Composer[5]和SolidWorks[6-7],西門子公司的UG NX和PTC的Creo[8]等,但商品化三維CAD系統(tǒng)動畫制作功能存在制作過程繁瑣、動畫調(diào)整困難等問題,不能很好地滿足工程應(yīng)用中的效率和應(yīng)用需求。如CATIA自帶拆裝動畫工具,并且能夠制作出較為出色的拆裝動畫,但利用該工具制作拆裝動畫的過程比較繁瑣,制作效率比較低,不能很好地滿足工程的需要。因此,本文針對CATIA拆裝動畫功能存在的問題,提出了基于爆炸圖的拆裝動畫生成方法,并開發(fā)了拆裝動畫制作工具。
基于爆炸圖的拆裝動畫制作方法包括4個步驟,如圖1所示。
圖1 基于爆炸圖的拆裝動畫制作過程
1)拆裝順序規(guī)劃?;诳刹鸺纯裳b思想,在三維環(huán)境下,結(jié)合軟件的碰撞檢測功能,規(guī)劃零部件的拆卸順序,零部件的拆卸順序規(guī)劃完成之后,其逆序即裝配順序。
2)爆炸圖生成?;诓鹧b順序,確定組成裝配體各裝配單元的爆炸方向,并計算各裝配單元的爆炸距離,分層分步驟地完成爆炸圖的生成。
3)拆裝動畫生成。解析裝配體各裝配單元在裝配狀態(tài)和爆炸狀態(tài)下的位姿變換矩陣,根據(jù)各裝配單元的位姿矩陣變化情況生成動畫軌跡。
4)最優(yōu)視角確定。為了更好地觀察裝配單元的拆卸或裝配過程,定義每個裝配操作和拆卸操作的視點變換矩陣,確定最優(yōu)視角。
CATIA提供的自動爆炸工具生成的爆炸圖不盡如人意,爆炸后模型比較雜亂,而且爆炸之后難以調(diào)整爆炸距離,調(diào)整單個模型的爆炸狀態(tài)也比較困難。為了優(yōu)化爆炸圖生成,提高爆炸圖的生成效率,本文提出了基于微位移和碰撞檢測的爆炸圖生成過程,如圖2所示。
圖2 基于微位移和碰撞檢測的爆炸方向確定
基于微位移和碰撞檢測的爆炸圖生成基本思想是:根據(jù)拆裝順序,對每個待拆卸的裝配單元按照X+、X-、Y+、Y-、Z+、Z-方向做微小的移動,然后檢測移動后的模型是否與其他模型發(fā)生了干涉,如果沒有發(fā)生干涉,說明在當(dāng)前狀態(tài)下模型在該方向上是可以爆炸的,將該方向記錄為模型的可爆炸方向。如果沒有可爆炸方向,先跳過該模型去嘗試爆炸其他模型;如果有1個可爆炸方向,將該方向設(shè)定為該模型的爆炸方向;如果有多個可爆炸方向,則選擇一個最優(yōu)爆炸方向,最優(yōu)爆炸方向一般為在該方向上可以爆炸但在其反方向上不可以爆炸的方向,如果存在多個這樣的最優(yōu)方向,則選擇其中的一個最優(yōu)方向作為爆炸方向。如圖2中的螺栓,其最優(yōu)爆炸方向為Z+。最優(yōu)爆炸方向確定后,將模型按照最優(yōu)爆炸方向移動一定的距離,完成該裝配單元的爆炸。按照該方法,將該裝配層級下面所有的裝配單元完成爆炸分解,即可完成爆炸圖的生成。在爆炸圖生成過程中,若在某一爆炸方向上有多個裝配單元,為避免裝配單元的重疊或接觸,將該方向上之前已經(jīng)爆炸的裝配單元隨著本次爆炸的裝配單元一起移動。
本文利用CATIA提供的Clash接口進行模型的碰撞檢測,干涉計算模式選擇catClashComputationTypeAgainstAll,干涉類型選擇catClashInterferenceTypeContact。判斷模型是否有干涉或者重疊時,因為模型接觸不應(yīng)該判定為干涉,所以需要在干涉結(jié)果中進行判斷,只有存在catConflictTypeClash類型的干涉時才將模型視為與其他的模型干涉。
在裝配環(huán)境中有局部坐標(biāo)系和世界坐標(biāo)系兩種坐標(biāo)系,每一個零件實體模型在建模時,都有與它本身相關(guān)聯(lián)的坐標(biāo)系,該坐標(biāo)系稱為局部坐標(biāo)系,如圖3所示的oxyz。表示產(chǎn)品或零部件在場景中位置的坐標(biāo)系為世界坐標(biāo)系,如圖3所示的OXYZ。零部件在裝配環(huán)境中的位置及方向矢量由位姿矩陣決定,當(dāng)一個零部件被加入到一個裝配體時,就會建立一個位姿矩陣,該位姿矩陣確定了零件局部坐標(biāo)系原點在世界坐標(biāo)系中的位置,以及零件局部坐標(biāo)系在世界坐標(biāo)系中的方向矢量。
圖3 局部坐標(biāo)系與世界坐標(biāo)系
拆裝動畫展示的裝配單元拆卸或裝配到指定位置的運動路徑,就是位姿矩陣不斷變化的過程。位姿矩陣確定了裝配單元在世界坐標(biāo)系的位置和姿態(tài),位姿矩陣P用4×4矩陣表示:
(1)
式中:(X,Y,Z)T為裝配單元局部坐標(biāo)系在世界坐標(biāo)系中的方向矢量;(Xo,Yo,Zo)為局部坐標(biāo)系原點在世界坐標(biāo)系中的位置。
在拆裝動畫制作過程中,裝配單元的運動(包括移動和轉(zhuǎn)動)等價于位姿矩陣P經(jīng)過一次矩陣變換,得到新的位姿矩陣P′,其變換過程可以表示為:
P′=P·T1
(2)
式中T1為變換矩陣,它是一個4×4矩陣:
(3)
式中:(Mx,My,Mz)表示沿3個坐標(biāo)軸的平移分量;(X,Y,Z)T反映的是沿3個坐標(biāo)軸的旋轉(zhuǎn)分量。
在CATIA模型中,可以獲得或設(shè)置某一零部件相對于父節(jié)點的位姿變換矩陣,為了獲得該零部件在世界坐標(biāo)系中的位置及方向矢量,需要計算出該零部件相對于根節(jié)點的位姿變換矩陣。
假設(shè)某一裝配單元相對于父節(jié)點的位姿矩陣為T1,并且該裝配單元位于裝配結(jié)構(gòu)樹的第l層(假設(shè)裝配結(jié)構(gòu)樹的根節(jié)點為第1層),從裝配單元到裝配結(jié)構(gòu)樹根節(jié)點所經(jīng)過的每一層裝配單元相對于其父節(jié)點的位姿變換矩陣分別為T2,T3,…,Tl-1,根節(jié)點相對于世界坐標(biāo)系的位姿變換矩陣為Tl,那么裝配單元相對于世界坐標(biāo)系的位姿變換矩陣T可以用以下公式計算:
T=T1·T2…Tl
(5)
同時,在已知裝配單元相對于世界坐標(biāo)系的位姿變換矩陣T時,可以由以下公式計算出裝配單元相對于其父節(jié)點的位姿變換矩陣T1:
T1=T·[T2…Tl]-1
(6)
在由三維模型投影到屏幕時,需要在世界坐標(biāo)系中指定觀察點、觀察方向以及一個表示視線向上的方向矢量,這些要素構(gòu)成一個觀察坐標(biāo)系(也叫視點坐標(biāo)系),用以表示物體與觀察者的位置關(guān)系。在動畫播放過程中,如果不進行視點的調(diào)整,有些裝配單元的拆裝路徑有可能被遮擋。為了更好地觀察裝配單元的拆裝路徑,在播放某一裝配單元的拆裝動畫前,首先需要調(diào)整視點的位置。
視點調(diào)整的過程即為新的觀察坐標(biāo)系的建立過程,觀察坐標(biāo)系的建立需要經(jīng)過4個步驟[9]:首先確定觀察坐標(biāo)系的原點,如圖4中的p點;其次指定觀察方向n;再次指定一個視線向上的方向v,此方向為V的正方向;最后利用方向n和方向v可以確定U的正向u。設(shè)(xp,yp,zp)為觀察點在世界坐標(biāo)系中的坐標(biāo),(ux,uy,uz)、(vx,vy,vz),(nx,ny,nz)分別為觀察坐標(biāo)系UVN的3個坐標(biāo)軸U,V,N方向上的單位矢量,則從世界坐標(biāo)系到觀察坐標(biāo)系的變換可以用視點變換矩陣M來實現(xiàn):
(7)
其中,矩陣R為旋轉(zhuǎn)變換矩陣,它使觀察坐標(biāo)系3個坐標(biāo)軸與世界坐標(biāo)系3個坐標(biāo)軸重合,矩陣T為移動變換矩陣,它能使觀察坐標(biāo)系的原點移動到世界坐標(biāo)系的原點。
圖4 觀察坐標(biāo)系
為了以一個更好的視角觀察拆裝動畫,筆者總結(jié)出建立觀察坐標(biāo)系應(yīng)遵循的原則:
1)觀察方向應(yīng)便于觀察裝配過程,能清晰地觀察裝配單元的完整拆裝路徑及裝配約束完成過程,一般觀察方向n應(yīng)垂直于裝配單元拆裝路徑的矢量方向;
2)觀察點p的選取應(yīng)遵循整體識別性,使得選取的觀察點能完整查看整個裝配體而又充滿整個窗口,不至于裝配體縮放太小而看不見裝配細節(jié);
3)視線向上的方向v應(yīng)符合人的觀察習(xí)慣。
基于上述算法,筆者利用Visual Studio開發(fā)環(huán)境并配合CATIA提供的Automation API,開發(fā)了拆裝動畫制作工具。拆裝動畫工具主要將爆炸視圖中的信息轉(zhuǎn)化為動畫信息,拆裝動畫制作工具主要由動畫樹模塊、步驟參數(shù)編輯模塊、軌跡參數(shù)設(shè)置模塊、動畫預(yù)覽模塊、動畫管理模塊構(gòu)成,如圖5所示。當(dāng)動畫制作完成后,為了方便動畫的播放控制,筆者還開發(fā)了動畫播放控制功能,包括播放至最前、向前單步播放、向前播放、停止、向后播放、向后單步播放、播放至最后等按鈕。
本文基于CATIA開發(fā)的拆裝動畫制作工具,已成功應(yīng)用于高速軌道交通大型部件的裝配工藝設(shè)計,提高了裝配工藝設(shè)計的質(zhì)量和效率。基于爆炸圖的拆裝動畫雖然在一定程度上提高了拆裝動畫的生成效率,但最佳視角的確定仍然需要人工指定,筆者下一步將研究最佳視角自動生成算法,以進一步提高拆裝動畫的生成效率。
圖5 拆裝動畫制作界面