張紹東、謝慧
(中車唐山機車車輛有限公司,河北唐山 064000)
鐵路作為國民經濟的大動脈、國家重要基礎設施和大眾化交通工具,在我國經濟社會發展中具有重要作用。目前在高速動車組培訓和列車應用雖然有培訓,但是一般都是文件或者圖片等二維信息媒介傳遞信息,不夠直觀,培訓效率低下;乘客在乘坐高速動車組過程中由于缺少對列車的了解,也會有很多設計師精心設計的功能不能及時發現和正確使用,無法發揮列車資源利用的最大化,降低了乘客體驗感。虛擬現實技術作為一種近些年來新興技術,以其良好的沉浸感、可交互、直觀形象等特點被應用到越來越多的領域,如工業、商業、軍事、醫療和教育等,進行科研技術研究、功能示教、場景漫游和展示等,取得良好的效果。為了讓高速動車組有關培訓更加直觀形象,基于虛擬現實軟件開發虛擬示教程序。
高速動車上人機交互內容豐富,從區域上可分為司機室內和客室內人機交互內容,在司機室內,有司機室逃生、制動等;客室內有供旅客使用的小桌板、閱讀燈、茶爐、行李架等。從角色來分,可分為司機、乘務員和乘客三種角色,司機在司機室的啟動、制動流程和逃生等內容培訓;乘務員對座椅調整、飯車等內容的操作;旅客有小桌板、閱讀燈、行李架等內容的培訓。此外,還可以從列車狀態來分,分成靜止狀態和運行狀態等,系統要滿足這些不同分類下不同角色的不同內容的培訓事宜,并提供三維沉浸式可視化的示教功能。
系統框架的層級關系,根據需求設計角色庫,場景庫和若干教學視頻,作為可選數據源,通過輸入設備與系統的交互,展示相應的示教內容,具體的層級關系如圖1所示。

圖1 程序架構圖
為了表現在列車運行過程中各種人機交互功能,包括在正常場景下和應急場景下的人機交互功能示教。正常場景的示教可以令司乘人員和乘客了解列車上各功能的使用方法和技巧,應急場景下的示教為司乘人員和乘客提供在緊急情況下的生命保障提供信息。為了更加形象地表達不同角色在不同區域的操作和處理方式,設置三種不同的角色,即司機,乘務人員和乘客。
虛擬現實中表現人物動作有兩種方式,一種是錄制人物完整的動作視頻,中間不存在人機交互,后期程序通過接口進行視頻調用。這種方式比較適合全虛擬環境,即虛擬的人虛擬的場景,中間不需要實時交互的場景。第二種是需要進行實時交互才可以完成的動作,這種動作需要結合動捕和半實物共同完成,適合實時仿真場景。在此系統中應用第一種方式。
骨骼動畫是將人物模型綁定設定好的骨骼上,在骨骼上進行運動姿態、路徑等信息,骨架是由一定數目的骨骼組成的層次結構,每一個骨骼的排列和鏈接關系對整個骨架的運動有很重要的影響。骨架上賦予“蒙皮”模型,它提供動畫繪制所需要的幾何模型信息和紋理材質信息。每個頂點都有相應的一組權值,這些權值定義了骨骼的運動對有關頂點的影響因子。當把動畫人物的姿勢和全局運動信息作用到骨架上時,這個“蒙皮”模型就會跟隨骨架一起運動。系統中動畫視頻的錄制就是基于骨骼動畫原理。錄制角色動畫的流程分為人物模型的建立、骨骼綁定人物模型、設置骨骼的姿態、運動路徑等、輸出人物動畫。動畫視頻制作過程如圖2所示,人物動作制作如圖3所示。

圖2 動畫視頻制作過程

圖3 人物動作制作
系統中應用模型建模軟件進行任務模型的制作并導出FBX中間格式提供給動畫軟件使用,應用專業動畫編輯軟件完成人物模型的動作規劃、調整和輸出。根據應用需求,有三種人物角色,即司機、乘務員和乘客,并且區分男女。因此制作男女兩種模型和三種不同角色的蒙皮。在人物動畫編輯軟件中導入模型建模軟件輸出的人物模型后設定人物的基本動態,包括翻、舉、滑動等動作,結合三維虛擬場景設定人物運動路徑、設定蒙皮等信息,調整動畫干涉細節,最后輸出人物動畫,供后續程序使用。最后在虛擬現實程序開發軟件中設定相機、人物動畫和場景,輸出相應的視頻。
系統所使用的主程序開發軟件中提供了許多BB(Building Block)模塊,在編制程序時可之際調用,但是其與其他軟件和設備的通信接口模塊不是很完善,需要做單獨的開發。開發能夠被軟件應用的模型程序可以有兩種方式:一種是使用軟件自帶的VSL模塊編寫代碼實現程序功能,可重用率比較低;另一種是可以在VC++中進行程序開發,封裝成BB模塊,最后由軟件進行調用,實現通信功能??紤]到通信接口的復用性,采用第二種方式進行通信功能模塊的開發,封裝成BB模塊,在使用過程中利用軟件自身的通信模塊直接使用該模塊即可。
為了提高系統的適用性,客戶應用終端在便攜式設備上進行開發,便于培訓方與被培訓方的交流。便攜式設備與主程序之間通信采用tcp/ip協議建立連接,通過讀取套接字進行連接。在完成便攜式設備與主程序軟件之間的通信接口開發后,需要定義程序中不同動畫內容調用協議。在此采用數字組合的方式進行信息交互,一個信息組合里面包含兩個數字,如(7,1)組合,第一個數字7表示與vip座椅相關的操作,第二個數字1則表示具體的操作,如vip座椅躺的功能,以此類推,定義與司機室相關的、二等座椅相關的、衛生間相關的等不同的數字序列,通過不同的數字組合切換動畫視頻。
根據業務需求,開發更加自由便捷的終端操作設備,在便攜式設備終端的界面邏輯功能模塊結構。
基于主程序設計軟件開發適合業務需求的交互系統。虛擬現實制作軟件主要是通過調用各BB模塊進行程序的設計和開發,其中可以調用自帶的功能模塊,也可以將自己在VC等環境中開發的功能模塊封裝成BB模塊進行調用,系統中所用到的通信接口就是自行開發的功能模塊并進行封裝。
系統主程序的實現包含程序初始化、場景初始化、模型狀態初始化、路徑初始化,程序初始化完成后處于等待狀態,等待接收外設即鍵盤或者便攜式設備發出的信息。程序利用Array建立不同的視頻路徑和內容,當接收到鍵盤或者便攜式設備發送的不同信號時切換不同的動畫視頻和場景進行內容展示。程序部分示教內容展示界面如圖4所示。

圖4 程序運行界面
系統實現了三種不同角色不同場景的不同應用的示教功能,為司乘人員和旅客提供了直觀形象的教學;實現了便攜式設備與計算機之間的程序交互,交流起來更加便捷,滿足業務需求。系統中也有需要改進的地方,如人物模型的運動主要是靠骨骼運動來呈現,有很多地方不太精確,會有模型穿插的地方,需要對實現方式進行深入的探索,實現更加精細的動作。