王梅亮++顧鍵萍
摘要:近年來,隨著我國汽車擁有量的快速增加,行人在道路上發(fā)生的交通事故也更加頻繁,因此對(duì)行人尤其是廣大少年兒童進(jìn)行有效的交通安全教育和交通技能訓(xùn)練,減少交通事故的發(fā)生,具有十分重要的意義。利用Unity 3D等虛擬現(xiàn)實(shí)技術(shù),通過對(duì)構(gòu)建逼真的動(dòng)態(tài)三維虛擬交通場(chǎng)景以及實(shí)現(xiàn)人機(jī)交互等關(guān)鍵技術(shù)研究和實(shí)現(xiàn),開發(fā)出交通安全教育和技能訓(xùn)練系統(tǒng),讓訓(xùn)練者可以身臨其境搬接受交通安全知識(shí)的教育,并通過游戲的模式訓(xùn)練橫穿道路的技能,從而減少行人交通事故的發(fā)生。
關(guān)鍵詞:交通安全教育;Unity 3D;虛擬現(xiàn)實(shí);訓(xùn)練系統(tǒng);關(guān)鍵技術(shù)研究
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)29-0075-03
The Research and Implementation of the Key Technology of the Traffic Safety Education and Skills Training System Based on the Unity 3D
GU Jain-ping, WANG Mei-liang
(Lishui University, Lishui 323000, China)
Abstract: In recent years, with the rapid increase of car ownership, pedestrians on the road traffic accidents happened more frequently, so for pedestrians, especially the children's traffic safety education and training skills effectively, reduce the happening of traffic accident, has the very vital significance.Using Unity 3D virtual reality technology, through to build realistic 3 d virtual dynamic traffic scene and realize human-computer interaction research and implementation of key technologies, such as, developed traffic safety education and skills training system, can let the trainer in immersive moved to accept traffic safety knowledge education, and through the game model training skills across the road, thus reducing the pedestrian traffic accidents.
Key words: Traffic safety education;Unity 3 D;Virtualreality;Trainingsystem;The key technology research
1概述
近年來,隨著我國居民汽車擁有量的快速增加,一方面極大地推動(dòng)了我國經(jīng)濟(jì)的發(fā)展和人們出行的便利性;另一方面,也導(dǎo)致交通事故頻頻發(fā)生。特別是由于我國目前大部分的交通路況復(fù)雜,很多道路普遍存在人車混行的交通狀況。再加上駕駛員在行車過程中,往往以自我為中心,很少有禮讓行人的習(xí)慣;而行人往往會(huì)尋找空隙,隨意穿行,導(dǎo)致行人特別是少年兒童被撞的交通事故經(jīng)常發(fā)生[1]。專家指出,通過有效的交通安全教育和交通技能訓(xùn)練,可以大大降低過馬路時(shí)發(fā)生意外的概率[2]。所以對(duì)行人尤其是廣大少年兒童進(jìn)行有效地道路安全穿行訓(xùn)練,培養(yǎng)起良好的道路穿行習(xí)慣,加強(qiáng)其對(duì)交通環(huán)境潛在危險(xiǎn)的認(rèn)識(shí),對(duì)降低交通事故的發(fā)生率具有重要意義。然而目前交通安全教育形式單一,缺乏能體驗(yàn)的交通安全教育三維仿真環(huán)境[3],導(dǎo)致教學(xué)效果很差。所以通過虛擬現(xiàn)實(shí)技術(shù)設(shè)計(jì)和開發(fā)一個(gè)交通安全教育和技能訓(xùn)練系統(tǒng),讓訓(xùn)練者不僅能夠真實(shí)地感受到道路交通事故所引發(fā)的安全后果,而且通過多次訓(xùn)練后可以根據(jù)道路上過往車輛的速度、距離,熟練掌握能夠安全的穿行的時(shí)機(jī)和方式,提高自身對(duì)安全車速和車間距的判斷能力,從而減少和避免交通事故的發(fā)生。
2交通安全教育和技能訓(xùn)練系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)主要采用MAYA三維制作軟件來創(chuàng)建虛擬動(dòng)態(tài)交通場(chǎng)景和各種虛擬物體,使用Unity 3D三維游戲開發(fā)引擎來設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的人機(jī)交互功能。系統(tǒng)主要由數(shù)據(jù)管理、交通體驗(yàn)場(chǎng)景生成、聲音設(shè)置、交通規(guī)則安全教育和交通安全技能訓(xùn)練等功能模塊組成。各模塊的主要功能如下:
1)數(shù)據(jù)管理模塊:主要用于保存和設(shè)置訓(xùn)練者的個(gè)人信息和系統(tǒng)的數(shù)據(jù)信息。訓(xùn)練者的個(gè)人信息包括個(gè)人資料、歷史記錄、行走的初始狀態(tài)和速度等數(shù)據(jù);系統(tǒng)的數(shù)據(jù)信息包括場(chǎng)景數(shù)據(jù)信息、汽車信息、交通規(guī)則數(shù)據(jù)庫等。
2)交通體驗(yàn)場(chǎng)景生成模塊:主要是利用MAYA三維制作軟件創(chuàng)建的場(chǎng)景物體如道路、建筑物、交通標(biāo)志、車輛、虛擬兒童、教師、警察以及天空背景等三維物體,生成逼真的三維虛擬交通場(chǎng)景。
3)聲音仿真模塊:為增強(qiáng)虛擬場(chǎng)景的真實(shí)感,添加一些烘托氣氛的聲音,如汽車的喇叭聲,輪胎與地面間的摩擦聲以及人在發(fā)生交通危險(xiǎn)時(shí)發(fā)出的尖叫聲等,讓用戶能融入虛擬交通環(huán)境氣氛中去,與虛擬環(huán)境中的人物產(chǎn)生強(qiáng)大的共鳴。
4)交通規(guī)則安全教育模塊:該模塊主要通過設(shè)置多個(gè)違反交通規(guī)則的行為和調(diào)用相應(yīng)的場(chǎng)景,實(shí)現(xiàn)對(duì)少年兒童進(jìn)行遵守交通規(guī)則教育。
5)交通安全技能訓(xùn)練模塊:該模塊為本系統(tǒng)的最重要模塊,主要用來訓(xùn)練行人特別是少年兒童安全橫穿道路的技能, 提高他們綜合處理交通流信息的能力。具體是在系統(tǒng)中采用游戲模式,設(shè)置從初級(jí)到高級(jí)五個(gè)關(guān)卡,通過創(chuàng)建五個(gè)沒有紅綠燈的車流道路交通場(chǎng)景,每個(gè)場(chǎng)景按照游戲關(guān)卡的級(jí)別設(shè)置不同的車流密度和汽車行駛速度。級(jí)別越高,車流密度越大,汽車行駛速度越高。然后根據(jù)訓(xùn)練者通過鼠標(biāo)和鍵盤控制虛擬行人的行走速度和穿越的時(shí)機(jī),從低級(jí)到高級(jí)在不同的速度和不同的車間距的車流中橫穿道路來進(jìn)行反復(fù)訓(xùn)練,直到橫穿道路時(shí)都不會(huì)與汽車發(fā)生碰撞,獲得20分的積分后,才允許往前進(jìn)入下一關(guān)場(chǎng)景進(jìn)行訓(xùn)練,最后完成全部關(guān)卡并獲得100分后才表示取得一次訓(xùn)練成功,以此通過多次訓(xùn)練后,可以提高少年兒童對(duì)機(jī)動(dòng)車行駛狀況的綜合判斷能力,減少交通事故的發(fā)生。
3系統(tǒng)關(guān)鍵技術(shù)問題的研究與實(shí)現(xiàn)
3.1動(dòng)態(tài)交通場(chǎng)景設(shè)計(jì)與實(shí)現(xiàn)
動(dòng)態(tài)虛擬交通場(chǎng)景是指在靜態(tài)虛擬城市道路的交通場(chǎng)景中融入交通系統(tǒng)中所有動(dòng)態(tài)的交通活動(dòng),在本系統(tǒng)中主要指在虛擬城市道路場(chǎng)景中加入用于訓(xùn)練的汽車和行人、隨機(jī)行駛的車輛等虛擬物體交通行為,以及對(duì)它們的運(yùn)動(dòng)進(jìn)行控制,讓它們能夠在虛擬交通環(huán)境中實(shí)現(xiàn)勻速、加速、減速行駛和超越、等待等功能。
由于構(gòu)建上述動(dòng)態(tài)虛擬交通場(chǎng)景比較復(fù)雜,本系統(tǒng)先采用專業(yè)的三維建模軟件Maya來創(chuàng)建靜態(tài)三維虛擬城市道路場(chǎng)景和動(dòng)態(tài)虛擬物體,并為行人等動(dòng)態(tài)物體創(chuàng)建骨骼和蒙皮后,通過移動(dòng)骨骼就可以進(jìn)行動(dòng)態(tài)物體的動(dòng)作設(shè)計(jì),從而為各種運(yùn)動(dòng)的虛擬人和物體設(shè)計(jì)出系統(tǒng)所需要的各種動(dòng)作,比如虛擬行人的站立、行走和奔跑,汽車等交通工具的行駛,還有路人的自由動(dòng)作等。然后將以上的交通道路的靜態(tài)場(chǎng)景和設(shè)計(jì)好行為的動(dòng)態(tài)虛擬物體在Maya中經(jīng)過貼圖、設(shè)置燈光、渲染等工作后,導(dǎo)出保存為FBX 文件格式,即可將場(chǎng)景模型導(dǎo)入到Unity 3D項(xiàng)目文件的“Assets”文件夾中[4]。場(chǎng)景模型導(dǎo)入U(xiǎn)nity3D后就可以用C#或JavaScript腳本語言對(duì)場(chǎng)景中的各種虛擬物體的動(dòng)作進(jìn)行設(shè)計(jì),完成它們?cè)趫?chǎng)景中的各種運(yùn)動(dòng),實(shí)現(xiàn)動(dòng)態(tài)虛擬交通場(chǎng)景。比如將導(dǎo)入的汽車模型放置于道路上,并在汽車上添加如下的腳本,就可使其以一定的速度向前行駛:
#pragma strict
function Start () {
}
function Update () {
transform.Translate(0,0,6*Time.deltaTime);
}
系統(tǒng)中為了讓訓(xùn)練者體驗(yàn)到更加真實(shí)的交通情景和游戲的難度,整個(gè)系統(tǒng)設(shè)計(jì)成五個(gè)不同的交通場(chǎng)景,分別對(duì)應(yīng)著由低到高的五個(gè)游戲關(guān)卡需要穿越的道路,隨著訓(xùn)練游戲關(guān)卡的升級(jí),場(chǎng)景中汽車的速度和密度會(huì)不斷地增大,讓訓(xùn)練者能在不同速度的車流中得到訓(xùn)練,增強(qiáng)訓(xùn)練的效果。三維動(dòng)態(tài)虛擬交通場(chǎng)景如下圖1所示:
圖1 三維動(dòng)態(tài)虛擬交通場(chǎng)景示意圖
3.2三維虛擬物體之間的碰撞檢測(cè)技術(shù)研究與實(shí)現(xiàn)
碰撞檢測(cè)是虛擬現(xiàn)實(shí)系統(tǒng)中的一個(gè)重要功能,有了它可以使用戶以更自然的方式與虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行交互,否認(rèn)虛擬行人走在路上就可能會(huì)“穿墻而過”,汽車在路上行駛就會(huì)“鉆進(jìn)地下”等不真實(shí)的現(xiàn)象發(fā)生。另外,本系統(tǒng)在交通安全技能訓(xùn)練過程中需要檢測(cè)虛擬兒童與汽車是否發(fā)生碰撞,碰撞后不能出現(xiàn)汽車“穿人而過”的現(xiàn)象發(fā)生,而且要做出響應(yīng),比如發(fā)生慘叫和人被撞倒在地等,所以碰撞檢測(cè)在系統(tǒng)設(shè)計(jì)時(shí)是一個(gè)必須要解決的關(guān)鍵問題。這里我們采用的設(shè)計(jì)方法是先給場(chǎng)景中可能會(huì)與其他物體發(fā)生碰撞的虛擬物體如路邊建筑、道路設(shè)施、樹木和地面以及汽車和行人等都設(shè)置成剛體,然后為它們添加盒狀碰撞器,這樣它們之間就可以產(chǎn)生碰撞的效果。具體在Unity 3d中的設(shè)置虛擬物體為剛體和添加碰撞器的參數(shù)如圖2所示。
圖2 設(shè)置虛擬物體為剛體和添加碰撞器的參數(shù)示意圖
至于行人與汽車發(fā)生的碰撞后的響應(yīng),考慮到本系統(tǒng)的主要訓(xùn)練者為少年兒童,為了不讓交通事故場(chǎng)面過于慘烈,所以在設(shè)計(jì)虛擬人與汽車發(fā)生碰撞時(shí),沒有設(shè)計(jì)成行人被撞時(shí)的慘烈效果,而只是提示“GAME OVER”表示行人已與汽車發(fā)生碰撞,本次游戲結(jié)束,同時(shí)界面上出現(xiàn)三個(gè)按鈕,分別為“退出”、“重新開始”和“返回首頁”三個(gè)按鈕,“退出”按鈕實(shí)現(xiàn)退出系統(tǒng)功能,“重新開始”按鈕實(shí)現(xiàn)重新載入游戲功能,“返回首頁”按鈕實(shí)現(xiàn)返回主界面功能,具體響應(yīng)結(jié)果示意圖如圖3所示。主要腳本如下:
#pragma strict
functionOnTriggerEnter(col:Collider){
if(col.gameObject.tag=="Player"){
gameObject.Find("pz").GetComponent(GUIText).text="GAME OVER";
gameObject.Find("dimian").GetComponent(restart).enabled=true;}
}
#pragma strict
functionOnGUI(){
if(GUI.Button(Rect(180,100,60,30),"退出")){
Application.Quit();
}
if(GUI.Button(Rect(180,150,60,30),"重新開始")){
Application.LoadLevel("01");}
if(GUI.Button(Rect(180,150,60,30),"返回首頁")){
Application.LoadLevel("01");}
}
在交通規(guī)則安全教育模塊中為了禁止虛擬行人行走到機(jī)動(dòng)車道上而不走人行道,必須對(duì)道路添加碰撞器及相應(yīng)的腳本,實(shí)現(xiàn)每次用戶行走到道路上時(shí),屏幕中會(huì)出現(xiàn)“請(qǐng)走人行道”的提示,并且主角會(huì)退回到人行道上,提示字會(huì)在三秒后自動(dòng)消失,提示信息示意圖如圖4所示。
為了提高參與訓(xùn)練者的興趣,本系統(tǒng)采用游戲模式來完成技能訓(xùn)練模塊中的五個(gè)關(guān)卡不同難度的訓(xùn)練過程,每當(dāng)訓(xùn)練者完成一個(gè)路口的穿越,系統(tǒng)視窗右上角的分?jǐn)?shù)會(huì)增加20分,并且視窗中會(huì)出現(xiàn)“成功穿越”的文字,系統(tǒng)提示信息示意圖如圖5所示。當(dāng)訓(xùn)練者完成從低到高難度全部五個(gè)路口的穿越后,屏幕會(huì)顯示“游戲勝利”。
3.3人機(jī)之間的交互控制技術(shù)研究與實(shí)現(xiàn)
人機(jī)交互控制是虛擬現(xiàn)實(shí)技術(shù)的重要特征。通過人機(jī)交互手段可以讓訓(xùn)練者能夠像在現(xiàn)實(shí)中一樣對(duì)在虛擬環(huán)境中任意行走和對(duì)其中的物體進(jìn)行實(shí)時(shí)地操作,并能從虛擬環(huán)境中得到反饋的信息等。本系統(tǒng)中需要實(shí)現(xiàn)利用鍵盤或鼠標(biāo)對(duì)交通體驗(yàn)場(chǎng)景中的攝像機(jī)視角進(jìn)行旋轉(zhuǎn)變換,對(duì)虛擬行人的行走和站立以及行走速度和行走方向等進(jìn)行交互控制。所以人機(jī)之間的交互控制技術(shù)是本項(xiàng)目中另一個(gè)非常重要的關(guān)鍵技術(shù)。在Unity 3D中可以在MonoBehavior的派生類的Update()函數(shù)中編寫腳本腳本來實(shí)現(xiàn)利用鍵盤來控制物體的移動(dòng)和轉(zhuǎn)向,比如輸入以下腳本就可以利用“W”鍵來實(shí)現(xiàn)物體的向前移動(dòng)[5]:
if Input. GetKey(W);{ / /獲取鍵盤上W鍵
transform. Translate(Vector3. forward * Time.deltaTime); / /物體向前移動(dòng)
至于汽車的行駛速度和行人的行走速度的設(shè)置,可以采用Unity3D的MecAnim動(dòng)畫系統(tǒng)對(duì)汽車和行人等虛擬運(yùn)動(dòng)物體進(jìn)行動(dòng)畫設(shè)置和遷移,實(shí)現(xiàn)汽車按前面設(shè)計(jì)的速度在不同訓(xùn)練區(qū)的場(chǎng)景中行駛,以及控制行人以不同的速度進(jìn)行穿越活動(dòng)。
在系統(tǒng)中將虛擬行人行走過程設(shè)計(jì)成第一和第三人稱視角兩種模式,在第一人稱模式中為實(shí)現(xiàn)虛擬行人能夠與其它物體產(chǎn)生碰撞效果,虛擬行人使用一個(gè)橢球體代替,并將虛擬攝像機(jī)作為其子物體,讓攝像機(jī)跟隨虛擬行人運(yùn)動(dòng)??刂铺摂M行人行走的部分關(guān)鍵腳本如下:
classCharacterMotorMovement {
var movement : CharacterMotorMovement = CharacterMotorMovement();
enumMovementTransferOnJump {
None, InitTransfer,
PermaTransfer,
PermaLocked
}
varmovingPlatform : CharacterMotorMovingPlatform = CharacterMotorMovingPlatform();
}
4結(jié)論
采用maya構(gòu)建的三維虛擬動(dòng)態(tài)交通場(chǎng)景,利用Unity 3d技術(shù)對(duì)系統(tǒng)中碰撞檢測(cè)和人機(jī)交互等關(guān)鍵技術(shù)的研究和實(shí)現(xiàn),開發(fā)出三維虛擬交通安全教育和技能訓(xùn)練系統(tǒng),為行人尤其是廣大少年兒童提供一種全新的安全教育和訓(xùn)練平臺(tái),克服了以往交通安全教育形式單一、互動(dòng)性差、參與性不夠等缺點(diǎn)。系統(tǒng)經(jīng)試運(yùn)行后,訓(xùn)練者普遍反應(yīng)能夠非常直觀的給他們身臨其境的感覺,而且人機(jī)交互性好,趣味性高,能夠較好地實(shí)現(xiàn)交通安全知識(shí)教育和技能訓(xùn)練的目標(biāo)。
參考文獻(xiàn):
[1] 吳立新,王旭,張寶南.無信號(hào)控制路段行人過街決策行為分析[J].吉林建筑工程學(xué)院學(xué)報(bào),2014,31(1):19-22.
[2] 田茂,孫遠(yuǎn)平. 美國“關(guān)注危險(xiǎn)”安全教育課程的經(jīng)驗(yàn)與啟示[J].現(xiàn)代中小學(xué)教育,2012(7):69-73.
[3] 王峻極. 基于VR的行人/自行車交通違法體驗(yàn)平臺(tái)的研究與開發(fā)[D].長春:吉林大學(xué),2010.
[4] 馬瑞. 基于Unity3D的多平臺(tái)三維虛擬數(shù)字校園的設(shè)計(jì)與實(shí)現(xiàn)[J].蚌埠學(xué)院學(xué)報(bào),2014,3(2):13-16.
[5] 朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):36-39.