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

基于Unity3D 的地鐵線路三維模型自動生成的研究

2022-06-08 09:20:38周徐熠郎誠廉
鐵路計算機應用 2022年5期
關鍵詞:模型

周徐熠,郎誠廉

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

目前,三維視景技術在我國軌道交通領域的應用愈加廣泛,列車運行控制、人員培訓等都結合該技術開發了新型仿真系統[1-3]。但構建三維視景,通常需要利用建模軟件搭建出線路的三維模型,再導入至Unity3D 等場景驅動引擎中進行操作,其過程復雜、耗時較長。

為滿足快速構建地鐵線路三維視景的需求,本文研究了地鐵線路三維模型的自動生成方法,并利用基于Unity3D 和 C#開發的程序實現線路生成與場景驅動,可有效簡化人工建模過程,降低三維視景搭建難度,縮減工作量。

1 路徑生成

線路路徑是生成地鐵線路三維模型的基礎,為將線路盡可能完整地還原至三維視景當中,本文結合線路平面和縱斷面數據,計算獲得平面路徑并將其映射為空間路徑。

1.1 線路數據結構定義

線路平面由直線、圓曲線和緩和曲線組成,縱斷面設計線由直線和豎曲線組成[4]。由于線路參數較多,為便于讀取數據,本文利用數據庫對各類線路數據進行存儲和管理,并運用面向對象方法進行路徑坐標計算。為此,定義了直線類、曲線類和坡道類,它們具有部分相同字段,可繼承自同一基類,如圖1 所示。同時,采用路徑點列表描述路徑定義了路徑點類,其字段包括Vector 3 類型的空間坐標和double 類型的里程信息,相應的路徑點對象存入泛型列表中,由此構成線路路徑。此外,還定義了道岔類、信號機類和車站類,便于生成和定位相應的模型。

圖1 線路數據類示意

1.2 路徑點平面坐標計算

(1)直線部分:根據始端坐標、長度和方位角數據,可計算出直線段末端的路徑點坐標。(2)曲線部分:可按照第一緩和曲線、圓曲線、第二緩和曲線的順序計算路徑點。由于緩和曲線的曲率是變化的,而圓曲線的曲率固定,為使得路徑平滑和計算簡便,本文采用按長度分段計算的方法得到緩和曲線上的路徑點坐標,間隔取1 m,采用按圓心角分段計算的方法得到圓曲線上的路徑點坐標,間隔取0.01 rad,相比其他間隔取值,該取值可得到精度較高且視覺效果良好的平曲線。

1.2.1 緩和曲線路徑點坐標計算

在如圖2 所示的對稱基本型平曲線中,J點為兩側緩和曲線切線交點,ZH點為直緩點,HY點為緩圓點,YH點為圓緩點,HZ點為緩直點,O點為圓曲線圓心,線段OM垂直于左側緩和曲線的切線。圓曲線半徑R、緩和曲線長LS和路線偏轉角α通常由線路平面圖給出,ZH點到J點之間的緩和曲線切線長T、內移距p、切垂距q和緩和曲線角β0的求解過程涉及到曲線要素計算,本文不再贅述。

圖2 對稱基本型平曲線示意

計算緩和曲線上的路徑點坐標時,以ZH點(或HZ點)為原點,以曲線切線里程增加方向為x軸正方向,建立局部平面直角坐標系,將待求路徑點到原點的里程長度l代入三次拋物線型緩和曲線的參數方程,求得路徑點在該坐標系下的坐標(x,y),再通過坐標系變換,得到路徑點在全局坐標系下的坐標(X,Y)。

1.2.2 圓曲線路徑點坐標計算

計算J點至ZH點的單位向量,將該向量逆時針旋轉γ并乘以J點至O點的距離,得到,進而求出O點的坐標。將從O點指向HY點的向量繞O點旋轉至YH點,計算并記錄圓曲線上的一組路徑點坐標。

緩和曲線對稱時,計算較為簡單,但在非對稱基本型平曲線中,兩側緩和曲線的長度LS不同,需分別計算第一、第二緩和曲線的內移距p1、p2和切垂距q1、q2,并按公式(2)[5]計算第一緩和曲線切線長T1,為

非對稱情況下圓心坐標 (XO,YO)的求解表達式為

式中

最后將所有直線、緩和曲線和圓曲線上的路徑點按里程遞增的順序依次存入列表,構成線路的平面路徑。

1.3 路徑點空間坐標計算

本文結合縱斷面數據,計算各變坡點的平面坐標,并更新平面路徑上各路徑點的高度值,為提高豎曲線的平滑度,在變坡點的兩側通過線性插值增補多個路徑點,并進行縱距修正,獲得線路的空間路徑。

1.3.1 路徑點高度值計算

根據變坡點里程,查找平面路徑中與變坡點里程最接近的前后兩點,并通過線性插值確定變坡點的平面坐標。如圖3 所示,點P、B'為兩個變坡點,其中,B'的高度值尚未得出,點B為B'在水平面上的投影,根據P至B的里程長度 Δm和坡度i,計算出B'相對于B的高度 Δh,進而得到B'的高度值。采用同樣的方法計算并更新該坡段上的所有路徑點的高度值,可得到P、B'間的空間路徑。將B之后所有路徑點的高度值增加 Δh,使之與B'處于同一水平面上,以便后續坡段上各路徑點高度值的計算。遍歷各坡段,重復上述過程,可得到不帶有豎曲線的線路空間路徑。

圖3 路徑點高度計算示意

1.3.2 路徑點增補

在如圖4 所示的半徑為RS的凹形豎曲線中,前后兩坡段的坡度分別為i1和i2,點P為變坡點,點A、B分別為豎曲線的起點和終點,豎曲線切線長TS[6]的計算公式為

圖4 豎曲線示意

根據TS在水平面上的投影長度可以確定A、B的里程,并進一步得到A、B的空間坐標。當A、P間路徑點較少時,經縱距修正后無法得到平滑的豎曲線,因此,需在A、P間通過線性插值增補n個等距的路徑點,并分別進行修正,以獲得平滑豎曲線。B、P之間同理,n的大小取決于線性插值的間隔步長,考慮精度和視覺效果,本文中該間隔取1 m。

1.3.3 縱距修正

圖4 中,根據點A、P間各路徑點至A的距離f計算縱距z,并對高度值進行修正。在P、B間進行相同操作,可得到較為平滑的完整豎曲線路徑。各點處縱距z的近似公式為

2 模型創建與簡化

Unity3D 集成了DirectX 和OpenGL,可快速創建模型并進行圖形渲染。本文利用Unity3D 完成線路模型的創建,采用Douglas–Peucker 算法對模型進行簡化,減少了模型的三角面數。

2.1 模型創建

2.1.1 軌道模型創建

本文通過Unity3D 中的線渲染器(Line Renderer)組件實現路徑的可視化,并調用該組件的BakeMesh方法,得到帶有網格碰撞體的路徑實體模型。為提高三維視景的真實感,需給線渲染器添加PNG 格式的枕木貼圖,紋理模式為Tile,可達到根據線路長度自適應重復貼圖的效果,將路徑實體模型作為簡易道床面,添加道砟貼圖。若不將枕木與道砟進行圖層分離,則道岔處會發生貼圖重疊,顯示效果不好,分離圖層后,可有效改善顯示效果。

本文采用生成Mesh 網格的方法對鋼軌進行建模。選取60 kg/m 鋼軌截面上的部分關鍵點作為模型的輪廓節點,計算各路徑點處的輪廓節點坐標并存入Vector 3 類型的頂點數組vertexes 中,計算出每個三角面各頂點在頂點數組vertexes 中的索引,并存入int 類型數組indices 中,將這兩個數組賦值給Mesh網格對象的相應字段“vertices”“triangles”,完成生成鋼軌的三維網格輪廓,配合相應的材質即可渲染出鋼軌模型,如圖5 所示。

圖5 鋼軌模型

2.1.2 站臺模型生成

考慮到線路中的部分站臺可能位于曲線上,因此需要沿著線路路徑來生成站臺模型。在確定了車站中心里程并設計站臺部分的線路路徑后,創建站臺的Mesh 網格并進行渲染。根據屏蔽門平面布置圖,結合站臺形式,將各類屏蔽門的預制體定位至具體位置,如圖6 所示。

圖6 站臺模型

2.1.3 道岔模型創建

本文根據道岔的型號和參數計算各關鍵節點坐標,并以岔心坐標為基準,對尖軌和非尖軌部分采用生成Mesh 網格的方法分段建模,構造出道岔模型。尖軌單獨建模,通過模型旋轉動畫可模擬道岔開通位置的切換。本文以上海地鐵14 號線正線采用的60 kg/m 鋼軌9 號道岔[7]為例實現了道岔建模,如圖7 所示。此外,在生成模型前將道岔前后路徑進行了分段,有效避免了轍叉部分與前后鋼軌重疊。

圖7 道岔模型

2.1.4 信號機模型定位

本文將信號機模型作為預制體,根據里程位置確定坐標并實時加載、定位模型。預制體帶有燈光控制腳本,可根據仿真信號切換燈光顯示。

2.2 模型簡化

當線路較長時,計算得出的路徑點數量龐大,用于列車運行模擬或路徑漫游時效果較好,但如果采用未簡化的路徑點來生成鋼軌、道床面等整體長度較大的模型,得到的模型里將包含大量冗余的三角面,增加了內存消耗,同時,在進行視野縮放后,若視野內模型面數過多,會導致GPU 渲染速度下降和畫面幀率降低。減少部分路徑點后再生成軌道模型,對視覺效果的影響較小,且能夠降低模型三角面數,提高渲染速度和幀率。

本文采用Douglas–Peucker 算法對路徑點的數量進行適當壓縮。該算法的優點是具有平移和旋轉不變性,基本思路為:對路徑的起點和終點虛連一條直線,求各點至該直線的距離,找出最大距離值dmax,給定誤差上限ε,若dmax<ε,則該段路徑上的中間點全部舍去;若dmax≥ε,則保留dmax對應的點,并以該點為界,把路徑分為兩部分,分別遞歸調用該方法,最終保留下來的點即為簡化結果[8]。

以上海地鐵14 號線上行線作為算例,線路長度為39.1 km,緩和曲線路徑點間隔取1 m,圓曲線路徑點間隔取0.01 rad,對簡化前的路徑應用Douglas–Peucker 算法,得出不同ε取值時道床面模型參數,如表1 所示。ε取0.05 時,原始路徑點至簡化路徑的垂直距離不超過5 cm,模型簡化后可以保持原有路徑形狀,視覺效果與簡化前差距較小,且模型的點、面數和內存占用得到顯著降低,簡化效果較好。

表1 ε 不同取值對應的道床面模型參數

此外,本文對各類三角面數量較多的模型采用多層次細節(LOD,Levels of Detail)技術提高了渲染速度,采用Mip 映射(Mip-mapping)技術降低了遠距離情況下的貼圖失真程度,改善了視覺效果,提升了渲染速度。

3 虛擬場景驅動

Unity3D 作為一款場景驅動引擎,還包括了三維視景所需要的其他元素,如物理引擎、網絡通信、輸入輸出模塊等。本文采用Unity3D 開發的三維視景軟件實現了對線路數據庫的訪問,并在生成線路三維模型的基礎上,實現了虛擬場景漫游和列車運行模擬。

3.1 線路數據獲取

本文采用MySQL 數據庫對線路數據進行管理,采用客戶端—服務器架構實現三維視景軟件對線路數據的獲取。三維視景軟件客戶端采用Unity3D 結合C#程序進行開發,通過Unity3D 內置的UGUI 系統完成人機交互界面設計,通過C#程序響應UI 事件,完成模型生成與場景驅動。服務器主要負責數據管理,客戶端向服務器發送數據請求后,服務器通過SQL 語句獲取數據庫內線路數據,通過JSON 格式數據返回給客戶端,客戶端接收并處理數據后生成對應的模型。

3.2 虛擬場景漫游

虛擬場景漫游可通過角色控制器(Character Controller)組件和攝像機(Camera)來實現。采用膠囊體充當角色模型,綁定角色控制器組件,并將攝像機置于角色父物體下,用于獲得角色前方視野。通過監聽輸入設備事件,借助鍵盤按鍵獲取角色移動方向向量,由角色控制器的Move 函數更新角色位置;角色模型和攝像機帶有Transform 組件,該組件包含了用于模型旋轉的Rotate 函數,程序在每一幀內獲取鼠標移動方向,并調用Rotate 函數調整角色朝向和視野范圍。

3.3 列車運行模擬

3.3.1 車輛模型控制

本文以8 編組列車為例,通過C#程序控制列車每節車輛模型的運行路徑、位置和朝向,以路徑點列表作為各節車輛的運行路徑,控制車輛朝著當前追蹤的路徑點行駛,各節車輛速度保持一致,實現了列車在軌道上的運行。

在畫面的每一幀內,計算出車輛當前位置到下一路徑點的距離a,同時根據運行速度計算該幀內車輛的行駛距離b。根據a和b的大小關系判斷車輛是否會到達或超越當前正在追蹤的路徑點,若不能到達,即b

3.3.2 道岔功能實現

在創建道岔模型時,根據數據庫提供的道岔鏈路信息,將道岔各開通方向與相應的路徑點列表進行綁定,道岔的開通狀態決定了車輛通過岔心后的運行路徑。在岔心處設有虛擬球體作為車輛通過時的觸發器(Trigger),該球體位于道岔父物體下,且對攝像機不可見。車輛經過道岔時會穿過該球體,通過碰撞檢測技術結合觸發器的OnTriggerEnter 函數,獲取道岔的實際開通方向,根據開通方向所對應的路徑點列表對車輛運行路徑進行調整。

3.3.3 車門、屏蔽門模型控制

列車到站停車后,利用“消息廣播”機制結合模型動畫實現了圖8 所示的車門和屏蔽門的開閉。模型動畫可通過Unity3D 的Animation 制作并綁定在模型預制體上,也可以通過導入iTween 插件編寫代碼實現平移動畫,并通過BroadcastMessage 函數對多個門體對象進行消息廣播,觸發模型動畫。

圖8 車門與屏蔽門控制

4 結束語

本文對地鐵線路的三維模型自動生成方法進行了研究,采用數據庫存儲線路數據,利用Unity3D和C#完成對線路數據的讀取,實現了路徑生成、模型創建與簡化,在此基礎上通過角色控制器、碰撞檢測等技術實現了虛擬場景漫游和列車運行模擬。研究得出的方法具有通用性和拓展性,可應用于地鐵三維視景仿真,以較高的精度還原地鐵線路場景,簡化建模過程,加快虛擬場景搭建進度。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 欧美成人午夜影院| 色哟哟国产成人精品| 日韩无码黄色网站| 免费精品一区二区h| 蝴蝶伊人久久中文娱乐网| 在线视频精品一区| julia中文字幕久久亚洲| 日本人真淫视频一区二区三区| 国产成人精品一区二区| 久久毛片网| 亚洲福利视频一区二区| 国产精品嫩草影院视频| 永久成人无码激情视频免费| 欧美日韩北条麻妃一区二区| 国产91小视频| 中文字幕在线日本| 91精品人妻互换| 91福利国产成人精品导航| 98精品全国免费观看视频| 亚洲最大福利视频网| 国产男人天堂| 亚洲欧美日韩综合二区三区| 四虎永久免费网站| 国产精品熟女亚洲AV麻豆| 国产激爽大片在线播放| 久久精品人妻中文系列| 伊人国产无码高清视频| 国产精品私拍在线爆乳| 亚洲欧洲日韩久久狠狠爱| 91在线国内在线播放老师| 国产福利小视频高清在线观看| 亚洲最新在线| 亚洲美女一级毛片| 国产午夜一级毛片| 无码日韩视频| 久久香蕉国产线看精品| 一级毛片免费观看不卡视频| 国产精品久久国产精麻豆99网站| 最新国产精品第1页| 久996视频精品免费观看| 欧美在线网| 国产精彩视频在线观看| 久久久91人妻无码精品蜜桃HD| 日韩精品高清自在线| 免费又黄又爽又猛大片午夜| 日韩在线影院| 人妖无码第一页| 女人18一级毛片免费观看| 天堂成人在线| 国产在线小视频| 日本不卡在线播放| 欧亚日韩Av| 欧美精品H在线播放| 国产精品刺激对白在线| 日韩区欧美国产区在线观看| 国产一级精品毛片基地| 国产精品一区在线麻豆| 老色鬼欧美精品| 色噜噜在线观看| 欧美综合激情| 国产SUV精品一区二区| 波多野结衣一区二区三区四区| 中文字幕av无码不卡免费| 中文字幕无码中文字幕有码在线| aa级毛片毛片免费观看久| 国产精品视频导航| 在线视频亚洲色图| 免费精品一区二区h| 国产女人综合久久精品视| 成人福利在线视频免费观看| 精品丝袜美腿国产一区| 精品一区国产精品| 国产一区二区精品高清在线观看| 国内精品久久人妻无码大片高| 国产在线97| 国产内射一区亚洲| 3p叠罗汉国产精品久久| 国产超碰在线观看| 欧洲精品视频在线观看| 99精品国产高清一区二区| 国产精品第5页| 精品欧美一区二区三区在线|