周揚,劉永濤
(1.西安航空學院車輛工程系,西安710077;2.長安大學汽車學院,西安710064)
基于OpenGL的事故三維綜合演示平臺
周揚1,劉永濤2
(1.西安航空學院車輛工程系,西安710077;2.長安大學汽車學院,西安710064)
利用3DMAX建模軟件與OpenGL圖形接口軟件對道路交通事故現(xiàn)場進行三維重建,針對事故現(xiàn)場場景的渲染速度進行優(yōu)化,生成參數(shù)化的現(xiàn)場環(huán)境,并通過漫游技術(shù)來提高系統(tǒng)的交互性。針對一起具體的交通事故進行模擬演示,結(jié)果表明:該系統(tǒng)能夠?qū)嶋H道路交通事故進行準確再現(xiàn)。
事故現(xiàn)場;三維重建;渲染速度;參數(shù)化
近年來,隨著我國汽車保有量的不斷增加,道路交通安全形勢日趨嚴峻,道路交通事故發(fā)生總數(shù)及其傷亡人數(shù)一直居于高位。在處理交通事故時,通常是交警根據(jù)現(xiàn)場的痕跡或當事人的口述經(jīng)過簡單計算直接得出處理結(jié)果,其結(jié)果往往缺乏直觀性,易引起糾紛[1]。隨著虛擬現(xiàn)實技術(shù)的發(fā)展,目前能夠運用計算機估計出事故發(fā)生前后車輛的速度、行駛軌跡等,再通過逼真的動畫再現(xiàn)事故發(fā)生的整個場景與過程,使事故處理結(jié)果更具有說服性[2]。
在針對一起具體交通事故進行再現(xiàn)時,為了了解事故發(fā)生的整個過程,往往需要從較遠的視點來俯瞰整個事故場景,涉及的場景較大,模型數(shù)量較多。為了保證事故再現(xiàn)時具有良好的流暢性與交互性,本文研究了常見的事故場景漫游方法,創(chuàng)建了用于輔助處理的事故三維綜合演示平臺,最后對一起真實交通事故進行了成功再現(xiàn)。本研究主要采用3DMAX建模軟件建立三圍模型,并通過OpenGL圖形接口軟件將模型導入到VC++編程環(huán)境中實現(xiàn)可視化。
1.1場景快速渲染
為了逼真地再現(xiàn)事故現(xiàn)場,使用3DMAX建模軟件對一般事故現(xiàn)場涵蓋的道路設施、植物及周邊環(huán)境進行建模。3DMAX軟件具有強大的建模能力,利用其多邊形建模工具[4]可以快速地創(chuàng)建所需模型,并保證模型具有較高的精細度。然而,由于創(chuàng)建的模型邊數(shù)及定點數(shù)較多,在VC++編程環(huán)境中利用OpenGL圖形接口軟件對模型進行大規(guī)模調(diào)用時存在渲染速度較慢的問題。
編寫程序?qū)?DMAX生成的3DS模型進行讀取后,模型的頂點、多邊形、紋理等數(shù)據(jù)即被保存到專門的數(shù)組中[5],此時可采用兩種方式渲染模型:①即時模式,即時給出函數(shù)命令,OpenGL隨即采用給出的函數(shù)來繪制模型;②OpenGL顯示列表,函數(shù)命令被存儲到顯示列表中,當需要渲染模型時即調(diào)用相應的顯示列表,其中的OpenGL函數(shù)命令按順序被執(zhí)行。使用顯示列表的一個優(yōu)勢在于當要多次在場景中渲染同一個復雜物體時,系統(tǒng)只需計算一次該物體的頂點、三角形等信息,可顯著提高場景的渲染速度。
在對道路交通事故現(xiàn)場進行建模時,一般存在大量的模型(比如道路、隔離帶、道路設施等)需要被重復調(diào)用,如果使用即時模式進行繪制,會由于大量的頂點計算而對計算機造成極大負擔,場景的渲染速度將會受到嚴重影響[6]。而采用顯示列表則會大大加快其渲染速度,使事故演示更加流暢。在場景渲染時可采用圖1所示步驟。

圖1 場景渲染方式
1.2參數(shù)化建模技術(shù)
為了節(jié)省建模時間以及提高事故三維綜合演示平臺對于交通事故再現(xiàn)的通用性,對于任意一起交通事故,通過輸入相關(guān)參數(shù)如長度、坡度等即可生成事故現(xiàn)場的具體場景。對于一起具體的交通事故,其發(fā)生的場景一般都涉及到道路以及道路周邊的地形環(huán)境。場景參數(shù)化建模[7]可通過以下方法實現(xiàn):
1.2.1道路的參數(shù)化建模
道路的常見類型主要包括車道的數(shù)量,有兩車道、四車道等。道路的常見設施包括隔離帶、護欄、樹木等。
通過調(diào)用預先制作好的道路、隔離帶、護欄、樹木三維模型,存入顯示列表[8],連續(xù)調(diào)用相應模型的顯示列表即可生成所需長度的道路及其配套設施,而模型調(diào)用的次數(shù)則取決于所需道路的長度。道路的參數(shù)化建模步驟如圖2所示。

圖2 道路參數(shù)化建模步驟
1.2.2地形的參數(shù)化建模
事故發(fā)生的現(xiàn)場地形一般較為復雜,有山巒也有平原。為了保證事故演示效果的流暢性,本研究通過分形算法繪制出所需的地形輪廓[9],采用紋理映射技術(shù)對地貌特征進行表現(xiàn),最終得到渲染速度較快,且具有一定逼真度的事故現(xiàn)場場景。其具體方法如下:
1)采用分形方法生成地形。對山區(qū)進行建模時,由于山區(qū)地形存在隨機性、復雜性,可采取分形算法來生成三維地形輪廓[10-11]。首先對每個地形塊所在的平面高度進行隨機賦值,山區(qū)地形或平緩或陡峭則取決于隨機量的范圍。然后對各個地形塊的間距進行隨機賦值,山峰的密集程度則同樣取決于采用的隨機數(shù)范圍。
2)采用紋理映射技術(shù)對地貌特征進行表現(xiàn)。地形模型建好后,使用OpenGL紋理映射技術(shù)將地形的高程數(shù)據(jù)傳遞到地形模型上[12],紋理映射技術(shù)將紋理圖片坐標與地形模型的幾何坐標一一對應綁定,將紋理圖片映射到地形模型上,實現(xiàn)立體逼真的地貌效果。實現(xiàn)紋理映射需要通過2個步驟:①定義紋理,初始化并指定紋理圖片的映射方式;②紋理映射,說明紋理坐標與映射對象幾何坐標的對應關(guān)系。最終生成的地形效果如圖3、圖4所示。

圖3 較平緩的丘陵

圖4 較陡峭的山區(qū)
2.1場景漫游技術(shù)
為了增強事故演示時的交互性與沉浸感,本平臺通過視點控制技術(shù)實現(xiàn)了場景漫游[13]。OpenGL圖形接口中提供了工具函數(shù)gluLookAt()。該函數(shù)相當于一臺攝影機,在函數(shù)中可以指定攝影機的位置(視點)、攝影機瞄準的參考點(注視點)以及攝影機的朝向。函數(shù)形式如下:
void gluLookAt(
GLdouble eyex,GLdouble eyey,GLdouble eyez,
GLdouble centerx,GLdouble centery,GLdouble centerz,
GLdouble upx,GLdouble upy,GLdouble upz)其中:eyex,eyey,eyez用來指定視點的位置;centerx,centery,centerz用來指定期望視線上的任意一點(即注視點),通常取觀測場景的中心;upx,upy,upz用來指定向上方向。
在虛擬場景中,漫游即相當于視點在進行運動[14],同樣也相當于攝影機在運動。觀察者在場景中漫游時須考慮以下兩種情況:①當觀察者在場景中前進或后退時,此時視點與注視點同時移動,視點與注視點坐標值同時增大或減小;②當觀察者在場景中轉(zhuǎn)向時,此時視點應固定,而注視點以視點為中心旋轉(zhuǎn)進行圓周運動。在鍵盤消息函數(shù)中定義相應的操作,如前進、后退、轉(zhuǎn)向等,根據(jù)具體操作來改變視點和注視點的參數(shù)值即可實現(xiàn)場景漫游功能。
2.2演示動畫實現(xiàn)
對于一起具體的交通事故進行事故再現(xiàn),最終要生成事故演示動畫。動畫實現(xiàn)[15]的基本原理是利用人眼的視覺殘留特性而以一定的速度播放靜止的畫面(幀),這些畫面在人眼中形成了連續(xù)運動的效果。畫面的播放速度不能過慢也不能過快,過慢會使得動畫不夠平滑、流暢,過快則導致人眼不能及時反應,一般播放速度應大于24幀/s。計算機在實現(xiàn)動畫時可以采用“畫—擦—畫”的技術(shù),即畫好一幅圖后,將其擦掉,緊接著再畫另一幅圖,這樣當擦除圖畫達到一定的頻率時就形成了連續(xù)的動畫。
在OpenGL中,可利用雙緩存技術(shù)[16]來實現(xiàn)上述的“畫—擦—畫”方式。該技術(shù)在顯存中開辟兩塊完整的顏色緩沖區(qū),在一個緩沖區(qū)中進行圖形的繪制,在另一個緩沖區(qū)中進行圖形的顯示。當一幀圖畫繪制完成后,兩個緩沖區(qū)進行交換,然后剛才用來繪圖的緩沖區(qū)被用來進行顯示,而用來顯示的緩沖區(qū)則用于繪圖。通過這樣的交換使繪制的圖形達到動畫效果,并使效率大大提高。利用雙緩存技術(shù)實現(xiàn)動畫需要建立一個系統(tǒng)時鐘及相應的驅(qū)動機制,時鐘可使得系統(tǒng)每隔一段時間就驅(qū)動緩存進行交換,這樣即可形成流暢的動畫。
使用所建平臺對發(fā)生于2012年8月26日的延安“8.26”特大交通事故進行場景構(gòu)建。通過輸入相應的現(xiàn)場數(shù)據(jù)生成事故現(xiàn)場道路以及地形,導入相應車輛模型以及計算得出的車輛運行軌跡數(shù)據(jù),最終得到事故演示的關(guān)鍵幀,如圖5所示。通過鍵盤操作移動視點并改變觀察的位置和角度,其效果如圖6所示。

圖5 事故關(guān)鍵幀

圖6 變換視點后效果
本文綜合運用3DMAX與OpenGL建立事故三維綜合演示平臺,對于場景渲染速度進行優(yōu)化,使演示效果更加流暢,參數(shù)化生成事故現(xiàn)場道路以及周邊環(huán)境,使得演示平臺實用性得到增強。在此基礎上通過漫游來提升交互性,利用雙緩存技術(shù)實現(xiàn)事故動畫的流暢演示。實際案例表明本平臺可以滿足事故再現(xiàn)的相關(guān)要求,能夠為事故責任判定提供更為充實的依據(jù)。
[1]馬社強,薛菁菁.我國道路交通事故責任認定理論和方法發(fā)展綜述[J].中國人民公安大學學報:自然科學版,2013,(3):27-30.
[2]張偉,李一兵,胡遠志.基于OpenGL的交互式虛擬三維事故場景構(gòu)建[J].公路交通科技,2003,20(2):108 -110.
[3]肖瀟,朱大明,夏蓉.基于OpenGL的火災模型構(gòu)建的研究與實現(xiàn)[J].科學技術(shù)與工程,2012,12(5):1090 -1093.
[4]包欣,王諾.基于3DMAX的三維虛擬校園建模的方法研究[J].數(shù)字技術(shù)與應用,2012(12):56-56.
[5]康鳳娥,孔令德.MFC框架下3DS模型接口的研究與實現(xiàn)[J].山西師范大學學報:自然科學版,2013,27(1):43-48.
[6]劉鵬程,何宗宜,楊幫會.利用OpenGL顯示列表技術(shù)實現(xiàn)GIS對象的符號化[J].測繪信息與工程,2005,30(6):26-27.
[7]紀振海,段建中,谷計劃.基于OpenGL的漸開線弧齒錐齒輪三維參數(shù)化建模[J].工程設計學報,2009,16(6):432-435.
[8]阮宇智,楊欽,金宇林.基于OpenGL顯示列表的三維地質(zhì)體模型快速顯示算法[J].石油工業(yè)計算機應用,2006,14(3):20-23.
[9]鄭佳榮,王強,占文鋒.三維建模方法研究現(xiàn)狀綜述[J].北京工業(yè)職業(yè)技術(shù)學院學報,2013,12(4):5-7.
[10]王芳,李壯志,鄭卉卉.OpenGL和分形算法在地形繪制中的應用[J].微計算機信息,2007,23(1-3):312 -314.[11]黃斌.基于圖像超分辨率三維幾何建模技術(shù)[J].重慶理工大學學報:自然科學版,2013,27(3):85-90.
[12]馬甜甜,段錦,祝勇,等.OpenGL中模擬目標與實時場景的融合技術(shù)[J].計算機系統(tǒng)應用,2013,22(3):205 -208.
[13]曹丹丹,朱彩英,劉曉春.基于碰撞檢測的交互式三維場景漫游系統(tǒng)研究與實現(xiàn)[J].測繪通報,2014,(2):97-100.
[14]常洪強,劉爽,李國超.基于OpenGL的3DS文件解析及視點移動和三維選擇的實現(xiàn)[J].電子設計工程,2011,19(20):14-17.
[15]莊建東,曾勇進.計算機動畫處理技術(shù)及方法[J].計算機系統(tǒng)應用,2013,22(9):203-205.
[16]宋永軍,蘇鴻根.VC環(huán)境下OpenGL動畫的實現(xiàn)方式與特性分析[J].計算機應用與軟件,2004,21(4):102 -103.
(責任編輯楊黎麗)
Research About Three-Dimensional Demonstration Platform About Accidents Based on OpenGL
ZHOU Yang1,LIU Yong-tao2
(1.Department of Vehicle Engineering,Xi'an Aeronautical University,Xi'an 710077,China;2.School of Automobile,Chang'an University,Xi'an 710064,China)
Using the modeling software 3DMAX and the graphical interface OpenGL,the scene of road traffic accidents in three-dimension was reconstructed.The optimization of rendering speed of the road traffic accidents scene was studied and parameterized generation of the accident scene was obtained.Then the interaction of system by using roaming technology was improved.At last,this system was used to simulate a specific accident and the result turns out that it can be used for accurate reconstruction for actual road traffic accidents.
the scene of accident;three-dimensional reconstruction;rendering speed;parameterization
TP206
A
1674-8425(2015)04-0077-04
10.3969/j.issn.1674-8425(z).2015.04.015
2015-01-12
國家自然科學基金資助項目(51278062);西安航空學院校級研究項目(2014KY1208)
周揚(1989—),男,陜西漢中人,助教,碩士,主要從事道路交通安全研究。
周揚,劉永濤.基于OpenGL的事故三維綜合演示平臺[J].重慶理工大學學報:自然科學版,2015(4):77 -80.
format:ZHOU Yang,LIU Yong-tao.Research About Three-Dimensional Demonstration Platform About Accidents Based on OpenGL[J].Journal of Chongqing University of Technology:Natural Science,2015(4):77-80.