專利名稱:一種粒子模板庫(kù)文件的創(chuàng)建方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視音頻編輯技術(shù)領(lǐng)域,特別是涉及一種粒子模板庫(kù)文件的創(chuàng)建方法及系統(tǒng)。
背景技術(shù):
一個(gè)粒子就是三維空間中的一個(gè)點(diǎn)(如同灰塵或空氣中的顆粒),它具有位置、速度、加速度、顏色和壽命等屬性,多個(gè)同樣的粒子組合在一起就構(gòu)成了粒子物體,這些粒子都通過粒子發(fā)射器顯示于場(chǎng)景中,一個(gè)粒子物體可以包含一個(gè)粒子,也可以包括無(wú)數(shù)個(gè)粒子。方便快捷的粒子創(chuàng)建需要大量的粒子模板以及大量的圖形支持。現(xiàn)有的粒子模板庫(kù)文件通常采用第三方文件格式(文本文件)來(lái)存儲(chǔ),而且一個(gè)粒子模板庫(kù)文件通常只包含一個(gè)發(fā)射器模板及一個(gè)圖形,無(wú)法滿足粒子創(chuàng)建對(duì)大量粒子模板及圖形的需求,當(dāng)需要添加或刪除發(fā)射器模板或圖形模板時(shí),需要添加或刪除模板庫(kù)文件,操作復(fù)雜而且效率不聞。因此對(duì)于本領(lǐng)域技術(shù)人員來(lái)說,迫切需要解決的一個(gè)技術(shù)問題是:如何提出一種粒子模板庫(kù)文件的創(chuàng)建方法,可以存放大量的發(fā)射器模板及大量的圖形,并且可以方便添加和刪除發(fā)射器模板和圖形模板。
發(fā)明內(nèi)容
本發(fā)明提供一種粒子模板庫(kù)文件的創(chuàng)建方法及系統(tǒng),以實(shí)現(xiàn)粒子模板庫(kù)文件存放大量的發(fā)射器模板及大量的圖形,并且可以方便添加和刪除發(fā)射器模板和圖形模板的目的。為了解決上述問題,本發(fā)明公開了一種粒子模板庫(kù)文件的創(chuàng)建方法,包括:以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu);將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù);將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件??蛇x地,所述以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu),包括:以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn);在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)點(diǎn);在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn);在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn);依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)??蛇x地,所述將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù),包括:
依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV 函數(shù)??蛇x地,所述將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,包括:調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中??蛇x地,還包括:添加新的發(fā)射器到所述模板庫(kù)文件中,包括:創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器;添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上;調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。本發(fā)明還提供了一種粒子模板庫(kù)文件的創(chuàng)建系統(tǒng),包括:樹狀結(jié)構(gòu)建立模塊,用于以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu);轉(zhuǎn)換模塊,用于將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù);寫入生成模塊,用于將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件??蛇x地,所述樹狀結(jié)構(gòu)建立模塊包括:第一建立子模塊,用于以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn);第二建立子模塊,用于在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)
占.
第三建立子模塊,用于在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn);第四建立子模塊,用于在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn);第五建立子模塊,用于依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)。可選地,所述轉(zhuǎn)換模塊用于依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV函數(shù)??蛇x地,所述寫入生成模塊用于調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中??蛇x地,還包括:發(fā)射器添加模塊,用于添加新的發(fā)射器到所述模板庫(kù)文件中;所述發(fā)射器添加模塊包括:創(chuàng)建子模塊,用于創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器;添加子模塊,用于添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上;保存子模塊,用于調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn):
本發(fā)明提供的粒子模板庫(kù)文件的創(chuàng)建方法,可以保存大量的發(fā)射器模板以及大量的圖形模板,而且粒子模板庫(kù)文件采用KLV的存儲(chǔ)方式,呈現(xiàn)層層節(jié)點(diǎn)構(gòu)成的樹狀結(jié)構(gòu),不僅分類清晰,而且通過在文件夾節(jié)點(diǎn)的對(duì)應(yīng)子節(jié)點(diǎn)上添加新的發(fā)射器或圖形,即可實(shí)現(xiàn)發(fā)射器模板和圖形模板的添加和刪除,方便快捷。
圖1是本發(fā)明實(shí)施例所述一種粒子模板庫(kù)文件的創(chuàng)建方法的流程圖;圖2是本發(fā)明實(shí)施例所述樹狀結(jié)構(gòu)的示意圖;圖3是本發(fā)明實(shí)施例所述模板庫(kù)文件的結(jié)構(gòu)示意圖;圖4是本發(fā)明實(shí)施例所述發(fā)射器模板庫(kù)的結(jié)構(gòu)示意圖;圖5是本發(fā)明實(shí)施例所述圖形模板庫(kù)的結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例所述一種粒子模板庫(kù)文件的創(chuàng)建系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。參照?qǐng)D1,示出了本發(fā)明一種粒子模板庫(kù)文件的創(chuàng)建方法的流程圖,本實(shí)施例具體可以包括以下步驟:步驟100,以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu);以模板庫(kù)作為父節(jié)點(diǎn),模板庫(kù)之下可以有很多子節(jié)點(diǎn)。在本實(shí)施例中以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu),具體可以包括以下子步驟:子步驟1,以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn);子步驟2,在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)點(diǎn);子步驟3,在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn);子步驟4,在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn);子步驟5,依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)。最終建立的樹狀結(jié)構(gòu)如圖2所示,父節(jié)點(diǎn)為一個(gè)模板庫(kù),一級(jí)子節(jié)點(diǎn)一個(gè)為發(fā)射器模板庫(kù)和一個(gè)圖形模板庫(kù),二級(jí)子節(jié)點(diǎn)為多個(gè)文件夾節(jié)點(diǎn)(文件夾0節(jié)點(diǎn)、文件夾I節(jié)
點(diǎn)......文件夾n節(jié)點(diǎn)),三級(jí)子節(jié)點(diǎn)為多個(gè)發(fā)射器節(jié)點(diǎn)(發(fā)射器0節(jié)點(diǎn)、發(fā)射器I節(jié)
點(diǎn)......發(fā)射器n節(jié)點(diǎn))和多個(gè)圖形節(jié)點(diǎn)(圖形0節(jié)點(diǎn)、圖形I節(jié)點(diǎn)......圖形n節(jié)點(diǎn)),
四級(jí)子節(jié)點(diǎn)為粒子元節(jié)點(diǎn)。需要說明的是,模板庫(kù)文件是粒子編輯器的模板庫(kù)可以直接載入的文件,如圖3所示模板庫(kù)文件(Template Lib)包括發(fā)射器模板庫(kù)(Emitter Template Lib)和圖形模板庫(kù)(Shape Template Lib)。其中,所述發(fā)射器模板庫(kù)記錄n(n >= I)個(gè)發(fā)射器信息,包括粒子發(fā)射器的所有參數(shù)以及其值。發(fā)射器模板庫(kù)部分由一個(gè)或多個(gè)文件夾組成,每個(gè)文件夾下包含一個(gè)到多個(gè)發(fā)射器模板,發(fā)射器模板是由發(fā)射器(Emitters)組成,發(fā)射器模板庫(kù)的結(jié)構(gòu)如圖4所示,包括文件夾O (FileFolderO)至文件夾n (FileFolder n),每個(gè)文件夾下包括發(fā)射器0 (EmitterO)至發(fā)射器n (Emittern),每個(gè)發(fā)射器下包括發(fā)射器參數(shù)0 (EmitterParam 0)至發(fā)射器參數(shù)n (EmitterParam n),以及粒子元0 (Cell 0)至粒子元n (Cell n)。需要說明的是,圖4所示的發(fā)射器模板庫(kù)對(duì)應(yīng)圖2中的發(fā)射器模板庫(kù),圖4中的文件夾對(duì)應(yīng)圖2中的文件夾節(jié)點(diǎn),圖4中的發(fā)射器對(duì)應(yīng)圖2中的發(fā)射器節(jié)點(diǎn),圖4中的粒子元對(duì)應(yīng)圖2中的粒子元節(jié)點(diǎn)。需要進(jìn)一步說明的是,模板庫(kù)節(jié)點(diǎn)(Template Lib節(jié)點(diǎn))、發(fā)射器模板庫(kù)文件(Emitter Template Lib)節(jié)點(diǎn)以及文件夾節(jié)點(diǎn)均為CNxParticleElementBin類型,CNxParticleElementBin類型允許包含CNxParticleElement類型的子節(jié)點(diǎn),發(fā)射器CNxParticleEmitter 是文件夾節(jié)點(diǎn)的子兀素。而且 CNxParticleElementBin 的 SaveKLV 函數(shù),為循環(huán)調(diào)用其子節(jié)點(diǎn)CNxParticleElement的SaveKLV函數(shù),所述CNxParticleElement是基類,所有的元素均繼承于它。所述圖形模板庫(kù)記錄n(n>= I)個(gè)圖形信息,為修改粒子模型提供大量的模板。圖形模板庫(kù)由一個(gè)或多個(gè)文件夾組成,每個(gè)文件夾下包含一個(gè)到多個(gè)圖形模板,圖形模板是由圖形shape 組成,圖形的格式為BGRA。圖形模板庫(kù)的結(jié)構(gòu)如圖5所示,包括文件夾0 (FileFolderO)至文件夾n (FileFolder n),每個(gè)文件夾下包括圖形0 (Image
0)至圖形n (Image n),每個(gè)圖形下包括若干個(gè)圖形屬性,如名稱(Name)、寬度(Width)、高度(Height)、參考點(diǎn) X(RerferencePointX)> 參考點(diǎn) Y(RerferencePointY)> 數(shù)據(jù)(bufferdata)等。步驟102,將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù);本實(shí)施例中將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)可以通過依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV函數(shù)來(lái)實(shí)現(xiàn),其中,SaveKLV函數(shù)是用來(lái)保存KLV文件的函數(shù)具體如下:I)調(diào)用模板庫(kù)節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即調(diào)用模板庫(kù)節(jié)點(diǎn)CNxParticleElementBin:: SaveKLVO ;2)調(diào)用發(fā)射器模板庫(kù)節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即調(diào)用發(fā)射器模板庫(kù)節(jié)點(diǎn)的CNxParticleElementBin::SaveKLVO ;3)調(diào)用文件夾0節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即調(diào)用文件夾0 節(jié)點(diǎn)的 CNxParticleElementBin::SaveKLV();4)調(diào)用發(fā)射器0節(jié)點(diǎn)的Emitter的SaveKLV函數(shù);即調(diào)用發(fā)射器0 節(jié)點(diǎn)的 CNxParticleEmitter::SaveKLVO ;5)調(diào)用發(fā)射器0參數(shù)Param的SaveKLV函數(shù),并循環(huán)至發(fā)射器n參數(shù);即調(diào)用發(fā)射器0參數(shù)CNxParticleParam: =SaveKLVO,循環(huán)到發(fā)射器所有參數(shù);6)調(diào)用粒子元0節(jié)點(diǎn)的Cell的SaveKLV函數(shù);即調(diào)用粒子兀0 節(jié)點(diǎn)的 CNxParticleCell:: SaveKLVO ;7)調(diào)用粒子元0參數(shù)Param的SaveKLV函數(shù),并循環(huán)至粒子元n參數(shù)即調(diào)用粒子元0參數(shù)CNxParticleParam:: SaveKLV (),并循環(huán)粒子元所有參數(shù);8)循環(huán)至粒子元n節(jié)點(diǎn)的Cell的SaveKLV函數(shù);
即循環(huán)到粒子兀η 節(jié)點(diǎn)的 CNxParticleCell:: SaveKLV();9)循環(huán)至發(fā)射器η節(jié)點(diǎn)的Param的SaveKLV函數(shù);即循環(huán)到發(fā)射器η 節(jié)點(diǎn)的 CNxParticleEmitter:: SaveKLV O ;10)循環(huán)至文件夾η節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即循環(huán)到文件夾η 節(jié)點(diǎn)的 CNxParticleElementBin:: SaveKLV O ;11)調(diào)用圖形模板庫(kù)節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即調(diào)用圖形模板庫(kù)節(jié)點(diǎn)的CNxParticleElementBin:: SaveKLVO ;12)調(diào)用圖形文件夾O節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即調(diào)用圖形文件夾O 節(jié)點(diǎn)的 CNxParticleElementBin:: SaveKLVO ;13)調(diào)用圖形O節(jié)點(diǎn)的Element的SaveKLV函數(shù);
即調(diào)用圖形O 節(jié)點(diǎn)的 CNxParticleElement:: SaveKLV O ;14)循環(huán)至調(diào)用圖形η節(jié)點(diǎn)的Element的SaveKLV函數(shù);即循環(huán)到調(diào)用圖形η 節(jié)點(diǎn)的 CNxParticleElement:: SaveKLV O ;15)循環(huán)至調(diào)用圖形文件夾η節(jié)點(diǎn)的ElementBin的SaveKLV函數(shù);即循環(huán)到調(diào)用圖形文件夾η節(jié)點(diǎn)的CNxParticleElementBin:: SaveKLV O。步驟104,將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件。本實(shí)施例中將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,具體可以通過調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中,即調(diào)用CNxKLVDocumentObject::WriteKLVFileO實(shí)現(xiàn)數(shù)據(jù)到文件的寫操作,然后就可以生成模板庫(kù)文件了。所述生成的模板庫(kù)文件保存為二進(jìn)制KLV文件,后綴為.nel (newauto emitter libraries)。需要說明的是,既然在寫入所述樹狀結(jié)構(gòu)之前,將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成了 KLV數(shù)據(jù)結(jié)構(gòu),而KLV數(shù)據(jù)結(jié)構(gòu)以KLV(key-length-value)編碼方式進(jìn)行存儲(chǔ),其中key為自定義標(biāo)識(shí),表征“密鑰”;length為以數(shù)字表述的“長(zhǎng)度”(值長(zhǎng));valUe為數(shù)據(jù)“值”,其中數(shù)據(jù)可以是一個(gè)KLV數(shù)據(jù)包。如此表述了層層節(jié)點(diǎn)構(gòu)成的樹狀結(jié)構(gòu)及節(jié)點(diǎn)的相關(guān)屬性數(shù)據(jù)。因此能夠方便快捷的添加和刪除發(fā)射器模板和圖形模板。例如,添加新的發(fā)射器到所述模板庫(kù)文件中,可以采取以下方式來(lái)實(shí)現(xiàn):I)創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器;2)添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上;模板庫(kù)文件下發(fā)射器模板庫(kù)節(jié)點(diǎn)之下的文件夾節(jié)點(diǎn)下的數(shù)據(jù)結(jié)構(gòu)如圖X所示,包括發(fā)射器O至發(fā)射器n,每個(gè)發(fā)射器包括發(fā)射器屬性、粒子元O至粒子元n,每個(gè)粒子元包括粒子元基本屬性、粒子變化屬性和生命周期屬性。3)調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。所述保存模板庫(kù)文件函數(shù)具體可以為SaveLibrary函數(shù),可以調(diào)用CNxParticleEmitterLibraryManager:: SaveLibrary (wchar_t*in_pwszFi IeName)實(shí)現(xiàn)保存。載入所述模板庫(kù)可以通過以下方式來(lái)實(shí)現(xiàn):I)讀取模板庫(kù)文件名到CNxKLVDocumentObject類;2)調(diào)用載入模板庫(kù)函數(shù)實(shí)現(xiàn)載入功能;所述載入模板庫(kù)函數(shù)具體可以為L(zhǎng)oadLibrary函數(shù),可以調(diào)用CNxParticleEmitterLibraryManager::LoadLibrary (wchar_t*in_pwszFileNa me)實(shí)現(xiàn)載入功倉(cāng)泛。調(diào)用所述生成的KLV模板庫(kù)文件,可以調(diào)用CNxKLVDocumentObject::ReadKLVFile O,具體可以通過以下方式來(lái)實(shí)現(xiàn):I)調(diào)用模板庫(kù)節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即調(diào)用模板庫(kù)節(jié)點(diǎn)CNxParticleElementBin:: LoadKLV O ;2)調(diào)用發(fā)射器模板庫(kù)節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即調(diào)用發(fā)射器模板庫(kù)節(jié)點(diǎn)的CNxParticleElementBin::LoadKLV();3)調(diào)用文件夾O節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即調(diào)用文件夾O 節(jié)點(diǎn)的 CNxParticleElementBin::LoadKLV();4)調(diào)用發(fā)射器O節(jié)點(diǎn)的Emitter的LoadKLV函數(shù);即調(diào)用發(fā)射器O 節(jié)點(diǎn)的 CNxParticleEmitter::LoadKLV();5)調(diào)用發(fā)射器O參數(shù)Param的LoadKLV函數(shù),并循環(huán)至發(fā)射器η參數(shù);即調(diào)用發(fā)射器O參數(shù)CNxParticleParam:: LoadKLV O ,循環(huán)到發(fā)射器所有參數(shù);6)調(diào)用粒子元O節(jié)點(diǎn)的Cell的LoadKLV函數(shù);即調(diào)用粒子兀O 節(jié)點(diǎn)的 CNxParticleCell::LoadKLV();7)調(diào)用粒子元O參數(shù)Param的LoadKLV函數(shù),并循環(huán)至粒子元η參數(shù)即調(diào)用粒子元O參數(shù)CNxParticleParam:: LoadKLV (),并循環(huán)粒子元所有參數(shù);8)循環(huán)至粒子元η節(jié)點(diǎn)的Cell的LoadKLV函數(shù);即循環(huán)到粒子兀η 節(jié)點(diǎn)的 CNxParticleCell::LoadKLV();9)循環(huán)至發(fā)射器η節(jié)點(diǎn)的Param的LoadKLV函數(shù);即循環(huán)到發(fā)射器η 節(jié)點(diǎn)的 CNxParticleEmitter:: LoadKLV ();10)循環(huán)至文件夾η節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即循環(huán)到文件夾η 節(jié)點(diǎn)的 CNxParticleElementBin:: LoadKLV O ;11)調(diào)用圖形模板庫(kù)節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即調(diào)用圖形模板庫(kù)節(jié)點(diǎn)的CNxParticleElementBin::LoadKLV();12)調(diào)用圖形文件夾O節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即調(diào)用圖形文件夾O 節(jié)點(diǎn)的 CNxParticleElementBin::LoadKLV();13)調(diào)用圖形O節(jié)點(diǎn)的Element的LoadKLV函數(shù);即調(diào)用圖形O 節(jié)點(diǎn)的 CNxParticleElement:: LoadKLV O ;14)循環(huán)至調(diào)用圖形η節(jié)點(diǎn)的Element的LoadKLV函數(shù);即循環(huán)到調(diào)用圖形η 節(jié)點(diǎn)的 CNxParticleElement:: LoadKLV O ;15)循環(huán)至調(diào)用圖形文件夾η節(jié)點(diǎn)的ElementBin的LoadKLV函數(shù);即循環(huán)到調(diào)用圖形文件夾η節(jié)點(diǎn)的CNxParticleElementBin::LoadKLV()。需要進(jìn)一步說明的是,具體讀取模板庫(kù)文件中的某個(gè)圖形時(shí),可以采取以下方式實(shí)現(xiàn):I)設(shè)置文件夾索引,圖形索引2)從圖形模板庫(kù)節(jié)點(diǎn)得到文件夾索引對(duì)應(yīng)的文件夾節(jié)點(diǎn)3)從文件夾節(jié)點(diǎn)得到圖形索引對(duì)應(yīng)的圖形類CNxParticleElement。 讀取模板庫(kù)文件中的某個(gè)發(fā)射器與上述讀取圖形的方式類似,本實(shí)施例在此不作贅述。本實(shí)施例提供的粒子模板庫(kù)文件的創(chuàng)建方法,可以保存大量的發(fā)射器模板以及大量的圖形模板,而且粒子模板庫(kù)文件采用KLV的存儲(chǔ)方式,呈現(xiàn)層層節(jié)點(diǎn)構(gòu)成的樹狀結(jié)構(gòu),不僅分類清晰,而且通過在文件夾節(jié)點(diǎn)的對(duì)應(yīng)子節(jié)點(diǎn)(可以為最后一個(gè)子節(jié)點(diǎn))上添加新的發(fā)射器或圖形,即可實(shí)現(xiàn)發(fā)射器模板和圖形模板的添加和刪除,方便快捷。基于上述粒子模板庫(kù)文件的創(chuàng)建方法的實(shí)施例,本發(fā)明對(duì)應(yīng)提供了一種粒子模板庫(kù)文件的創(chuàng)建系統(tǒng)的實(shí)施例,具體如下。參照?qǐng)D6,示出了本發(fā)明一種粒子模板庫(kù)文件的創(chuàng)建系統(tǒng)的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括:樹狀結(jié)構(gòu)建立模塊10、轉(zhuǎn)換模塊12和寫入生成模塊14,其中,所述樹狀結(jié)構(gòu)建立模塊10,用于以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu);本實(shí)施例中所述樹狀結(jié)構(gòu)建立模塊10具體可以包括以下子模塊:第一建立子模塊,用于以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn);第二建立子模塊,用于在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)
占.
第三建立子模塊,用于在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn);第四建立子模塊,用于在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn);第五建立子模塊,用于依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)。所述轉(zhuǎn)換模塊12,用于將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù);本實(shí)施例中所述轉(zhuǎn)換模塊12具體可以用于依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV函數(shù)。所述寫入生成模塊14,用于將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件。本實(shí)施例中所述寫入生成模塊14具體可以用于調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中。在本發(fā)明的一種優(yōu)選實(shí)施例中,所述粒子模板庫(kù)文件還包括:發(fā)射器添加模塊,用于添加新的發(fā)射器到所述模板庫(kù)文件中;所述發(fā)射器添加模塊包括:創(chuàng)建子模塊,用于創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器;添加子模塊,用于添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上;保存子模塊,用于調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見圖1方法實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。以上對(duì)本發(fā)明所提供的一種粒子模板庫(kù)文件的創(chuàng)建方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種粒子模板庫(kù)文件的創(chuàng)建方法,其特征在于,包括: 以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu); 將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù); 將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu),包括: 以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn); 在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)點(diǎn); 在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn); 在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn); 依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù),包括: 依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV函數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,包括: 調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 添加新的發(fā)射器到所述模板庫(kù)文件中,包括: 創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器; 添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上; 調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。
6.—種粒子模板庫(kù)文件的創(chuàng)建系統(tǒng),其特征在于,包括: 樹狀結(jié)構(gòu)建立模塊,用于以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu); 轉(zhuǎn)換模塊,用于將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù); 寫入生成模塊,用于將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述樹狀結(jié)構(gòu)建立模塊包括: 第一建立子模塊,用于以模板庫(kù)作為父節(jié)點(diǎn),在所述父節(jié)點(diǎn)下建立發(fā)射器模板庫(kù)和圖形模板庫(kù),所述發(fā)射器模板庫(kù)和圖形模板庫(kù)作為一級(jí)子節(jié)點(diǎn); 第二建立子模塊,用于在所述一級(jí)子節(jié)點(diǎn)下建立多個(gè)文件夾節(jié)點(diǎn),作為二級(jí)子節(jié)點(diǎn); 第三建立子模塊,用于在發(fā)射器模板庫(kù)下的文件夾節(jié)點(diǎn)下建立多個(gè)發(fā)射器節(jié)點(diǎn),在圖形模板庫(kù)文件下的文件夾節(jié)點(diǎn)下建立多個(gè)圖形節(jié)點(diǎn),所述發(fā)射器節(jié)點(diǎn)和圖形節(jié)點(diǎn)作為三級(jí)子節(jié)點(diǎn); 第四建立子模塊,用于在所述發(fā)射器節(jié)點(diǎn)下建立粒子元節(jié)點(diǎn),作為四級(jí)子節(jié)點(diǎn); 第五建立子模塊,用于依據(jù)所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)建立樹狀結(jié)構(gòu)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于: 所述轉(zhuǎn)換模塊用于依次調(diào)用所述父節(jié)點(diǎn)、一級(jí)子節(jié)點(diǎn)、二級(jí)子節(jié)點(diǎn)、三級(jí)子節(jié)點(diǎn)和四級(jí)子節(jié)點(diǎn)的SaveKLV函數(shù)。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于: 所述寫入生成模塊用于調(diào)用寫函數(shù)將所述KLV數(shù)據(jù)結(jié)構(gòu)寫入所述樹狀結(jié)構(gòu)中。
10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括: 發(fā)射器添加模塊,用于添加新的發(fā)射器到所述模板庫(kù)文件中; 所述發(fā)射器添加模塊包括: 創(chuàng)建子模塊,用于創(chuàng)建新的發(fā)射器類型的元素,拷貝添加發(fā)射器的數(shù)據(jù)內(nèi)容到新發(fā)射器; 添加子模塊,用于添加新的發(fā)射器到選定的文件夾節(jié)點(diǎn)下的最后一個(gè)三級(jí)子節(jié)點(diǎn)上; 保存子模塊, 用于調(diào)用保存模板庫(kù)文件函數(shù)保存添加新的發(fā)射器后的模板庫(kù)文件。
全文摘要
本發(fā)明提供了一種粒子模板庫(kù)文件的創(chuàng)建方法及系統(tǒng),以實(shí)現(xiàn)粒子模板庫(kù)文件存放大量的發(fā)射器模板及大量的圖形,并且可以方便添加和刪除發(fā)射器模板和圖形模板的目的。一種粒子模板庫(kù)文件的創(chuàng)建方法包括以模板庫(kù)作為父節(jié)點(diǎn)建立樹狀結(jié)構(gòu);將模板庫(kù)數(shù)據(jù)轉(zhuǎn)換成KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù);將所述KLV數(shù)據(jù)結(jié)構(gòu)的模板庫(kù)數(shù)據(jù)寫入所述樹狀結(jié)構(gòu)中,并生成模板庫(kù)文件。本發(fā)明提供的粒子模板庫(kù)文件的創(chuàng)建方法,可以保存大量發(fā)射器模板以及大量的圖形模板,粒子模板庫(kù)文件采用KLV的存儲(chǔ)方式,呈現(xiàn)層層節(jié)點(diǎn)構(gòu)成的樹狀結(jié)構(gòu),不僅分類清晰,而且通過在文件夾節(jié)點(diǎn)的對(duì)應(yīng)子節(jié)點(diǎn)上添加新的發(fā)射器或圖形,即可實(shí)現(xiàn)發(fā)射器模板和圖形模板的添加和刪除,方便快捷。
文檔編號(hào)G06F17/30GK103218401SQ20131008747
公開日2013年7月24日 申請(qǐng)日期2013年3月19日 優(yōu)先權(quán)日2013年3月19日
發(fā)明者陳偉偉 申請(qǐng)人:新奧特(北京)視頻技術(shù)有限公司