向 玲,楊 揚(yáng)
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
隨著我國鐵路的快速發(fā)展,對鐵路信號相關(guān)專業(yè)的人才需求越來越大,目前,國內(nèi)很多高校均開設(shè)了鐵路信號專業(yè)。由于高等院校往往缺乏實(shí)際的信號設(shè)備[1],在教學(xué)過程中通常采用2D 圖紙展示,而2D 圖紙展示的信號設(shè)備不夠立體直觀,且受其結(jié)構(gòu)復(fù)雜、布設(shè)分散、聯(lián)動復(fù)雜等條件限制[2],使得學(xué)生對相關(guān)理論難以深入理解和掌握。3D 技術(shù)的應(yīng)用,為教學(xué)過程中信號設(shè)備的展示提供了新的途徑。
目前,3D 技術(shù)主要應(yīng)用在地圖仿真、駕駛系統(tǒng)仿真、船舶海洋仿真、場景展示、游戲開發(fā)、建筑、航天及外科手術(shù)等領(lǐng)域[3-5],在鐵路信號專業(yè)的應(yīng)用相對較少,本文利用3D MAX 的建模功能和 Unity 3D 的動畫仿真功能,結(jié)合模型與場景,設(shè)計(jì)基于3D 技術(shù)的轉(zhuǎn)轍機(jī)仿真操作平臺。
轉(zhuǎn)轍機(jī)仿真操作平臺架構(gòu),按功能劃分為設(shè)備與環(huán)境模型、用戶體驗(yàn)交互界面、3D 動畫展示、通信,共4 個(gè)模塊,如圖1 所示。
1.1.1 設(shè)備與環(huán)境模型模塊
本模塊是平臺的基礎(chǔ),主要制作操作平臺中所用的模型。轉(zhuǎn)轍機(jī)與環(huán)境的3D 模型決定了場景的真實(shí)度與還原度,該模塊主要遵循還原度和美觀度2個(gè)原則。還原度描述的是轉(zhuǎn)轍機(jī)在3D 制作中要盡可能接近真實(shí)情況,美觀度是在還原度的基礎(chǔ)上給予視覺上的享受[6-8]。
如圖1 所示,模塊分為2 個(gè)部分:3D 轉(zhuǎn)轍機(jī)模型和3D 環(huán)境模型。3D 轉(zhuǎn)轍機(jī)模型可以進(jìn)一步分為轉(zhuǎn)轍機(jī)外部模型和轉(zhuǎn)轍機(jī)內(nèi)部模型;3D 環(huán)境模型主要由山、樹、道岔等多個(gè)模型組合而成。
1.1.2 用戶體驗(yàn)交互界面模塊
圖1 轉(zhuǎn)轍機(jī)仿真操作平臺架構(gòu)
用戶體驗(yàn)交互界面模塊用于還原真實(shí)車站場景,并增添了在場景中用鼠標(biāo)模擬行走、動畫展示轉(zhuǎn)轍機(jī)等功能,進(jìn)一步提高用戶體驗(yàn)滿意度。
如圖1 所示,該模塊由轉(zhuǎn)轍機(jī)展示界面、全局界面和漫游界面組成[9]。
漫游界面用鼠標(biāo)或者鍵盤作為媒介,實(shí)現(xiàn)對整體場景的觀察和控制,類似人在真實(shí)環(huán)境中進(jìn)行巡游,主要包括場景的放大縮小,視覺的四周移動,以及視覺的旋轉(zhuǎn);全局界面可以對場景進(jìn)行俯瞰;轉(zhuǎn)轍機(jī)展示界面可實(shí)現(xiàn)結(jié)構(gòu)觀察、動畫展示,以及3D 顯示。
該模塊有2 個(gè)輸入端:(1)接收用戶輸入交互需求,界面響應(yīng)對應(yīng)需求,展示相關(guān)內(nèi)容;(2)接收轉(zhuǎn)轍機(jī)轉(zhuǎn)向信息,切換展示界面。交互界面是實(shí)現(xiàn)人與軟件實(shí)時(shí)信息交換的重要界面。
1.1.3 3D 動畫展示模塊
3D 動畫展示基于轉(zhuǎn)轍機(jī)的動作原理和現(xiàn)實(shí)情況。根據(jù)轉(zhuǎn)轍機(jī)不同的狀態(tài)信息將轉(zhuǎn)轍機(jī)狀態(tài)分為定位、反位及四開。根據(jù)轉(zhuǎn)轍機(jī)狀態(tài)在界面展示相關(guān)動畫,包含解鎖、轉(zhuǎn)換、鎖閉整個(gè)動作過程。動畫制作時(shí),對不同結(jié)構(gòu)進(jìn)行動畫制作,最后進(jìn)行動畫組合。3D動畫展示模塊以設(shè)備與環(huán)境模型模塊提供的實(shí)體作為動畫制作基礎(chǔ),接收站內(nèi)道岔解析后的信息和轉(zhuǎn)轍機(jī)動畫驅(qū)動信息,向用戶體驗(yàn)與交互界面模塊輸出轉(zhuǎn)轍機(jī)轉(zhuǎn)向信息。
3D 動畫主要依據(jù)轉(zhuǎn)轍機(jī)的動作原理和轉(zhuǎn)動鎖閉邏輯。Unity 3D 中的動畫模塊一般切割成2 個(gè)動畫,形成控制動畫邏輯。
1.1.4 通信模塊
通信模塊主要實(shí)現(xiàn)聯(lián)鎖軟件和上位機(jī)軟件之間的通信。該模塊分為采集端和驅(qū)動端:采集端采集并解析站內(nèi)道岔狀態(tài)信息,驅(qū)動端輸出轉(zhuǎn)轍機(jī)動畫驅(qū)動信息。
通信采用TCP/IP(Transmission Control Protocol/Internet Protocol)協(xié)議,實(shí)現(xiàn)通信的關(guān)鍵點(diǎn)在于對轉(zhuǎn)轍機(jī)狀態(tài)的采集與驅(qū)動。定義Socket 通信函數(shù)來實(shí)例化客戶端的對象,響應(yīng)Socket 通信函數(shù),對采集的數(shù)據(jù)進(jìn)行分析和判斷,收到服務(wù)器的響應(yīng),實(shí)現(xiàn)3D 顯示。
平臺設(shè)計(jì)流程如圖2 所示:(1)建立設(shè)備3D 模型;(2)建立整體3D 環(huán)境和用戶交互界面;(3)完成通信模塊的數(shù)據(jù)采集和動畫驅(qū)動。
圖2 平臺設(shè)計(jì)流程
3D 模型制作的關(guān)鍵在于利用3D MAX 軟件建模。
3D 模型分為基本物體和復(fù)合物體,基本物體采用基本模型結(jié)構(gòu),如球、多面體、線等。復(fù)合物體需要將物體分為不同基本物體,采取布爾等操作實(shí)現(xiàn)。
對于復(fù)雜的模型無法使用基本物體進(jìn)行模型搭建時(shí),需要采用樣條線編輯。每個(gè)不規(guī)則3D 物體都可以看作是由不規(guī)則2D 圖形增加厚度形成,而不規(guī)則2D 圖形可以看作是由不同樣條線組合而成,利用不同樣條線組合,擠出相應(yīng)樣條線,可形成不規(guī)則復(fù)合圖形。除此之外,對齊陣列調(diào)整操作,用于批量處理規(guī)律分布的多個(gè)相同模型[8]。
除了相關(guān)操作上的技術(shù)難度,由于轉(zhuǎn)轍機(jī)模型存在一定的結(jié)構(gòu)特殊性,在模型建立與組合的過程中需要對不同的模型進(jìn)行結(jié)構(gòu)組合,最后進(jìn)行視覺上的渲染工作。
轉(zhuǎn)轍機(jī)建模的技術(shù)路線如圖3 所示。
圖3 轉(zhuǎn)轍機(jī)3D 建模技術(shù)路線
以動靜接點(diǎn)模型建立為例。動靜接點(diǎn)的模型由3 部分組成:(1)幾何體實(shí)現(xiàn)動接點(diǎn)圓柱體;(2)樣條線編輯實(shí)現(xiàn)螺旋線;(3)復(fù)雜幾何體實(shí)現(xiàn)基本框架。第1 動接點(diǎn)結(jié)構(gòu)大小需要與接點(diǎn)缺口的結(jié)構(gòu)大小契合,第2 動接點(diǎn)下方模型需要與表示桿的缺口吻合。整體的高度既要做到貼近現(xiàn)實(shí),又要做到整個(gè)表示部分相對協(xié)調(diào)。
實(shí)現(xiàn)交互界面的關(guān)鍵是攝像機(jī)的設(shè)置、腳本函數(shù)的編寫及鼠標(biāo)鍵盤的控制。
攝像機(jī)的操作是該部分的主要難點(diǎn)和關(guān)鍵點(diǎn),對攝像機(jī)的基礎(chǔ)設(shè)置是界面完成的重要基礎(chǔ)。攝像機(jī)的初始位置控制界面進(jìn)入的初始視角,確定整個(gè)界面不同坐標(biāo)軸方向的靈敏度和移動速度,需要對不同視角進(jìn)行一定的范圍界定。
鼠標(biāo)、鍵盤控制:確定鼠標(biāo)基本位置,確定鼠標(biāo)滾輪的縮放靈敏度。完成鼠標(biāo)和攝像機(jī)操作需要設(shè)定更新函數(shù),更新函數(shù)中,需要對每一幀操作,定義3 個(gè)主要腳本函數(shù),分別是 cameraRotate,camera-Move 和 scaleChange,3 個(gè)函數(shù)分別實(shí)現(xiàn)旋轉(zhuǎn)、移動和場景切換功能,其中,實(shí)現(xiàn)旋轉(zhuǎn)和移動功能的2個(gè)函數(shù)的編寫比較復(fù)雜。
(1)cameraRotate 函數(shù):旋轉(zhuǎn)函數(shù)執(zhí)行流程如圖4 所示。判斷鼠標(biāo)右鍵是否按下,獲取x 軸、y 軸的旋轉(zhuǎn)角度,處理獲得的值并控制在一定范圍內(nèi),最后給x、y 賦值。
(2)cameraMove 函數(shù):移動函數(shù)執(zhí)行流程如圖5 所示。以鼠標(biāo)中右鍵的狀態(tài)作為判斷依據(jù),需要獲取鼠標(biāo)前后位置的更新值,最后移動攝像機(jī)。
圖4 攝像機(jī)旋轉(zhuǎn)函數(shù)執(zhí)行流程
圖5 攝像機(jī)移動函數(shù)執(zhí)行流程
對轉(zhuǎn)轍機(jī)來說,動畫表現(xiàn)轉(zhuǎn)轍機(jī)的整個(gè)動作過程,包括解鎖、轉(zhuǎn)換、鎖閉。在實(shí)現(xiàn)動畫制作時(shí),不同結(jié)構(gòu)需要制作不同動畫,最后進(jìn)行動畫拼接。
動畫制作的關(guān)鍵在于平移動畫制作及旋轉(zhuǎn)動畫制作。關(guān)鍵幀是控制和實(shí)現(xiàn)動畫的重要工具[8-9],關(guān)鍵幀指的是動畫展示的關(guān)鍵時(shí)間點(diǎn),在動畫前后插入關(guān)鍵幀和變化的關(guān)鍵位置點(diǎn),兩個(gè)關(guān)鍵幀之間自動填充相應(yīng)平移或旋轉(zhuǎn)動畫。動畫制作技術(shù)路線如圖6 所示。
在實(shí)驗(yàn)室內(nèi),采用Window 8 作為運(yùn)行環(huán)境,在Visual Studio 2017、3D MAX 和Unity 3D 開發(fā)環(huán)境下,基于面向?qū)ο蟪绦蛟O(shè)計(jì)方法、TCP/IP 通信技術(shù),使用C#、C++語言編程,實(shí)現(xiàn)轉(zhuǎn)轍機(jī)仿真操作平臺。本文從3 個(gè)方面展示平臺仿真結(jié)果。
圖6 轉(zhuǎn)轍機(jī)動畫制作技術(shù)路線
ZYJ7 型轉(zhuǎn)轍機(jī)的整體結(jié)構(gòu)(包含轉(zhuǎn)轍機(jī)外殼、電動機(jī)、動靜接點(diǎn)等),如圖7 所示;外鎖閉裝置(包含鎖閉桿),如圖8 所示。ZD6 型轉(zhuǎn)轍機(jī)的整體結(jié)構(gòu)(包含轉(zhuǎn)轍機(jī)外殼及內(nèi)部基本結(jié)構(gòu)),如圖9所示。
圖7 ZYJ7 型轉(zhuǎn)轍機(jī)主機(jī)3D 模型
圖8 ZYJ7 型外鎖閉裝置模型
圖9 ZD6 型轉(zhuǎn)轍機(jī)主機(jī)3D 模型
主要展示各子界面,包含俯瞰整個(gè)場景的地形輪廓圖、轉(zhuǎn)轍機(jī)結(jié)構(gòu)圖、轉(zhuǎn)轍機(jī)視角圖,以及可以實(shí)現(xiàn)場景漫游的場景仿真圖。地形場景輪廓圖展現(xiàn)了整個(gè)場景的大致形態(tài),場景中包含的山體、軌道、地面等,如圖10 所示。轉(zhuǎn)轍機(jī)視角圖展示了ZYJ7型轉(zhuǎn)轍機(jī)主機(jī)3D 模型靜態(tài)基本結(jié)構(gòu),如圖11 所示。全局界面場景圖展示了當(dāng)用鼠標(biāo)、鍵盤在場景中操作時(shí)用戶看到的界面,如圖12 所示。
圖10 地形場景輪廓
圖11 ZYJ7 型轉(zhuǎn)轍機(jī)主機(jī)3D 模型靜態(tài)基本結(jié)構(gòu)
圖12 全局界面場景
初始狀態(tài)下,2D 站場圖中的道岔處在定位狀態(tài),觀察3D 場景中轉(zhuǎn)轍機(jī)從定位到反位的動作過程,最后保持在反位狀態(tài)。轉(zhuǎn)轍機(jī)處于定位狀態(tài),如圖13所示;轉(zhuǎn)轍機(jī)經(jīng)轉(zhuǎn)換,狀態(tài)變至反位,紅色圓圈部分位置發(fā)生了改變,如圖14 所示。
圖13 轉(zhuǎn)轍機(jī)定位場景
圖14 轉(zhuǎn)轍機(jī)反位場景
本文設(shè)計(jì)并實(shí)現(xiàn)了轉(zhuǎn)轍機(jī)操作平臺中對轉(zhuǎn)轍機(jī)內(nèi)部結(jié)構(gòu)仿真、場景漫游等多個(gè)功能,達(dá)到預(yù)期設(shè)計(jì)目的,滿足教學(xué)實(shí)踐需求。目前,該平臺已在西南交通大學(xué)實(shí)驗(yàn)室投入使用,獲得較好效果。此外,平臺預(yù)留了設(shè)備接口,后期可以添加更多信號設(shè)備,也可以根據(jù)CAD 圖紙自動生成站場,將工程設(shè)計(jì)與3D 場景結(jié)合,實(shí)現(xiàn)具有設(shè)計(jì)、預(yù)覽、故障檢修及培訓(xùn)功能的一體化平臺。