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