馬常霞 胡大勇 張占強(qiáng)
(江蘇海洋大學(xué)計(jì)算機(jī)工程學(xué)院 連云港 222005)
碳纖維(Carbon Fiber)是新一代增強(qiáng)纖維,通過添加樹脂、金屬、陶瓷、混凝土等材料制成碳纖維復(fù)合材料,主要應(yīng)用于航空航天、汽車、風(fēng)電、壓力容器、體育休閑等領(lǐng)域[1~2]。全球碳纖維的生產(chǎn)主要集中于日本、美國(guó)和歐洲企業(yè),預(yù)計(jì)到2020年,全球碳纖維在工業(yè)領(lǐng)域的應(yīng)用比例將達(dá)到72%。中國(guó)碳纖維產(chǎn)業(yè)起步較晚,但是中國(guó)市場(chǎng)對(duì)碳纖維的需求一直較為強(qiáng)勁,未來5年中國(guó)碳纖維需求量仍將保持15%以上的增長(zhǎng)速度。而目前國(guó)內(nèi)碳纖維生產(chǎn)企業(yè)總體技術(shù)水平較低、生產(chǎn)成本高,缺少面向全行業(yè)的碳纖維復(fù)合材料生產(chǎn)試制、檢測(cè)、評(píng)價(jià)一體化公共服務(wù)平臺(tái)[3]。這樣的平臺(tái)成本高,數(shù)量少難以滿足國(guó)內(nèi)碳纖維生產(chǎn)企業(yè)生產(chǎn)試制、檢測(cè)、評(píng)價(jià)的需求。為了實(shí)現(xiàn)國(guó)內(nèi)碳纖維生產(chǎn)企業(yè),復(fù)合材料研發(fā)制造單位(企業(yè)、高校、科研院所)和復(fù)合材料終端用戶等企業(yè)的對(duì)接,利用網(wǎng)絡(luò)平臺(tái)和虛擬現(xiàn)實(shí)技術(shù)探索碳纖維復(fù)合材料試驗(yàn)公共服務(wù)平臺(tái)及場(chǎng)景交互可視化仿真,截至目前國(guó)內(nèi)尚無這樣的系統(tǒng)。
近幾年來,由于計(jì)算機(jī)軟硬件技術(shù)的不斷提升,虛擬現(xiàn)實(shí)技術(shù)也取得成功發(fā)展,并日益應(yīng)用到教育、醫(yī)療、建筑、航天、汽車、導(dǎo)航、軍事等社會(huì)各個(gè)行業(yè)和領(lǐng)域。為實(shí)現(xiàn)國(guó)內(nèi)碳纖維生產(chǎn)企業(yè)、復(fù)合材料研發(fā)制造單位(企業(yè)、高校、科研院所)和復(fù)合材料終端用戶等企業(yè)的對(duì)接,根據(jù)當(dāng)前碳纖維復(fù)合材料行業(yè)發(fā)展的特點(diǎn),設(shè)計(jì)一個(gè)關(guān)于碳纖維復(fù)合材料試驗(yàn)公共服務(wù)平臺(tái)及可視化仿真。通過系統(tǒng)設(shè)計(jì)復(fù)合材料,可以更直觀,更合理,并利用該系統(tǒng)全面、準(zhǔn)確記錄各種材料、產(chǎn)品試驗(yàn)過程中的各種數(shù)據(jù),掌握各種復(fù)合材料的試驗(yàn)特性,利用平臺(tái)為整個(gè)復(fù)合材料行業(yè)提供咨詢、預(yù)約服務(wù),同時(shí)基于3DMax對(duì)碳纖維復(fù)合材料試驗(yàn)公共服務(wù)平臺(tái)場(chǎng)景進(jìn)行三維建模,然后基于Unity3D進(jìn)行場(chǎng)景交互設(shè)計(jì),重點(diǎn)開展VR場(chǎng)景動(dòng)態(tài)融合表達(dá),語音伴隨介紹,使用第一人稱視角的VR場(chǎng)景交互方法,對(duì)碳纖維復(fù)合材料加工方式展開試驗(yàn)虛擬仿真,可以形象的漫游碳纖維復(fù)合材料試驗(yàn)公共服務(wù)平臺(tái)為碳纖維復(fù)合材料加工可視化分析提供重要的數(shù)據(jù)資源和技術(shù)支持,以解決碳纖維生產(chǎn)企業(yè)生產(chǎn)試制、檢測(cè)、評(píng)價(jià)一體化問題。
平臺(tái)部分的分析與設(shè)計(jì)采用SOA面向服務(wù)的技術(shù)架構(gòu),松耦合的設(shè)計(jì)模式,保證系統(tǒng)的靈活性、可擴(kuò)展性和良好的維護(hù)性。基于B/S結(jié)構(gòu)構(gòu)建,JavaEE技術(shù)路線,支持跨平臺(tái)應(yīng)用,數(shù)據(jù)庫采用Oracle。針對(duì)整個(gè)業(yè)務(wù)模式和IT環(huán)境,在充分考慮到系統(tǒng)擴(kuò)展性的要求基礎(chǔ)上,系統(tǒng)架構(gòu)設(shè)計(jì)多層的體系結(jié)構(gòu)模型。采用微服務(wù)開發(fā)業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和輕量通訊機(jī)制,可以部署在單個(gè)或多個(gè)服務(wù)器上,每個(gè)服務(wù)能夠獨(dú)立被部署并運(yùn)行在一個(gè)進(jìn)程內(nèi)。系統(tǒng)采用Spring Boot作為腳手架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。
本系統(tǒng)分為對(duì)外服務(wù)部分(以下簡(jiǎn)稱外平臺(tái))和內(nèi)部試驗(yàn)管理部分(以下簡(jiǎn)稱內(nèi)平臺(tái))。內(nèi)平臺(tái)主要由內(nèi)部員工使用,實(shí)現(xiàn)不同權(quán)限用戶登陸、設(shè)備管理、材料管理、試驗(yàn)管理、產(chǎn)品管理、系統(tǒng)管理等。外平臺(tái)主要實(shí)現(xiàn)對(duì)外宣傳展示,仿真虛擬漫游,并接收客戶對(duì)服務(wù)的預(yù)約等,其主要功能包括產(chǎn)品展示,工藝展示,設(shè)備展示,咨詢服務(wù),服務(wù)預(yù)約,新聞資訊等模塊,試驗(yàn)部分業(yè)務(wù)流圖如圖1所示,在數(shù)據(jù)庫的范式規(guī)范下,考慮具體的應(yīng)用,本系統(tǒng)的主要數(shù)據(jù)庫的物理設(shè)計(jì)如表1所示。
圖1 試驗(yàn)業(yè)務(wù)流圖
表1 系統(tǒng)主要數(shù)據(jù)表
碳纖維復(fù)合材料試驗(yàn)公共服務(wù)平臺(tái)虛擬漫游以Unity3D作為開發(fā)平臺(tái),3DMax作為三維建模開發(fā)工具。由于3DMax能夠較好地適用于三維模型的創(chuàng)建如具有參數(shù)化模型創(chuàng)建技術(shù)、模型的創(chuàng)建過程中可交互式3D瀏覽、可以模擬仿真施工進(jìn)度、能渲染出照片級(jí)效果圖等顯著特性,所以本系統(tǒng)用它作為三維模型數(shù)據(jù)創(chuàng)建的基礎(chǔ)平臺(tái)。系統(tǒng)中需要對(duì)3D虛擬場(chǎng)景進(jìn)行渲染、設(shè)計(jì)交互仿真功能,本文采用Unity3D渲染技術(shù)實(shí)現(xiàn)場(chǎng)景渲染和交互設(shè)計(jì)功能。Unity3D基于C#編程,是可視化開發(fā)3D的應(yīng)用工具,擁有強(qiáng)大的開發(fā)者支持及第三方開發(fā)插件,所有平臺(tái)都被兼容,為確保開發(fā)更為便捷使用藍(lán)圖可視化腳本系統(tǒng)以及對(duì)VR硬件設(shè)備的高度支持[4]。為增強(qiáng)虛擬現(xiàn)實(shí)體驗(yàn),加入三維場(chǎng)景搭建,語音播報(bào)系統(tǒng),機(jī)械動(dòng)畫模擬以及用戶場(chǎng)景交互。虛擬部分結(jié)構(gòu)如圖2所示。
圖2 虛擬部分結(jié)構(gòu)圖
本系統(tǒng)內(nèi)部資源管理系統(tǒng)前端采用Flex作為視圖框架,這些應(yīng)用程序利用Adobe Flash Player和Adobe AIR,可以實(shí)現(xiàn)跨瀏覽器、桌面和操作系統(tǒng)。
我們針對(duì)在云環(huán)境下的碳纖維復(fù)合材料試驗(yàn)系統(tǒng)的特點(diǎn),采用了Flex與HTML相結(jié)合的開發(fā)方法[5~6]。由于系統(tǒng)采用結(jié)構(gòu)化文檔管理模式,我們的文檔都是以XML的形式進(jìn)行存儲(chǔ)和數(shù)據(jù)交換,使用Flex的E4X技術(shù)可以方便地讀取和封裝XML文檔,并根據(jù)試驗(yàn)數(shù)據(jù)模版格式以HTML的方式展現(xiàn)給用戶。通過精準(zhǔn)的控制HTML節(jié)點(diǎn)的讀寫和布局實(shí)現(xiàn)了材料試驗(yàn)數(shù)據(jù)的富文本編輯,并可以進(jìn)行方便的標(biāo)注,和文本進(jìn)行比對(duì)。
碳纖維復(fù)合材料試驗(yàn)平臺(tái)是云環(huán)境下的試驗(yàn)大數(shù)據(jù)系統(tǒng)共享的核心。利用云計(jì)算技術(shù)對(duì)試驗(yàn)設(shè)備中相關(guān)數(shù)據(jù)進(jìn)行分析和處理,是云計(jì)算服務(wù)推薦的基礎(chǔ)[7~9]。由于試驗(yàn)設(shè)備產(chǎn)生的數(shù)據(jù)格式多樣,因此我們需要應(yīng)用文本分類技術(shù)來對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行智能化分類。文本分類算法有很多,如:K-近鄰法(KNN),支持向量機(jī)(SVM),神經(jīng)網(wǎng)絡(luò)(NNet),簡(jiǎn)單貝葉斯,線性最小二乘法等,其中KNN算法是一種思想簡(jiǎn)單且性能穩(wěn)定的分類算法,現(xiàn)已廣泛應(yīng)用于模式識(shí)別和數(shù)據(jù)挖掘的各個(gè)領(lǐng)域,但是KNN算法在處理文本分類的過程中需要不斷地計(jì)算待測(cè)文本與樣本的相似度,當(dāng)文本數(shù)量更大時(shí),算法的效率就會(huì)更差[10]。對(duì)KNN算法在實(shí)際應(yīng)用中的限制較大,因此我們采用了改進(jìn)策略的KNN分類算法。
VR仿真模型構(gòu)建的關(guān)鍵過程如下:首先采集原始數(shù)據(jù),然后創(chuàng)建三維模型;在3DMax中對(duì)模型減面或重構(gòu);創(chuàng)建UVW模型對(duì)材質(zhì)賦予確保后續(xù)材質(zhì)和光照系統(tǒng)的仿真運(yùn)行;將處理好的模型導(dǎo)入U(xiǎn)nity3D,三維模型的構(gòu)建完成,其具體流程如圖3所示。
圖3 搭建流程圖
3.3.1 Polygon建模
Polygon建模就是將對(duì)象轉(zhuǎn)化為可編輯的多邊形對(duì)象,多邊形對(duì)象的面可以是三角形面、四邊形面以及具有任何多個(gè)節(jié)點(diǎn)的多邊形面,該可編輯多邊形對(duì)象包含了節(jié)點(diǎn)Vertex、邊界Edge、邊界環(huán)Border、多邊形面Polygon、元素Element五種子對(duì)象模式。建模過程就是通過編輯和修改該多邊形對(duì)象的各種子對(duì)象來實(shí)現(xiàn)的。
3.3.2 搭建實(shí)現(xiàn)
首先對(duì)碳纖維復(fù)合材料加工工廠實(shí)際結(jié)構(gòu)與生產(chǎn)過程進(jìn)行實(shí)際考察,借助CAD圖進(jìn)行廠房結(jié)構(gòu)制作,主要通過墻體間距確保結(jié)構(gòu)尺寸正確性。構(gòu)建建筑物模型的主體部分,采用多邊形建模技術(shù),該技術(shù)對(duì)于具有規(guī)則形物體的構(gòu)造有優(yōu)勢(shì)。首先將建筑物合理分離,獲得單個(gè)建筑物底圖,根據(jù)建筑物的實(shí)際尺寸進(jìn)行擠出操作,建筑物的主體建模完成之后,對(duì)廠房外觀進(jìn)行制作。制作前可先將外觀分為主體墻面,窗框,窗體等多個(gè)元素,再采用多邊形建模技術(shù)逐個(gè)完成各部分制作。為了使建好的模型從觀感上更加貼近實(shí)際的建筑物,待三維模型建立后,還要進(jìn)行材質(zhì)賦予。
廠房?jī)?nèi)的生產(chǎn)車間及機(jī)械設(shè)備眾多分別進(jìn)行建模。其中,生產(chǎn)車間模型結(jié)構(gòu)如圖4(a)所示。由于制作的為工業(yè)設(shè)備,線路結(jié)構(gòu)都比較復(fù)雜,可對(duì)該部分進(jìn)行適當(dāng)簡(jiǎn)化,完成主體制作。最后對(duì)制作的所有模型進(jìn)行合成匯總,使用3D捕捉工具,將模型三維坐標(biāo)進(jìn)行實(shí)時(shí)記錄,并完成與另一個(gè)模型的邊,面元素對(duì)齊操作,形成最終場(chǎng)景模型,如圖4(b)所示。
圖4 搭建結(jié)構(gòu)圖
3DMax建模完成后模型導(dǎo)入到Unity中,模擬設(shè)備的外形、材質(zhì)、零部件和內(nèi)部構(gòu)造,把設(shè)備的使用方式、原理、性能特征、工作過程等一系列真實(shí)的事物以動(dòng)態(tài)視頻的形式演示出來。使用Animator窗口來制作機(jī)械動(dòng)畫,按照這個(gè)原理依次完成車間動(dòng)畫如圖5所示。
(a)生產(chǎn)車間模型結(jié)構(gòu)圖
圖5 機(jī)械動(dòng)畫制作圖
語音系統(tǒng)通過Unity Audio Source組件用來播放場(chǎng)景中的Audio Clip,它是導(dǎo)入到Unity中的聲音文件。此外,Audio Source還可以設(shè)置一些播放聲音的效果,增強(qiáng)場(chǎng)景中的聲音效果。本文為了增強(qiáng)語音播報(bào)的靈活性,同時(shí)使用了文字轉(zhuǎn)語音的播報(bào)。
在計(jì)算機(jī)動(dòng)畫、計(jì)算機(jī)圖形學(xué)和虛擬現(xiàn)實(shí)等領(lǐng)域,碰撞檢測(cè)問題都有著重要的意義。在虛擬現(xiàn)實(shí)系統(tǒng)中,為了防止漫游過程中穿入建筑物模型、設(shè)備等問題,經(jīng)常采用碰撞檢測(cè)技術(shù)從而保證仿真場(chǎng)景的真實(shí)性以及交互的自然性。碰撞檢測(cè)算法常常分為兩類基于空間的碰撞檢測(cè)算法和基于時(shí)間的碰撞檢測(cè)算[11~14]。
本系統(tǒng)采用的是層次包圍盒技術(shù)和射線檢測(cè)技術(shù),它們屬于基于空間碰撞檢測(cè)算法。另外部分采用了半透明顏色疊加與深度值的碰撞檢測(cè)算法[15~17]。
3.5.1 包圍盒技術(shù)
包圍盒技術(shù)是一種求解離散點(diǎn)集最優(yōu)包圍空間的算法,是基于圖形的碰撞檢測(cè)算法。其基本思想是用特定的體積稍大且特性簡(jiǎn)單的幾何體(稱為包圍盒)來描述復(fù)雜的幾何對(duì)象,故只需要對(duì)相對(duì)較容易做相交判斷的特定體積進(jìn)行相交測(cè)試。在計(jì)算機(jī)圖形學(xué)與計(jì)算幾何領(lǐng)域,一組物體的包圍盒就是將場(chǎng)景中的復(fù)雜集合形體圍住即完全包容起來的一個(gè)封閉空間。用簡(jiǎn)單的包圍盒形狀來近似代替復(fù)雜幾何體,從而用簡(jiǎn)單的包圍盒封裝復(fù)雜集合體,以提高碰撞監(jiān)測(cè)運(yùn)算的效率。在碰撞檢測(cè)中,兩物體是否碰撞,先判斷包圍盒是否相交,不相交說明不發(fā)生碰撞,如果包圍盒相交,就要對(duì)包圍盒所包圍的兩物體做幾何對(duì)象間精確的碰撞檢測(cè)。
包圍盒算法通常有包圍球(Sphere)、軸向包圍盒AABB(Axis-Aligned Bounding Box)、方向包圍盒OBB(Oriented Bounding Box)、固定方向包圍盒k-DOPs(Discrete Orientation Polytope)。AABB包圍盒是一個(gè)邊平行于坐標(biāo)軸的最小六面體且包含該對(duì)象,得到某一對(duì)象的AABB包圍盒需要先確定六個(gè)標(biāo)量,就是需要找出內(nèi)包圍對(duì)象的所有頂點(diǎn)中最大和最小的x、y、z坐標(biāo),兩個(gè)AABB包圍盒的碰撞檢測(cè)就是判斷它們?cè)趚、y、z坐標(biāo)軸上的投影區(qū)間是否有重疊[16~17]。OBB包圍盒的相交測(cè)試?yán)梅州S定理,即選定兩個(gè)OBB包圍盒的分離軸。一般情況下會(huì)確定15條分離軸,當(dāng)有一條分離軸檢測(cè)到投影不重疊即判定兩包圍盒不相交。構(gòu)造k-DOPs包圍盒比構(gòu)造AABB包圍盒和OBB包圍盒困難,但是k-DOPs包圍盒碰撞檢測(cè)的精確度要高于AABB包圍盒和OBB包圍盒。
本文場(chǎng)景中,為給第一視角創(chuàng)建合理的視覺效果,給移動(dòng)行為創(chuàng)造正常的移動(dòng)效果,避免穿模與透視,機(jī)械零部件、地板模塊、窗體模塊等部分可視化模型采用包圍盒技術(shù)。
3.5.2 射線碰撞檢測(cè)算法
射線是在三維世界中從一個(gè)點(diǎn)沿一個(gè)方向發(fā)射的一條無限長(zhǎng)的線,在三維空間中,射線碰撞檢測(cè)算法就是檢測(cè)射線與平面是否有交點(diǎn),如果有求解該交點(diǎn)的問題。在三維空間中,射線的表示相應(yīng)的可寫為如下射線方程:
式(1)中采用兩個(gè)矢量定義,一個(gè)表示其起點(diǎn)β,另一個(gè)表示其方向α,β0是射線上的起點(diǎn),τ∈[ 0 ,∞)。三維空間中平面的定義借助該平面的法量N和該平面上一點(diǎn)β1,可以寫出任意一個(gè)平面方程為
式(2)中N是平面法量,β1是平面上一點(diǎn),從坐標(biāo)系原點(diǎn)到該平面的距離表示為d。如果式(1)中的射線與式(2)中的平面相交,假設(shè)相交點(diǎn)為β',那么,β'就要同時(shí)滿足方程(1)和(2),求解方程組得到:
將式(3)帶入射線方程即可得碰撞點(diǎn)。
在本系統(tǒng)中,射線碰撞檢測(cè)主要應(yīng)用于鼠標(biāo)的點(diǎn)擊操作,由于鼠標(biāo)在點(diǎn)擊播放語音介紹按鈕時(shí),是在三維立體環(huán)境下完成,二維平面的鼠標(biāo)點(diǎn)擊方法無法精確定位到目標(biāo),所以需要在鼠標(biāo)點(diǎn)擊的同時(shí)刻,由鼠標(biāo)原點(diǎn)向鼠標(biāo)指向方向發(fā)射一條射線,當(dāng)射線碰撞到搭載有射線碰撞檢測(cè)算法的模型時(shí),返回真值并進(jìn)行語音播放,如圖6所示。
圖6 射線檢測(cè)
用戶角色控制:用Unity3D自帶的擴(kuò)展資源(FPS游戲第一人稱擴(kuò)展資源)進(jìn)行開發(fā),使用鍵盤WASD進(jìn)行移動(dòng)控制,鼠標(biāo)控制視角旋轉(zhuǎn),空格鍵控制跳躍。同時(shí)將3ds max中制作的最終模型形成FBX模型導(dǎo)出后直接導(dǎo)入U(xiǎn)nity,將模型三維坐標(biāo)初始化,大小尺寸進(jìn)行調(diào)整,在廠房?jī)?nèi)部添加適當(dāng)?shù)狞c(diǎn)束光源,對(duì)3D物體設(shè)置Collider屬性,實(shí)現(xiàn)虛擬物體可碰撞。
開關(guān)門的實(shí)現(xiàn):需要利用到觸碰體Trigger和查找場(chǎng)景中物體,如圖7(a)、(b)所示。在靠近門時(shí)按F實(shí)現(xiàn)開關(guān)門,最終效果如圖7(c)所示。
圖7 開關(guān)門實(shí)現(xiàn)
語音播報(bào)控制:當(dāng)用戶點(diǎn)擊播放按鈕時(shí),可由鼠標(biāo)向目標(biāo)地點(diǎn)發(fā)射一條射線,如果目的地點(diǎn)檢測(cè)到有相應(yīng)的按鈕物體,則加載Audio Source中的音頻文件實(shí)現(xiàn)語音介紹如圖8所示。
圖8 語音控制(綠色框起來的紅色按鈕)
平臺(tái)建立面向全行業(yè)的碳纖維復(fù)合材料生產(chǎn)試制、檢測(cè)、評(píng)價(jià)一體化公共服務(wù)平臺(tái)。實(shí)現(xiàn)國(guó)內(nèi)碳纖維生產(chǎn)企業(yè)、復(fù)合材料制造單位(企業(yè)、高校、科研院所)和復(fù)合材料終端用戶等企業(yè)的對(duì)接,產(chǎn)品的性能滿足下游用戶需求,在軌道交通、汽車、電纜、風(fēng)電葉片、航空航天領(lǐng)域完成碳纖維復(fù)合材料的應(yīng)用及推廣。
本文實(shí)現(xiàn)了三維虛擬漫游與實(shí)際生產(chǎn)加工的合理結(jié)合,針對(duì)我國(guó)當(dāng)前對(duì)碳纖維復(fù)合材料的巨大需求以及經(jīng)驗(yàn)技術(shù)欠缺提供了良好的技術(shù)支持,提出了第一人稱虛擬漫游的研究方法,在一定程度上緩解了部分企業(yè)技術(shù)欠佳的窘境,同時(shí)為行業(yè)生產(chǎn)提供了研究方向,能夠減少企業(yè)資金的不必要浪費(fèi),實(shí)現(xiàn)行業(yè)間的緊密聯(lián)系與相互促進(jìn)。