聶 穎,竇長旭
(中國電子科技集團公司第十五研究所 地理信息與圖形圖像技術(shù)研發(fā)中心,北京 100083)
隨著計算機信息化手段的日益普及和發(fā)展,以矢量圖形動畫實現(xiàn)為核心的圖形推演技術(shù)已被廣泛地應(yīng)用于仿真模擬、情況匯報和態(tài)勢推演等各類軍事應(yīng)用中,以達到幫助使用者更好地展示仿真過程、匯報值班情況或推演作戰(zhàn)謀劃的目的[1]。
圖形推演主要負責完成目標和場景的動態(tài)表達定義和演播,是圖形處理平臺的一個組成部分,其依托于圖形數(shù)據(jù)管理和圖形符號庫,為最終上層應(yīng)用提供圖形動畫支撐,是態(tài)勢推演應(yīng)用的關(guān)鍵部分。目前,許多動畫推演和圖形處理類的軟件[2-3]都具備了圖形推演的基本能力,基本都實現(xiàn)了目標基本動作的設(shè)計,但對動作動畫效果的精細性和準確性缺少深入的研究,往往止步于示意階段。本文將介紹圖形推演在線目標移動效果方面的研究成果。
圖形推演的系統(tǒng)結(jié)構(gòu)如圖1所示,分為核心處理和應(yīng)用兩個層次,核心處理層負責數(shù)據(jù)的生成、顯示、驅(qū)動和控制,應(yīng)用層負責提供操縱目標數(shù)據(jù)和動態(tài)數(shù)據(jù)的各類界面操作。
圖1 圖形推演的系統(tǒng)結(jié)構(gòu)
圖形推演系統(tǒng)的外圍是以圖形推演作為支撐平臺的推演類應(yīng)用。
目標數(shù)據(jù)管理模塊負責目標靜態(tài)數(shù)據(jù)的管理,處理數(shù)據(jù)的生成、修改和刪除。目標數(shù)據(jù)通過調(diào)用圖形繪制算法庫提供的相應(yīng)算法完成顯示繪制。
動作定義模塊為目標對象添加動作,追加到目標數(shù)據(jù)的動作屬性中。根據(jù)實際的需要,還可以設(shè)計動作組和動作集合,實現(xiàn)復(fù)合動作的定義和播放。
計時管理器是推演技術(shù)的重要部分,負責按計時器的單位時間間隔從目標數(shù)據(jù)管理模塊獲取相關(guān)數(shù)據(jù),生成當前時刻的動態(tài)數(shù)據(jù),并記錄在動態(tài)數(shù)據(jù)管理模塊。
動態(tài)數(shù)據(jù)是變化了的靜態(tài)數(shù)據(jù),其初始顯示姿態(tài)和目標靜態(tài)數(shù)據(jù)本身相同,但隨著時刻的變化,目標的顯示效果也會變化。動態(tài)數(shù)據(jù)的顯示也要依靠圖形繪制算法庫完成。依據(jù)動作類型的不同,數(shù)據(jù)變化的方式也不相同。
播放控制主要負責對計時管理器的控制,通過啟動、播放、暫停、停止和定位等指令,控制推演的工作時刻。
視頻錄制提供了與外部應(yīng)用的標準接口,實現(xiàn)推演制作的數(shù)據(jù)共享。錄制的過程也要靠計時管理器一幀一幀地推送渲染。
圖形數(shù)據(jù)動態(tài)表達的基本單位是動作,描述一個動作的基本參數(shù)包括動作標識、動作名稱、起始時間和結(jié)束時間,而根據(jù)動作類型的不同,動作參數(shù)也各不相同。圖形推演支持的常用基本動作包括顯示/隱藏、閃爍、旋轉(zhuǎn)、按軌跡移動、生長和變形等。
在戰(zhàn)場態(tài)勢推演過程中,隨著時間的推移,一些實體的空間位置會發(fā)生改變(如戰(zhàn)役中部隊的行進,飛機對敵方進行空襲等),這就需要定義一個按軌跡移動的動作,其動作參數(shù)為起始時間和移動路線軌跡,前者是線目標移動,后者是點目標移動。點狀目標移動相對簡單,可以通過設(shè)置標號的位置和方向角來體現(xiàn),但對于線狀目標按軌跡的移動,理想效果是使線目標在路線上貼合爬行,因此又稱之為爬行動作定義。
效果指各類推演動作在播放時呈現(xiàn)出的結(jié)果,主要由動態(tài)數(shù)據(jù)管理和圖形繪制算法庫兩個模塊來完成。
對于爬行效果來說,目前大多數(shù)研究者[4]采用的方法都是解決線標首尾兩點的軌跡擬合,中間的點通過設(shè)置間隔容限和差值來實現(xiàn)。這種算法雖然通用,但沒有考慮線標實際含義和線標本身的擬合算法,導(dǎo)致在展示效果和準確性上都存在局限性,在實際推演播放中會呈現(xiàn)比較突兀的顯示姿態(tài),導(dǎo)致軌跡發(fā)生跳躍、偏移。
以帶有寬度的箭標為例,假設(shè)其在一條有變化的道路上爬行,如圖 2(a)所示。箭標有 3個定位點,Ps為起始點,Pe為結(jié)束點,Pn為中間點,圖2給出了3個時刻的箭頭移動結(jié)果,第 1時刻 3點序列為{Ps,Pn,Pe},第 2時刻 3 點 序 列 為{P′s,P′n,P′e},第 3 時 刻 3 點 序 列 為{P″s,P″n,P″e}。
可以看出,如果只采用箭標首尾兩點與軌跡擬合的簡單辦法,則中間點Pn軌跡是否可重合是隨機的。如果軌跡的坡度平緩,則擬合度好一些;如果軌跡變陡峭,則顯示姿態(tài)就比較生硬。
另一方面,對于走向變化特別大的路徑,即使每個爬行點都在路徑上,依然不能很好地擬合,如圖2(c)所示。因為以當前的點數(shù),不可能擬合出變化這樣大的箭頭曲線。因此,要做到每一時刻的箭標都較好地與路徑擬合,不僅需要把每個點都修正到路徑線上,點數(shù)的密度也必須適合,如圖 2(d)所示。 在圖 2(b)中,不僅 Pn點3個時刻都落在路徑上,并且點數(shù)上也有所增加,第2時刻和第3時刻都增加了點數(shù)Pn-1。
圖2 問題效果和期望效果對比圖
但是,擬合點的密度也不能簡單地理解為越多越好,只要記錄表示路徑拐點的關(guān)鍵點即可,如圖2(d)的情況,只需要6個點。
要達到圖 2(b)和圖 2(d)的期望效果,需從圖形繪制生成和軌跡點生成兩個方面細致研究相關(guān)算法。軌跡點生成負責按照計時管理器的時間推進,計算出合適長度和密度的軌跡點陣列;再將生成的軌跡點陣列作為箭標的中軸線點陣列輸入,通過箭標實現(xiàn)算法擬合出對稱美觀的箭標符號。
3.3.1 軌跡爬行算法
采用基于特征點的爬行算法計算出正確的位置點和適合的點數(shù)。計算步驟如下。
(1)提取整個軌跡的折線逼近點序列 P{0,1,…,n},這個點序列的密度取上限,足以達到折線擬合曲線的程度。在整個演播過程中,箭標的起點Ps將從軌跡第0點一直移動到第n點。
(2)根據(jù)當前時刻ti占總時刻的百分比和箭標的長度計算出ti時刻箭頭起點所在的位置 P′s。顯然 P′s是軌跡點陣列P中的一點,其下標的計算方法為:
其中,t為總的移動時間,Ii為第 i個擬合點在P點組中的下標,Ipi為ti時刻擬合點 Pi在離散點組中的下標。根據(jù)各個擬合點在ti時刻的下標,可獲得當前時刻Pi點坐標,P′s=Pi。
(3)依據(jù)箭標的概略長度,在P點陣列中,反向計算出 ti時刻時箭尾點的位置 P′e,則 P集合的子集 Pn{P′s…P′e}就是這一時刻的箭標中軸點陣列,Pn∈P。
(4)但是如步驟(1)所述,這個來自軌跡擬合點的 Pn陣列的點非常密集,兩點之間的距離一般不會超過2個像素,用這些點來形成貝塞爾曲線的拐點,對于箭標來說,無論從性能還是效果上講,都有裁剪的必要。
(5)圖形推演數(shù)據(jù)相當于一種時間序列數(shù)據(jù),對軌跡數(shù)據(jù)的裁剪也可以理解為一種數(shù)據(jù)的聚類運算。對時間序列數(shù)據(jù)進行聚類的算法有基于距離、基于特征和基于模型等多種算法[5]。這里采用基于特征值的方法進行裁剪,以鄰近點之間的坡度和距離作為特征值,對Pn的各個點進行篩除。首先設(shè)置計算關(guān)鍵特征點的距離閾值,默認為所有線段長度數(shù)學(xué)期望的1/2,然后將Pn陣列中的每一點填寫特征值矩陣結(jié)構(gòu),記錄每一點和相鄰點的距離和角度關(guān)系;取每一點和它的相鄰兩點做三角形,計算該點的尖角和對應(yīng)邊長度與折線總長度的比例值,小于角度閾值和比例閾值的點即被篩除。
(6)特征點計算完成后,形成 Pj陣列,Pj∈Pn∈P。
(7)將形成的 Pj點陣列送至圖形繪制算法庫,繪制當前時刻的箭標。
(8)這一時刻的推演步驟完成,計時管理器啟動下一時刻的數(shù)據(jù)推送與繪制,重復(fù)上述步驟。
3.3.2 箭標繪制算法
箭標大致分為箭頭和箭身兩部分。箭頭又可分為箭頸、箭耳和箭尖3部分,箭身則由左、右箭身和箭尾組成。一般來說,箭身兩側(cè)為貝塞爾曲線,以保證箭身的美觀平滑;箭頭采用直線繪制,以保證箭耳和箭尖的銳利效果。
要實現(xiàn)箭標在路徑上的嚴格爬行,箭標本身的繪制算法也很重要,需保證給定了合適的箭頭中軸線的情況下,箭標的兩側(cè)曲線仍有良好的平行度,如圖3所示,P0~P5即為箭標的中軸線。
圖3 箭標組成圖
圖3中,箭頭由 7個點組成,其中第 4點位置已經(jīng)確定,即箭標中軸線的最后一點。根據(jù)箭頭角度、箭耳角度和箭頭占箭標總長的比例,就可以計算出其他6個點,這里不再贅述,重點介紹箭身的生成算法。箭身的生成算法如下。
(1)去除中軸線點陣列中的箭尖頂點,計算第 1點到第n-1點的總長度L。
(2)計算箭身貝塞爾曲線的拐點位置到中軸的距離Gdw序列,第i點的拐點寬度計算公式為:
其中,Neckw為箭頸寬度的 1/2,Tailw為箭尾寬度,L為箭標中軸線的總長度,△ln為當前點與前一點的距離,rss為箭頭收縮系數(shù)。
計算時采用了指數(shù)型的非線性收縮算法,這是式(2)的一個關(guān)鍵點。由于最終目的是為了算出表示箭身曲線的拐點位置,如果各個拐點間的位置都是線性關(guān)系,擬合出的貝塞爾曲線不但收斂速度慢,且線條走向也會比較僵硬,不夠自然光滑。因此,這里采用指數(shù)系數(shù)來改變拐點陣列的走向、平滑度和收斂速度。
(3)根據(jù)拐點寬度Gdwi生成中軸線點兩側(cè)的拐點坐標左點陣列 L{1,…,n-1}和右點陣列 R{1,…,n-1},計算方法如圖4所示。已知 Si-1、Si、Si+1為箭標中軸線上的3點,3點組成一個三角形,計算過Si點與Si-1和Si+1連線平行的線段,線段兩個端點分別為P和Q;再采用定比等分算法,即計算出Li和Ri。公式如下:
圖4 擬合曲線生成算法圖
(4)獲得了 L和 R點序列,取默認調(diào)整比例,就可以擬合出過這些拐點的貝塞爾曲線;按照左箭身—箭頭—右箭身的順序,將集合點序列送入直線繪制函數(shù),即完成了當前時刻箭標的效果顯示。
圖5為“燕尾行動箭標”進行爬行移動的效果截圖。經(jīng)實驗表明,爬行效果在各個彎度上都基本保持了尺寸不變和精確擬合。圖 5(a)為第3 s剛剛開始起步的效果,圖5(b)為第11 s行動箭標在彎路上爬行的效果。
圖5 線目標爬行效果截圖
本文提出的線標爬行算法有效解決了線標移動的軌跡偏移問題,改善了以往按軌跡移動的動畫實現(xiàn)大多只重視點狀目標的實現(xiàn),線狀目標的移動只關(guān)注首尾點或中心點的缺陷。
圖形推演技術(shù)被用于多種軍事應(yīng)用場景中,但不同應(yīng)用場景(如作戰(zhàn)推演[7]、交接班匯報和想定仿真)在應(yīng)用流程上還有很多差別,如前兩者的數(shù)據(jù)大多來自人工生成,而后者則主要是數(shù)據(jù)自動生成。如何整合這些應(yīng)用場合的相同點和不同點,保證不同工作方式下動作參數(shù)獲取的一致性,是今后研究的一個主要方向。同時,研究多個目標同時動作下的時間同步和提速策略,也是影響效果進一步優(yōu)化改進的重要因素。
[1]陳康,徐培德,馬滿好,等.態(tài)勢推演系統(tǒng)結(jié)構(gòu)研究[J].軍事運籌與系統(tǒng)工程,2005,19(3):43-47.
[2]張寶印.基于矢量的時序圖形圖像處理技術(shù)的研究與實踐[D].鄭州:中國人民解放軍信息工程大學(xué),2001.
[3]何忠煥,邊馥苓.GIS系統(tǒng)下二維地圖推演技術(shù)的研究[J].武漢大學(xué)學(xué)報(信息科學(xué)版),2005,30(1):69-72.
[4]張欣,張立立,曹國峰,等.戰(zhàn)場態(tài)勢推演 GIS動態(tài)表達技術(shù)與應(yīng)用[J].地球信息科學(xué),2006,8(4):80-83.
[5]趙恩來,郝文寧,趙水寧,等.改進的基于密度方法的態(tài)勢聚類顯示算法[J].計算機工程,2010,36(18):35-37.
[6]楊瑞平,張小京,趙東波.推演系統(tǒng)中面向角色的二維態(tài)勢研究 [J].系統(tǒng)工程與電子 技術(shù),2007,29(12):2093-2096.