周揚,劉永濤
(1.西安航空學(xué)院車輛工程系,西安710077;2.長安大學(xué)汽車學(xué)院,西安710064)
基于OpenGL的事故三維綜合演示平臺
周揚1,劉永濤2
(1.西安航空學(xué)院車輛工程系,西安710077;2.長安大學(xué)汽車學(xué)院,西安710064)
利用3DMAX建模軟件與OpenGL圖形接口軟件對道路交通事故現(xiàn)場進(jìn)行三維重建,針對事故現(xiàn)場場景的渲染速度進(jìn)行優(yōu)化,生成參數(shù)化的現(xiàn)場環(huán)境,并通過漫游技術(shù)來提高系統(tǒng)的交互性。針對一起具體的交通事故進(jìn)行模擬演示,結(jié)果表明:該系統(tǒng)能夠?qū)嶋H道路交通事故進(jìn)行準(zhǔn)確再現(xiàn)。
事故現(xiàn)場;三維重建;渲染速度;參數(shù)化
近年來,隨著我國汽車保有量的不斷增加,道路交通安全形勢日趨嚴(yán)峻,道路交通事故發(fā)生總數(shù)及其傷亡人數(shù)一直居于高位。在處理交通事故時,通常是交警根據(jù)現(xiàn)場的痕跡或當(dāng)事人的口述經(jīng)過簡單計算直接得出處理結(jié)果,其結(jié)果往往缺乏直觀性,易引起糾紛[1]。隨著虛擬現(xiàn)實技術(shù)的發(fā)展,目前能夠運用計算機(jī)估計出事故發(fā)生前后車輛的速度、行駛軌跡等,再通過逼真的動畫再現(xiàn)事故發(fā)生的整個場景與過程,使事故處理結(jié)果更具有說服性[2]。
在針對一起具體交通事故進(jìn)行再現(xiàn)時,為了了解事故發(fā)生的整個過程,往往需要從較遠(yuǎn)的視點來俯瞰整個事故場景,涉及的場景較大,模型數(shù)量較多。為了保證事故再現(xiàn)時具有良好的流暢性與交互性,本文研究了常見的事故場景漫游方法,創(chuàng)建了用于輔助處理的事故三維綜合演示平臺,最后對一起真實交通事故進(jìn)行了成功再現(xiàn)。本研究主要采用3DMAX建模軟件建立三圍模型,并通過OpenGL圖形接口軟件將模型導(dǎo)入到VC++編程環(huán)境中實現(xiàn)可視化。
1.1場景快速渲染
為了逼真地再現(xiàn)事故現(xiàn)場,使用3DMAX建模軟件對一般事故現(xiàn)場涵蓋的道路設(shè)施、植物及周邊環(huán)境進(jìn)行建模。3DMAX軟件具有強(qiáng)大的建模能力,利用其多邊形建模工具[4]可以快速地創(chuàng)建所需模型,并保證模型具有較高的精細(xì)度。然而,由于創(chuàng)建的模型邊數(shù)及定點數(shù)較多,在VC++編程環(huán)境中利用OpenGL圖形接口軟件對模型進(jìn)行大規(guī)模調(diào)用時存在渲染速度較慢的問題。
編寫程序?qū)?DMAX生成的3DS模型進(jìn)行讀取后,模型的頂點、多邊形、紋理等數(shù)據(jù)即被保存到專門的數(shù)組中[5],此時可采用兩種方式渲染模型:①即時模式,即時給出函數(shù)命令,OpenGL隨即采用給出的函數(shù)來繪制模型;②OpenGL顯示列表,函數(shù)命令被存儲到顯示列表中,當(dāng)需要渲染模型時即調(diào)用相應(yīng)的顯示列表,其中的OpenGL函數(shù)命令按順序被執(zhí)行。使用顯示列表的一個優(yōu)勢在于當(dāng)要多次在場景中渲染同一個復(fù)雜物體時,系統(tǒng)只需計算一次該物體的頂點、三角形等信息,可顯著提高場景的渲染速度。
在對道路交通事故現(xiàn)場進(jìn)行建模時,一般存在大量的模型(比如道路、隔離帶、道路設(shè)施等)需要被重復(fù)調(diào)用,如果使用即時模式進(jìn)行繪制,會由于大量的頂點計算而對計算機(jī)造成極大負(fù)擔(dān),場景的渲染速度將會受到嚴(yán)重影響[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ù)量,有兩車道、四車道等。道路的常見設(shè)施包括隔離帶、護(hù)欄、樹木等。
通過調(diào)用預(yù)先制作好的道路、隔離帶、護(hù)欄、樹木三維模型,存入顯示列表[8],連續(xù)調(diào)用相應(yīng)模型的顯示列表即可生成所需長度的道路及其配套設(shè)施,而模型調(diào)用的次數(shù)則取決于所需道路的長度。道路的參數(shù)化建模步驟如圖2所示。
圖2 道路參數(shù)化建模步驟
1.2.2地形的參數(shù)化建模
事故發(fā)生的現(xiàn)場地形一般較為復(fù)雜,有山巒也有平原。為了保證事故演示效果的流暢性,本研究通過分形算法繪制出所需的地形輪廓[9],采用紋理映射技術(shù)對地貌特征進(jìn)行表現(xiàn),最終得到渲染速度較快,且具有一定逼真度的事故現(xiàn)場場景。其具體方法如下:
1)采用分形方法生成地形。對山區(qū)進(jìn)行建模時,由于山區(qū)地形存在隨機(jī)性、復(fù)雜性,可采取分形算法來生成三維地形輪廓[10-11]。首先對每個地形塊所在的平面高度進(jìn)行隨機(jī)賦值,山區(qū)地形或平緩或陡峭則取決于隨機(jī)量的范圍。然后對各個地形塊的間距進(jìn)行隨機(jī)賦值,山峰的密集程度則同樣取決于采用的隨機(jī)數(shù)范圍。
2)采用紋理映射技術(shù)對地貌特征進(jìn)行表現(xiàn)。地形模型建好后,使用OpenGL紋理映射技術(shù)將地形的高程數(shù)據(jù)傳遞到地形模型上[12],紋理映射技術(shù)將紋理圖片坐標(biāo)與地形模型的幾何坐標(biāo)一一對應(yīng)綁定,將紋理圖片映射到地形模型上,實現(xiàn)立體逼真的地貌效果。實現(xiàn)紋理映射需要通過2個步驟:①定義紋理,初始化并指定紋理圖片的映射方式;②紋理映射,說明紋理坐標(biāo)與映射對象幾何坐標(biāo)的對應(yīng)關(guān)系。最終生成的地形效果如圖3、圖4所示。
圖3 較平緩的丘陵
圖4 較陡峭的山區(qū)
2.1場景漫游技術(shù)
為了增強(qiáng)事故演示時的交互性與沉浸感,本平臺通過視點控制技術(shù)實現(xiàn)了場景漫游[13]。OpenGL圖形接口中提供了工具函數(shù)gluLookAt()。該函數(shù)相當(dāng)于一臺攝影機(jī),在函數(shù)中可以指定攝影機(jī)的位置(視點)、攝影機(jī)瞄準(zhǔn)的參考點(注視點)以及攝影機(jī)的朝向。函數(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用來指定向上方向。
在虛擬場景中,漫游即相當(dāng)于視點在進(jìn)行運動[14],同樣也相當(dāng)于攝影機(jī)在運動。觀察者在場景中漫游時須考慮以下兩種情況:①當(dāng)觀察者在場景中前進(jìn)或后退時,此時視點與注視點同時移動,視點與注視點坐標(biāo)值同時增大或減??;②當(dāng)觀察者在場景中轉(zhuǎn)向時,此時視點應(yīng)固定,而注視點以視點為中心旋轉(zhuǎn)進(jìn)行圓周運動。在鍵盤消息函數(shù)中定義相應(yīng)的操作,如前進(jìn)、后退、轉(zhuǎn)向等,根據(jù)具體操作來改變視點和注視點的參數(shù)值即可實現(xiàn)場景漫游功能。
2.2演示動畫實現(xiàn)
對于一起具體的交通事故進(jìn)行事故再現(xiàn),最終要生成事故演示動畫。動畫實現(xiàn)[15]的基本原理是利用人眼的視覺殘留特性而以一定的速度播放靜止的畫面(幀),這些畫面在人眼中形成了連續(xù)運動的效果。畫面的播放速度不能過慢也不能過快,過慢會使得動畫不夠平滑、流暢,過快則導(dǎo)致人眼不能及時反應(yīng),一般播放速度應(yīng)大于24幀/s。計算機(jī)在實現(xiàn)動畫時可以采用“畫—擦—畫”的技術(shù),即畫好一幅圖后,將其擦掉,緊接著再畫另一幅圖,這樣當(dāng)擦除圖畫達(dá)到一定的頻率時就形成了連續(xù)的動畫。
在OpenGL中,可利用雙緩存技術(shù)[16]來實現(xiàn)上述的“畫—擦—畫”方式。該技術(shù)在顯存中開辟兩塊完整的顏色緩沖區(qū),在一個緩沖區(qū)中進(jìn)行圖形的繪制,在另一個緩沖區(qū)中進(jìn)行圖形的顯示。當(dāng)一幀圖畫繪制完成后,兩個緩沖區(qū)進(jìn)行交換,然后剛才用來繪圖的緩沖區(qū)被用來進(jìn)行顯示,而用來顯示的緩沖區(qū)則用于繪圖。通過這樣的交換使繪制的圖形達(dá)到動畫效果,并使效率大大提高。利用雙緩存技術(shù)實現(xiàn)動畫需要建立一個系統(tǒng)時鐘及相應(yīng)的驅(qū)動機(jī)制,時鐘可使得系統(tǒng)每隔一段時間就驅(qū)動緩存進(jìn)行交換,這樣即可形成流暢的動畫。
使用所建平臺對發(fā)生于2012年8月26日的延安“8.26”特大交通事故進(jìn)行場景構(gòu)建。通過輸入相應(yīng)的現(xiàn)場數(shù)據(jù)生成事故現(xiàn)場道路以及地形,導(dǎo)入相應(yīng)車輛模型以及計算得出的車輛運行軌跡數(shù)據(jù),最終得到事故演示的關(guān)鍵幀,如圖5所示。通過鍵盤操作移動視點并改變觀察的位置和角度,其效果如圖6所示。
圖5 事故關(guān)鍵幀
圖6 變換視點后效果
本文綜合運用3DMAX與OpenGL建立事故三維綜合演示平臺,對于場景渲染速度進(jìn)行優(yōu)化,使演示效果更加流暢,參數(shù)化生成事故現(xiàn)場道路以及周邊環(huán)境,使得演示平臺實用性得到增強(qiáng)。在此基礎(chǔ)上通過漫游來提升交互性,利用雙緩存技術(shù)實現(xiàn)事故動畫的流暢演示。實際案例表明本平臺可以滿足事故再現(xiàn)的相關(guān)要求,能夠為事故責(zé)任判定提供更為充實的依據(jù)。
[1]馬社強(qiáng),薛菁菁.我國道路交通事故責(zé)任認(rèn)定理論和方法發(fā)展綜述[J].中國人民公安大學(xué)學(xué)報:自然科學(xué)版,2013,(3):27-30.
[2]張偉,李一兵,胡遠(yuǎn)志.基于OpenGL的交互式虛擬三維事故場景構(gòu)建[J].公路交通科技,2003,20(2):108 -110.
[3]肖瀟,朱大明,夏蓉.基于OpenGL的火災(zāi)模型構(gòu)建的研究與實現(xiàn)[J].科學(xué)技術(shù)與工程,2012,12(5):1090 -1093.
[4]包欣,王諾.基于3DMAX的三維虛擬校園建模的方法研究[J].數(shù)字技術(shù)與應(yīng)用,2012(12):56-56.
[5]康鳳娥,孔令德.MFC框架下3DS模型接口的研究與實現(xiàn)[J].山西師范大學(xué)學(xué)報:自然科學(xué)版,2013,27(1):43-48.
[6]劉鵬程,何宗宜,楊幫會.利用OpenGL顯示列表技術(shù)實現(xiàn)GIS對象的符號化[J].測繪信息與工程,2005,30(6):26-27.
[7]紀(jì)振海,段建中,谷計劃.基于OpenGL的漸開線弧齒錐齒輪三維參數(shù)化建模[J].工程設(shè)計學(xué)報,2009,16(6):432-435.
[8]阮宇智,楊欽,金宇林.基于OpenGL顯示列表的三維地質(zhì)體模型快速顯示算法[J].石油工業(yè)計算機(jī)應(yīng)用,2006,14(3):20-23.
[9]鄭佳榮,王強(qiáng),占文鋒.三維建模方法研究現(xiàn)狀綜述[J].北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報,2013,12(4):5-7.
[10]王芳,李壯志,鄭卉卉.OpenGL和分形算法在地形繪制中的應(yīng)用[J].微計算機(jī)信息,2007,23(1-3):312 -314.[11]黃斌.基于圖像超分辨率三維幾何建模技術(shù)[J].重慶理工大學(xué)學(xué)報:自然科學(xué)版,2013,27(3):85-90.
[12]馬甜甜,段錦,祝勇,等.OpenGL中模擬目標(biāo)與實時場景的融合技術(shù)[J].計算機(jī)系統(tǒng)應(yīng)用,2013,22(3):205 -208.
[13]曹丹丹,朱彩英,劉曉春.基于碰撞檢測的交互式三維場景漫游系統(tǒng)研究與實現(xiàn)[J].測繪通報,2014,(2):97-100.
[14]常洪強(qiáng),劉爽,李國超.基于OpenGL的3DS文件解析及視點移動和三維選擇的實現(xiàn)[J].電子設(shè)計工程,2011,19(20):14-17.
[15]莊建東,曾勇進(jìn).計算機(jī)動畫處理技術(shù)及方法[J].計算機(jī)系統(tǒng)應(yīng)用,2013,22(9):203-205.
[16]宋永軍,蘇鴻根.VC環(huán)境下OpenGL動畫的實現(xiàn)方式與特性分析[J].計算機(jī)應(yīng)用與軟件,2004,21(4):102 -103.
(責(zé)任編輯楊黎麗)
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
國家自然科學(xué)基金資助項目(51278062);西安航空學(xué)院校級研究項目(2014KY1208)
周揚(1989—),男,陜西漢中人,助教,碩士,主要從事道路交通安全研究。
周揚,劉永濤.基于OpenGL的事故三維綜合演示平臺[J].重慶理工大學(xué)學(xué)報:自然科學(xué)版,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.