999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

現代有軌電車中乘客行為的仿真研究

2019-12-28 06:10:30李卓真郎誠廉
鐵路計算機應用 2019年12期
關鍵詞:動畫設置模型

李卓真,郎誠廉

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

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

在列車上,司機的主要職責是駕駛列車、到站后進行站臺操作、監控列車運行狀態及保證乘客安全。司機通過安裝在列車上的監控設備,對乘客動態進行實時監控,以避免發生意外事故[4]。在列車駕駛模擬器中,也需要對這些監控系統進行模擬[4]。這其中,列車乘客的動作仿真研究顯得非常重要[5]。

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

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

1 三維模型的建模

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

1.1 虛擬有軌電車建模

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

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

(2)根據紋理數據和貼圖建立對應結構的材質球;

(3)將材質球賦給對應的結構模型,主要包括車內客室座椅、玻璃窗、地板、立柱和扶手、照明系統及列車整體。

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

1.2 人物建模

圖1 虛擬電車三維模型圖

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

1.2.1 創建人物動作

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

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

1.2.2 人物文件的導出

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

圖2 各狀態的人物模型

2 人物動作的仿真

在仿真過程中,使用了導航網格(NavMesh)來實現乘客的自動尋路過程。

2.1 AStar算法原理

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

圖3 ASrar算法流程圖

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

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

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

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

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

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

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

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

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

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

圖4 最優路徑模型

2.2 實現導航系統

導航系統可以讓人物在場景里智能地移動、繞過障礙等,本文使用NavMesh來解析環境。

2.2.1 設置NavMesh

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

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

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

2.2.2 設置導航代理

導航代理可以理解為去尋路的主體,設置方法為:在人物模型上為其添加NavMeshAgent組件,并通過相應的腳本進行驅動。

2.3 設置人物狀態動畫機

圖5 導航網格模型

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

使用NavMesh結合動畫系統可使人物在車廂內實現角色的移動。創建空物體可以給指定人物設定target,通過調用agent.destination函數給人物設定目標位置,使人物進行尋路。當距離終點0.1 m時會更新終點的坐標,以維持行走的狀態。

3 實現人物上下車

3.1 車門控制

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

在此處我們需要使車門進行平滑移動,可以利用iTween的MoveTo方法來實現。MoveTo方法可以在指定的時間內不斷改變物體的位置,直到達到目標位置,定義如下:

MoveTo(GameObject target,Vector3 position,float time)

MoveTo(GameObject target,Hashtable args)

其中,target為需要移動的物體,position為目標位置,time為經過的時間。為了使車門能勻速移動,我們通過之前提到的哈希表來將物體的移動方式設定為線性。程序中調用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中方便用戶創建哈希表的方法。x表示目標位置的x坐標,z表示目標位置的z坐標,time表示在多久后移動到目標位置,islocal為采用世界坐標還是與父物體有關本地坐標,easetype表示物體移動的類型,這里選擇iTween內置的線性方式,即為勻速運動。車門移動如圖6所示。

圖6 模擬車門關閉及開啟

3.2 乘客上下車模擬

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

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

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

通過為人物進行腳本編輯來實現人物的上下車。

4 結束語

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

猜你喜歡
動畫設置模型
一半模型
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
做個動畫給你看
重要模型『一線三等角』
動畫發展史
重尾非線性自回歸模型自加權M-估計的漸近分布
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
3D打印中的模型分割與打包
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
本刊欄目設置說明
主站蜘蛛池模板: 无码粉嫩虎白一线天在线观看| 欧美成人免费一区在线播放| 香蕉国产精品视频| 日韩免费毛片视频| 少妇人妻无码首页| 91麻豆精品视频| 日韩免费毛片视频| 国产激情在线视频| 一级毛片高清| 国产18在线播放| 日本精品视频一区二区| 国产一区二区影院| 丁香六月综合网| 亚洲国产精品一区二区高清无码久久| 看你懂的巨臀中文字幕一区二区| 亚洲精品天堂在线观看| 亚洲天堂精品在线观看| 特级毛片8级毛片免费观看| 国产主播在线一区| 日韩精品高清自在线| 91久久精品日日躁夜夜躁欧美| 人妻精品全国免费视频| 国产精品毛片一区| 国产成人区在线观看视频| аⅴ资源中文在线天堂| 国产精品 欧美激情 在线播放| 国产成人啪视频一区二区三区| 国产美女丝袜高潮| 国产福利在线观看精品| 欧美国产日韩在线| 色AV色 综合网站| 福利一区在线| 一本大道香蕉中文日本不卡高清二区| 亚洲天堂久久| 欧美黄色网站在线看| 欧美另类图片视频无弹跳第一页 | 精品视频福利| 国产浮力第一页永久地址| 一区二区三区精品视频在线观看| 国产精品区视频中文字幕| 色综合日本| 91在线国内在线播放老师| hezyo加勒比一区二区三区| 中文字幕无线码一区| 亚洲综合专区| 国产精品成人久久| AV无码一区二区三区四区| 亚洲国产成人无码AV在线影院L | 国产av色站网站| 亚洲五月激情网| 国内精品自在欧美一区| 女人18毛片一级毛片在线 | 国产H片无码不卡在线视频| 日韩av电影一区二区三区四区| 国产精品林美惠子在线播放| 国产大片黄在线观看| 欧美亚洲国产日韩电影在线| 亚洲福利一区二区三区| 国产人人射| 狠狠做深爱婷婷久久一区| 精品亚洲欧美中文字幕在线看 | 亚洲人成网址| 亚洲综合色区在线播放2019| 黄片在线永久| 青青草国产精品久久久久| 国产亚洲欧美在线视频| 黄色a一级视频| 一级毛片免费观看不卡视频| 国产精品入口麻豆| 国产精品成人啪精品视频| 玩两个丰满老熟女久久网| 日本一区二区不卡视频| 午夜日b视频| 久久免费观看视频| 一本大道视频精品人妻| 日韩精品少妇无码受不了| 试看120秒男女啪啪免费| 一级做a爰片久久免费| 天天综合亚洲| 鲁鲁鲁爽爽爽在线视频观看| 精品色综合| 永久在线精品免费视频观看|