本發(fā)明涉及圖像處理技術(shù),特別涉及一種物體模型的渲染簡化的方法及系統(tǒng)。
背景技術(shù):
隨著電子游戲技術(shù)的發(fā)展,為了使得電子游戲中的各個圖像逼真且顯示效果好,特別是大型的互聯(lián)網(wǎng)三維電子游戲,電子游戲中的物體模型的面數(shù)越來越多以及細節(jié)度也越來越精細。但是,在客戶端顯示電子游戲中的這些物體模型時,當(dāng)客戶端配置比較低,比如中央處理器的處理速度比較低或/和顯卡的顯示處理能力低時,這些面數(shù)和細節(jié)度多的物體模型有很大可能顯示延遲或無法顯示,使得玩家的體驗度低。
為了解決這一問題,就需要對電子游戲中的物體模型進行多細節(jié)層次(LOD,Levels of Detail)算法處理,也就是根據(jù)物體模型的節(jié)點在電子游戲的顯示環(huán)境中所處的位置及重要度,決定物體模型渲染的資源分配,降低非重要物體模型的面數(shù)和細節(jié)度,從而獲得高效率的渲染運算,這樣,對于配置比較低的客戶端就可以處理這些物體模型。當(dāng)然,這樣對物體模型的渲染簡化是在保證物體模型外形相似的前提下進行的,用比較簡單的物體模型替代了復(fù)雜的原始物體模型,以減少處理的數(shù)據(jù)量,加快處理速度。一般地,LOD算法用于處理電子游戲的顯示環(huán)境中相對較小、遠離玩家視線或者不重要區(qū)域,以便降低電子游戲資源的渲染開銷及所占用較少的傳輸帶寬,從而既可以提高客戶端運行電子游戲的速度,又不明顯影響電子游戲的場景視覺效果,給玩家很好的體驗度。
具體地說,采用LOD算法對物體模型進行渲染簡化可以基于頂點刪除方式,如圖1所示,圖1為現(xiàn)有技術(shù)的基于頂點刪除方式進行物體模型渲染簡化的結(jié)構(gòu)示意圖:左邊的物體模型為多頂點的物體模型,一般地,物體模型都是由多個三角面組成,刪除該物體模型的一個頂點A并將所有連接到該頂點A的三角面重新三角化,以減少物體模型的三角面數(shù)量,從而使得物體模型的數(shù)據(jù)量減少,渲染簡化后的物體模型如右邊的物體模型,這樣,就達到了渲染簡化物體模型的目的。在具體實現(xiàn)時,根據(jù)設(shè)置的規(guī)則對物體模型頂點的幾何及拓撲信息進行判斷,確認(rèn)某一頂點是否為要刪除的頂點,如果是,則刪除該頂點,并對刪除該頂點后的空桶通過重新三角化填補。按照這個過程重復(fù)執(zhí)行,直到得到符合設(shè)定的渲染簡化的物體模型為止。
但是,基于頂點刪除方式對物體模型進行渲染簡化存在缺點:只能對物體模型中的各個三角形流形表面進行渲染簡化,而無法對物體模型的整個拓撲進行渲染簡化,在速度上達不到實時需要,渲染簡化效率低且質(zhì)量不好。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供一種物體模型的渲染簡化的方法,該方法能夠快速且質(zhì)量高的對物體模型進行渲染簡化。
本發(fā)明實施例提供一種物體模型的渲染簡化的系統(tǒng),該系統(tǒng)能夠快速且質(zhì)量高的對物體模型進行渲染簡化。
根據(jù)上述目的,本發(fā)明是這樣實現(xiàn)的:
一種物體模型的渲染簡化的方法,包括:
a、根據(jù)物體模型的網(wǎng)格數(shù)據(jù)計算所述物體模型的每個邊的刪除代價值;
b、根據(jù)所計算的每個邊的刪除代價值順序排序;
c、將具有最小刪除代價值的邊刪除,并將所有連接到該邊的另一端頂點的連線連接到一端頂點上;
d、判斷是否達到設(shè)定的渲染簡化條件,如果是,將渲染簡化的物體模型輸出;如果否,執(zhí)行步驟e;
e、重新計算刪除邊的一端頂點與周圍鄰點之間的邊的刪除代價值,與步驟a計算的其他邊的刪除代價值一起進行順序排序,轉(zhuǎn)入執(zhí)行步驟c。
較佳地,所述物體模型是電子游戲場景中的一部分。
較佳地,所述物體模型的網(wǎng)格數(shù)據(jù)為:
構(gòu)造頂點類數(shù)據(jù)及三角面類數(shù)據(jù),將物體模型的網(wǎng)格數(shù)據(jù)中的頂點信息放入到頂點類數(shù)據(jù)中,將物體模型的網(wǎng)格數(shù)據(jù)中的三角面信息放入到三角面類數(shù)據(jù)中;
所述頂點類數(shù)據(jù)包括物體模型的每一個頂點的坐標(biāo)、相鄰頂點及相鄰三角形的信息;三角形類數(shù)據(jù)包括物體模型的每個三角面的頂點、面積及法線信息。
較佳地,所述的每個邊的刪除代價值為:
每個邊的一端頂點到另一端頂點的每個相鄰三角面分別構(gòu)成立方體,計算所述立方體的體積后,求和,作為每個邊的刪除代價值。
較佳地,所述設(shè)定的渲染簡化條件為:設(shè)定的所述物體模型具有的三角面數(shù)目。
一種物體模型的渲染簡化的系統(tǒng),包括:計算單元、排序單元、渲染單元、判斷單元及輸出單元,其中,
計算單元,用于根據(jù)接收到的物體模型的網(wǎng)格數(shù)據(jù)計算所述物體模型的每個邊的刪除代價值;重新計算刪除邊的一端頂點與周圍鄰點之間的邊的刪除代價值;
排序單元,用于根據(jù)所計算的每個邊的刪除代價值順序排序;或者將重新計算的邊的刪除代價值與計算的其他邊的刪除代價值順序排序;
渲染單元,用于將具有最小刪除代價值的邊刪除,并將所有連接到該邊的另一端頂點的連線連接到一端頂點上;
判斷單元,用于判斷是否達到設(shè)定的渲染簡化條件,如果否,返回計算單元進行重新計算;如果是,則由輸出單元將渲染簡化的物體模型輸出。
由上述方案可以看出,本發(fā)明實施例基于折疊邊方式對物體模型進行渲染簡化,從而在物體模型的渲染簡化過程中,對物體模型的拓撲結(jié)構(gòu)進行幾何變形,但不會發(fā)生物體模型中的三角面的不連續(xù)跳邊,從而對物體模型的整個拓撲結(jié)構(gòu)進行渲染簡化,提高渲染簡化的效率及提高渲染質(zhì)量。
附圖說明
圖1為現(xiàn)有技術(shù)的基于頂點刪除方式進行物體模型渲染簡化的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供的物體模型的渲染簡化的方法流程圖;
圖3為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的方法流程圖;
圖5為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的效果示意圖;
圖6為本發(fā)明實施例提供的物體模型的渲染簡化系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明作進一步詳細說明。
為了提高對物體模型的渲染簡化的效率及質(zhì)量,本發(fā)明實施例不使用基于頂點刪除的渲染簡化方式,而是基于折疊邊方式對物體模型進行渲染簡化,從而在物體模型的渲染簡化過程中,對物體模型的拓撲結(jié)構(gòu)進行幾何變形,但不會發(fā)生物體模型中的三角面的不連續(xù)跳邊,不僅保留了物體模型的幾何信息,而且保留了物體模型的諸如顏色或/和紋理等特征信息,從而對物體模型的整個拓撲結(jié)構(gòu)進行渲染簡化,提高渲染簡化的效率及提高渲染質(zhì)量。
圖2為本發(fā)明實施例提供的物體模型的渲染簡化的方法流程圖,其具體步驟為:
步驟201、客戶端接收到物體模型的網(wǎng)格數(shù)據(jù);
在本步驟中,客戶端是從互聯(lián)網(wǎng)接收到所傳輸?shù)奈矬w模型的網(wǎng)格數(shù)據(jù)的,所述物體模型是客戶端要運行的電子游戲場景中的一部分;
步驟202、客戶端根據(jù)接收到的物體模型的網(wǎng)格數(shù)據(jù)計算所述物體模型的每個邊的刪除代價值;
步驟203、客戶端根據(jù)所計算的每個邊的刪除代價值順序排序;
步驟204、客戶端將具有最小刪除代價值的邊刪除,并將所有連接到該邊的另一端頂點的連線連接到一端頂點上;
步驟205、客戶端判斷是否達到設(shè)定的渲染簡化條件,如果是,則執(zhí)行步驟206;如果否,則執(zhí)行步驟207;
步驟206、客戶端將渲染簡化的物體模型輸出;
在本步驟中,所述渲染簡化的物體模型輸出為被顯示出來;
步驟207、客戶端重新計算刪除邊的一端頂點與周圍鄰點之間的邊的刪除代價值,與步驟202計算的其他邊的刪除代價值一起進行順序排序,轉(zhuǎn)入執(zhí)行步驟204。
在本步驟中,由于在刪除了最小刪除代價值的邊后,物體模型中的大部分的刪除代價值是沒有變化的,所以不需要重復(fù)計算,只有刪除邊的一端頂點與其鄰點之間的邊的刪除代價值會變化,需要重新計算。
在本發(fā)明實施例中,步驟202所述的每個邊的刪除代價值為:
每個邊的一端頂點到另一端頂點的每個相鄰三角面分別構(gòu)成立方體,計算所述立方體的體積后,求和,作為每個邊的刪除代價值。
在本發(fā)明實施例中,步驟207中的重新計算過程,也與步驟202的計算過程相同。
在本發(fā)明實施例中,所述設(shè)定的渲染簡化條件為:
設(shè)定的所述物體模型具有的三角面數(shù)目。
圖3為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的結(jié)構(gòu)示意圖,如圖所示,左邊的物體模型為未渲染簡化的物體模型,一般地,物體模型都是由多個三角面組成,假設(shè)要將uv兩個頂點之間的邊刪除并將包含uv頂點的邊的三角面刪除,則將所有連接到u頂點的邊連接到v頂點,得到了右邊的渲染簡化的物體模型。
在這里,uv頂點之間的邊的刪除代價值為:v頂點到u頂點的相鄰三角面的體積之和,即圖3中,v點分別到t1~t5三角面組成的立方體的體積之和。這樣,盡管采用了幾何變形,但是對玩家的視覺效果不會發(fā)生不連續(xù)的跳邊,不僅保留了物體模型的幾何信息,也保留了如顏色和紋理等其他重要特征信息。
圖4為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的方法流程圖,具體包括:
步驟401、客戶端將物體模型的網(wǎng)格數(shù)據(jù)進行處理;
步驟402、客戶端構(gòu)造頂點類數(shù)據(jù)及三角面類數(shù)據(jù);
步驟403、客戶端遍歷物體模型的網(wǎng)格數(shù)據(jù)中的頂點信息及三角面信息,將頂點信息放入到頂點類數(shù)據(jù),將三角面信息放入到三角面類數(shù)據(jù)中;
在本步驟中,頂點類數(shù)據(jù)包括物體模型的每一個頂點的坐標(biāo)、相鄰頂點及相鄰三角形的信息;三角形類數(shù)據(jù)包括物體模型的每個三角面的頂點、面積及法線信息;其中,三角面的面積是計算得到的;
步驟404、客戶端計算每個頂點的最小刪除代價折疊邊;
在本步驟中,遍歷每個頂點的三角向所有相鄰點,計算出每個相鄰點到該頂點的相鄰三角面的體積之和,即得到該頂點到相鄰頂點之間的邊的刪除代價值,遍歷完成后,得到該頂點的最小刪除代價折疊邊;
步驟405、客戶端遍歷完所有頂點后,對所有的最小刪除代價折疊邊進行排序,選擇刪除代價最小的邊進行折疊操作;
步驟406、客戶端重新計算刪除邊的一端頂點與周圍鄰點之間的邊的刪除代價值,與步驟405中得到的其他折疊邊的刪除代價值一起進行順序排序,選擇刪除代價最小的邊進行折疊操作,重復(fù)執(zhí)行該步驟,直到得到滿足所設(shè)定的渲染簡化條件為止。
從上述方案可以看出,本發(fā)明實施例提供的方法提高了物體模型的渲染簡化效率,優(yōu)化了物體模型的簡化效果。圖5為本發(fā)明實施例提供的基于折疊邊方式對物體模型進行渲染簡化的效果示意圖,如圖所示,原始模型為圖a,包括了5804個三角面;經(jīng)過了第一次折疊邊方式的渲染簡化后,得到了圖b所示的模型1,包括了2900個三角面;經(jīng)過了第二次折疊邊方式的渲染簡化后,得到了圖c所示的模型2,包括了1464個三角面;經(jīng)過了第三次折疊邊方式的渲染簡化后,得到了圖d所示的模型3,包括了304個三角面。但是,可以看出,盡管模型中的三角面不斷減少,但是從視覺角度其模型的外部輪廓的幾何信息沒有什么實質(zhì)變化,從而節(jié)省了模型的數(shù)據(jù)量,使得低配置的客戶端也能夠不延遲的顯示該模型。
圖6為本發(fā)明實施例提供的物體模型的渲染簡化系統(tǒng)結(jié)構(gòu)示意圖,包括:計算單元、排序單元、渲染單元、判斷單元及輸出單元,其中,
計算單元,用于根據(jù)接收到的物體模型的網(wǎng)格數(shù)據(jù)計算所述物體模型的每個邊的刪除代價值;重新計算刪除邊的一端頂點與周圍鄰點之間的邊的刪除代價值;
排序單元,用于根據(jù)所計算的每個邊的刪除代價值順序排序;或者將重新計算的邊的刪除代價值與計算的其他邊的刪除代價值順序排序;
渲染單元,用于將具有最小刪除代價值的邊刪除,并將所有連接到該邊的另一端頂點的連線連接到一端頂點上;
判斷單元,用于判斷是否達到設(shè)定的渲染簡化條件,如果否,返回計算單元進行重新計算;如果是,則由輸出單元將渲染簡化的物體模型輸出。
以上舉較佳實施例,對本發(fā)明的目的、技術(shù)方案和優(yōu)點進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。