一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法
【專利摘要】本發(fā)明公開了一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法,包括步驟一:基于特定物理模型確定地形變形區(qū)域;步驟二:向變形區(qū)域中插入新頂點;步驟三:采用逐點插入算法,實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu);步驟四:基于特定物理模型計算變形頂點高程值變化值,將變形區(qū)域中所有頂點代入特定的物理模型進行計算,得到頂點的高程變化值;步驟五:得到頂點的高程變化值之后,修改變形區(qū)域頂點的高程值,即得到變形區(qū)域中各頂點經(jīng)過地形變形處理后的高程值,實現(xiàn)局部地形的變形。本發(fā)明采用向變形區(qū)域中插入新頂點的方法,提高了變形區(qū)域中的三角形數(shù)量,解決了以往變形區(qū)域分辨率不足的問題,增強了真實感。
【專利說明】-種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處 理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法,屬 于虛擬現(xiàn)實、計算機仿真【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002] 動態(tài)地形是指在繪制地形時,根據(jù)用戶的操作或需要,通過仿真實體(如車輛、炮 彈、行人等)與地形的交互而實時修改地形的幾何屬性或非幾何屬性。動態(tài)地形繪制屬于 實時繪制領(lǐng)域的問題,所以動態(tài)地形的繪制必然要用到實時繪制的相關(guān)技術(shù),解決實時繪 制所要求共性問題。但是動態(tài)地形有其特殊性,地形需要根據(jù)用戶的操作或仿真實體與地 形的交互而發(fā)生物理上實時的更新,不同于實時繪制的交互,這種改變不僅發(fā)生在繪制階 段,而且系統(tǒng)在底層所維護的地形數(shù)據(jù)結(jié)構(gòu)也要基于特定的物理模型而實時改變。
[0003]地形的生成主要是基于規(guī)則三角網(wǎng)和不規(guī)則三角網(wǎng):(1)規(guī)則三角網(wǎng)方法,該方 法的優(yōu)點是易于實現(xiàn)快速的地形結(jié)構(gòu)遍歷算法,但它不考慮地形模型的復(fù)雜程度變化,一 律采用均勻密度的三角形表示,這種方法的最大缺點是,在地形結(jié)構(gòu)簡單的地方,資源出現(xiàn) 浪費,而結(jié)構(gòu)復(fù)雜的地方,細致程度又不夠,即無法做到資源的優(yōu)化配置。(2)不規(guī)則三角網(wǎng) 方法,該方法能以較少的不規(guī)則三角形逼近幾何高度場,分辨率可調(diào),提高了渲染速度。由 于規(guī)則三角網(wǎng)具有快速、簡單等特點,所以大多數(shù)動態(tài)地形都選擇基于規(guī)則三角網(wǎng)生成,不 規(guī)則三角網(wǎng)在動態(tài)地形中的應(yīng)用較為少見。
[0004]地形變形處理是動態(tài)地形實時繪制需要完成的重要內(nèi)容,這主要包括地形數(shù)據(jù)的 實時更改及由于變形而引起的相關(guān)問題處理。其中,地形數(shù)據(jù)的更改主要包括對變形區(qū)高 程值的修改;而由地形變形而引起的問題主要包括地形的分辨率擴展和變形區(qū)域的連續(xù)性 保持兩個方面。傳統(tǒng)的基于不規(guī)則三角網(wǎng)的動態(tài)地形的地形變形處理方法是基于特定的物 理模型直接對地形數(shù)據(jù)進行查詢和修改。如果應(yīng)用在大規(guī)模地形中,由于沒有對查詢方法 進行優(yōu)化,對變形區(qū)域的分辨率也沒有擴展,那么動態(tài)地形的實時性和真實感都不能滿足 要求。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是為了解決基于不規(guī)則三角網(wǎng)的動態(tài)地形的實時性和真實感問題, 提出了一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法。
[0006]本發(fā)明的一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法,包括 以下幾個步驟:
[0007] 步驟一:根據(jù)需要處理變形對象的形變,選定其對應(yīng)的特定物理模型,基于特定物 理模型確定地形變形區(qū)域;
[0008] 步驟二:向變形區(qū)域中插入新頂點;
[0009] 步驟三:采用逐點插入算法,實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu);
[0010] 步驟四:基于特定物理模型計算變形頂點高程值變化值,將變形區(qū)域中所有頂點 代入特定的物理模型進行計算,得到頂點的高程變化值;
[0011] 步驟五:得到頂點的高程變化值之后,修改變形區(qū)域頂點的高程值,即得到變形區(qū) 域中各頂點經(jīng)過地形變形處理后的高程值,使整個變形區(qū)域呈現(xiàn)出地形變形的效果,實現(xiàn) 局部地形的變形。
[0012] 本發(fā)明的優(yōu)點在于:
[0013] (1)采用向變形區(qū)域中插入新頂點的方法,提高了變形區(qū)域中的三角形數(shù)量,解決 了以往變形區(qū)域分辨率不足的問題,增強了真實感;
[0014] (2)采用格網(wǎng)定位和直線查找相結(jié)合的方法進行新頂點所在三角形查找,大幅提 高了查找的效率,改進了動態(tài)地形的實時性;
[0015] (3)逐點插入算法實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu),快速實現(xiàn)了變形區(qū)域的連續(xù)性。
【專利附圖】
【附圖說明】
[0016] 圖1是本發(fā)明中基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法的流程圖;
[0017] 圖2是本發(fā)明中變形區(qū)域三角網(wǎng)重構(gòu)的流程圖;
[0018] 圖3是本發(fā)明中格網(wǎng)定位法的示意圖;
[0019] 圖4是本發(fā)明中直線查找法的示意圖;
[0020] 圖5是本發(fā)明中頂點在三角形中位置的示意圖
[0021] 圖6是本發(fā)明中頂點在三角形邊上的示意圖
[0022] 圖7是本發(fā)明中局部優(yōu)化算法的示意圖。
【具體實施方式】
[0023] 下面將結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明。
[0024] 本發(fā)明采用向變形區(qū)域中插入新頂點的方法,提高了變形區(qū)域中的三角形數(shù)量, 解決了以往變形區(qū)域分辨率不足的問題,增強了真實感;采用格網(wǎng)定位和直線查找相結(jié)合 的方法進行新頂點所在三角形查找,大幅提高了查找的效率,改進了動態(tài)地形的實時性;逐 點插入算法實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu),快速實現(xiàn)了變形區(qū)域的連續(xù)性。
[0025] 本發(fā)明的一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法,流程 如圖1所示,包括以下幾個步驟:
[0026] 步驟一:根據(jù)需要處理變形對象的形變,選定其對應(yīng)的特定物理模型(比如炸彈 引起的彈坑形變是基于彈坑模型計算形變,汽車壓過草地出現(xiàn)的車轍是基于車轍的物理模 型計算形變),基于特定物理模型確定地形變形區(qū)域。
[0027] 動態(tài)地形在仿真過程中對地形地進行修改,使局部地形發(fā)生變形,呈現(xiàn)新的地形 地貌,例如作戰(zhàn)過程中炮彈擊中地面產(chǎn)生的彈坑,車輛駛過松軟的土地形成的車轍,自然或 人為原因形成的山地的滑坡坍塌、橋梁坍塌、道路阻斷等現(xiàn)象,這些地形變形都需要依賴于 其特定的物理模型。在已知地形變形位置后,通過對物理模型的計算可以確定地形發(fā)生變 形的精確區(qū)域。
[0028]步驟二:向變形區(qū)域中插入新頂點。
[0029] 由于變形區(qū)域發(fā)生了地形變形,如果用原有地形的分辨率去描述,會顯得很粗糙, 不夠真實,所以需要向變形區(qū)域中插入新的頂點,完成變形區(qū)域分辨率的擴展。具體插入頂 點的數(shù)量及分布密度,可根據(jù)實際的仿真效果來確定調(diào)整。(確定了變形區(qū)域,即確定了頂 點的插入范圍,插入的方法有很多種,一般采用隨機插入,插入的數(shù)量當(dāng)然是越多,效果越 細膩,但是數(shù)量過多又會影響程序的實時性,這之間需要反復(fù)調(diào)試選擇一個最好的數(shù)值,所 以頂點的數(shù)量根據(jù)實際的仿真效果來確定調(diào)整。)
[0030] 步驟三:采用逐點插入算法,實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu);
[0031] 流程如圖2所示,具體包括:
[0032] 步驟3. 1 :從變形區(qū)域新插入的點集中取任意一頂點。
[0033] 步驟3. 2:采用格網(wǎng)定位和直線查找相結(jié)合的方法進行該頂點所在三角形查找, 具體為:
[0034] (3. 2a)格網(wǎng)定位法,如圖3所示:
[0035] 當(dāng)在已構(gòu)三角網(wǎng)中插入點P時,以往一般是事先對離散點按X坐標(biāo)排序,這樣相鄰 點所在三角形也相對較近,但當(dāng)點的y坐標(biāo)差異較大時,雖然兩點排序后相鄰,但它們所在 三角形卻相距很遠,這時定位點所在三角形的效率是很低的。采用格網(wǎng)定位法可大幅提高 定位到點P所在三角形的效率。
[0036] 首先在對離散點處理后可得到所有離散點X, y坐標(biāo)的最大最小值X_、Xnin、y_、 ymin,于是可以構(gòu)建一個格網(wǎng)把所有離散點包含在內(nèi)。由于每個格子用一個整型數(shù)據(jù)表示, 所以格子的數(shù)量不超過離散點數(shù)量,但如果格子數(shù)量太少,每個格子內(nèi)會有大量三角形,從 而點在該格子內(nèi)定位三角形即使按照直線查找仍然要查找大量三角形,沒起到快速定位的 作用,經(jīng)過反復(fù)試驗,格子數(shù)為離散點數(shù)的十分之一左右比較合適。假設(shè)離散點基本均勻分 布,所以使行數(shù)和列數(shù)分別與y坐標(biāo)和X坐標(biāo)的跨度成正比。則
【權(quán)利要求】
1. 一種應(yīng)用在基于不規(guī)則三角網(wǎng)的動態(tài)地形中的地形變形處理方法,包括以下幾個步 驟: 步驟一:根據(jù)需要處理變形對象的形變,選定其對應(yīng)的特定物理模型,基于特定物理模 型確定地形變形區(qū)域; 步驟二:向變形區(qū)域中插入新頂點; 插入新頂點的數(shù)量及分布密度,根據(jù)實際仿真效果確定調(diào)整; 步驟三:采用逐點插入算法,實現(xiàn)變形區(qū)域三角網(wǎng)重構(gòu); 具體包括: 步驟3. 1 :從變形區(qū)域新插入的點集中取任意一頂點; 步驟3.2 :采用格網(wǎng)定位和直線查找相結(jié)合的方法進行該頂點所在三角形查找,具體 為: (3. 2a)格網(wǎng)定位法: 首先,進行離散點處理,得到所有離散點X,y坐標(biāo)的最大最小值1_、1_、7_、7_,構(gòu)建 一個格網(wǎng)把所有離散點包含在內(nèi),格子數(shù)為離散點數(shù)的十分之一;假設(shè)離散點均勻分布,行 數(shù)和列數(shù)分別與y坐標(biāo)和X坐標(biāo)的跨度成正比,則:
式中: ^一離散點區(qū)域橫向?qū)挾?Iy-離散點區(qū)域堅向?qū)挾?Np-離散點數(shù)量 N-格子數(shù) 點P所在格網(wǎng)的行和列位置則由其坐標(biāo)值判斷:
式中 X,y-離散點的橫縱坐標(biāo) xmin,ymin-所有離散點中橫、縱坐標(biāo)最小值 lx,Iy-離散點區(qū)域橫向,堅向?qū)挾?Nm-格網(wǎng)行數(shù)和列數(shù) 每插入一個點時,計算出這個點對應(yīng)在格網(wǎng)中的位置(row,col),如果該格子是第一次 插入點,則沒有記錄三角形編號,任取一三角形或在點排序的情況下從最后一個三角形開 始查找;否則從該格子所記錄的三角形編號開始查找,定位點P所在三角形; (3. 2b)直線查找法: 假設(shè)插入點W時,從三角形ABC開始查找,點Pi所在三角形為Ai Ci,判斷點 Pi分別是在每條邊的左側(cè)還是右側(cè),若左側(cè)用+1表示,右側(cè)用-1表示,在直線上用0表 示,通過±1或0的數(shù)來表示點相對某三角形的位置;若知道三個值全為+1,則找到點 所在三角形;若只有一個-1,則沿著這條邊查找;當(dāng)有兩個-1時,設(shè)三角形ABC的重心 為P,設(shè)點P相對BC和CA邊的位置都為-1,則判斷C點相對直線PP'的位置,若為左側(cè) +1,則沿PP'右側(cè)BC方向查找;若為右側(cè)-1,則沿PP'左側(cè)AC方向查找;若為0,沿AC或 BC方向查找均可; 步驟3. 3 :在找到頂點所在三角形后,采用面積判斷法判斷頂點是否在三角形內(nèi)或者 在三角形邊上;假設(shè)三角形abc、三角形abv、三角形bcv、三角形acv的面積分別為S、S1、 S2、S3,做如下判斷: 如果Sl = 0,且S1+S2+S3 = S,則說明點V在邊ab上; 如果S2 = 0,且S1+S2+S3 = S,則說明點V在邊be上; 如果S3 = 0,且S1+S2+S3 = S,則說明點V在邊ac上; 如果Sl關(guān)0, S2關(guān)0, S3關(guān)0,且S1+S2+S3 = S,則說明點V在三角形abc內(nèi)部; 步驟3. 4 :調(diào)整三角形拓撲結(jié)構(gòu);在確定插入頂點的具體位置后,按下面兩種情況進行 修改: (1) 頂點在三角形內(nèi),刪除原三角形abc,增加點V,與頂點a、b、c形成3個新的三角 形; (2) 頂點在三角形的邊上,刪除邊所對應(yīng)的兩個三角形即三角形abc、三角形bed,增加 點V與頂點a、b、c、d形成4個三角形:即三角形abv、三角形acv、三角形bdv、三角形dev ; 步驟3. 5 :使用局部優(yōu)化算法,逐個更新所有生成的三角形,包括以下步驟: (1)將兩個具有共同邊的三角形合成一個多邊形; ⑵以最大空圓準(zhǔn)則作檢查,觀其第四個頂點是否在三角形的外接圓之內(nèi); (3) 如果在,修正對角線即將對角線對調(diào),即完成局部優(yōu)化過程的處理; 步驟3. 6 :重復(fù)步驟3. 1至步驟3. 6直到取完變形區(qū)域新插入點集中的所有頂點; 步驟四:基于特定物理模型計算變形頂點高程值變化值,將變形區(qū)域中所有頂點代入 特定的物理模型進行計算,得到頂點的高程變化值; 步驟五:得到頂點的高程變化值之后,修改變形區(qū)域頂點的高程值,即得到變形區(qū)域中 各頂點經(jīng)過地形變形處理后的高程值,使整個變形區(qū)域呈現(xiàn)出地形變形的效果,實現(xiàn)局部 地形的變形。
【文檔編號】G06T19/20GK104376601SQ201410649429
【公開日】2015年2月25日 申請日期:2014年11月14日 優(yōu)先權(quán)日:2014年11月14日
【發(fā)明者】李妮, 李翔, 丁瑩 申請人:北京航空航天大學(xué)