專利名稱:一種保持外觀特征的網(wǎng)格模型簡化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及三維虛擬場景中對模型的實(shí)時(shí)簡化操作。特別涉及對這種操作的一種特有的具有外 觀保持性的方法。二、 背景技術(shù)在實(shí)際應(yīng)用中,為了使三維空間中的物體獲得更高的真實(shí)感和層次感,需要使用復(fù)雜的、細(xì)節(jié) 化的網(wǎng)格模型進(jìn)行表示。然而針對不同的應(yīng)用場合,考慮計(jì)算機(jī)儲(chǔ)存容量、處理速度、渲染速度、 傳輸速率等各種因素的平衡折中,可以選擇一個(gè)合適的低分辨率模型來代替原始模型。這種通過對 原始多邊形網(wǎng)格模型進(jìn)行自動(dòng)簡化處理,生成一系列不同分辨率、不同精細(xì)度的模型以供渲染時(shí)使 用的技術(shù)被稱為多細(xì)節(jié)層次(Level of Detail,或簡稱LoD)技術(shù)[D. Luebke, M. Reddy,丄Cohen, A. Varshney, B. Watson, R. Huebner, £eve/ o/Deto 》r 3D Gra盧cs. CA: Morgan Kaufmann, 2002.], 生成 的模型稱為多細(xì)節(jié)層次模型或多分辨率模型。多細(xì)節(jié)層次技術(shù)需要解決的問題之一就是如何簡化網(wǎng)格模型,即如何快速地對多邊形網(wǎng)格進(jìn)行 簡化,以生成多分辨率模型,同時(shí)還要保證在一定的頂點(diǎn)數(shù)目的條件下,生成的模型與原始模型保 持一定的相似度。針對實(shí)時(shí)的虛擬場景中,簡化網(wǎng)格模型的算法必須保證一系列簡化模型的連續(xù)性、 實(shí)時(shí)性、保持外觀特征性,并且減少空間占用加快渲染速度。對網(wǎng)格簡化算法的分類標(biāo)準(zhǔn)有很多種,如輸入輸出模型的特征、簡化的具體方法、簡化后的模 型是否引入新頂點(diǎn)等等。我們可按照簡化的機(jī)制,將算法分為重釆樣型、自適應(yīng)細(xì)分型、幾何元素 刪除型。采樣法通過對原始模型的幾何表示進(jìn)行采樣,從而形成新的模型,包括兩種途徑 一種是對模型表面的點(diǎn)進(jìn)行采樣,如Greg Turk提出的重新布點(diǎn)法(re-tilling)[G. Turk, / e-礎(chǔ)"g尸o/膽o"a/Sw/ace《 Proceedings of SIGGRAPH92, vol. 26(2), pp. 55-64, 1992.];另一種是將模型轉(zhuǎn)化為體素表示,然后用 類似信號(hào)處理的方法來消除模型的高頻細(xì)節(jié),其代表為Taosong He提出的基于體素的對象簡化 (Voxel-based Object Simplification)[3Taosong He, Lichan Hong, et al,版e/ 5ased C%'ecf 57附p/訴c加'o", Proceedings of the正EE Visualization,95, pp. 296-303, 1995.]。自適應(yīng)細(xì)分型算法首先給出 一個(gè)與原始 模型相近的基本模型,然后逐步遞歸地將其細(xì)分,增加細(xì)節(jié),知道近似模型達(dá)到用戶滿意的精度為 止。DeHaemer提出的算法是該類型算法的典型代表[Jr. M. DeHaemer, M. J. Zyda, S;附p/訴c加'ow o/ (9映cte / e"flfe W /"o/殿o"o/^prac/w加'ows, Computer & Graphics, vol. 15(2), pp. 175-184, 1991.]幾 何元素刪除算法又可以分為直接刪除型和合并型。前者反復(fù)地把一個(gè)"不重要"的頂點(diǎn)或者三角形 從網(wǎng)格模型中刪除,并且對刪除后留下的空洞重新進(jìn)行三角化,典型代表是Shcroeder提出的基于頂點(diǎn)刪除的算法和Hamann提出的基于三角形刪除的算法[W. J. Schroeder, J. A. Zarge, W. E. Lorensen. Z)ed附油'ow o/腸"g/e倫Aes, Proceedings of SIGGRAPH92, vol. 26(2), pp. 65-70, 1992. B. Hamann.爿Dato i edwcrio" ScAewe ybr 7h'a"gM/afed Sw ces, Computer Aided Geometric Design, vol. 11(2), pp. 197-214, 1994.]。它的特點(diǎn)是計(jì)算量小且易于實(shí)現(xiàn),能保持模型拓?fù)浣Y(jié)構(gòu),簡化模型的頂 點(diǎn)為原模型頂點(diǎn)的子集。后者的思想是反復(fù)選取若干個(gè)(兩個(gè)或以上)的幾何元素,將它們合并成 數(shù)目較少的幾何元素。合并型算法有很多,有基于頂點(diǎn)聚類的[J. Rossignac, P. Borrel, Multi-resolution 3D Approximation for Rendering Complex Scenes. Technical Report RC 17697, IBM Research Divison, T J. Watson Research Center, Yorktown Heights, n.Y., 10958, 1993.周昆,潘志庚,石教英, 一種新的基 于頂點(diǎn)聚類的網(wǎng)格化簡算法.《自動(dòng)化學(xué)報(bào)》,vol.25(l),pp. 1-8, 1999.],有基于區(qū)域合并的[K丄丄ow, T. S. Tan, Mocfe/ S!'附/ /訴c加-cm C/s!'wg PfeWex-c/u他"'Mg, Symposium on Interactive 3D Graphics, pp. 75-81,1997.],還有最為流行的邊折疊(Edge Collapse,又稱為邊收縮Edge Contraction)算法[A.D. Kalvin, R. H. Taylor, Sw cw尸o/ygo"(3/ Afes/z SfwpZ折W'om w油5oiWed £>ror, IEEE Computer Graphics and Applications, vol, 16(3), pp. 64-77, 1996. H. Hoppe, /Vogresw've A/ej/z&s, Proceedings of SIGGRAPH96, pp. 99-108, 1996. E. Bouvier, E. Gobbetti, 7DM: 7bto外Oraferai MeA — J M//"'-mso/w"o" S racfwe》r 7Y附e CW"ca/ GrapW"々Wc加'o"s, International Journal of Image and Graphics, vol. 1(1), pp. 115-134, 2001;李現(xiàn)民,李桂清,張小玲.基于子分規(guī)則的邊折疊簡化算法. 《計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào)》,vol. 14(1), pp. 8-13, 2002.劉曉利,劉則毅等.基于尖特征度的 邊折疊簡化算法.《軟件學(xué)報(bào)》,vol. 16(5), pp. 669-675, 2005.]邊折疊關(guān)鍵要解決兩個(gè)問題 一是如 何選取折疊邊, 一是如何確定代替邊的新頂點(diǎn)的位置。Hoppe在1993年采用能量優(yōu)化的方法來確 定先選擇哪條邊以及新頂點(diǎn)的位置[H. Hoppe, T. DeRose, Tom Duchamp, MeA Qp"to'z加'o", Proceeding of the SIGGRAPH92, vol. 27, pp. 19-26, 1992.]。該算法要求建立和求解復(fù)雜的全局能量優(yōu) 化方程,計(jì)算量大,很難滿足實(shí)時(shí)要求,但是生成模型的效果卻是所有簡化算法中最好的[何暉光,田 捷等.網(wǎng)格模型化簡綜述.《軟件學(xué)報(bào)》,vol. 13(12), pp. 2215~2224, 2002.]。 Garland和Heckbert在 1997年提出的二次誤差測度(QEM)解決了 Hoppe方法計(jì)算量大的問題,該算法使用二次誤差度 量來控制表面網(wǎng)格的簡化,在速度、保真度、健壯性上獲得了很好的平衡[12M. Garland, P. Heckbert, Sw^ice S/附/ /訴ca,/ow t/s/wg gwac/r/c £Ww Me,"'c, Proceedings of SIGGRAPH97, pp, 209-216, 1997.]。事實(shí)上,網(wǎng)格模型的頂點(diǎn)除了幾何坐標(biāo)外,還會(huì)有若干的外觀屬性,如顏色、紋理坐標(biāo)、法向 量等。Garland在文獻(xiàn)[M. Garland, P. S. Heckbert, SiVnp/砂!'"g SM ces w欣Co/or ano 7kx:f眺(7s!'"g 2MaaWc五nwAfefr/cs, Proceedings of IEEE Visualization98, pp. 263-270, 1998,]中擴(kuò)展了 QEM算法, 使其可以支持帶有外觀屬性的模型的簡化。隨后Hoppe也在QEM的基礎(chǔ)上提出了處理頂點(diǎn)外觀屬性的方法,該方法需要的儲(chǔ)存空間比Garland的方法更少[H. Hoppe, Afew gwacWc Me的'c /or S/附p/z》/"g A/es/ es w!YA^c;pearawce Jffn7wtes, Proceedings of IEEE Visualization99, pp. 59~66, 1999.]。但是這兩種方法都基于一個(gè)假設(shè)網(wǎng)格模型頂點(diǎn)上的外觀屬性是連續(xù)的。它們都無法處理突變的頂 點(diǎn)的外觀屬性,例如紋理的接縫。 三、發(fā)明內(nèi)容針對以上的不足,本發(fā)明目的是提出一種保持外觀特征的網(wǎng)格模型簡化方法,是一種新的基于二次誤差測度QEM的網(wǎng)格簡化算法并定義新的折疊代價(jià)計(jì)算式,盡可能推遲非連續(xù)外觀屬性畸變 的發(fā)生,有效的解決了外觀屬性出現(xiàn)的突變問題。該算法在保持了 QEM算法的高效率的同時(shí),獲 得了很好的保真度。一種保持外觀特征的網(wǎng)格模型的簡化方法包括一個(gè)半邊折疊代價(jià)條件一個(gè)迭代的折疊過程,通過這個(gè)條件可以確定正確的折疊順序。具體步驟如下根據(jù)原始的二次誤差測度,半邊折疊v,今v,的折疊代價(jià)Cost(v,, v,使義為Cost(v,, v,) = (Q,+Q,) v,, Q,和Q,分布為起點(diǎn)和終點(diǎn)到相關(guān)聯(lián)平面集的距離平方和(Garland稱其為quadric);針對于帶有接縫點(diǎn)的半邊折疊v, ^ v,,根據(jù)v,和v,是否為接縫點(diǎn),分為以下幾種情況第一種情況,當(dāng)起點(diǎn)K為接縫點(diǎn),終點(diǎn)v,為內(nèi)部點(diǎn)時(shí),執(zhí)行半邊折疊操作,則在網(wǎng)格模 型的接縫處可能會(huì)出現(xiàn)非常奇怪的外觀。因此,在模型簡化時(shí)我們應(yīng)該盡量避免這種起點(diǎn)為 接縫點(diǎn)而終點(diǎn)為內(nèi)部點(diǎn)的半邊折疊操作;半邊折疊的代價(jià)函數(shù)被重新定義為第二種情況,起點(diǎn)v,為內(nèi)部點(diǎn),終點(diǎn)v,為接縫點(diǎn)。因?yàn)槭怯蓛?nèi)部點(diǎn)折疊到接縫點(diǎn),接縫 點(diǎn)保持不動(dòng),所以這種情況不會(huì)導(dǎo)致接縫形變,但是在對受影響的三角形進(jìn)行頂點(diǎn)替換時(shí), 必須找到合適的對應(yīng)頂點(diǎn)的屬性集合wedge;在對各個(gè)頂點(diǎn)的wedge找到了與之連續(xù)的 wedge進(jìn)行替換,避免接縫發(fā)生外觀畸變;第三種情況,起點(diǎn)V,和終點(diǎn)V,均為接縫點(diǎn)將其細(xì)分為四個(gè)子類型(l)V,和V洽好在同一條接縫上,這種類型與第二種情況類似,只要選擇合適的替換wedge就可保證不會(huì)出 現(xiàn)畸變現(xiàn)象;(2)v,和v,分屬兩條不同的接縫,均為接縫點(diǎn),但是折疊邊(v,, v,)并不是接縫邊; 這種情況下接縫處的外觀屬性很可能會(huì)出現(xiàn)畸變;而且即使該接縫處的外觀屬性不發(fā)生畸 變,其幾何形狀也變形了,所以此類折疊操作應(yīng)盡量靠后;折疊代價(jià)被重新定義為Cost(v,,V,) = DiSt(V,,v,)其中Dist(vs,v,) = (Q,+Q,)v 函數(shù)IsSeam(v)定義為若v為接縫點(diǎn) 若v為內(nèi)部點(diǎn)Cost(、,V,) = Dist(V,,v,);0CIsSeam (vs )tlsSeam (v,沖-IsSeam ( vs, v,))函數(shù)IsSeam(v,,v,)定義為<formula>formula see original document page 7</formula>(3)v,和v,分屬兩條不同的接縫,均為接縫點(diǎn),且(v,, v,)是接縫邊。此時(shí),接縫處模型的 外觀很有可能畸變,而且也造成了接縫的形變;因此,對于這種從交叉點(diǎn)到接縫點(diǎn)的半邊折 疊操作,我們也應(yīng)該加大其折疊代價(jià),使模型外觀畸變不會(huì)過早發(fā)生;折疊代價(jià)計(jì)算式變?yōu)?4)從非交叉接縫點(diǎn)到交叉點(diǎn)的折疊。這種情況與內(nèi)部點(diǎn)折疊的折疊代價(jià)計(jì)算方法是相同的。 新的折疊代價(jià)計(jì)算式中懲罰量a、 /3和r與Dist(v,, v,)相比必須足夠的大,這樣才能使得可能產(chǎn) 生外觀畸變的半邊折疊代價(jià)相對較大。我們定義a和/5大于Dist(v,, v,),而r是交叉點(diǎn)折疊到接縫 點(diǎn)的懲罰量,而交叉點(diǎn)往往是模型表面特征比較明顯的頂點(diǎn),因此我們賦予r更大的值,令r=2a。 最終半邊折疊K》v,的折疊代價(jià)定義為其中a=Mcc£fe, '(TriArea(v,)+TriArea(v,))。 MoxZ)/W由網(wǎng)格模型的包圍盒決定,可以在讀入模型 時(shí)計(jì)算;與頂點(diǎn)相關(guān)的三角形面積之和TriArea(v)在原始模型中是與頂點(diǎn)相鄰的三角形面積之和, 在一次半邊折疊v,》v,后,頂點(diǎn)v,的相關(guān)三角形集并入到v,的相關(guān)三角形集中,所以折疊后v,的 相關(guān)三角形面積之和TriArea(v,)變?yōu)門riArea(v,)+TriArea(v,)。本發(fā)明采用的簡化算法是半變折疊(Half Edge Collapse)算法[L. Kobbelt, S. Campagn H. RSeidel, J Ge"era/ Fra附eHwA:Z)e"'wa〃o", Proceedings of Graphics Interface, pp, 43-50, 1998.]。它是一個(gè)邊折疊的一個(gè)退化版本,在進(jìn)行折疊操作時(shí)不引入新的頂點(diǎn),而是以折疊邊上的一個(gè)端點(diǎn) 作為折疊的結(jié)果,其優(yōu)勢是可以大大減少多分辨率模型所需的存儲(chǔ)空間,降低了RAM到GPU的帶 寬占用,在一定程度上也加快了網(wǎng)格模型的簡化速度。采用半邊折疊的方法雖然在模型保真度上不及上述產(chǎn)生新頂點(diǎn)的方法,但由于影響簡化模型保 真度的主要因素是邊折疊的次序,只要算法的邊折疊次序選擇得當(dāng),半邊折疊給簡化模型保真度帶 來的損失是可以忽略不計(jì)的。同時(shí)基于半邊折疊的網(wǎng)格模型簡化算法可以在保真度上滿足實(shí)時(shí)應(yīng)用 的要求?;谝陨侠碛桑覀冊诰W(wǎng)格模型簡化算法中采用半邊折疊作為迭代簡化過程的基本操作。邊折疊代價(jià)的大小決定了邊折疊的次序,而邊折疊的次序是影響簡化模型保真度的主要因素。7所以網(wǎng)格模型簡化質(zhì)量的好壞很大程度上取決于邊折疊的代價(jià)如何計(jì)算。我們以Garland和Heckbert 提出的二次誤差測度(QEM)為基礎(chǔ),在代價(jià)計(jì)算公式中加入了外觀屬性值,如顏色、紋理坐標(biāo)、法 向量。這些外觀屬性是影響模型簡化后視覺效果的重要因素,有時(shí)還是主要因素,譬如尖銳的邊、 非連續(xù)的紋理坐標(biāo)。我們對端點(diǎn)與非連續(xù)外觀接縫的關(guān)系進(jìn)行了分類討論,加大可能產(chǎn)生畸變的折 疊操作的代價(jià)以達(dá)到保持外觀屬性的目的。針對新的代價(jià)計(jì)算公式,我們計(jì)算出其中增加的懲罰量 的具體值,使得視覺效果更加好。本發(fā)明所提出的三維網(wǎng)格模型簡化算法有如下的優(yōu)點(diǎn)■ 高效性。我們以QEM作為相似度評估方法指導(dǎo)折疊過程,模型簡化效率高。同時(shí)半 邊折疊操作有利于構(gòu)建渲染系統(tǒng)直接處理的數(shù)據(jù)結(jié)構(gòu),提高渲染效率?!?高相似度。由于我們對三維模型上的外觀屬性突變情況作了特殊處理,因此在幾何形 狀以及外觀特性上都保持了很高的相似度?!?良好的視覺效果。針對設(shè)計(jì)外觀屬性接縫的半邊折疊,在QEM折疊代價(jià)的基礎(chǔ)上合 理地加上與接縫相關(guān)的懲罰量,使得外觀畸變在簡化過程中盡可能地推遲。這樣外觀畸變出現(xiàn)的幾 率就大大下降了,視覺效果也就提高了很多?!?較小的內(nèi)存開銷。半邊折疊操作在簡化過程中不會(huì)引入新的頂點(diǎn),使得原有的數(shù)據(jù)存 儲(chǔ)結(jié)構(gòu)得以重復(fù)利用,減少了內(nèi)存占有。四具體實(shí)施方式
首先得到折疊代價(jià)計(jì)算公式,然后對算法進(jìn)行描述。公式推導(dǎo)。根據(jù)原始的二次誤差測度,半邊折疊v,^ v,的折疊代價(jià)Cost(v,,v,)定義為Cost(v,, v,) =(Qs+Q() v,, Qs和Q,分布為起點(diǎn)和終點(diǎn)的quadric[M. Garland, P. Heckbert, 5W/ace S!'附p/訴c""o" t/sZ"g 2而c^7'c五 tw Me的'c, Proceedings of SIGGRAPH97, pp. 209-216, 1997.]。針對于帶有接縫點(diǎn)的 半邊折疊v,^v,,根據(jù)v,和v,是否為接縫點(diǎn),可以分為以下幾種情況第一種情況,當(dāng)起點(diǎn)R為接縫點(diǎn),終點(diǎn)v,為內(nèi)部點(diǎn)時(shí),執(zhí)行半邊折疊操作,則在網(wǎng)格模型的接 縫處可能會(huì)出現(xiàn)非常奇怪的外觀。因此,在模型簡化時(shí)我們應(yīng)該盡量避免這種起點(diǎn)為接縫點(diǎn)而終點(diǎn) 為內(nèi)部點(diǎn)的半邊折疊操作。為此我們加大此類半邊折疊的折疊代價(jià),使其盡量靠后。半邊折疊的代價(jià)函數(shù)被重新定義為:Cost(Vs,V,) = Dist(Vs,V()其中Dist(v,,v,) = (Q,+Q,)v,,函數(shù)IsSeam(v)定義為若v為接縫點(diǎn) 若v為內(nèi)部點(diǎn)第二種情況,起點(diǎn)Vs為內(nèi)部點(diǎn),終點(diǎn)v,為接縫點(diǎn)。因?yàn)槭怯蓛?nèi)部點(diǎn)折疊到接縫點(diǎn),接縫點(diǎn)保持 不動(dòng),所以這種情況不會(huì)導(dǎo)致接縫形變,但是在對受影響的三角形進(jìn)行頂點(diǎn)替換時(shí),必須找到合適 的wedge(wedge是一個(gè)抽象概念,代表對應(yīng)頂點(diǎn)的屬性集合[21 H. Hoppe, Ejfec"ve /;np/ewe"to"ow o/ 尸ragr咖.ve Computer & Graphics, Vol. 22(1), pp. 27-36, 1998.])。我們在對各個(gè)頂點(diǎn)的wedge找到了與之連續(xù)的wedge進(jìn)行替換,避免接縫發(fā)生外觀畸變。第三種情況,起點(diǎn)K和終點(diǎn)v,均為接縫點(diǎn)。這種情況較為復(fù)雜,我們將其細(xì)分為四個(gè)子 類型(1) v,和v,恰好在同一條接縫上。這種類型與第二種情況類似,只要選擇合適的替換 wedge就可保證不會(huì)出現(xiàn)畸變現(xiàn)象。(2) v;和v,分屬兩條不同的接縫,均為接縫點(diǎn),但是折 疊邊(v,, v,)并不是接縫邊。這種情況下接縫處的外觀屬性很可能會(huì)出現(xiàn)畸變。而且即使該接 縫處的外觀屬性不發(fā)生畸變,其幾何形狀也變形了,所以此類折疊操作應(yīng)盡量靠后。折疊代 Cost (vs , v,) = Dist (v.,, v,)價(jià)被重新定義為+ cdsSeam (— IsSeam (v,》+ yfidsSeam (v, )[IsSeam (v,沖- IsSeam (v,, v,))函數(shù)IsSeam(v,, v,)定義為,、fl 若(、,v,)為接縫邊 ISSeam(V"V') = io若(vj,)為非擬逢邊(3) v,和v,分屬兩條不同的接縫,均為接縫點(diǎn),且(v,, v,)是接縫邊。此時(shí),接縫處模型的 外觀很有可能畸變,而且也造成了接縫的形變。因此,對于這從交叉點(diǎn)到接縫點(diǎn)的半邊折 疊操作,我們也應(yīng)該加大其折疊代價(jià),使模型外觀畸變不會(huì)過早發(fā)生。折疊代價(jià)計(jì)算公式變 為Cost (Vj , v, ) = Dist (v,,)+ oOsSe咖(vs )《1 - IsSeam (v,))+ /OsSeam (vf )dsSeam (v,沖-IsSeam (v$, v,))+ ;KIsCross (vs )[IsSeam (v,)(4) 從非交叉接縫點(diǎn)到交叉點(diǎn)的折疊。這種情況與內(nèi)部點(diǎn)折疊的折疊代價(jià)計(jì)算方法是相 同的。新的折疊代價(jià)計(jì)算公式中懲罰量a、 y 和r與Dist(v,,v,)相比必須足夠的大,這樣才能使 得可能產(chǎn)生外觀畸變的半邊折疊代價(jià)相對較大。我們定義ct和y5大于Dist(^, 而r是交 叉點(diǎn)折疊到接縫點(diǎn)的懲罰量,而交叉點(diǎn)往往是模型表面特征比較明顯的頂點(diǎn),因此我們賦予 y更大的值,令)^2cu最終半邊折疊v, —v,的折疊代價(jià)定義為Cost(、,v,):Dist(v,,v,)+ atlsSeam (^ )《1 - IsSeam (v,))+ oOsSeam (K )3sSeam (v,沖- IsSeam (vs, v,))+ 2adsCross ( vs )3sSeam ( v,)其中《=Mox£)W (TriArea(v,)+TriArea(v,))。 由網(wǎng)格模型的包圍盒決定,可以在讀入模型時(shí)計(jì)算。與頂點(diǎn)相關(guān)的三角形面積之和TriArea(力在原始模型中是與頂點(diǎn)相鄰的三 角形面積之和,在一次半邊折疊v,》v,后,頂點(diǎn)^的相關(guān)三角形集并入到v,的相關(guān)三角形 集中,所以折疊后v,的相關(guān)三角形面積之和TriArea(v,)變?yōu)門riAreaO,)+TriArea(巧)。算法描述。法的輸入為頂點(diǎn)數(shù)據(jù)序列VertexData和索引數(shù)據(jù)序列IndexData,前者代表網(wǎng)格模型 M中每個(gè)頂點(diǎn)的屬性集合,其中每個(gè)單元是一個(gè)wedge,包含了 wedge的坐標(biāo)及其它外觀屬性;后 者代表網(wǎng)格模型M中頂點(diǎn)的連接關(guān)系,其中每個(gè)單元是一個(gè)VertexData序列的索引(下標(biāo)),用來 檢索VertexData中的wedge。 IndexData中相鄰的三個(gè)單元為一組,每組代表一個(gè)三角形,而其中每 個(gè)單元?jiǎng)t代表三角形的一個(gè)角。為了顯式地表示這些幾何關(guān)系以便描述和實(shí)現(xiàn)網(wǎng)格簡化算法,我們引入了三個(gè)中間數(shù)據(jù)結(jié)構(gòu) PMVertex、 PMWedge和PMTriangle。 PMVertex表示網(wǎng)格模型的一個(gè)頂點(diǎn);PMWedge表示網(wǎng)格模型 頂點(diǎn)的一個(gè)wedge; PMTriangle表示網(wǎng)格模型上的一個(gè)三角形。在算法進(jìn)行之前,我們將輸入數(shù)據(jù) VertexData和IndexData轉(zhuǎn)化成為這三個(gè)數(shù)據(jù)結(jié)構(gòu)的表示形式,形成一個(gè)PMVertex的序列vert/ces、 一個(gè)PMWedge的序列wMgM以及一個(gè)PMTriangle的序列fr/a"g/es。計(jì)算半邊折疊wv代價(jià)的方法ComputeCollpaseCost(M, v)偽代碼如下輸入:折疊邊的起始點(diǎn)"和終點(diǎn)v,輸出:對應(yīng)邊的折疊代價(jià)1. Q := w.《watia'c + v.《waoWc2. 必/ := Q(v)3. If IsSeam(M) then4. a := (w.a鄉(xiāng)+ v.a柳)* MsxD/W5. If IsCross(w) then6. coW := cfa, + 2a7. Else if !IsSeam(v) then8. cos/ := + a9. Else if IsSeam(v) and !IsSeam(w, v) then10. cosf:=cfof + a11. End if 12. End if 13. Return cow一次半邊折疊過程"—V分為八個(gè)步驟1. 保存折疊起點(diǎn)"的鄰接頂點(diǎn),因?yàn)檫@些頂點(diǎn)的最優(yōu)折疊代價(jià)會(huì)在折疊后改變,需要重新計(jì)算;2. 將起點(diǎn)"的鄰接三角形分成兩類, 一類是要被刪除的,定義為reW0W/; —類是其上的一個(gè)wedge需要被替換的,定義為A"印/acewe""3. 為將被刪除的wedge尋找合適的替代者,這里合適的意思是替換后不會(huì)引起視覺畸變;4. 將rewovo/包含的PMTriangle刪除,同時(shí)通知相關(guān)頂點(diǎn),將其從鄰接三角形集合中刪除;5. 為rep/acemenf替換相應(yīng)的PMWedge,如果沒有合適的則從v.geo.we啦es隨機(jī)選一個(gè);6. 將被替換的PMWedge從wec/ges中刪除;將rep/aceweW中的PMTriangle添加到頂點(diǎn)v的鄰 接三角形面片中,并更新所有受影響的頂點(diǎn)的連接關(guān)系;7. 將頂點(diǎn)M的quadric及相關(guān)三角形面積累加到v上;8. 重新為受影響的頂點(diǎn)計(jì)算最優(yōu)折疊代價(jià)和最佳折疊終點(diǎn),并且更新它們在最小堆中的位置。
權(quán)利要求
1、一種保持外觀特征的網(wǎng)格模型的簡化方法其特征是包括一個(gè)半邊折疊代價(jià)條件一個(gè)迭代的折疊過程,通過這個(gè)條件確定正確的折疊順序;具體步驟如下根據(jù)原始的二次誤差測度,半邊折疊vs→vt的折疊代價(jià)Cost(vs,vt)定義為Cost(vs,vt)=(Qs+Qt)vt,Qs和Qt分布為起點(diǎn)和終點(diǎn)到相關(guān)聯(lián)平面集的距離平方和;針對于帶有接縫點(diǎn)的半邊折疊vs→vt,根據(jù)vs和vt是否為接縫點(diǎn),分為以下幾種情況第一種情況,當(dāng)起點(diǎn)vs為接縫點(diǎn),半邊折疊的代價(jià)函數(shù)被重新定義為Cost(vs,vt)=Dist(vs,vt)+α□IsSeam(vs)□(1-IsSeam(vt))其中Dist(vs,vt)=(Qs+Qt)vt,函數(shù)IsSeam(v)定義為第二種情況,起點(diǎn)vs為內(nèi)部點(diǎn),終點(diǎn)vt為接縫點(diǎn)。因?yàn)槭怯蓛?nèi)部點(diǎn)折疊到接縫點(diǎn),接縫點(diǎn)保持不動(dòng),所以這種情況不會(huì)導(dǎo)致接縫形變,但是在對受影響的三角形進(jìn)行頂點(diǎn)替換時(shí),必須找到合適的對應(yīng)頂點(diǎn)的屬性集合wedge在對各個(gè)頂點(diǎn)的wedge找到了與之連續(xù)的wedge進(jìn)行替換,避免接縫發(fā)生外觀畸變;第三種情況,起點(diǎn)vs和終點(diǎn)vt均為接縫點(diǎn)將其細(xì)分為四個(gè)子類型(1)vs和vt恰好在同一條接縫上,這種類型與第二種情況類似,只要選擇合適的替換wedge就可保證不會(huì)出現(xiàn)畸變現(xiàn)象;(2)vs和vt分屬兩條不同的接縫,均為接縫點(diǎn),但是折疊邊(vs,vt)并不是接縫邊;這種情況下接縫處的外觀屬性很可能會(huì)出現(xiàn)畸變;而且即使該接縫處的外觀屬性不發(fā)生畸變,其幾何形狀也變形了,所以此類折疊操作應(yīng)盡量靠后;折疊代價(jià)被重新定義為Cost(vs,vt)=Dist(vs,vt)+α□IsSeam(vs)□(1-IsSeam(vt))+β□IsSeam(vs)□IsSeam(vt)□(1-IsSeam(vs,vt))函數(shù)IsSeam(vs,vt)定義為(3)vs和vt分屬兩條不同的接縫,均為接縫點(diǎn),且(vs,vt)是接縫邊。此時(shí),接縫處模型的外觀很有可能畸變,而且也造成了接縫的形變;因此,對于這種從交叉點(diǎn)到接縫點(diǎn)的半邊折疊操作,加大其折疊代價(jià),使模型外觀畸變不會(huì)過早發(fā)生;折疊代價(jià)計(jì)算式變?yōu)镃ost(vs,vt)=Dist(vs,vt)+α□IsSeam(vs)□(1-IsSeam(vt))+β□IsSeam(vs)□IsSeam(vt)□(1-IsSeam(vs,vt))+γ□IsCross(vs)□IsSeam(vt)(4)從非交叉接縫點(diǎn)到交叉點(diǎn)的折疊。這種情況與內(nèi)部點(diǎn)折疊的折疊代價(jià)計(jì)算方法是相同的;新的折疊代價(jià)計(jì)算式中懲罰量α、β和γ與Dist(vs,vt)相比必須足夠的大,這樣使得產(chǎn)生外觀畸變的半邊折疊代價(jià)相對較大;我們定義α和β大于Dist(vs,vt),而γ是交叉點(diǎn)折疊到接縫點(diǎn)的懲罰量,而交叉點(diǎn)往往是模型表面特征比較明顯的頂點(diǎn),因此我們賦予γ更大的值,令γ=2α;最終半邊折疊vs→vt的折疊代價(jià)定義為Cost(vs,vt)=Dist(vs,vt)+α□IsSeam(vs)□(1-IsSeam(vt)) 條件一+α□IsSeam(vs)□IsSeam(vt)□(I-IsSeam(vs,vt))+2α□IsCross(vs)□IsSeam(vt)其中α=MaxDist·(TriArea(vs)+TriArea(vt))。MaxDist由網(wǎng)格模型的包圍盒決定,在讀入模型時(shí)計(jì)算;與頂點(diǎn)相關(guān)的三角形面積之和TriArea(v)在原始模型中是與頂點(diǎn)相鄰的三角形面積之和,在一次半邊折疊vs→vt后,頂點(diǎn)vs的相關(guān)三角形集并入到vt的相關(guān)三角形集中,所以折疊后vt的相關(guān)三角形面積之和TriArea(vt)變?yōu)門riArea(vs)+TriArea(vt)。
2、根據(jù)權(quán)利要求1所述保持外觀特征的網(wǎng)格模型的簡化方法,其特征是輸入頂點(diǎn)數(shù)據(jù)序列 VertexData和索引數(shù)據(jù)序列IndexData,前者代表網(wǎng)格模型M中每個(gè)頂點(diǎn)的屬性集合,其中每個(gè)單 元是一個(gè)wedge,包含了 wedge的坐標(biāo)及其它外觀屬性;后者代表網(wǎng)格模型M中頂點(diǎn)的連接關(guān)系, 其中每個(gè)單元是一個(gè)VertexData序列的索引,用來檢索VertexData中的wedge; IndexData中相鄰的 三個(gè)單元為一組,每組代表一個(gè)三角形,而其中每個(gè)單元?jiǎng)t代表三角形的一個(gè)角。C0St(V!,V,) = Dist(Vl,V,)條件一
全文摘要
保持外觀特征的網(wǎng)格模型的簡化方法包括一個(gè)半邊折疊代價(jià)條件一個(gè)迭代的折疊過程,通過這個(gè)條件確定正確的折疊順序;具體步驟如下根據(jù)原始的二次誤差測度,半邊折疊v<sub>s</sub>→v<sub>t</sub>的折疊代價(jià)Cost(v<sub>s</sub>,v<sub>t</sub>)定義為Cost(v<sub>s</sub>,v<sub>t</sub>)=(Q<sub>s</sub>+Q<sub>t</sub>)v<sub>t</sub>,Q<sub>s</sub>和Q<sub>t</sub>分布為起點(diǎn)和終點(diǎn)到相關(guān)聯(lián)平面集的距離平方和;針對于帶有接縫點(diǎn)的半邊折疊v<sub>s</sub>→v<sub>t</sub>,根據(jù)v<sub>s</sub>和v<sub>t</sub>是否為接縫點(diǎn),分為三種情況進(jìn)行迭代折疊;本發(fā)明所提出的三維網(wǎng)格模型簡化方法有如下的優(yōu)點(diǎn)高效性、高相似度和較小的內(nèi)存開銷。半邊折疊操作在簡化過程中不會(huì)引入新的頂點(diǎn),使得原有的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)得以重復(fù)利用,減少了內(nèi)存占有。
文檔編號(hào)G06T17/20GK101231761SQ20081001887
公開日2008年7月30日 申請日期2008年1月29日 優(yōu)先權(quán)日2008年1月29日
發(fā)明者威 盧, 曾定浩, 潘金貴 申請人:南京大學(xué)