王家騏,于海霞,曲衛(wèi)平,吳 焱
(1.安徽工貿(mào)職業(yè)技術學院 動漫學院,安徽 淮南 232007;2.安徽工貿(mào)職業(yè)技術學院計算機技術系,安徽 淮南 232007;3.安徽理工大學計算機科學與工程學院,安徽 淮南 232001;4.安徽工貿(mào)職業(yè)技術學院機械系,安徽 淮南 232007)
在本系統(tǒng)中,主要使用了JAVA和VRML技術。JAVA是一種非常適合網(wǎng)絡應用環(huán)境且具備“一次編譯隨處運行”特點的編程語言,它使用基于JAVA APPLET技術的WEB應用程序,既能實現(xiàn)各種功能的擴展,又能夠?qū)崿F(xiàn)在多個應用程序之間進行數(shù)據(jù)的交換。VRML(Virtual Reality Modeling Language,虛擬現(xiàn)實建模語言)是一種3D場景建模語言,其特性是渲染實時及與平臺無關等,可利用支持WRL文件的瀏覽器瀏覽3D虛擬場景,但其缺點是不能實現(xiàn)實時交互功能。新的VRML版本更是加強了3D虛擬場景的真實性,能讓訪問者有“身臨其境”的體驗。
VRML的優(yōu)點是3D場景的建模,JAVA具備了良好的網(wǎng)絡數(shù)據(jù)傳輸能力及方便的編程功能,二者有很強的互補性,即通過VRML的EAI(External Authoring Interface,外部程序接口)與 JAVA APPLE程序的數(shù)據(jù)交換,從而實現(xiàn)VRML與JAVA的完美結(jié)合,前者負責3D場景建模及EAI接口的定義,后者負責用戶交互功能及業(yè)務邏輯功能的開發(fā)。
系統(tǒng)總體架構(gòu)為基于MVC技術的三層 B/S結(jié)構(gòu),采用 VRML和 JAVA(包括 JAVA APPLE、JSP)技術,實現(xiàn)用戶界面與應用服務之間的低耦合開發(fā),數(shù)據(jù)存儲采用的是SQLServer數(shù)據(jù)庫。系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
在圖1中,用戶界面是使用者實施操作的唯一平臺,其利用支持VRML的網(wǎng)頁瀏覽器進行零配件模型的三維瀏覽、對零配件模型實施管理以及實現(xiàn)人機間的交互;應用服務層的任務是實現(xiàn)用戶控制信息及上傳數(shù)據(jù)的處理,以及處理WEB服務器提交的數(shù)據(jù)并傳遞給SQL數(shù)據(jù)庫,再將反向接收處理后的結(jié)果顯示在用戶界面層;數(shù)據(jù)層的作用是利用JSP和數(shù)據(jù)庫技術處理WEB服務器發(fā)出的數(shù)據(jù)請求,為應用服務層提供數(shù)據(jù)處理服務。
系統(tǒng)功能模塊如圖2所示。在圖2中列舉了系統(tǒng)的主要功能模塊:用戶信息管理模塊、零部件信息管理模塊、零部件裝配組管理模塊、模型裝配及用戶交互等模塊。這些功能模塊分別實現(xiàn)了用戶的登錄/注銷、用戶權限的控制、零部件信息的管理、零部件裝配組的管理、模型裝配控制及用戶交互等功能。
圖2 系統(tǒng)功能模塊圖
用戶信息管理:包括用戶管理和用戶權限管 理兩大部分,前者包括用戶的注冊/注銷、個人信息維護等功能,后者用來實現(xiàn)用戶權限的分配功能。本系統(tǒng)利用角色權限分派的方式實現(xiàn)了用戶的權限控制。
零部件信息管理模塊:采用逐層分類管理法實現(xiàn)對繁雜零部件信息的優(yōu)化組織及高效管理。
零部件裝配組管理模塊:采用了能夠?qū)崟r反映裝配層次及裝配關系的樹形結(jié)構(gòu),即以裝配組為樹根,分類地進行劃分,最終到葉子節(jié)點——元零件,每個節(jié)點都存儲了與之對應的信息,諸如:三維模型數(shù)據(jù)、零件位置數(shù)據(jù)、設計文檔和材質(zhì)工藝文檔等。
模型裝配模塊:其主要功能有五項,分別是裝配組導入功能、信息加載功能、運動控制功能、碰撞檢測功能和結(jié)果輸出功能。為了能夠快速和實時地進行碰撞檢測,項目組通過以AABB(軸向包圍盒)算法為基礎,并增加重疊軸判定算法,形成了重疊軸向包圍盒(SAABB)算法。
用戶交互模塊的功能主要是為同時在線的用戶發(fā)起針對某一裝配問題的討論和分析,及是否保存討論相關的內(nèi)容。
在系統(tǒng)中,面對眾多的數(shù)據(jù)信息,為便于管理將數(shù)據(jù)分為兩大類:一是為保存與零部件相關信息設計了包含 partinfo、featureinfo和 procedureinfo等十余張數(shù)據(jù)表;二是為存儲系統(tǒng)的自身基本信息設計了sysuserinfo、toolinfo和GBLibsinfo等數(shù)據(jù)表,其中,partinfo表中主要包含了 partid(編號)、partname(名稱)、parttype(類型)、parentpartid(裝配組編號)、parentpartname(裝配組名稱)和assemblypathid(裝配路徑編號)等字段,用來描述零部件的基本屬性及其裝配路徑;procedureinfo表中主要包含了procedureid(編號)、procedurename(名稱)、proceduredesc(工序內(nèi)容描述)、toolid(裝配工具編號)等字段,用來描述與裝配工序相關的信息關聯(lián)到裝配工藝和裝配工具等內(nèi)容;toolinfo表中主要包含了 toolid(編號)、toolname(名稱)、tooltype(工具類型)、toolfeature(工具特征)和tooldesc(工具描述)等字段,用來實現(xiàn)對裝配工具的存儲和管理;GBLibsinfo表中主要包含了GBpartid(國標工具編號)、GBname(名稱)、GBtype(類型)、GBpara(工具參數(shù))、GBdetail(工具具體描述)等字段,用來實現(xiàn)對標準零件的管理。
利用VRMLPad等編輯軟件可以直接創(chuàng)建VRML文件,利用3DS MAX等建模軟件也可以創(chuàng)建VRML文件。面對汽車發(fā)動機的眾多零部件,顯然直接創(chuàng)建VRML文件是一件不可能完成的任務,那么使用建模軟件創(chuàng)建就是必然的選擇了。在項目實施過程中,利用AutoCAD建立零部件三維模型,再使用3DS MAX將其轉(zhuǎn)換后輸出為WRL的模型文件。此方法的缺點是WRL文件體積較大,在當前的計算機及網(wǎng)絡環(huán)境下,不能實現(xiàn)流暢使用的基本目標,因此必須對WRL文件進行壓縮。
WRL文件的壓縮有兩種方法,一是利用VRMLPad編輯器自帶的壓縮功能;二是使用Internet Model Optimizer軟件。經(jīng)驗證,壓縮后的文件在保留原文件細節(jié)的情況下比未壓縮的文件減小約80%的體積。這樣,就保證了在大批量WRL文件導入VRML場景的情況下,仍能夠流暢地正常運轉(zhuǎn)。
在設計中,EventOut事件監(jiān)聽機制是通過EventOutObserver接口類來實現(xiàn)的,從而達到動態(tài)監(jiān)控事件狀態(tài)變換的目的。具體的應用就是實現(xiàn)了“點擊零部件即操作”的功能。實現(xiàn)代碼見圖3。
當操作者單擊零部件模型時,內(nèi)嵌的Touch-Sensor節(jié)點就會觸發(fā),完成callback()方法的調(diào)用及節(jié)點名稱的發(fā)送,頁面中的JAVA APPLET捕獲了相關的信息,并完成對選中零部件的控制操作。
圖3 事件監(jiān)聽的實現(xiàn)代碼
在虛擬裝配系統(tǒng)中,碰撞檢測是一項非常關鍵的技術,其作用是判斷多個零部件在同一時間、同一空間中是否可能發(fā)生碰撞。高效率的碰撞檢測技術研究在三維場景規(guī)模不斷增加的虛擬裝配系統(tǒng)中越來越受到重視,其直接影響到裝配系統(tǒng)的實時動態(tài)效果和用戶體驗。
項目組通過以AABB(軸向包圍盒)算法為基礎,并增加重疊軸判定算法,形成了重疊軸向包圍盒(SAABB)算法。該算法的核心思想是將待檢測的零部件三維模型表面定義成為包含若干個單獨表面(由多邊形集構(gòu)成)的表面集,利用軸向包圍盒結(jié)合重疊軸對齊判定的算法,剔除多余的表面部分,再實施多邊形相交判定,因而能夠?qū)崟r、高效地進行碰撞檢測。
SAABB算法的工作原理如圖4所示。
圖4 SAABB算法工作原理圖
具體的算法流程是:第一步,確定重疊軸向包圍盒;第二步,碰撞表面選擇;第三步,多邊形相交判定。其中,第二步的算法流程和第三步的算法流程分別如圖5和圖6所示。
圖5 碰撞表面篩選流程圖
圖6 多邊形判定流程圖
裝配方法是指完成某個裝配過程的實施方法。大體上要經(jīng)過選擇裝配任務、導入零部件、移動零部件、操作裝配等一系列操作。具體來說,在選擇裝配任務步驟中要完成任務標識和裝配序列等工序,在操作裝配步驟中要完成裝配路徑和時間等工序,裝配方法的描述見圖7。
任務標識是用來明確裝配任務的,通過任務ID標識該任務的唯一性并確定此任務的名稱和任務描述;裝配序列采用了鏈的形式描述零部件在裝配任務中的裝配順序,使用裝配序列ID標識,鏈中的節(jié)點使用如下結(jié)構(gòu)數(shù)據(jù)來描述:
圖7 裝配方法描述
任務對象包括了在任務中所有涉及的裝配零部件,裝配工具和輔助工裝等,對應信息保存在零部件信息模型中;裝配路徑反映了在虛擬裝配中零部件或裝配工具的移動路徑,可通過路徑ID來標識,路徑是由多個節(jié)點構(gòu)成的,每個節(jié)點包含了位置信息、方向信息和后續(xù)節(jié)點信息,可用如下結(jié)構(gòu)數(shù)據(jù)來描述:
而裝配時間則包含了開始時間與結(jié)束時間兩個部分,用來記錄裝配動作的起止時間。
以VRML和JAVA技術(含JAVA APPLET和JSP)為基礎,結(jié)合實際應用,設計了基于SAABB算法的VAEAS及相關的功能模塊,在系統(tǒng)設計開發(fā)的過程中著重研究了WRL文件壓縮、“點擊零部件即操作”功能實現(xiàn)、SAABB碰撞檢測算法以及裝配方法等四個問題。該系統(tǒng)的實現(xiàn)對提高工作效率、降低設計成本具有重要的意義。
[1]楊潤黨,武殿梁,鄧華林,等.虛擬環(huán)境下產(chǎn)品裝配技術的研究與實現(xiàn)[J].計算機集成制造系統(tǒng),2004(10):1220-1224.
[2]行開新,田凌.支持異地協(xié)同設計的異構(gòu)CAD虛擬裝配系統(tǒng)[J].清華大學學報:自然科學版,2009(2):226-231.
[3]王德洪,涂玉芬.柴油機虛擬裝配的研究[J].新技術新工藝,2009(10):35-37.
[4]唐為奇,范秀敏,武殿梁,等.多用戶協(xié)同虛擬裝配網(wǎng)格系統(tǒng)研究[J].計算機工程與設計,2009(13):3163-3166.
[5]郭丹陽.基于虛擬環(huán)境的典型機械產(chǎn)品裝配運動仿真研究[D].長春:長春理工大學,2009.
[6]陳旻.虛擬技術在機械裝配工序中的應用[J].現(xiàn)代制造工程,2010(2):115-117.
[7]戴杰.虛擬裝配系統(tǒng)中碰撞檢測技術的研究與應用[D].大連:大連交通大學,2010.
[8]孫月,楊家富.基于Pro/E與ADAMS自動打孔裝訂機聯(lián)合仿真實現(xiàn)[J].淮陰工學院學報,2011(3):29-33.
[9]趙瑛峰,鄭澎.基于混合模型的虛擬裝配關鍵技術研究[J].計算機工程與設計,2012(8):3262-3267.