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

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

圖2 動畫視頻制作過程

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

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