萬(wàn) 平,彭俊江,肖 乾,周 鵬
(1. 中車株洲電力機(jī)車有限公司大功率交流傳動(dòng)電力機(jī)車系統(tǒng)集成國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖南 株洲412001;2. 株洲國(guó)創(chuàng)軌道科技有限公司,湖南 株洲412001;3. 華東交通大學(xué)載運(yùn)工具與裝備教育部重點(diǎn)實(shí)驗(yàn)室,江西 南昌330013)
軌道車輛設(shè)計(jì)為滿足差異化要求,設(shè)計(jì)時(shí)根據(jù)功能定義,設(shè)計(jì)特定的機(jī)械結(jié)構(gòu)布局、內(nèi)外布局、裝飾風(fēng)格等,并對(duì)設(shè)計(jì)部件進(jìn)行有限元分析,驗(yàn)證部件的合規(guī)性。 過(guò)往的軌道車輛設(shè)計(jì)周期長(zhǎng),設(shè)計(jì)分散,設(shè)計(jì)效果無(wú)法實(shí)時(shí)動(dòng)態(tài)顯示,需要在軌道車輛完成整裝后方可系統(tǒng)性瀏覽軌道車輛的設(shè)計(jì)效果,再根據(jù)其中不合理環(huán)節(jié)進(jìn)行改進(jìn)。 重復(fù)改進(jìn)的過(guò)程中既浪費(fèi)了時(shí)間,延長(zhǎng)了設(shè)計(jì)周長(zhǎng),同時(shí)需要耗費(fèi)更多的財(cái)力和物力,且在可視化、交互、展示效果等方面存在一定的不足。 有鑒于此,利用最新的信息技術(shù),開發(fā)基于Unity3D 的軌道車輛虛擬設(shè)計(jì)系統(tǒng),彌補(bǔ)其在數(shù)字可視化、交互、展示效果等方面存在一定的不足。
查閱文獻(xiàn)可知,已有部分專家學(xué)者深入研究虛擬現(xiàn)實(shí)技術(shù)在軌道車輛應(yīng)用的可行性,并取得了一定的成果。 楊崗等[1]應(yīng)用SolidWorks 編輯CRH1 型轉(zhuǎn)向架三維模型, 應(yīng)用3D Max 渲染模型, 在Virtools 中編輯腳本實(shí)現(xiàn)了CRH1 轉(zhuǎn)向架的虛擬裝配系統(tǒng)。 崔林格[2]應(yīng)用CAD 構(gòu)建軌道車輛模型,通過(guò)VC++2005,OSG 與QT 結(jié)合, 應(yīng)用模塊化思想設(shè)計(jì)了動(dòng)車組虛擬裝配系統(tǒng)。 徐娟[3]應(yīng)用Pro/e,UG,Mu Lti Gen Creator 完成虛擬現(xiàn)實(shí)建模,以VisualC++6.0為開發(fā)平臺(tái)設(shè)計(jì)開發(fā)了鐵道車輛虛擬運(yùn)行仿真系統(tǒng)。 江渡等[4]在VRML/JAVA 環(huán)境下利用Delphi 開發(fā)GUI 界面,實(shí)現(xiàn)了動(dòng)車組虛擬檢修的動(dòng)態(tài)仿真系統(tǒng)。 萬(wàn)隆君等[5]基于Unity3D 虛擬引擎,設(shè)計(jì)開發(fā)了HTML 版本的船舶管路裝配虛擬仿真系統(tǒng)。 金燕等[6]以CRH380BL 型車轉(zhuǎn)向架為研究對(duì)象, 基于Cult3D平臺(tái), 結(jié)合Pro/e,Authorware 完成了CRH380BL 轉(zhuǎn)向架虛擬檢修仿真系統(tǒng)的開發(fā)。 肖乾[7]通過(guò)使用NGUI,DoTween 動(dòng)畫、C# 等實(shí)現(xiàn)模擬單車試驗(yàn)器和制動(dòng)試驗(yàn)仿真為核心的虛實(shí)結(jié)合的單車制動(dòng)實(shí)驗(yàn)培訓(xùn)系統(tǒng)。 總結(jié)發(fā)現(xiàn)目前研究主要考慮應(yīng)用虛擬現(xiàn)實(shí)技術(shù)實(shí)現(xiàn)軌道車輛的虛擬裝配、虛擬檢修,對(duì)虛擬設(shè)計(jì)方面應(yīng)用少。
本文提出虛擬現(xiàn)實(shí)技術(shù)在軌道交通車輛設(shè)計(jì)中的應(yīng)用研究, 基于Unity3D 虛擬引擎平臺(tái)的沉浸性、交互性、想象性特點(diǎn),并結(jié)合ANSYS,UM 等有限元、動(dòng)力學(xué)等分析軟件,完成對(duì)軌道車輛的總體設(shè)計(jì)、關(guān)鍵部件的設(shè)計(jì)、虛擬裝配和軌道車輛系統(tǒng)性能分析, 減少軌道車輛在設(shè)計(jì)過(guò)程中耗費(fèi)的財(cái)力、物力、縮短設(shè)計(jì)周期,構(gòu)建數(shù)據(jù)可視化程度高、交互性強(qiáng)、沉浸感強(qiáng)的軌道車輛虛擬現(xiàn)實(shí)設(shè)計(jì)平臺(tái)。
1) 表現(xiàn)層。系統(tǒng)表現(xiàn)層是呈現(xiàn)給用戶體驗(yàn)和操作的窗口, 軌道車輛虛擬設(shè)計(jì)系統(tǒng)是基于PC 端開發(fā), 系統(tǒng)基于PC 端硬件設(shè)備可實(shí)現(xiàn)與系統(tǒng)的人機(jī)交互、系統(tǒng)的設(shè)計(jì)效果展示、設(shè)計(jì)參數(shù)的傳輸以及軌道車輛的在虛擬運(yùn)行環(huán)境的動(dòng)態(tài)模擬。
2) 應(yīng)用層。 系統(tǒng)應(yīng)用層是設(shè)計(jì)展示的載體,關(guān)于軌道車輛的虛擬設(shè)計(jì)功能全部在應(yīng)用層完成,應(yīng)用層包括車輛總體設(shè)計(jì)模塊、車輛關(guān)鍵部件設(shè)計(jì)模塊、車輛虛擬裝配設(shè)計(jì)模塊、車輛虛擬運(yùn)行環(huán)境設(shè)計(jì)模塊。 其中車輛總體設(shè)計(jì)模塊中包括司乘界面和乘客界面2 個(gè)子模塊,司乘界面的設(shè)計(jì)對(duì)象是電力機(jī)車和城軌車輛的司機(jī)室,乘客界面的設(shè)計(jì)對(duì)象是城軌車輛和動(dòng)車組的車廂。 車輛關(guān)鍵部件的選型設(shè)計(jì)對(duì)象有車輪、構(gòu)架、齒輪、車廂地板等。 車輛虛擬裝配模塊中虛擬裝配對(duì)象包括轉(zhuǎn)向架、 受電弓、車鉤、機(jī)車裝配。 車輛虛擬運(yùn)行環(huán)境設(shè)計(jì)模塊中包括駕駛設(shè)置、視角設(shè)置、運(yùn)行環(huán)境、數(shù)據(jù)顯示3 個(gè)功能子模塊。
3) 基礎(chǔ)層。基礎(chǔ)層是支撐系統(tǒng)開發(fā)和運(yùn)行的基礎(chǔ)。 基礎(chǔ)層包括基礎(chǔ)支撐環(huán)境和數(shù)據(jù)庫(kù)2 個(gè)部分,基礎(chǔ)支撐環(huán)境有PC 端,Unity3D,Maya,Ansys,數(shù)據(jù)庫(kù)包括內(nèi)容數(shù)據(jù)庫(kù)和場(chǎng)景數(shù)據(jù)庫(kù)兩部分。 Unity3D平臺(tái)完成場(chǎng)景搭建、關(guān)聯(lián)驅(qū)動(dòng)、模型場(chǎng)景渲染;Maya完成所有功能模型、場(chǎng)景模型的搭建;Ansys 完成關(guān)鍵部件的強(qiáng)度計(jì)算和疲勞計(jì)算。 內(nèi)容數(shù)據(jù)庫(kù)保存設(shè)計(jì)信息和用戶信息, 場(chǎng)景數(shù)據(jù)庫(kù)管理設(shè)計(jì)信息、指導(dǎo)信息和模型信息。 系統(tǒng)架構(gòu)如圖1 所示。
軌道車輛虛擬設(shè)計(jì)系統(tǒng)中包括大量模型,如車輛模型、場(chǎng)景模型、輔助模型等,不同模型的功能要求、精度要求存在差異,建模過(guò)程中根據(jù)不同需求及功能定義,對(duì)模型進(jìn)行分級(jí)處理,不同級(jí)別的模型選用不同的3D 建模軟件。 模型機(jī)械結(jié)構(gòu)精度要求高,用于系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和虛擬拆裝模塊的模型選用Pro/e 完成;對(duì)僅存在外觀要求,內(nèi)部結(jié)構(gòu)不參與功能展示的場(chǎng)景模型、輔助模型,建模時(shí)選用Maya完成。 為實(shí)現(xiàn)模型對(duì)實(shí)物的真實(shí)還原,建模完成后對(duì)模型進(jìn)行貼圖紋理處理,進(jìn)行模型UV 處理時(shí),為保證模型的虛擬真實(shí)度, 減少貼圖接口區(qū)域誤差,制作UV 貼圖時(shí)選擇貼圖的純色區(qū)域做無(wú)縫處理。貼圖時(shí)為突顯模型物理效果, 考慮Bump Map 和Normal Map 兩種貼圖,Bump Map 包含凹凸信息,通過(guò)改變高度值實(shí)現(xiàn)模型表面的凹凸感,Noramal Map 通過(guò)RGB 烘焙曲線實(shí)現(xiàn)貼圖的顏色調(diào)整。 建模完成后通過(guò)Maya 轉(zhuǎn)化為FBX 格式即可導(dǎo)入到Unity 虛擬場(chǎng)景中,實(shí)現(xiàn)系統(tǒng)功能的開發(fā)。 系統(tǒng)部分模型見(jiàn)圖2。
圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram
圖2 系統(tǒng)模型圖Fig.2 System model diagram
2.2.1 車輛總體方案設(shè)計(jì)實(shí)現(xiàn)
為實(shí)現(xiàn)對(duì)軌道車輛內(nèi)飾、 座椅等風(fēng)格設(shè)計(jì),需要通過(guò)Shader 更改模型貼圖。 Shader 是Unity3D 引擎平臺(tái)中的著色器,Shader 專門運(yùn)行在CPU 圖形處理單元上,Shader 主要有3 種:固定管線著色器、表面著色器、頂點(diǎn)片元著色器。 固定管線著色器在運(yùn)行時(shí)占用的渲染資源極大,一般情況不會(huì)不選擇固定管線著色器, 頂點(diǎn)片元著色器是干預(yù)模型形狀,表面著色器干預(yù)模型表面像素點(diǎn),見(jiàn)圖3。
動(dòng)車組和城軌車輛乘客界面設(shè)計(jì)時(shí), 為實(shí)現(xiàn)動(dòng)態(tài)更換車輛內(nèi)壁和座椅貼圖, 需要設(shè)置Sherder屬性中的_MetallicGlossMap,_MainTex,_BumpMap 3 個(gè)貼圖屬性, 獲取貼圖屬性后通過(guò)c# 腳本程序驅(qū)動(dòng)動(dòng)態(tài)更換貼圖,動(dòng)態(tài)貼圖更換實(shí)現(xiàn)腳本如下:
ChetiMaterial.SetTexture ("_MetallicGlossMap",XKYSM);//XKYSM 為需要更改主貼圖圖片名稱
ChetiMaterial.SetTexture ("_MainTex",?XKYSA);//XKYSA為需要更改的紋理貼圖圖片名稱
ChetiMaterial.SetTexture("_BumpMap",XKYSN); //XKYSN為需要更改的法線貼圖圖片名稱
圖3 總體設(shè)計(jì)圖Fig.3 Overall design drawing
乘界面與乘客界面設(shè)計(jì)中為實(shí)現(xiàn)按鈕顏色和貼圖顏色的靈活搭配,多樣化的設(shè)計(jì)效果,在場(chǎng)景功能中編輯顏色控制器,實(shí)現(xiàn)司機(jī)室操縱按鈕和貼圖顏色的實(shí)時(shí)選擇。 Unity3D 中顏色編輯器界面使用UGUI 開發(fā),界面顯示面板和功能按鈕全部使用UGUI 中的Image 設(shè)置,顏色編輯器分為3 個(gè)模塊:七色漸變圖、RGB 數(shù)值顯示、最終選色。 RGB 數(shù)值顯示可以實(shí)現(xiàn)顏色的快速定位, 選擇理想顏色,最終選色是展示用戶在選色時(shí)最終選取的顏色。 顏色編輯器功能的實(shí)現(xiàn)主要是在ShaderForge 中創(chuàng)建2D Shader, 控制Shader 中UV 的U 點(diǎn)和V 點(diǎn)區(qū)域節(jié)點(diǎn)圖, 實(shí)現(xiàn)選色面板, 通過(guò)C# 腳本將選取色的Value 值通過(guò)設(shè)置的比例關(guān)系轉(zhuǎn)換成RGB 值。
2.2.2 關(guān)鍵部件結(jié)構(gòu)設(shè)計(jì)實(shí)現(xiàn)
用戶在了解軌道車輛關(guān)鍵部件的材料、裝配事項(xiàng)、設(shè)計(jì)準(zhǔn)則等基礎(chǔ)屬性后,需要對(duì)關(guān)鍵部件進(jìn)行仿真分析,通過(guò)仿真數(shù)值結(jié)構(gòu)驗(yàn)證關(guān)鍵部件結(jié)構(gòu)是否符合強(qiáng)度性能、力學(xué)性能等要求,本文中選擇的有限元分析軟件為Ansys。在關(guān)鍵部件結(jié)構(gòu)設(shè)計(jì)模塊中設(shè)計(jì)Ansys 激活軟件UI 按鈕,通過(guò)程序驅(qū)動(dòng)計(jì)算機(jī)后臺(tái)程序啟動(dòng)Ansys, 并自動(dòng)導(dǎo)入需要計(jì)算的相關(guān)模型, 實(shí)現(xiàn)軌道車輛虛擬設(shè)計(jì)系統(tǒng)與Ansys 軟件的動(dòng)態(tài)鏈接。實(shí)現(xiàn)動(dòng)態(tài)鏈接Ansys 的主要代碼如下:
Process.S"C:Program FilesAnsysIncv150Ansysinwinx 64AnsysX.exe"-Pane3fl-dir"C:UsersAdministrator"-j"file"-sread -len -us -b -i"C:UsersAdministratorfile.dat" -o "C:UsersAdministratorfile.out"
通過(guò)UI 按鈕實(shí)現(xiàn)Ansys 軟件激活和模型傳導(dǎo)后,用戶可根據(jù)關(guān)鍵部件的使用范圍選擇不同的計(jì)算標(biāo)準(zhǔn),在Ansys 中設(shè)置關(guān)鍵部件的仿真計(jì)算參數(shù),完成對(duì)關(guān)鍵部件的仿真分析。Unity 與Ansys 聯(lián)動(dòng)見(jiàn)圖4。
圖4 Unity3D 與Ansys 聯(lián)動(dòng)圖Fig.4 Unity3D and Ansys linkage diagram
2.2.3 虛擬裝配設(shè)計(jì)實(shí)現(xiàn)
軌道車輛虛擬裝配需要考慮部件的裝配順序、裝配路徑、部件定位等。 部件裝配順序按照軌道車輛關(guān)鍵裝配工藝文件設(shè)置,編輯部件裝配順序數(shù)據(jù)庫(kù),序列化激活UI 控制按鈕,用戶點(diǎn)擊正確安裝順序下的部件UI 按鈕后激活下一步安裝部件控制程序,并通過(guò)實(shí)例化技術(shù)生成相匹配的模型文件。 虛擬裝配中裝配路徑一般由系統(tǒng)腳本編輯的路徑規(guī)劃自動(dòng)生成。 軌道車輛虛擬裝配設(shè)計(jì)系統(tǒng)中不考慮使用推理機(jī)生成關(guān)鍵部件虛擬裝配路徑,考慮系統(tǒng)的交互性、用戶參與度,模型部件虛擬裝配移動(dòng)路徑由用戶通過(guò)鼠標(biāo)控制,實(shí)現(xiàn)模型隨鼠標(biāo)運(yùn)動(dòng)的控制代碼主要代碼如下:
模型部件完成路徑生成并移動(dòng)到安裝位置時(shí),需要對(duì)模型安裝位置定位,完成最終的裝配。 用戶點(diǎn)擊安裝部件UI 控制按鈕后,模型安裝位置會(huì)在部件中高光虛化顯示,提示用戶初步的安裝范圍,用戶移動(dòng)模型部件進(jìn)入到安裝位置后,實(shí)體模型與虛化模型設(shè)置的碰撞器會(huì)進(jìn)行碰撞的觸發(fā)檢測(cè),檢測(cè)碰撞體標(biāo)簽是否一致。 Unity3D 中觸發(fā)器模式是將Collider 中的Is Trigger 勾選,實(shí)體運(yùn)動(dòng)的模型添加Rigidbody 組件,通過(guò)OnTriggerEnter 和OnTrigger Exit 檢測(cè)進(jìn)入到觸發(fā)器區(qū)域和離開觸發(fā)器區(qū)域調(diào)用。
檢測(cè)正確后激活實(shí)體模型中的DoTween 插件,并將虛化模型的比例、位置、旋轉(zhuǎn)等數(shù)據(jù)信息傳輸?shù)紻oTween 插件中,DoTween 插件通過(guò)內(nèi)部算法控制實(shí)體模型動(dòng)態(tài)完成部件裝配,見(jiàn)圖5。
圖5 關(guān)鍵部件虛擬裝配Fig.5 Virtual assembly of key components
2.2.4 虛擬運(yùn)行環(huán)境設(shè)計(jì)實(shí)現(xiàn)
軌道車輛行駛工況多樣,涉及因素眾多,軌道車輛虛擬設(shè)計(jì)系統(tǒng)中為實(shí)現(xiàn)最大程度對(duì)行駛工況環(huán)境因素的模擬, 在虛擬運(yùn)行環(huán)境中模擬雨雪天氣、側(cè)風(fēng)等天氣特效。
模擬下雪特效時(shí), 通過(guò)GameObject->ParticleSystem 在系統(tǒng)中添加粒子,基本屬性設(shè)置根據(jù)可根據(jù)常規(guī)認(rèn)識(shí)設(shè)置。 為提高模擬的真實(shí)度,對(duì)粒子系統(tǒng)做貼圖處理,挑選符合雪天氣效果的圓形圖片設(shè)置為貼圖,設(shè)置圖片為PNG 格式,將粒子系統(tǒng)Shader 設(shè)置成Transparent。 考慮雪是向下且受風(fēng)力影響會(huì)產(chǎn)生繞y 旋轉(zhuǎn),x 軸與z 軸方向的速度,設(shè)置粒子生命周期的y 軸速度,粒子旋轉(zhuǎn)為0,45,0,繞世界坐標(biāo)系下的y 軸旋轉(zhuǎn),在Force Lifetime 屬性欄中設(shè)置x,z 軸方向的受力大小,產(chǎn)生雪粒子的偏移效果。 不同雪的粒子下落速度、雪的粒子大小等存在差異, 需將粒子運(yùn)行速度、粒子起始大小等設(shè)置成區(qū)間范圍內(nèi)的隨機(jī)數(shù)。 軌道車輛虛擬運(yùn)行場(chǎng)景地形大, 為實(shí)現(xiàn)全場(chǎng)景的模擬效果覆蓋,將粒子發(fā)射器Shape 覆蓋全地圖,并設(shè)置UI 控制條,實(shí)現(xiàn)降雪強(qiáng)度的改變。 降雪天氣特效模擬基本屬性設(shè)置完成后根據(jù)運(yùn)行效果微調(diào)參數(shù), 實(shí)現(xiàn)最大程度對(duì)實(shí)際降雪效果的模擬。 虛擬運(yùn)行工況中降雨、 側(cè)風(fēng)、 雨夾雪等特效更換合適貼圖后依照相應(yīng)步驟即可完成,見(jiàn)圖6。
圖6 虛擬運(yùn)行環(huán)境效果圖Fig.6 Effect diagram of virtual operating environment
系統(tǒng)進(jìn)行必要的運(yùn)行測(cè)試是考核產(chǎn)品優(yōu)劣性最直接、最有效的手段[8],軌道車輛虛擬設(shè)計(jì)系統(tǒng)由開發(fā)人員完成后點(diǎn)擊Unity3D 編輯窗口“File”的子菜單“Bulid Settings”,根據(jù)場(chǎng)景操作邏輯和交互流程設(shè)計(jì)場(chǎng)景序號(hào)加載系統(tǒng)場(chǎng)景,點(diǎn)擊“Platform”并在發(fā)布平臺(tái)中設(shè)置系統(tǒng)參數(shù),完成系統(tǒng)測(cè)試版本的發(fā)布。 系統(tǒng)發(fā)布后隨機(jī)選擇PC 端從運(yùn)行效果、功能需求、功能邏輯3 個(gè)方面進(jìn)行測(cè)試,對(duì)測(cè)試結(jié)果統(tǒng)計(jì)規(guī)整作為系統(tǒng)優(yōu)化依據(jù),系統(tǒng)優(yōu)化從以下幾個(gè)方面進(jìn)行:①模型優(yōu)化:模型優(yōu)化主要考慮Mesh 合并、控制多邊形數(shù)量;②內(nèi)存優(yōu)化:內(nèi)存優(yōu)化考慮Assert 優(yōu)化、引擎Native 優(yōu)化、臨時(shí)調(diào)用資源優(yōu)化;優(yōu)化完成后確定系統(tǒng)最終版本的發(fā)布,生成最終的軌道車輛虛擬設(shè)計(jì)系統(tǒng)。
針對(duì)軌道車輛設(shè)計(jì)過(guò)程中存在的問(wèn)題, 依托Unity3D 引擎平臺(tái),從需求分析,模型建立、接口設(shè)計(jì)、虛擬場(chǎng)景搭建到功能實(shí)現(xiàn),設(shè)計(jì)并開發(fā)了軌道車輛虛擬設(shè)計(jì)系統(tǒng)。
1) 通過(guò)Pro/e,Maya 等3D 建模軟件完成了軌道車輛模型、場(chǎng)景模型、虛擬3D 地形等模型的建模工作,為提高模擬真實(shí)度,繪制了模型紋理貼圖。
2) 應(yīng)用基于爬山法的AABB 包圍盒算法解決了虛擬設(shè)計(jì)系統(tǒng)中人機(jī)交互的碰撞檢測(cè)問(wèn)題,通過(guò)接口設(shè)計(jì)實(shí)現(xiàn)Unity3D 與ANSYS 的動(dòng)態(tài)鏈接。
3) 根據(jù)系統(tǒng)需求分析, 應(yīng)用Particle system 實(shí)現(xiàn)了對(duì)軌道車輛運(yùn)行環(huán)境中風(fēng)雪等特效的模擬、應(yīng)用DoTween 實(shí)現(xiàn)了關(guān)鍵部件的虛擬裝配路徑規(guī)劃,通過(guò)c# 編程實(shí)現(xiàn)了功能完備, 可擴(kuò)展性和可維護(hù)性強(qiáng)的軌道車輛虛擬設(shè)計(jì)系統(tǒng)。