基于不規(guī)則區(qū)域的自適性的Loop細分曲面的繪制方法
【專利摘要】本發(fā)明的提供了一種基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,該繪制方法基于不規(guī)則區(qū)域的自適應(yīng)方式,利用計算著色器計算控制頂點的位置,根據(jù)當前原始面片與相鄰原始面片的細分層數(shù)的關(guān)系,將不規(guī)則的原始面片分割為若干個規(guī)則的子面片,對三角控制網(wǎng)格進行重構(gòu),再由tessellation著色器繪制得到相應(yīng)的面片,可以有效消除T裂縫。通過分割能夠采用tessellation著色器繪精確計算得到三角控制網(wǎng)格中各層頂點的位置,因此所有計算得到的頂點和法向量都與極限Loop細分曲面相同,且硬件tessellation著色器繪制,解決全局細分方法的龐大內(nèi)存和帶寬問題,能夠達到實時精確繪制Loop細分曲面。
【專利說明】基于不規(guī)則區(qū)域的自適性的Loop細分曲面的繪制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機圖形學細分曲面繪制領(lǐng)域,具體涉及一種基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法。
【背景技術(shù)】
[0002]細分曲面,在計算機圖形學領(lǐng)域,用于任意拓撲的網(wǎng)格創(chuàng)建光滑曲面。細分曲面定義為一個無窮細化過程的計算。通過反復(fù)細化初始的多邊形網(wǎng)格,可以產(chǎn)生一系列網(wǎng)格趨于最終的細分曲面。每個新的細化步驟產(chǎn)生一個新的有更多多邊形元素并且更光滑的網(wǎng)絡(luò)。Loop細分曲面作為其中比較具有代表性的一個細分策略,在電子游戲,電影制作以及有限兀仿真等應(yīng)用中廣泛使用,參見C.Loop, Smooth subdivision surfaces based ontriangles, Master’s thesis, Dept, of Math., Univ.0f Utah (1987)。Loop 細分曲面是針對任意拓撲的三角形控制網(wǎng)格設(shè)計的,區(qū)別于Catmull-Clark細分曲面,參見E.Catmull, J.Clark, Recursively generated b—spline surfaces on arbitrary topologicalmeshes, Computer-Aided DesignlO (6)(1978)350 - 355。
[0003]傳統(tǒng)的細分曲面是根據(jù)細分規(guī)則,循環(huán)地細分控制網(wǎng)格計算得出的。雖然這種方法在當代的GPU上是很容易實現(xiàn)的。但是,指數(shù)增長的內(nèi)存占有量和數(shù)據(jù)傳輸量會嚴重的影響運行效率。隨著DirectXllAPI的出現(xiàn),其中的硬件tessellation著色器,可在GPU流多處理上,直接計算、生成、繪制細分的幾何,達到避免高代價的內(nèi)存輸入輸出,繪制精細幾何細節(jié)的高質(zhì)量曲面繪制的目的,參見Microsoft Corporation, Direct3DllFeatures,http: //msdn.microsoft.com/en-us/library/ff476342 (VS.85).aspx (2009)。但是,硬件tessellation繪制曲面是逐面片計算的。雖然它能夠用于直接計算規(guī)則面片,但對于如奇異頂點,準尖銳折痕和分層次的編輯這樣的不規(guī)則區(qū)域,無法直接計算。
[0004]目前已有的Loop細分繪制方法可分成三大類。首先,全局細分方法。該類方法通過全局的對輸入控制網(wǎng)格循環(huán)的細分實現(xiàn)。此類方法的內(nèi)存消耗隨生成的頂點數(shù)量線性增長。由于GPU的帶寬限制,造成性能的嚴重下降,參見L.Shiue, 1.Jones, J.Peters, Arealtimegpu subdivision kernel, ACM Transactions on Graphics24(3)(2005) 1010 -1015。第二,直接計算方法。該類方法是對細分曲面的細分矩陣的特征矩陣解析分析,直接計算求解細分曲面,參見 J.Stam, Evaluation of Loop subdivision surfaces, in:ACMSIGGRAPH99Course Notes#37, SIGGRAPH,99, ACM, New York, NY, USA, 1999,pp.1ll - 125。雖然此類方法在GPU上容易實現(xiàn),但由于大量的程序代碼分支,導(dǎo)致運行性能較差。此外,該類方法需要奇異點分離,因此,需要對初始控制網(wǎng)格做一次到兩次的預(yù)細分,這樣處理之后的控制網(wǎng)格的頂點和面片數(shù)量都將大量增加;而且,該類方法無法處理造型常見的準尖銳折痕以及分層次編輯。最后,基于面片的逼近算法。該類算法基本細想是尋找一個逼近不規(guī)則區(qū)域的解,提高繪制效率,犧牲繪制質(zhì)量。該類方法利用硬件tessellation著色器繪制細分曲面,參見文獻 G.Li, C.Ren, J.Zhang, W.Ma, Approximation of Loop subdivisionsurfaces for fast rendering, IEEE Transactions on Visualization and ComputerGraphics17 (4) (2011)。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于不規(guī)則區(qū)域的自適應(yīng)GPU繪制Loop細分曲面方法。
[0006]一種基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,包括:
[0007](I)輸入三角控制網(wǎng)格,并設(shè)定最大細分層數(shù)和全局細分參數(shù);
[0008](2)確定三角控制網(wǎng)格的不規(guī)則區(qū)域,并以該不規(guī)則區(qū)域作為三角控制網(wǎng)格的第零層拓撲結(jié)構(gòu),根據(jù)第零層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第零層細分查找表,根據(jù)第零層細分查找表構(gòu)建三角控制網(wǎng)格的第一層拓撲結(jié)構(gòu),并根據(jù)第一層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第一層細分查找表;
[0009](3)依次遞推,直至構(gòu)建得到三角控制網(wǎng)格的第η層細分查找表和第η層拓撲結(jié)構(gòu),其中η等于設(shè)定的最大細分層數(shù);
[0010](4)將各層細分查找表以及第零層控制頂點的位置上傳至GPU,GPU的計算著色器根據(jù)各層細分查找表和上一層控制頂點的位置,依次計算得到各層控制頂點的位置;
[0011](5)根據(jù)各層拓撲結(jié)構(gòu)構(gòu)造該拓撲結(jié)構(gòu)中各個原始面片的控制面片作為該層控制面片,并確定各個控制面片的參數(shù)域,具體如下:
[0012](5-1)根據(jù)所述拓撲結(jié)構(gòu)中各個原始面片所處的細分層數(shù)將各個原始面片劃分為平凡面片和非平凡面片:
[0013]若當前原始面片的邊相鄰原始面片的細分層數(shù)均小于或等于當前原始面片的細分層數(shù),則當前原始面片為平凡面片,
[0014]否則,當前原始面片為非平凡面片;
[0015](5-2)若當前原始面片為平凡面片,則以當前原始面片的一環(huán)鄰域的頂點索引作為當前原始面片的控制面片,并確定該控制面片的參數(shù)域;
[0016]若當前原始面片為非平凡面片,則進行如下操作:
[0017](5-21)根據(jù)邊相鄰原始面片大于當前原始面片的細分層數(shù)將當前原始面片劃分為若干個子面片,
[0018](5-22)以當前原始面片的一環(huán)鄰域的頂點索引作為各個子面片的控制面片,并確定各個控制面片的參數(shù)域;
[0019](6)根據(jù)全局細分參數(shù)確定當前細分層數(shù),分別根據(jù)各層控制頂點的位置、各層控制面片、以及各控制面片的參數(shù)域由tessellation著色器繪制第零層面片至第g_d印th層面片,g_depth為當前細分層數(shù)。
[0020]步驟(I)中輸入的三角控制網(wǎng)格包括第零層的控制頂點。
[0021]所述步驟(2)、步驟(3)和步驟(5)可以為離線進行。
[0022]拓撲結(jié)構(gòu)結(jié)構(gòu)中包含各個原始面片,各個面片中相互連接,邊相鄰面片指與該面片共享邊(有公共邊)的面片成為邊相鄰面片。
[0023]本發(fā)明的Loop細分曲面的繪制方法中三角控制網(wǎng)格、最大細分層數(shù)和全局細分參數(shù)由用戶設(shè)定,其中三角控制網(wǎng)格和最大細分層數(shù)在Loop細分曲面的繪制過程中一般不再調(diào)整,而全局細分參數(shù)在Loop細分曲面的繪制過程中用戶可根據(jù)顯示需要實時調(diào)整。[0024]本發(fā)明的Loop細分曲面的繪制方法使用的細分查找表與輸入的三角控制網(wǎng)格的幾何無關(guān),且在類似曲面編輯或動畫這樣的三角網(wǎng)格保持拓撲不變的應(yīng)用中,該細分查找表的生成和上傳僅需要一次,改變?nèi)旨毞謪?shù)后不需要重新生成和上傳細分查找表。
[0025]本發(fā)明的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,基于不規(guī)則區(qū)域的自適應(yīng)方式,利用計算著色器并行計算控制頂點的位置,利用tessellation著色器繪制面片。通過利用GPU的并行處理能力,解決全局細分方法的龐大內(nèi)存和帶寬問題。另外,tessellation著色器只能直接精確繪制規(guī)則區(qū)域的面片,但由于可能相鄰面片處于不同細分層上,若采用tessellation著色器直接繪制面片會出現(xiàn)T型裂縫,本發(fā)明中根據(jù)當前原始面片與相鄰原始面片的細分層數(shù)的關(guān)系,將不規(guī)則的原始面片分割為若干個子面片,然后根據(jù)子面片重構(gòu)三角控制網(wǎng)格,直接構(gòu)造會出現(xiàn)T型裂縫,不能以母面片(原始面片)為單位繪制,必須以子面片為單位繪制,再由tessellation著色器繪制得到相應(yīng)的面片,可以有效消除T裂縫。
[0026]所述步驟(1)中最大細分層數(shù)和全局細分參數(shù)滿足以下條件:
[0027]1.0 ≤ g—tessfactor ≤ 2n,
[0028]其中,g_tessfactor為全局細分參數(shù),η為最大細分層數(shù)。
[0029]最大細分層數(shù)相當于一個約束,用戶根據(jù)需要設(shè)定,實際應(yīng)用中η不超過8。
[0030]所述的不規(guī)則區(qū)域為三角控制網(wǎng)格的奇異點、半尖銳頂點和分層次編輯點。通常三角控制網(wǎng)格帶有奇異點、半尖銳頂點和分層次編輯點,這些點即為不規(guī)則區(qū)域,并構(gòu)成該三角控制網(wǎng)格的第零層拓撲 結(jié)構(gòu)。
[0031]奇異點是指度不為6的頂點。
[0032]半尖銳頂點指在輸入的三角控制網(wǎng)格上,用戶可以對每一條邊指定一個尖銳值,表示該邊細分后的尖銳程度。若一條邊的尖銳值不為零,則該邊為半尖銳邊。若一個頂點連接的邊中含有尖銳值不為零的邊,則該點為半尖銳點,半尖銳的意思是該尖銳值可以為
非整數(shù)。
[0033]分層次編輯點指根據(jù)造型需要,在不同細分層次上對三角控制網(wǎng)格做編輯的點,Loop細分曲面的極限曲面是由四次箱樣條構(gòu)成,除了在奇異點周圍,是由無限數(shù)量的四次箱樣條曲面構(gòu)成。
[0034]所述的細分表包括邊點表和點點表,
[0035]所述的邊點表用于記錄不規(guī)則區(qū)域中各個邊點所在邊的相鄰兩個三角形的四個頂點的索引;
[0036]所述的點點表用于記錄不規(guī)則區(qū)域中的各個頂點的索弓丨,各個頂點的度,以及各頂點的一環(huán)鄰域頂點索引和一環(huán)鄰域頂點的起始位置。
[0037]在Loop細分曲面每一步細分的過程中,需要對控制網(wǎng)格的每一條邊和頂點做細分。在邊上細分得到的頂點為邊點,對頂點細分得到的頂點稱為點點。
[0038]與一個頂點以一條邊相互連接的點,成為該頂點的一環(huán)鄰域頂點。
[0039]邊點表和點點表中記錄的各個內(nèi)容分別存儲于相應(yīng)的緩存中,頂點的索引對應(yīng)于索引緩存,頂點的度存儲于度緩存中,一環(huán)鄰域頂點的起始位置采用偏移量表示,該偏移量存儲于偏移量緩存中。
[0040]所述的控制頂點包括邊點和頂點。[0041]所述步驟(4)中計算各層的控制頂點的位置時在計算著色器中分別設(shè)置邊點線程和點點線程,所述的邊點線程用于計算邊點的位置,所述的點點線程用于計算頂點的位置。
[0042]計算點點時,通過點點線程從索引緩存中獲得該頂點索弓丨,從度緩存讀取該頂點的度,通過偏移量緩存獲得該頂點一環(huán)鄰域頂點索引起始位置,從該位置為起點,讀取若干個(與該頂點度相等)頂點索弓I,進而得到該頂點的一環(huán)鄰域頂點的索弓I,如此,得到了 所有頂點索弓I,米用參考文獻:C.Loop, Smooth subdivision surfaces based ontriangles, Master’ s thesis, Dept, of Math., Univ.0f Utah (1987).中報到的方法,計算得到相應(yīng)的點點坐標。同理,可得到相應(yīng)邊點的坐標。
[0043]所述步驟(5-21)包括:
[0044](a)若只有一個邊相鄰原始面片大于當前原始面片的細分層數(shù),以該邊相鄰原始面片與當前原始面片的公共邊的中點和該當前原始面片中該公共邊相對的頂點的連線為分割線,將當前原始面片拆分為兩個子面片;
[0045](b)若有兩個邊相鄰原始面片大于當前原始面片的細分層數(shù),以兩個邊相鄰原始面片與當前原始面片的公共邊的中點的連線和任意一個公共邊的中點和與該公共邊相對的連線為分割線將當前原始面片拆分為三個子面片;
[0046](c)若有三個邊相鄰原始面片大于當前原始面片的細分層數(shù),以當前原始面片的三條邊的中點的兩兩連線為分割線,將當前原始面片拆分為四個子面片。
[0047]所述步驟(6)包括以下步驟:
[0048](6-1)根據(jù)公式:
[0049]
gJepth = \\og2g-tessfactor]
[0050]確定當前細分層數(shù),其中g(shù)_depth為當前細分層數(shù),g_tessfactor為全局細分參數(shù),[bg2 表示對 log2g_tessfactor 向上取整;
[0051](6-2)根據(jù)公式:
[0052]tessfactori+1 = tessfactorj/2,
[0053]計算第i+1層的細分參數(shù),其中tessfactori為第i層的細分參數(shù),i=0, I,......,
g_depth,其中 tessfactor0 = g_tessfactor ;
[0054](6-3)基于四次箱樣條基函數(shù),根據(jù)每一層的細分參數(shù)、控制頂點、控制面片以及各個控制面片的參數(shù)域繪制相應(yīng)層的面片。
[0055]后一層的細分參數(shù)通過前一層的細分參數(shù)確定,本發(fā)明中后一層的細分參數(shù)是前一層的細分參數(shù)的兩倍。得到各個層的細分參數(shù)后,采用四次箱樣條基函數(shù)即可繪制得到相應(yīng)層的面片。每細分一次后的控制網(wǎng)格可以理解為被細分過一次,那么細分參數(shù)減半。
[0056]與現(xiàn)有的Loop細分曲面的繪制方法相比較,本發(fā)明的Loop細分曲面的繪制方法通過不規(guī)則區(qū)域的自適應(yīng)方式,依據(jù)不規(guī)則面片的類型,將不規(guī)則面片的分割成若干個子面片,然后以得到的子面片生成該三角控制網(wǎng)格的控制面片進行面片繪制。通過分割能夠采用tessellation著色器繪精確計算得到三角控制網(wǎng)格中各層頂點的位置,因此所有計算得到的頂點和法向量都與極限Loop細分曲面相同,且硬件tessellation著色器繪制,解決全局細分方法的龐大內(nèi)存和帶寬問題,能夠達到實時精確繪制Loop細分曲面?!緦@綀D】
【附圖說明】
[0057]圖1為本發(fā)明的Loop細分曲面的繪制方法的流程圖;
[0058]圖2為原始畫面的拆分方法和參數(shù)域的確定示意圖。
【具體實施方式】
[0059]下面將結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。
[0060]一種基于不規(guī)則區(qū)域的自適應(yīng)GPU繪制Loop細分曲面方法,包括以下步驟:
[0061](I)輸入三角控制網(wǎng)格,并設(shè)定最大細分層數(shù)和全局細分參數(shù),且最大細分層數(shù)和全局細分參數(shù)滿足以下條件:
[0062]1.0 ^ g—tessfactor ^ 2n,
[0063]其中,g_tessfactor為全局細分參數(shù),η為最大細分層數(shù)(本實施例中g(shù)_tessfactor=l.0, n=8)。
[0064](2)確定三角控制網(wǎng)格的不規(guī)則區(qū)域,并以該不規(guī)則區(qū)域作為三角控制網(wǎng)格的第零層拓撲結(jié)構(gòu),根據(jù)第零層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第零層細分查找表,根據(jù)第零層細分查找表構(gòu)建三角控制網(wǎng)格的第一層拓撲結(jié)構(gòu),并根據(jù)第一層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第一層細分查找表。
[0065]不規(guī)則區(qū)域為三角控制網(wǎng)格的奇異點、半尖銳頂點和分層次編輯點。本實施例中:奇異點是指度不為6的頂點,半尖銳頂點指連接的邊中有尖銳值不為零的邊的頂點;分層次編輯點指根據(jù)造型需要,在`不同細分層次上對三角控制網(wǎng)格做編輯的點。
[0066](3)依次遞推,直至構(gòu)建得到三角控制網(wǎng)格的第η層細分查找表和第η層拓撲結(jié)構(gòu),其中η等于設(shè)定的最大細分層數(shù);
[0067]細分查找表包括邊點表和點點表,邊點表用于記錄不規(guī)則區(qū)域中各個邊點所在邊的相鄰兩個三角形的四個頂點的索引;點點表用于記錄不規(guī)則區(qū)域中的各個頂點的索引,各個頂點的度,以及各頂點的一環(huán)鄰域頂點索引和一環(huán)鄰域頂點的起始位置。
[0068](4)將各層細分查找表以及第零層控制頂點的位置上傳至GPU,GPU的計算著色器根據(jù)各層細分查找表和上一層控制頂點的位置,依次計算得到各層控制頂點的位置。
[0069](5)根據(jù)各層拓撲結(jié)構(gòu)構(gòu)造該拓撲結(jié)構(gòu)中各個原始面片的控制面片作為該層控制面片,并確定各個控制面片的參數(shù)域,具體如下:
[0070](5-1)根據(jù)所述拓撲結(jié)構(gòu)中各個原始面片所處的細分層數(shù)將各個原始面片劃分為平凡面片和非平凡面片:
[0071]若當前原始面片的邊相鄰原始面片的細分層數(shù)均小于或等于當前原始面片的細分層數(shù),則當前原始面片為平凡面片,
[0072]否則,當前原始面片為非平凡面片;
[0073](5-2)若當前原始面片為平凡面片,則以當前原始面片的一環(huán)鄰域的頂點索引作為當前原始面片的控制面片,并確定該控制面片的參數(shù)域;
[0074]若當前原始面片為非平凡面片,則進行如下操作:
[0075](5-21)根據(jù)邊相鄰原始面片大于當前原始面片的細分層數(shù)將當前原始面片劃分為若干個子面片,具體如下:[0076](a)若只有一個邊相鄰原始面片大于當前原始面片的細分層數(shù),以該邊相鄰原始面片與當前原始面片的公共邊的中點和該當前原始面片中該公共邊相對的頂點的連線為分割線,將當前原始面片拆分為兩個子面片;
[0077](b)若有兩個邊相鄰原始面片大于當前原始面片的細分層數(shù),以兩個邊相鄰原始面片與當前原始面片的公共邊的中點的連線和任意一個公共邊的中點和與該公共邊相對的連線為分割線將當前原始面片拆分為三個子面片;
[0078](c)若有三個邊相鄰原始面片大于當前原始面片的細分層數(shù),以當前原始面片的三條邊的中點的兩兩連線為分割線,將當前原始面片拆分為四個子面片。
[0079](5-22)以當前原始面片的一環(huán)鄰域的頂點索引作為各個子面片的控制面片,并確定各個控制面片的參數(shù)域。
[0080]本實施例中平凡面片的各個子面片的控制面片的參數(shù)域的根據(jù)重心坐標的計算方法確定。
[0081]本實施例中非平凡面片的控制面片的分割規(guī)則,以及分割后各個子面片的參數(shù)域的確定方法如圖2所示,圖中虛線表示分割線,①、②、③和④為子面片的編號。
[0082]如圖2 (a)所示,若只有一個邊相鄰原始面片大于當前原始面片的細分層數(shù),則將當前原始面片拆分為圖2(a)中所示的兩個子面片。
[0083]①號子面片的參數(shù)域為:
[0084]
【權(quán)利要求】
1.一種基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,包括: (1)輸入三角控制網(wǎng)格,并設(shè)定最大細分層數(shù)和全局細分參數(shù); (2)確定三角控制網(wǎng)格的不規(guī)則區(qū)域,并以該不規(guī)則區(qū)域作為三角控制網(wǎng)格的第零層拓撲結(jié)構(gòu),根據(jù)第零層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第零層細分查找表,根據(jù)第零層細分查找表構(gòu)建三角控制網(wǎng)格的第一層拓撲結(jié)構(gòu),并根據(jù)第一層拓撲結(jié)構(gòu)生成三角控制網(wǎng)格的第一層細分查找表; (3)依次遞推,直至構(gòu)建得到三角控制網(wǎng)格的第η層細分查找表和第η層拓撲結(jié)構(gòu),其中η等于設(shè)定的最大細分層數(shù); (4)將各層細分查找表以及第零層控制頂點的位置上傳至GPU,GPU的計算著色器根據(jù)各層細分查找表和上一層控制頂點的位置,依次計算得到各層控制頂點的位置; (5)根據(jù)各層拓撲結(jié)構(gòu)構(gòu)造該拓撲結(jié)構(gòu)中各個原始面片的控制面片作為該層控制面片,并確定各個控制面片的參數(shù)域,具體如下: (5-1)根據(jù)所述拓撲結(jié)構(gòu)中各個原始面片所處的細分層數(shù)將各個原始面片劃分為平凡面片和非平凡面片: 若當前原始面片的邊相鄰原始面片的細分層數(shù)均小于或等于當前原始面片的細分層數(shù),則當前原始面片為平凡面片, 否則,當前原始面片為非平凡面片; (5-2)若當前原始面片為平凡面片,則以當前原始面片的一環(huán)鄰域的頂點索引作為當前原始面片的控制面片, 并確定該控制面片的參數(shù)域; 若當前原始面片為非平凡面片,則進行如下操作: (5-21)根據(jù)邊相鄰原始面片大于當前原始面片的細分層數(shù)將當前原始面片劃分為若干個子面片, (5-22)以當前原始面片的一環(huán)鄰域的頂點索引作為各個子面片的控制面片,并確定各個控制面片的參數(shù)域; (6)根據(jù)全局細分參數(shù)確定當前細分層數(shù),分別根據(jù)各層控制頂點的位置、各層控制面片、以及各控制面片的參數(shù)域由tessellation著色器繪制第零層面片至第g_d印th層面片,g_depth為當前細分層數(shù)。
2.如權(quán)利要求1所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述步驟(1)中最大細分層數(shù)和全局細分參數(shù)滿足以下條件:
1.0 ^ g—tessfactor ^ 2n, 其中,g_tessfactor為全局細分參數(shù),η為最大細分層數(shù)。
3.如權(quán)利要求2所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述的不規(guī)則區(qū)域為三角控制網(wǎng)格的奇異點、半尖銳頂點和分層次編輯點。
4.如權(quán)利要求3所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述的細分表包括邊點表和點點表, 所述的邊點表用于記錄不規(guī)則區(qū)域中各個邊點所在邊的相鄰兩個三角形的四個頂點的索引; 所述的點點表用于記錄不規(guī) 則區(qū)域中的各個頂點的索弓丨,各個頂點的度,以及各頂點的一環(huán)鄰域頂點索引和一環(huán)鄰域頂點的起始位置。
5.如權(quán)利要求4所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述的控制頂點包括邊點和頂點。
6.如權(quán)利要求5所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述步驟(4)中計算控制頂點的位置時在計算著色器中分別設(shè)置邊點線程和點點線程,所述的邊點線程用于計算邊點的位置,所述的點點線程用于計算頂點的位置。
7.如權(quán)利要求6所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述步驟(5-21)包括: Ca)若只有一個邊相鄰原始面片大于當前原始面片的細分層數(shù),以該邊相鄰原始面片與當前原始面片的公共邊的中點和該當前原始面片中該公共邊相對的頂點的連線為分割線,將當前原始面片拆分為兩個子面片; (b)若有兩個邊相鄰原始面片大于當前原始面片的細分層數(shù),以兩個邊相鄰原始面片與當前原始面片的公共邊的中點的連線和任意一個公共邊的中點和與該公共邊相對的連線為分割線將當前原始面片拆分為三個子面片; (c)若有三個邊相鄰原始面片大于當前原始面片的細分層數(shù),以當前原始面片的三條邊的中點的兩兩連線為分割線,將當前原始面片拆分為四個子面片。
8.如權(quán)利要求7所述的基于不規(guī)則區(qū)域的自適應(yīng)性的Loop細分曲面的繪制方法,其特征在于,所述步驟(6 )包括以下步驟: (6-1)根據(jù)公式:
【文檔編號】G06T17/30GK103810756SQ201410021013
【公開日】2014年5月21日 申請日期:2014年1月17日 優(yōu)先權(quán)日:2014年1月17日
【發(fā)明者】馮結(jié)青, 黃韻岑 申請人:浙江大學