崔海龍
摘要:中國擁有全世界1.9%的汽車,引發(fā)的交通死亡事故卻占了全球的15%,已成為交通事故最多發(fā)的國家。鑒于交通事故的如此頻發(fā),事故的責(zé)任判定成為了熱點(diǎn)問題。該課題以Vega三維仿真軟件作為開發(fā)平臺,通過設(shè)置Lyn圖形界面和API編程,驅(qū)動兩輛小車在設(shè)定的道路上行駛,檢測碰撞并觸發(fā)特效。真實的還原交通事故場景,可為交通肇事的責(zé)任判定提供參考。經(jīng)仿真實驗,該場景系統(tǒng)在可以流暢的運(yùn)行,滿足課題要求。
關(guān)鍵詞:交通;虛擬現(xiàn)實;碰撞;特效
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)30-7182-04
虛擬現(xiàn)實(Virtual Reality ,VR)技術(shù),顧名思義,是通過虛擬的手段,將現(xiàn)實世界的場景或者事件仿真重現(xiàn)。這項技術(shù)能更為直觀的去展示現(xiàn)實生活,這相比于傳統(tǒng)的圖文展示更為直觀、形象。可靠的視覺支持和靈活的算法根基,使得這項技術(shù)可以應(yīng)用的范圍廣泛到生活中的每一處。
國內(nèi)的虛擬現(xiàn)實技術(shù)在飛速的發(fā)展,已經(jīng)到了一個相對成熟的階段。對于交通事故的重現(xiàn)這一課題,技術(shù)層面上已經(jīng)沒有障礙。然而實際生活中卻更多的使用動畫技術(shù),而非真正意義上的虛擬顯示技術(shù)。
本文使用的Vega是美國MultiGen-Paradigm公司開發(fā)的一套非常先進(jìn)的軟件環(huán)境,他主要用于虛擬現(xiàn)實技術(shù)中的實時視景仿真、聲音仿真以及科學(xué)計算可視化等領(lǐng)域。這對于本課題的研究提供了強(qiáng)大的技術(shù)基礎(chǔ)。該文就是利用此軟件進(jìn)行的交通事故的虛擬現(xiàn)實重現(xiàn)。
1 LynX中模型場景設(shè)置
1.1小鎮(zhèn)場景設(shè)置及車輛模型的加入
本文選擇vega安裝目錄下自帶的小鎮(zhèn)場景(town.flt)作為實驗場景。在圖標(biāo)欄中 “Scences”相關(guān)面板 “Select a Class instance”對話框中添加已建立的模型對象“town”。設(shè)定觀察場景,“Tools”下“Scence Viewer”,改用正交投影(Orthographic)來觀察場景,移動鼠標(biāo),確定某一坐標(biāo),定位標(biāo)記。轉(zhuǎn)用透視圖觀察,如圖1所示。運(yùn)動模式的調(diào)整, “Motion Models”面板,在“Motion Model Type”下選擇“drive”模式??刂啤癛ename Instance”,將缺省的運(yùn)動模式實例名“Default”改為“drive”。小鎮(zhèn)場景設(shè)置完畢。
本文需要模擬兩輛車碰撞的場景,故需要新建兩個“car”模型,新建一個名為“car”的模型對象,對應(yīng)的模型文件在Vega安裝文件中名為esprit.flt。同上,加入“car2”模型。由于小車模型數(shù)據(jù)庫中朝著正東方向,為了保證小轎車前進(jìn)方向與運(yùn)動方向保持一致,必須調(diào)整模型對象繞Z軸逆時針旋轉(zhuǎn)90°。在面板區(qū)Objects中加入car和car2兩個角色對象。
1.2角色設(shè)置
模型是靜態(tài)的,角色是可以靈活調(diào)控的,故需創(chuàng)建角色,之前需要給角色分配扇區(qū)。新建一個“car_use”的Isector實例。在Isector面板設(shè)置“Method”選擇“TRIPOD”項,確保觀察者視點(diǎn)始終保持相對地面的距離。Isector面板區(qū)的“Target Isector Class”,將目標(biāo)Isector掩碼設(shè)置為“Terrain All”。Players面板中,創(chuàng)建一個名為“car1”的角色對象實例。角色對象面板區(qū)中Objects列表旁的添加car模型。Isector列表旁添加car_use Isector。同上創(chuàng)建“car2”角色對象實例。
此時可以選擇兩種方案,一種是直接用path工具,設(shè)置路徑,分別綁定兩輛小轎車。經(jīng)實測,這種設(shè)置方法,比較難以確定路徑點(diǎn),而且在路徑點(diǎn)比較多的情況下,容易彈出錯誤。所以這個課題,采用API編程進(jìn)行路徑的設(shè)置,在第三章會有具體介紹。本課題需要設(shè)置兩輛小轎車在某路口相碰撞,故需定位兩輛小車初試位置,以及碰撞位置,圖2為碰撞附近位置展示。
1.3觀察者模式的選擇
觀察者在虛擬現(xiàn)實技術(shù)中,是核心的模塊。這一點(diǎn)在Vega實時視景仿真系統(tǒng)中也是一樣。如果用戶將自己設(shè)身處地于虛擬場景之中,用戶的眼睛就是觀察者,觀察者的位置就是視點(diǎn)位置。通過觀察者,用戶才能把其他描述虛擬場景元素信息、狀態(tài)信息和控制信息等模塊類的實例聯(lián)來,繼而將虛擬場景畫面連續(xù)性的向用戶展現(xiàn)。Vega中的觀察者在場景中有六種定位方式,其中包括手動調(diào)整方式、按指定的運(yùn)動模式定位、栓系模式、按照固定路徑運(yùn)動模式等。本課題采用的是Tether-Follow模型,觀察者固定在角色對象的某個偏移位置上,可以設(shè)想一下拍攝運(yùn)動汽車中的演員時的情景:攝影機(jī)固定在車前或者車旁的固定支架上跟著汽車一起運(yùn)動,鏡頭始終對著車?yán)锏难輪T。觀察者使用這種定位方式就很容易達(dá)到上述的拍攝效果,觀察者(攝相機(jī))距角色位置由X、Y、Z三個坐標(biāo)軸方向上的偏移量決定,觀察者的角度由偏轉(zhuǎn)角(H)、俯仰角(P)和側(cè)偏角(R)控制。
1.4 Vega特殊效果模擬模塊
Special Effects面板創(chuàng)建 “car1_explosion”的特效實例。角色對象面板區(qū)中Type下拉菜單,選擇Explosion。角色對象面板區(qū)中Style下拉菜單,選擇New。繼而設(shè)置Offset,Scale。同上添加“car1_debris”“ car1_flash”、“ car1_fire”、“ car2_explosion”、“ car2_debris”、“ car2_flash”、“ car2_fire”。
點(diǎn)擊Objects面板圖標(biāo)按鈕,選中角色對象面板區(qū)中“Fx Attachment”面板,選中car1,將關(guān)于car1的四個特效加入。同上,將關(guān)于car2的四個特效加入。Scenes面板,選中角色對象面板區(qū)中“Fx Attachment”面板,選中Default,在Special Effects區(qū)域?qū)⑺刑匦考尤?。endprint