實(shí)現(xiàn)三維模型索引緩沖共享、體系創(chuàng)建的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)三維模型索引緩沖共享、體系創(chuàng)建的方法和系統(tǒng),涉及三維空間模型建?!炯夹g(shù)領(lǐng)域】。包括如下步驟:設(shè)置三維模型索引緩沖的排列方式;加載第m-1個(gè)三維模型,根據(jù)所述索引緩沖的排列方式,生成第m-1索引緩沖,并存儲(chǔ);所述第m-1索引緩沖為全局變量;加載第m個(gè)三維模型,通過比較所述第m-1個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-1索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ);重復(fù)上一步驟,直到n個(gè)三維模型均加載完成;m、n均為自然數(shù),2≤m≤n。本發(fā)明降低了創(chuàng)建多個(gè)三維模型時(shí),內(nèi)存資源的占用率,提高了系統(tǒng)的運(yùn)行效率。
【專利說明】實(shí)現(xiàn)三維模型索引緩沖共享、體系創(chuàng)建的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及三維空間模型建?!炯夹g(shù)領(lǐng)域】,尤其涉及一種實(shí)現(xiàn)三維模型索引緩沖共享、體系創(chuàng)建的方法和系統(tǒng)。
【背景技術(shù)】
[0002]目前,在三維建模領(lǐng)域中,為了減少計(jì)算機(jī)內(nèi)存的占用率,提高圖形渲染速度,一般每個(gè)模型都使用獨(dú)立的頂點(diǎn)緩沖(Vertex Buffer)和獨(dú)立的索引緩沖(Index Buffer)。其中,索引緩沖用于保存頂點(diǎn)緩沖的內(nèi)存資源,用來告訴三維引擎渲染頂點(diǎn)的順序,使用索引緩沖可以避免不必要重復(fù)資源在內(nèi)存中出現(xiàn)。
[0003]但是,當(dāng)一個(gè)三維模型體系中存在多個(gè)模型時(shí),由于每個(gè)模型都使用獨(dú)立的索引緩沖,所以,多個(gè)模型的大量的索引緩沖依然會(huì)消耗大量?jī)?nèi)存,從而導(dǎo)致系統(tǒng)運(yùn)行效率下降甚至崩潰。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種實(shí)現(xiàn)三維模型索引緩沖共享、體系創(chuàng)建的方法和系統(tǒng),從而解決現(xiàn)有技術(shù)中存在的前述問題。
[0005]為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0006]一種實(shí)現(xiàn)三維模型索引緩沖共享的方法,包括如下步驟:
[0007]S101,設(shè)置三維模型索引緩沖的排列方式;
[0008]S102,加載第m-Ι個(gè)三維模型,根據(jù)所述索引緩沖的排列方式,生成第m-Ι索引緩沖,并存儲(chǔ);所述第m-Ι索引緩沖為全局變量;
[0009]S103,加載第m個(gè)三維模型,通過比較所述第m_l個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ);
[0010]S104,重復(fù)步驟S103,直到η個(gè)三維模型均加載完成;
[0011]其中,m、n均為自然數(shù),2彡m彡η。
[0012]進(jìn)一步地,步驟SlOl之前,還包括步驟,設(shè)置三維模型的頂點(diǎn)的排列方式。
[0013]具體地,所述第m-Ι索引緩沖具體為類的靜態(tài)變量。
[0014]其中,步驟S103具體為,加載第m個(gè)三維模型,比較所述第m_l個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)大于第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖作為共享索引緩沖,并存儲(chǔ);如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)小于或等于第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則保持所述第m-Ι索引緩沖,作為共享索引緩沖。
[0015]一種實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng),包括,
[0016]設(shè)置模塊:用于設(shè)置三維模型索引緩沖的排列方式;
[0017]比較判斷模塊:用于比較第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),并用于判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ);
[0018]索引緩沖生成模塊:用于生成和/或更新索引緩沖;
[0019]三維模型加載模塊:用于加載三維模型。
[0020]一種實(shí)現(xiàn)三維模型體系創(chuàng)建的方法,包括如下步驟,
[0021]S201,記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值;
[0022]S202,將上述生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎;
[0023]S203,利用所述三維引擎繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
[0024]具體地,所述三維引擎包括OPENGL和DIRECTX。
[0025]一種實(shí)現(xiàn)三維模型體系創(chuàng)建的系統(tǒng),包括,
[0026]上述實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng);
[0027]記錄模塊:用于記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值;
[0028]轉(zhuǎn)發(fā)模塊:用于將權(quán)利要求1-4任一項(xiàng)中生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎;
[0029]三維引擎:用于繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
[0030]具體地,所述三維引擎包括OPENGL和DIRECTX。
[0031]本發(fā)明的有益效果是:本發(fā)明通過獲取多個(gè)三維模型中最大的索引緩沖,進(jìn)而使多個(gè)三維模型共享該最大的索引緩沖,創(chuàng)建多個(gè)三維模型時(shí),降低了內(nèi)存資源的占用率,進(jìn)而提聞了系統(tǒng)的運(yùn)行效率。
【專利附圖】
【附圖說明】
[0032]圖1是本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)三維模型索引緩沖共享的方法流程示意圖;
[0033]圖2是本發(fā)明實(shí)施例提供的一種實(shí)現(xiàn)三維模型體系創(chuàng)建的方法流程示意圖;
[0034]圖3是本發(fā)明實(shí)驗(yàn)例一提供的三維模型共享索引緩沖的示意圖;
[0035]圖4是本發(fā)明實(shí)驗(yàn)例二提供的三維模型共享索引緩沖的示意圖;
[0036]圖5是本發(fā)明實(shí)驗(yàn)例三提供的創(chuàng)建太陽系三維模型體系時(shí)共享索引緩沖的示意圖;
[0037]圖6是本發(fā)明實(shí)驗(yàn)例四提供的創(chuàng)建井筒三維模型體系時(shí)共享索引緩沖的示意圖。
【具體實(shí)施方式】
[0038]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的【具體實(shí)施方式】?jī)H僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0039]在目前兩大流行的三維引擎opengl和DIRECTX中,都使用頂點(diǎn)緩沖(VertexBuffer)和索引緩沖(Index Buffer)來減少計(jì)算機(jī)內(nèi)存占用、提高圖形渲染速度。索引緩沖用于保存頂點(diǎn)索引的內(nèi)存資源,用來告訴三維引擎渲染頂點(diǎn)的順序,使用索引緩沖可以避免不必要重復(fù)資源在內(nèi)存中出現(xiàn)。
[0040]比如,畫兩個(gè)沒有索引緩沖的三角形,由于每個(gè)三角形有三個(gè)頂點(diǎn),因此2個(gè)三角形需要6個(gè)頂點(diǎn)。而第一個(gè)三角形的頂點(diǎn)O和第二個(gè)三角形的頂點(diǎn)4是重合的,第一個(gè)三角形的頂點(diǎn)2和第二個(gè)三角形的頂點(diǎn)5是重合的,在這樣情況下,如果使用索引緩沖的話,索引緩沖可以記錄頂點(diǎn)的順序,并將渲染頂點(diǎn)的順序告訴三維引擎,則只需要4個(gè)點(diǎn)就可以繪制這2個(gè)三角形。
[0041]可見,每個(gè)頂點(diǎn)緩沖的頂點(diǎn)包含X、y、z坐標(biāo),還可能包含紋理坐標(biāo)、顏色屬性等,而每個(gè)索引緩沖的頂點(diǎn)只是一個(gè)整數(shù)值,因此在頂點(diǎn)數(shù)量較多時(shí),使用索引緩沖可以顯著降低頂點(diǎn)的數(shù)量,避免重復(fù)數(shù)據(jù)占用大量?jī)?nèi)存。在三維建模領(lǐng)域中,一般情況下都是每個(gè)模型都使用獨(dú)立的頂點(diǎn)緩沖和獨(dú)立的索引緩沖來減少模型占用內(nèi)存。
[0042]但是,當(dāng)一個(gè)三維場(chǎng)景中模型很多時(shí),即便每個(gè)模型都使用索引緩沖,依然會(huì)消耗大量?jī)?nèi)存,從而導(dǎo)致系統(tǒng)運(yùn)行效率下降甚至崩潰。為了減小多個(gè)三維模型的多個(gè)索引緩沖占用的內(nèi)存量,本發(fā)明實(shí)施例提供了一種多個(gè)三維模型共享一個(gè)索引緩沖的方法,使多個(gè)三維模型能夠共享同一個(gè)索引緩沖,從而解決每個(gè)三維模型都使用獨(dú)立的索引緩沖帶來的內(nèi)存占用量大的問題。
[0043]如圖1所示,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)三維模型索引緩沖共享的方法,包括如下步驟:
[0044]S101,設(shè)置三維模型索引緩沖的排列方式;
[0045]S102,加載第m-Ι個(gè)三維模型,根據(jù)所述索引緩沖的排列方式,生成第m_l索引緩沖,并存儲(chǔ);所述第m-Ι索引緩沖為全局變量;
[0046]S103,加載第m個(gè)三維模型,通過比較所述第m_l個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ);
[0047]S104,重復(fù)步驟S103,直到η個(gè)三維模型均加載完成;
[0048]其中,m、n均為自然數(shù),2彡m彡η。
[0049]由于η個(gè)三維模型均根據(jù)相同的索引緩沖的排列方式加載,對(duì)應(yīng)的η個(gè)索引緩沖,均是其中最大的一個(gè)索弓I緩沖的子集,所以,只要加載η個(gè)三維模型時(shí),均根據(jù)相同的索引緩沖的排列方式進(jìn)行加載,并找到η個(gè)三維模型對(duì)應(yīng)的多個(gè)索引緩沖中的最大的索引緩沖,將該最大的索引緩沖作為共享的索引緩沖,即η個(gè)三維模型只是用一個(gè)共享索引緩沖,這樣,就可以減少內(nèi)存占用資源。
[0050]本發(fā)明實(shí)施例中,通過上述方法,找到了 η個(gè)三維模型對(duì)應(yīng)的η個(gè)索引緩沖中最大的索引緩沖,從而使η個(gè)三維模型可以共享一個(gè)索弓I緩沖。
[0051]本發(fā)明實(shí)施例中,步驟SlOl之前,還包括步驟,設(shè)置三維模型的頂點(diǎn)的排列方式。三維模型的頂點(diǎn)的排列方式固定后,三維模型的索引緩沖的排列方式也就固定了,本發(fā)明實(shí)施例中,通過設(shè)置三維模型的頂點(diǎn)的排列方式來設(shè)置三維模型的索引緩沖的排列方式,簡(jiǎn)單、易于操作。
[0052]本發(fā)明實(shí)施例中,第m-Ι索引緩沖具體為類的靜態(tài)變量。對(duì)于C#、JAVA等編程語言,可以將第m-Ι索引緩沖設(shè)置為類的靜態(tài)變量,使其成為全局變量,能夠被其他的三維模型訪問。
[0053]本發(fā)明實(shí)施例中,步驟S103具體為,加載第m個(gè)三維模型,比較所述第m_l個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)大于第m-1個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖作為共享索引緩沖,并存儲(chǔ);如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)小于或等于第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則保持所述第m-1索引緩沖,作為共享索引緩沖。通過采用這種方法,就可以得到m個(gè)三維模型中最大的索引緩沖,其余的三維模型的索引緩沖是這個(gè)最大的索引緩沖的自己,從而使所有的三維模型共享該最大的索引緩沖。
[0054]本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng),包括,
[0055]設(shè)置模塊:用于設(shè)置三維模型索引緩沖的排列方式;
[0056]比較判斷模塊:用于比較第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),并用于判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,并存儲(chǔ);
[0057]索引緩沖生成模塊:用于生成和/或更新索引緩沖;
[0058]三維模型加載模塊:用于加載三維模型。
[0059]該實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng)用于實(shí)現(xiàn)上述實(shí)施例提供的實(shí)現(xiàn)三維模型索引緩沖共享的方法,以減小多個(gè)三維模型使用獨(dú)立的多個(gè)索引緩沖的內(nèi)存占用率,進(jìn)而提高系統(tǒng)的運(yùn)行效率以及便于內(nèi)存的管理。
[0060]本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)三維模型體系創(chuàng)建的方法,包括如下步驟,
[0061]S201,記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值;
[0062]S202,將采用上述實(shí)施例中的實(shí)現(xiàn)三維模型索引緩沖共享的方法生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎;
[0063]S203,利用所述三維引擎繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
[0064]本發(fā)明實(shí)施例提供的三維模型體系的創(chuàng)建方法,在創(chuàng)建三維模型體系過程中,體系中的多個(gè)三維模型共享索引緩沖,多個(gè)三維模型共享索引緩沖的方法為本發(fā)明上述實(shí)施例提供的,采用這種三維模型體系的創(chuàng)建方法,減小了內(nèi)存的占用率,進(jìn)而提高了系統(tǒng)創(chuàng)建三維模型體系的運(yùn)行速率。
[0065]其中,在創(chuàng)建三維模型體系中,使用的三維引擎包括OPENGL和DIRECTX。使用三維引擎創(chuàng)建三維模型過程中,需要獲取三維模型使用的索引緩沖,如果三維模型的索引緩沖是共享索引緩沖的子集時(shí),則還需要獲取該三維模型使用的索引緩沖的起始值和終止值。從而對(duì)三維模型進(jìn)行繪制和渲染。
[0066]本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)三維模型體系創(chuàng)建的系統(tǒng),包括,
[0067]本發(fā)明上述實(shí)施例提供的實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng);
[0068]記錄模塊:用于記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值;
[0069]轉(zhuǎn)發(fā)模塊:用于將權(quán)利要求1-4任一項(xiàng)中生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎;
[0070]三維引擎:用于繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
[0071]該實(shí)現(xiàn)三維模型體系創(chuàng)建的系統(tǒng)用于實(shí)現(xiàn)上述實(shí)施例提供的實(shí)現(xiàn)三維模型體系創(chuàng)建的方法,以減小多個(gè)三維模型使用獨(dú)立的多個(gè)索引緩沖的內(nèi)存占用率,進(jìn)而提高系統(tǒng)的運(yùn)行效率以及便于內(nèi)存的管理。
[0072]其中,所述三維引擎包括OPENGL和DIRECTX。這兩種三維引擎,技術(shù)先進(jìn)且成熟,能夠滿足所有的三維模型的創(chuàng)建。
[0073]實(shí)驗(yàn)例一
[0074]如圖3所示,4個(gè)模型盡管頂點(diǎn)緩沖數(shù)據(jù)可能不同,但是他們的索引緩沖卻是相同的,所以,這4個(gè)模型可以共享一個(gè)索弓I緩沖。
[0075]實(shí)驗(yàn)例二
[0076]如圖4所示,4個(gè)模型從左至右依次為模型A、模型B、模型C和模型D。從圖中可以看出,4個(gè)模型的索引緩沖都不一樣,所以4個(gè)模型不能簡(jiǎn)單的共享索引緩沖。但是模型A的索引緩沖只是模型B的索引緩沖的一個(gè)子集,模型C、D的索引緩沖也分別是模型B的索引緩沖的一個(gè)子集,也就是說,在4個(gè)模型中,其他三個(gè)模型的索引緩沖都是其中的一個(gè)模型的索引緩沖的子集,那么這4個(gè)模型共享最大的模型的索引緩沖,即模型A、B、C、D共享模型B的索引緩沖。
[0077]實(shí)驗(yàn)例三
[0078]如圖5所示,要?jiǎng)?chuàng)建一個(gè)三維太陽系模型,太陽系有8大行星和成千上萬的小行星,在創(chuàng)建過程中,為了減小內(nèi)存占用率,使所有的代表行星的球體共享一個(gè)索引緩沖,甚至只創(chuàng)建一個(gè)頂點(diǎn)緩沖讓這些球體共享數(shù)據(jù)。這樣,盡管三維太陽系模型中的球體成千上萬,但是創(chuàng)建過程中占用的內(nèi)存卻很小。但是,為了使所有的代表行星的球體共享一個(gè)索引緩沖,必須保證在創(chuàng)建過程中,所有的球體的索引緩沖的排列方式都要參照最大的球體的索引緩沖的排列方式。
[0079]實(shí)驗(yàn)例四
[0080]如圖6所示,要?jiǎng)?chuàng)建成千上萬的三維井筒體系模型,這些井筒的深度范圍各不相同,走向也不同,因此構(gòu)建時(shí)使用的頂點(diǎn)數(shù)據(jù)和索引數(shù)據(jù)就不同。如果每個(gè)井筒都是用獨(dú)立的頂點(diǎn)數(shù)據(jù)和索引數(shù)據(jù),則會(huì)占用大量的內(nèi)存,本實(shí)驗(yàn)例中,讓所有的三維井筒共享一個(gè)索引緩沖,只需要在構(gòu)建三維井筒時(shí),為采樣數(shù)(頂點(diǎn)數(shù))最多的那個(gè)井筒構(gòu)建索引緩沖,其余井筒就可以共享這個(gè)索引緩沖。因?yàn)槠溆嗑驳乃饕彌_數(shù)據(jù)只是這個(gè)最大的索引緩沖數(shù)據(jù)的一部分。但是在創(chuàng)建過程中,所有的井筒的索引緩沖的排列方式都要參照最大的井筒的索引緩沖的排列方式。
[0081]通過采用本發(fā)明公開的上述技術(shù)方案,得到了如下有益的效果:本發(fā)明通過獲取多個(gè)三維模型中最大的索引緩沖,進(jìn)而使多個(gè)三維模型共享該最大的索引緩沖,降低了存在多個(gè)三維模型時(shí),內(nèi)存資源的占用率,進(jìn)而提高了系統(tǒng)的運(yùn)行效率。
[0082]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
[0083]本領(lǐng)域人員應(yīng)該理解的是,上述實(shí)施例提供的方法步驟的時(shí)序可根據(jù)實(shí)際情況進(jìn)行適應(yīng)性調(diào)整,也可根據(jù)實(shí)際情況并發(fā)進(jìn)行。
[0084]上述實(shí)施例涉及的方法中的全部或部分步驟可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)設(shè)備可讀取的存儲(chǔ)介質(zhì)中,用于執(zhí)行上述各實(shí)施例方法所述的全部或部分步驟。所述計(jì)算機(jī)設(shè)備,例如:個(gè)人計(jì)算機(jī)、服務(wù)器、網(wǎng)絡(luò)設(shè)備、智能移動(dòng)終端、智能家居設(shè)備、穿戴式智能設(shè)備、車載智能設(shè)備等;所述的存儲(chǔ)介質(zhì),例如:RAM、ROM、磁碟、磁帶、光盤、閃存、U盤、移動(dòng)硬盤、存儲(chǔ)卡、記憶棒、網(wǎng)絡(luò)服務(wù)器存儲(chǔ)、網(wǎng)絡(luò)云存儲(chǔ)坐寸ο
[0085]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0086]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種實(shí)現(xiàn)三維模型索引緩沖共享的方法,其特征在于,包括如下步驟: S101,設(shè)置三維模型索引緩沖的排列方式; S102,加載第m-Ι個(gè)三維模型,根據(jù)所述索引緩沖的排列方式,生成第m-Ι索引緩沖,并存儲(chǔ);所述第m-Ι索引緩沖為全局變量; S103,加載第m個(gè)三維模型,通過比較所述第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ); S104,重復(fù)步驟S103,直到η個(gè)三維模型均加載完成; 其中,m、η均為自然數(shù),2彡m彡η。
2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)三維模型索引緩沖共享的方法,其特征在于,步驟SlOl之前,還包括步驟,設(shè)置三維模型的頂點(diǎn)的排列方式。
3.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)三維模型索引緩沖共享的方法,其特征在于,所述第m-1索引緩沖具體為類的靜態(tài)變量。
4.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)三維模型索引緩沖共享的方法,其特征在于,步驟S103具體為,加載第m個(gè)三維模型,比較所述第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和所述第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)大于第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖作為共享索引緩沖,并存儲(chǔ);如果第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù)小于或等于第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù),則保持所述第m-Ι索引緩沖,作為共享索引緩沖。
5.一種實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng),其特征在于,包括, 設(shè)置模塊:用于設(shè)置三維模型索引緩沖的排列方式; 比較判斷模塊:用于比較第m-Ι個(gè)三維模型的頂點(diǎn)個(gè)數(shù)和第m個(gè)三維模型的頂點(diǎn)個(gè)數(shù),并用于判斷是否要根據(jù)所述索引緩沖的排列方式,更新所述第m-Ι索引緩沖,生成第m索引緩沖,確定共享索引緩沖,并存儲(chǔ); 索引緩沖生成模塊:用于生成和/或更新索引緩沖; 三維模型加載模塊:用于加載三維模型。
6.一種實(shí)現(xiàn)三維模型體系創(chuàng)建的方法,其特征在于,包括如下步驟, S201,記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值; S202,將權(quán)利要求1-4任一項(xiàng)中生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎; S203,利用所述三維引擎繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
7.根據(jù)權(quán)利要求6所述的實(shí)現(xiàn)三維模型體系創(chuàng)建的方法,其特征在于,所述三維引擎包括 OPENGL 和 DIRECTX。
8.一種實(shí)現(xiàn)三維模型體系創(chuàng)建的系統(tǒng),其特征在于,包括, 權(quán)利要求5所述的實(shí)現(xiàn)三維模型索引緩沖共享的系統(tǒng); 記錄模塊:用于記錄每個(gè)三維模型使用的索引緩沖的起始值和終止值; 轉(zhuǎn)發(fā)模塊:用于將權(quán)利要求1-4任一項(xiàng)中生成的共享索引緩沖、步驟S201中得到的每個(gè)三維模型使用的索引緩沖的起始值和終止值均發(fā)送到三維引擎; 三維引擎:用于繪制每個(gè)三維模型,創(chuàng)建三維模型體系。
9.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)三維模型體系創(chuàng)建的系統(tǒng),其特征在于,所述三維引擎包括 OPENGL 和 DIRECTX。
【文檔編號(hào)】G06T17/00GK104200053SQ201410486310
【公開日】2014年12月10日 申請(qǐng)日期:2014年9月22日 優(yōu)先權(quán)日:2014年9月22日
【發(fā)明者】李生龍 申請(qǐng)人:克拉瑪依紅有軟件有限責(zé)任公司