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

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

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

周徐熠,郎誠廉

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

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

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

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'處于同一水平面上,以便后續(xù)坡段上各路徑點高度值的計算。遍歷各坡段,重復上述過程,可得到不帶有豎曲線的線路空間路徑。

圖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 模型創(chuàng)建與簡化

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

2.1 模型創(chuàng)建

2.1.1 軌道模型創(chuàng)建

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

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

圖5 鋼軌模型

2.1.2 站臺模型生成

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

圖6 站臺模型

2.1.3 道岔模型創(chuàng)建

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

圖7 道岔模型

2.1.4 信號機模型定位

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

2.2 模型簡化

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

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

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

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

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

3 虛擬場景驅動

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

3.1 線路數據獲取

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

3.2 虛擬場景漫游

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

3.3 列車運行模擬

3.3.1 車輛模型控制

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

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

3.3.2 道岔功能實現

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

3.3.3 車門、屏蔽門模型控制

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

圖8 車門與屏蔽門控制

4 結束語

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

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 欧美日在线观看| 天堂av综合网| 人妻精品久久无码区| 欧美日韩中文国产va另类| 国产亚洲精品91| 久久婷婷六月| 啪啪国产视频| 综合色婷婷| 国产精品第一区在线观看| 日本一区二区三区精品视频| 日韩免费毛片视频| 亚洲国产精品一区二区第一页免| 全部免费毛片免费播放| 国产精品视频导航| 国产精品第| 亚洲中文字幕在线观看| 伊人色在线视频| 中文国产成人久久精品小说| 麻豆精品国产自产在线| 亚洲婷婷在线视频| 国产精品自在线拍国产电影| 91精品视频在线播放| 啪啪永久免费av| 区国产精品搜索视频| 91日本在线观看亚洲精品| av在线5g无码天天| 国产精品入口麻豆| 欧美国产在线看| 91av成人日本不卡三区| 99久久精品国产麻豆婷婷| 97se亚洲综合| 亚洲av日韩av制服丝袜| 永久成人无码激情视频免费| 伊人成人在线| 亚洲中文在线看视频一区| jijzzizz老师出水喷水喷出| 久久精品国产999大香线焦| 国产精品白浆在线播放| 日韩av无码精品专区| 91美女视频在线观看| 99视频国产精品| 久草国产在线观看| 极品私人尤物在线精品首页| 亚洲欧美综合精品久久成人网| 日韩精品欧美国产在线| 亚洲综合第一区| 在线观看国产精品日本不卡网| 激情乱人伦| 狠狠色噜噜狠狠狠狠色综合久| 制服无码网站| 久久久久亚洲Av片无码观看| 国产女人18水真多毛片18精品| 国产一级片网址| 久久精品人妻中文系列| 欧美区国产区| a亚洲天堂| 性色生活片在线观看| 亚洲人成网7777777国产| 91综合色区亚洲熟妇p| 国产精品免费露脸视频| 欧美日韩理论| 国产噜噜噜视频在线观看| lhav亚洲精品| 亚洲日韩国产精品综合在线观看| 亚洲中文字幕在线精品一区| 国产主播在线一区| 亚洲一级色| 欧美a在线| 欧美视频在线第一页| 国内老司机精品视频在线播出| 国内精自视频品线一二区| 亚洲天堂日韩在线| 2018日日摸夜夜添狠狠躁| 成人中文字幕在线| 亚洲专区一区二区在线观看| 99久久精品无码专区免费| 99久久人妻精品免费二区| 亚洲精品片911| 一区二区三区四区日韩| 在线观看精品国产入口| 久久黄色小视频| 欧美精品亚洲精品日韩专区va|