亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        現(xiàn)代有軌電車中乘客行為的仿真研究

        2019-12-28 06:10:30李卓真郎誠廉
        鐵路計算機(jī)應(yīng)用 2019年12期
        關(guān)鍵詞:動畫設(shè)置模型

        李卓真,郎誠廉

        (同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 200331)

        由于我國目前城市化的快速發(fā)展,道路交通的壓力越來越明顯[1]。現(xiàn)代有軌電車是在傳統(tǒng)有軌電車的基礎(chǔ)上發(fā)展起來的先進(jìn)公共交通制式,與傳統(tǒng)公共汽車相比,具有客運(yùn)能力大、速度高、彈性靈活、舒適新穎、綠色節(jié)能等特點[2]。隨著現(xiàn)代有軌電車的蓬勃發(fā)展,對駕駛員的培訓(xùn)日益提上議程,如何對駕駛員進(jìn)行安全高效的培訓(xùn)是未來城市交通體系中不可缺少的組成部分[3]。

        在列車上,司機(jī)的主要職責(zé)是駕駛列車、到站后進(jìn)行站臺操作、監(jiān)控列車運(yùn)行狀態(tài)及保證乘客安全。司機(jī)通過安裝在列車上的監(jiān)控設(shè)備,對乘客動態(tài)進(jìn)行實時監(jiān)控,以避免發(fā)生意外事故[4]。在列車駕駛模擬器中,也需要對這些監(jiān)控系統(tǒng)進(jìn)行模擬[4]。這其中,列車乘客的動作仿真研究顯得非常重要[5]。

        三維視景仿真技術(shù)是計算機(jī)技術(shù)的重要分支,是計算機(jī)技術(shù)、圖形圖像處理技術(shù)、多媒體技術(shù)、信息合成技術(shù)以及顯示技術(shù)等諸多高新技術(shù)的綜合運(yùn)用。我國在上個世紀(jì)80年代末90年代初將三維視景仿真技術(shù)應(yīng)用于城軌仿真中,主要是為司機(jī)培訓(xùn)提供一種模擬駕駛平臺,平臺的三維視景通過地鐵列車運(yùn)行時從司機(jī)室實景拍攝得到,通過疊加關(guān)鍵技術(shù)生成。比較有代表性的系統(tǒng)有:文獻(xiàn)[6]著重從場景模型的生成、動態(tài)場景的控制、視點變換、人物仿真等幾個方面研究了虛擬仿真技術(shù)與地鐵運(yùn)行仿真系統(tǒng)的結(jié)合;文獻(xiàn)[7]就列車模擬駕駛器視景生成技術(shù)、計算機(jī)成像(CGI)視景系統(tǒng)功能、系統(tǒng)關(guān)鍵技術(shù)等作簡要闡述;文獻(xiàn)[8]從提高動態(tài)仿真效率和渲染速度的角度出發(fā),采用基于圖形與圖像的混合建模方法和細(xì)節(jié)層次(LOD)與紋理映射技術(shù),實現(xiàn)了列車運(yùn)行的三維動態(tài)視景仿真。本文在前人的基礎(chǔ)上,對人物進(jìn)行場景上的支持,利用Character Studio進(jìn)行人物動畫創(chuàng)建,使用AStar算法進(jìn)行場景內(nèi)的自動尋路功能,規(guī)避障礙及各種險情的發(fā)生,以實現(xiàn)對駕駛員的培訓(xùn)。

        本文利用3ds MAX建模軟件構(gòu)建了三維虛擬列車模型、人物的三維模型及基本動作模型,以Unity3D為應(yīng)用平臺,以VC#2017為編譯器實現(xiàn)對三維模型的驅(qū)動控制,從而為現(xiàn)代有軌電車模擬駕駛提供場景支持。

        1 三維模型的建模

        本文以南京有軌電車麒麟線為模型,在此基礎(chǔ)上對車站、列車等場景進(jìn)行建模仿真。選用3ds MAX建模軟件構(gòu)建了三維虛擬列車模型、人物三維模型及基本動作模型,3ds MAX是一款三維建模與渲染的軟件,主要包含幀動畫制作、多邊形建模、曲面建模、材質(zhì)制作、模型優(yōu)化等功能。較其他建模軟件相比,3ds MAX具有操作簡單、渲染高端、三維動畫逼真、互操作性靈活等優(yōu)點。3ds MAX的模型導(dǎo)出格式很多,本文中,主要將max文件導(dǎo)出成FBX格式文件,然后導(dǎo)入到Unity3D中進(jìn)行控制[9]。

        1.1 虛擬有軌電車建模

        虛擬有軌電車的建模有如下幾個步驟:

        (1)在3ds MAX建模軟件中使用立面和平面比照參考,通過多邊形建模方法對列車進(jìn)行精確建模;

        (2)根據(jù)紋理數(shù)據(jù)和貼圖建立對應(yīng)結(jié)構(gòu)的材質(zhì)球;

        (3)將材質(zhì)球賦給對應(yīng)的結(jié)構(gòu)模型,主要包括車內(nèi)客室座椅、玻璃窗、地板、立柱和扶手、照明系統(tǒng)及列車整體。

        所建模的列車共5節(jié)車廂,其三維模型如圖1所示。

        1.2 人物建模

        圖1 虛擬電車三維模型圖

        在3ds MAX 中利用Character Studio創(chuàng)建角色動畫。對骨骼加載設(shè)定好的基本動作,然后將骨骼和人物模型綁定,可看到骨骼驅(qū)動3ds MAX模型的運(yùn)動,這樣就可以創(chuàng)建一個有設(shè)定動作的人物模型。

        1.2.1 創(chuàng)建人物動作

        正常情況下,人物在列車內(nèi)產(chǎn)生的行為基本可以分為:行走(walk)、站立(stand)、坐下(sit down)、起立(stand up)等[10]。本文使用3ds MAX中的關(guān)鍵幀動畫功能創(chuàng)建了這幾個基本動作,并將這幾個動作加載到虛擬人物模型,從而可以實現(xiàn)人物的運(yùn)動。

        所謂的關(guān)鍵幀動畫,就是按照自己所想達(dá)到的動畫效果,選擇不同位置的幀,設(shè)置不同動作的式樣,在短時間內(nèi)設(shè)置盡量多的幀,然后連續(xù)播放。通過采用特殊的計算方法算得這些關(guān)鍵數(shù)據(jù),由此達(dá)到非常順暢的動畫情景。

        1.2.2 人物文件的導(dǎo)出

        本文選擇文件導(dǎo)出類型為Unity3D所支持的FBX格式。FBX主要有ASCII和二進(jìn)制兩種編碼格式,ASCII編碼優(yōu)點是可通過代碼調(diào)整數(shù)據(jù),缺點是文件所占內(nèi)存較大,影響3D引擎渲染模型的速率,在場景模型數(shù)目過多的情況下,渲染速率過慢會嚴(yán)重影響運(yùn)行的幀數(shù),視覺效果不好;二進(jìn)制編碼的模型文件雖然不易修改,但是文件所占內(nèi)存較小。因此在本文中導(dǎo)入的模型為二進(jìn)制編碼的FBX格式文件。圖2為導(dǎo)入的人物各個狀態(tài)。

        圖2 各狀態(tài)的人物模型

        2 人物動作的仿真

        在仿真過程中,使用了導(dǎo)航網(wǎng)格(NavMesh)來實現(xiàn)乘客的自動尋路過程。

        2.1 AStar算法原理

        在NavMesh方法中采用了AStar算法,其自動尋路的思路是將尋路區(qū)域劃分成小方塊用以存放在二維數(shù)組中。通常將起點所代表的方塊記為A,終點所代表的方塊記為B,障礙物則用陰影表示。計算并比較從起點A到終點B的成本便可找到一條最優(yōu)的路徑,AStar算法流程如圖3所示。其具體方法如下:

        圖3 ASrar算法流程圖

        (1)從起點A開始,把它作為待處理的方格存入一個“開啟列表”,開啟列表就是一個等待檢查方格的列表。

        (2)尋找起點A周圍可以到達(dá)的8塊方格, 將它們放入“開啟列表”,設(shè)置它們的“父方格”為 A。

        (3)從“開啟列表”中刪除起點 A, 并將起點 A加入“關(guān)閉列表”,“關(guān)閉列表”中存放的都是不需要再次檢查的方格。

        在開啟列表中計算每個方格到達(dá)終點B的通過成本,計算公式為:

        在公式(1)中,G表示當(dāng)前方格到起始方格的估量代價,H表示當(dāng)前方格到終點的代價(H有很多計算方法,這里設(shè)定為上下左右移動)。

        (4)從“開啟列表”中選擇F值最低的方格設(shè)為C,將其作為新的起點,并將C放入“關(guān)閉列表”。

        (5)檢查方格C相鄰的方格,但不包括障礙物和“開啟列表”中的方格。判斷“開啟列表”中是否存在這些方格,若不存在,則將其加入至“開啟列表”,同時計算每個方格的F、G的值(H值始終為定值,不用計算),并將C設(shè)置為其“父方格”。

        (6)若某個相鄰方格D已經(jīng)存在于“開啟列表”中,則計算經(jīng)過C到達(dá)D的路徑的G值,若新的G值小于舊的G值,將D的“父方格”改為方格C,然后重新計算F、G的值,反之不用對方格D進(jìn)行任何操作。

        (7)由于方格C相鄰且可到達(dá)的方格除了障礙物之外都在“開啟列表”中,因此可以選擇方格D作為新的起點并將其設(shè)置為父方格,此種情況默認(rèn)不允許斜向走至障礙物相鄰的方格。

        如此循環(huán),直至“開啟列表”中出現(xiàn)了終點方格B后,結(jié)束循環(huán)。連接所有“父方格”即為從起點A到達(dá)終點B的最低成本路徑,如圖4所示。

        圖4 最優(yōu)路徑模型

        2.2 實現(xiàn)導(dǎo)航系統(tǒng)

        導(dǎo)航系統(tǒng)可以讓人物在場景里智能地移動、繞過障礙等,本文使用NavMesh來解析環(huán)境。

        2.2.1 設(shè)置NavMesh

        在Insprector窗口中點擊Static下拉菜單,勾選靜態(tài)導(dǎo)航(Navigation Static),在Navigation Area下拉框里選擇可行走(walkable),即設(shè)置地面為可走區(qū)域。同時,乘客在尋路過程中要避免碰撞到柱子、閘機(jī)、墻、座椅、樓梯等障礙物,所以在Navigation窗口中依次選擇這些障礙物,勾選Navigation Static,設(shè)置為不可行走(Not Walkable)。

        當(dāng)車廂內(nèi)物體類型設(shè)置完畢后,需要對場景進(jìn)行烘焙。烘焙的目的是保存當(dāng)前的導(dǎo)航網(wǎng)格設(shè)置,并且保存可行走區(qū)域和障礙物的信息。烘焙分為2種,動態(tài)烘焙和靜態(tài)烘焙。其中動態(tài)烘焙會根據(jù)當(dāng)前場景的變化而實時更新導(dǎo)航網(wǎng)格,這種方式適用于障礙物需要移動的場景,比如模擬戰(zhàn)爭游戲等;靜態(tài)烘焙是在場景編輯狀態(tài)下設(shè)置好導(dǎo)航網(wǎng)格,在場景運(yùn)行狀態(tài)下不再更新,這種方式適用于障礙物以及可行走區(qū)域位置和大小不變等場景,比如室內(nèi)探險、捉迷藏等游戲。因此相對于動態(tài)烘焙,靜態(tài)烘焙消耗的資源更少,場景運(yùn)行的幀數(shù)會更高。由于在場景運(yùn)行時地鐵車站里的柱子、閘機(jī)、座椅、樓梯等障礙物的位置和大小不會發(fā)生變化,所以本文采用靜態(tài)烘焙方式,烘焙之前需要根據(jù)乘客的大小來調(diào)整烘焙的參數(shù)。

        在開發(fā)過程中,乘客模型身高設(shè)計為1.5 m~1.9 m,調(diào)整合適的烘焙參數(shù),在Windows中打開Navigation窗口,將導(dǎo)航代理半徑(Agent Radius)參數(shù)設(shè)置為0.1,單位為m,因為車廂寬度為1 m,如若導(dǎo)航代理半徑設(shè)置的數(shù)值太大,為躲避各種障礙物則幾乎無可行走區(qū)域。最后點擊烘焙即可完成導(dǎo)航網(wǎng)格設(shè)置,烘焙結(jié)果如圖5所示,地面藍(lán)色為可行走區(qū)域。

        2.2.2 設(shè)置導(dǎo)航代理

        導(dǎo)航代理可以理解為去尋路的主體,設(shè)置方法為:在人物模型上為其添加NavMeshAgent組件,并通過相應(yīng)的腳本進(jìn)行驅(qū)動。

        2.3 設(shè)置人物狀態(tài)動畫機(jī)

        圖5 導(dǎo)航網(wǎng)格模型

        對于動畫的控制可以選擇Animation或Animator,由于Animation只能單一地控制一個動畫的播放,而Animator可以在不同動畫之間進(jìn)行切換,設(shè)置動畫狀態(tài)機(jī),包括從腳本控制的狀態(tài)機(jī)、混合樹和事件來進(jìn)行設(shè)置。所以本文采用Animator組件,乘客的動畫狀態(tài)機(jī)主要包含walk、stand兩個動畫,動畫之間為雙向箭頭,且參數(shù)列表設(shè)置了walk的bool值,方便程序?qū)赢嫚顟B(tài)機(jī)的控制。

        使用NavMesh結(jié)合動畫系統(tǒng)可使人物在車廂內(nèi)實現(xiàn)角色的移動。創(chuàng)建空物體可以給指定人物設(shè)定target,通過調(diào)用agent.destination函數(shù)給人物設(shè)定目標(biāo)位置,使人物進(jìn)行尋路。當(dāng)距離終點0.1 m時會更新終點的坐標(biāo),以維持行走的狀態(tài)。

        3 實現(xiàn)人物上下車

        3.1 車門控制

        為了實現(xiàn)車門開關(guān)的功能,需要對車門模型進(jìn)行平滑移動,這里選擇一種簡單輕量的插件iTween來實現(xiàn)。iTween的核心原理是根據(jù)不同的需求,通過多種插值方法來自動生成起始點與終點之間的中間值,實現(xiàn)不同的效果。iTween中的大部分方法除了簡單的輸入?yún)?shù)外,都會重載一個輸入?yún)?shù)為哈希表(Hashtable)型變量的方法,通過哈希表可以對方法進(jìn)行更加詳細(xì)的控制。

        在此處我們需要使車門進(jìn)行平滑移動,可以利用iTween的MoveTo方法來實現(xiàn)。MoveTo方法可以在指定的時間內(nèi)不斷改變物體的位置,直到達(dá)到目標(biāo)位置,定義如下:

        MoveTo(GameObject target,Vector3 position,float time)

        MoveTo(GameObject target,Hashtable args)

        其中,target為需要移動的物體,position為目標(biāo)位置,time為經(jīng)過的時間。為了使車門能勻速移動,我們通過之前提到的哈希表來將物體的移動方式設(shè)定為線性。程序中調(diào)用MoveTo方法的一段代碼如下:

        iTween.MoveTo (this.gameObject, iTween.Hash("x", 1.0f, "z", 0, "time", 3, "islocal", true, "easetype",iTween.EaseType.linear));

        其中,this.gameObject是所掛在的組件,iTween.Hash是iTween中方便用戶創(chuàng)建哈希表的方法。x表示目標(biāo)位置的x坐標(biāo),z表示目標(biāo)位置的z坐標(biāo),time表示在多久后移動到目標(biāo)位置,islocal為采用世界坐標(biāo)還是與父物體有關(guān)本地坐標(biāo),easetype表示物體移動的類型,這里選擇iTween內(nèi)置的線性方式,即為勻速運(yùn)動。車門移動如圖6所示。

        圖6 模擬車門關(guān)閉及開啟

        3.2 乘客上下車模擬

        乘客分為動態(tài)乘客和靜態(tài)乘客。靜態(tài)乘客主要集中在列車上,不參與尋路過程。為了模擬乘客上下車,這里采用一種簡單的方式。以每個車廂模型為父物體在車門外創(chuàng)建若干空的子物體,在開始時將乘客模型生成在車廂內(nèi),需要下車時就讓乘客走向這些子物體。當(dāng)列車未進(jìn)站時,動態(tài)乘客在路面的導(dǎo)航網(wǎng)格內(nèi)不斷地進(jìn)行尋路,當(dāng)列車進(jìn)站時,會選擇最近的車門上車,并跟隨列車一起移動[11]。

        本文中使用的乘客模型是已經(jīng)綁定骨骼以及動畫的預(yù)制體(Prefab)。Prefab是Unity中的一種資源類型,存儲在項目資源中的一種可重復(fù)使用的對象,當(dāng)預(yù)制體被添加到場景中,就創(chuàng)建了他的一個實例。將需要頻繁創(chuàng)建的物體設(shè)置為預(yù)制體可以節(jié)省內(nèi)存,乘客模型很適合被設(shè)置為預(yù)制體。

        車廂門有左右的區(qū)別,乘客也根據(jù)左右分為2組控制,定義2個方法用于將模型預(yù)制體生成為實例并置于車廂內(nèi)。

        通過為人物進(jìn)行腳本編輯來實現(xiàn)人物的上下車。

        4 結(jié)束語

        本文以南京有軌電車麒麟線為模型,通過3ds MAX 建模軟件完成對虛擬列車場景及人物三維模型的建立,虛擬了 2個基本動作(walk、stand)。在此基礎(chǔ)上,使用NavMesh與人物動畫狀態(tài)機(jī)的結(jié)合,完成了人物在車廂內(nèi)的移動,實現(xiàn)了乘客動作的三維動作仿真。同時為有軌電車模擬駕駛系統(tǒng)提供了部分車站乘客上下車的場景,具有一定的實用價值。

        猜你喜歡
        動畫設(shè)置模型
        一半模型
        中隊崗位該如何設(shè)置
        少先隊活動(2021年4期)2021-07-23 01:46:22
        做個動畫給你看
        重要模型『一線三等角』
        動畫發(fā)展史
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        我的動畫夢
        文苑(2019年22期)2019-12-07 05:28:56
        3D打印中的模型分割與打包
        我是動畫迷
        本刊欄目設(shè)置說明
        亚洲一区二区三区中文字幕网| 国产精品亚洲午夜不卡| 91久国产在线观看| 亚洲av狠狠爱一区二区三区| 无遮挡1000部拍拍拍免费| 国产精品无码av一区二区三区 | 国产三级精品三级在专区中文| 波多野无码AV中文专区| 亚洲女同性恋第二区av| 日本成本人片视频免费| 久久乐国产精品亚洲综合| 国产成人精品免费视频大全| 五月天亚洲av优女天堂| 亚洲综合偷自成人网第页色| 99国产精品人妻噜啊噜| 四虎精品免费永久在线| 成人综合久久精品色婷婷| 亚洲日本高清一区二区| 特黄aaaaaaaaa毛片免费视频| 国产精品人妻一区夜夜爱| 91尤物在线看| 久久精品中文字幕有码| 人妻夜夜爽天天爽三区| 亚洲色图视频在线| 亚洲成人激情在线影院| 亚洲国产精品一区二区毛片| 亚洲爆乳精品无码一区二区| 日韩亚洲制服丝袜中文字幕| 国产精品丝袜美女久久| 精品国产乱码久久久久久婷婷| 国产精品美女久久久浪潮av| 亚洲精品无人区一区二区三区| 亚洲综合一区二区三区天美传媒 | 精品无码国产一区二区三区麻豆 | 欧美黑人性色黄在线视频| 国产一区二区三区免费在线播放| а天堂中文在线官网在线| 亚洲av无码精品蜜桃| 国产一区二区精品尤物| 亚洲av色精品国产一区二区三区| 国产果冻豆传媒麻婆精东 |