欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端的制作方法

文檔序號(hào):6504748閱讀:192來源:國(guó)知局
一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端的制作方法
【專利摘要】本發(fā)明公開了一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端。首先,構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);然后,采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行第一幀渲染;從第二幀渲染開始,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)放入更新隊(duì)列;再將沒有被裁剪掉的渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;最后,對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。其無需對(duì)場(chǎng)景模型進(jìn)行完整渲染,只需針對(duì)被動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了的渲染節(jié)點(diǎn)進(jìn)行渲染,從而在不失渲染效果的同時(shí),提高場(chǎng)景渲染效率;另外,還降低了嵌入式系統(tǒng)計(jì)算負(fù)擔(dān),使得上層應(yīng)用更加關(guān)注邏輯,提高了嵌入式系統(tǒng)執(zhí)行的效率。
【專利說明】一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及場(chǎng)景渲染【技術(shù)領(lǐng)域】,尤其涉及一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端。
【背景技術(shù)】
[0002]隨著IPhone、IPad的普及流行,3D UI (UserInterface用戶界面)逐漸流行起來,從2D的視覺效果逐漸向3D過度,3D Π大大增強(qiáng)了用戶的視覺效果、操作體驗(yàn),而且更人性化、更貼近現(xiàn)實(shí)。
[0003]然而,在追求視覺效果的同時(shí),另外非常值得關(guān)注的地方就是3D繪制的效率問題,3D意味著比2D要更多的計(jì)算量,越精致的3D場(chǎng)景模型,其面數(shù)、材質(zhì)、燈光參數(shù)越高,本身的渲染數(shù)據(jù)量已經(jīng)很大了,當(dāng)需要修改原模型的任何一個(gè)部分或者調(diào)整模型的任何一個(gè)參數(shù),都需要進(jìn)行完整模型的再渲染,如此一來,每修改一點(diǎn)都需要消耗相同的渲染時(shí)間,渲染時(shí)間過程較長(zhǎng),效率低下;同時(shí),對(duì)嵌入式系統(tǒng)有限的資源而言,其計(jì)算量過大,成為渲染的瓶頸。
[0004]有鑒于此,如何在不失效果的同時(shí)提高繪制效率成為3D場(chǎng)景渲染的一個(gè)重要研究方向。

【發(fā)明內(nèi)容】

[0005]鑒于現(xiàn)有技術(shù)中的不足,本發(fā)明目的在于提供一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端。旨在解決現(xiàn)有場(chǎng)景渲染技術(shù)中需要修改場(chǎng)景模型的任何一個(gè)部分或者調(diào)整模型的任何一個(gè)參數(shù),都需要進(jìn)行完整模型的再渲染,從而造成的效率低下的問題。
[0006]本發(fā)明的技術(shù)方案如下:
一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其中,包括以下步驟:
A、構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);
B、進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染;
C、從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列;
D、遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;
E、對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
[0007]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其中,所述步驟B中,對(duì)所有渲染節(jié)點(diǎn)進(jìn)行更新具體包括以下步驟:
B1、從場(chǎng)景模型的根節(jié)點(diǎn)到每一個(gè)子節(jié)點(diǎn)依次進(jìn)行更新,計(jì)算每一節(jié)點(diǎn)對(duì)應(yīng)的物體的位置,并對(duì)所述物體進(jìn)行放縮和旋轉(zhuǎn)處理;
B2、自頂層向下判斷每一物體是否被裁剪,若是則進(jìn)行步驟B3,否則不進(jìn)行渲染;
B3、將裁剪過后的物體送入渲染管線進(jìn)行渲染。
[0008]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其中,所述步驟A中還包括:
對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)
一步包括是否進(jìn)行裁剪和是否裁減掉。
[0009]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其中,所述步驟C中具體包括:從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,如果動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了渲染節(jié)點(diǎn),先判斷新修改的值與目前的值是否相等:如果相等,則不進(jìn)行任何標(biāo)記操作;否則將渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列。
[0010]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其中,所述步驟D中更新渲染節(jié)點(diǎn)的裁剪屬性包括:
先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。
[0011]一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其中,包括:
場(chǎng)景構(gòu)建單元,用于構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);
第一幀渲染單元,用于進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染;
更新單元,用于從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列;
裁剪單元,用于遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;
渲染單元,用于對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
[0012]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其中,所述場(chǎng)景構(gòu)建單元中還包括: 對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)
一步包括是否進(jìn)行裁剪和是否裁減掉。
[0013]所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其中,所述裁剪單元中更新渲染節(jié)點(diǎn)的裁剪屬性包括:
先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。
[0014]一種移動(dòng)終端,其中,包括上述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng)。
[0015]所述的移動(dòng)終端,其中,移動(dòng)終端為手機(jī)或平板電腦。
[0016]有益效果:
本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端,其中,所述場(chǎng)景渲染優(yōu)化方法無需對(duì)場(chǎng)景模型進(jìn)行完整渲染,只需針對(duì)被動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了的渲染節(jié)點(diǎn)及其子節(jié)點(diǎn)進(jìn)行渲染,從而在不失渲染效果的同時(shí),提高場(chǎng)景渲染效率;另外,還降低了嵌入式系統(tǒng)計(jì)算負(fù)擔(dān),使得上層應(yīng)用更加關(guān)注邏輯,提高了嵌入式系統(tǒng)執(zhí)行的效率。【專利附圖】

【附圖說明】
[0017]圖1為層次渲染技術(shù)中對(duì)場(chǎng)景模型進(jìn)行分層的示意圖。
[0018]圖2為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法的流程圖。
[0019]圖3為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法的實(shí)施例中對(duì)場(chǎng)景模型進(jìn)行裁到的不意圖。
[0020]圖4為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法的實(shí)施例中父物體包圍盒和子物體初始狀態(tài)的示意圖。
[0021]圖5為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法的實(shí)施例中父物體包圍盒和子物體進(jìn)行包圍盒更新后的示意圖。
[0022]圖6為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0023]本發(fā)明提供一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端,為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0024]因?yàn)?,本發(fā)明的場(chǎng)景渲染是采用層次渲染技術(shù),為了方便理解,在介紹本方案前,先介紹一下層次渲染技術(shù)的原理:
層次渲染技術(shù)的渲染原理是在構(gòu)建場(chǎng)景模型時(shí),對(duì)場(chǎng)景模型文件進(jìn)行分層處理,如圖1所示,所述場(chǎng)景模型包括一根節(jié)點(diǎn),所述根節(jié)點(diǎn)為基于世界絕對(duì)坐標(biāo)系下,UI場(chǎng)景的容器,用于存放父物件的集合。所述根節(jié)點(diǎn)下存放有若干個(gè)父物體,所述父物體均包括有子物體,需要注意地是,父物體可以遞歸,只要有子物體就可作為父物件。
[0025]層次渲染系統(tǒng)的更新是一種自頂向下的流式更新方式,從場(chǎng)景的根節(jié)點(diǎn)(也就是所有物體的根)到每一個(gè)子節(jié)點(diǎn),都會(huì)更新一遍,計(jì)算每一子節(jié)點(diǎn)對(duì)應(yīng)的物體絕對(duì)位置、放縮和旋轉(zhuǎn)等;然后自頂向下判斷每一個(gè)物體是否被裁剪,最后將裁減過后的節(jié)點(diǎn)送入渲染管線進(jìn)行渲染。
[0026]請(qǐng)參閱圖2,其為本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法的流程圖。所述基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,如圖2所示,包括以下步驟:
51、構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);
52、進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染;
53、從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列;
54、遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;
55、對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
[0027]下面分別針對(duì)上述步驟進(jìn)行詳細(xì)描述:
所述步驟Si為構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn)。其分層方法和渲染節(jié)點(diǎn)的生成方法為現(xiàn)有技術(shù),這里就不多做贅述。
[0028]進(jìn)一步地,在所述步驟SI中,還可以對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)一步包括是否進(jìn)行裁剪和是否裁減掉。更新屬性采用布爾型UPDATE參數(shù)標(biāo)識(shí),UPDATE為TRUE時(shí)表示需要更新,為FALSE時(shí)表示不需要更新;裁剪屬性采用ISUPDATECULLED和ISCULLED參數(shù)標(biāo)識(shí),ISUPDATECULLED為TRUE時(shí)表示需要裁剪(即該階段需要執(zhí)行裁剪測(cè)試),ISUPDATECULLED為FALSE時(shí)表示不需要裁剪,IS⑶LLED為TRUE時(shí)表示已經(jīng)被裁剪掉(執(zhí)行裁剪測(cè)試后的結(jié)果),IS⑶LLED為FALSE時(shí)表示沒有被裁剪掉。具體來說,即新建每個(gè)場(chǎng)景渲染節(jié)點(diǎn)后,初始化UPDATE、ISUPDATE⑶LLED以及ISCULLED為FALSE ;上述設(shè)定表示初始化節(jié)點(diǎn)需要投入隊(duì)列中,進(jìn)行初始的位置更新和裁剪操作;這樣做的好處是,有利于第一次場(chǎng)景層次化的構(gòu)建。
[0029]所述步驟S2為進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染。因?yàn)槭沁M(jìn)行第一幀畫面的渲染,需要對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染。在本實(shí)施例中,對(duì)所有渲染節(jié)點(diǎn)進(jìn)行更新具體包括以下步驟:
521、從場(chǎng)景模型的根節(jié)點(diǎn)到每一個(gè)子節(jié)點(diǎn)依次進(jìn)行更新,計(jì)算每一節(jié)點(diǎn)對(duì)應(yīng)的物體的位置,并對(duì)所述物體進(jìn)行放縮和旋轉(zhuǎn)處理;
522、自頂層向下判斷每一物體是否被裁剪,若是則進(jìn)行步驟S23,否則不進(jìn)行渲染;在3D渲染系統(tǒng)中提高性能的最重要的一項(xiàng)就是裁剪,將視口看不到物體裁剪掉,不投入繪制管線中進(jìn)行渲染。
[0030]S23、將裁剪過后的物體送入渲染管線進(jìn)行渲染。
[0031]在所述步驟S22中,裁剪包括平行投影裁剪和透視投影裁剪。在層次化渲染結(jié)構(gòu)中,每幀更新時(shí)都會(huì)與視口進(jìn)行做裁剪測(cè)試,正投影(即平行投影)采用的是包圍盒測(cè)試,透視投影采用的視景體裁剪,需要將物體與六個(gè)面求交,運(yùn)算量較大,是渲染的一個(gè)瓶頸。如圖3所示,當(dāng)某一父物體被裁剪后(圖中用M號(hào)表示),其下層的子物體則不再進(jìn)行渲染處理;當(dāng)然,子物體被裁剪后,其本身也無需再進(jìn)行渲染了。
[0032]所述步驟S23為將裁剪過后的物體送入渲染管線進(jìn)行渲染。其包括:模型視覺變換、光照計(jì)算、光柵化處理和Alpha測(cè)試等,因其為現(xiàn)有技術(shù),這里就不多做贅述了。
[0033]當(dāng)?shù)谝粠秩就瓿珊?,便進(jìn)行步驟S3、從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列。即從第二幀開始,場(chǎng)景模型中沒有事件觸發(fā)動(dòng)畫或鏡頭移動(dòng)的,則場(chǎng)景模型中的所有物體全部不進(jìn)行位置更新和裁剪判斷。如果有則將改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列。
[0034]所述步驟S3具體為從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,如果動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了渲染節(jié)點(diǎn),先判斷新修改的值與目前的值是否相等:如果相等,則不進(jìn)行任何標(biāo)記操作;否則將渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列(在本實(shí)施例中,將位置和裁剪屬性修改為新值,標(biāo)記當(dāng)前分支為需要更新UPDATE為TRUE,需要檢測(cè)裁剪ISUPDATE⑶LLED為TRUE,并將自己的子節(jié)點(diǎn)遞歸標(biāo)識(shí);將需要分支標(biāo)識(shí)的渲染節(jié)點(diǎn)加入更新隊(duì)列)。
[0035]進(jìn)一步地,當(dāng)鏡頭更新動(dòng)作更改了渲染節(jié)點(diǎn)后,要對(duì)場(chǎng)景模型中父類全部的包圍盒進(jìn)行裁剪更新,而本身的位置卻不需要更新。[0036]所述步驟S4為遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中。其中,父物體包圍盒的更新可以參見圖4和圖5 (應(yīng)當(dāng)理解,其渲染場(chǎng)景應(yīng)當(dāng)為屏幕可顯示區(qū)域),如圖4所示,其包括:父物體初始包圍盒、第一子物體、第二子物體和第三子物體,其中,所述父物體初始包圍盒為1,1,I大小(即長(zhǎng)寬高各為I)。然后添加子節(jié)點(diǎn),對(duì)父節(jié)點(diǎn)進(jìn)行包圍盒更新,更新后的狀態(tài)如圖5所示。
[0037]進(jìn)一步地,更新渲染節(jié)點(diǎn)的裁剪屬性包括:先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;而以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。簡(jiǎn)單來說,如果某一渲染節(jié)點(diǎn)對(duì)應(yīng)的被裁減掉了,則其子節(jié)點(diǎn)上的物體也應(yīng)當(dāng)被裁減掉,而無需對(duì)其進(jìn)行再次裁剪處理。這樣可以有效減少裁剪次數(shù),提高效率。
[0038]最后,步驟S5為對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。至于渲染的細(xì)節(jié),如模型視覺變換、光照計(jì)算、光柵化處理和Alpha測(cè)試等,這里就不多做贅述了。
[0039]本發(fā)明還提供了一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),如圖6所示,所述場(chǎng)景渲染優(yōu)化系統(tǒng)包括:
場(chǎng)景構(gòu)建單元100,用于構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);
第一幀渲染單元200,用于進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染;
更新單元300,用于從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列;
裁剪單元400,用于遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;
渲染單元500,用于對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
[0040]上述系統(tǒng)中各個(gè)部分的功能都已經(jīng)在上述方法中進(jìn)行了詳細(xì)介紹,這里就不再冗述了。
[0041]進(jìn)一步地,所述場(chǎng)景構(gòu)建單元100中還包括:對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)一步包括是否進(jìn)行裁剪和是否裁減掉。
[0042]更進(jìn)一步地,所述裁剪單元中更新渲染節(jié)點(diǎn)的裁剪屬性包括:先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。
[0043]另外,本發(fā)明還提供了一種移動(dòng)終端(如手機(jī)、平板電腦等),其設(shè)置有上述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),令用戶可以使用其對(duì)移動(dòng)終端的3D顯示界面進(jìn)行渲染,在不失渲染效果的同時(shí),提高場(chǎng)景渲染效率;另外,還降低了移動(dòng)終端上的CPU的計(jì)算負(fù)擔(dān),提高了嵌入式系統(tǒng)執(zhí)行的效率。
[0044]綜上所述,本發(fā)明的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法、系統(tǒng)和移動(dòng)終端,其中,所述場(chǎng)景渲染優(yōu)化方法包括以下步驟:首先,構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn);然后,采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行第一幀渲染;從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列;再遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;最后,對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。其無需對(duì)場(chǎng)景模型進(jìn)行完整渲染,只需針對(duì)被動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了的渲染節(jié)點(diǎn)及其子節(jié)點(diǎn)進(jìn)行渲染,從而在不失渲染效果的同時(shí),提高場(chǎng)景渲染效率;另外,還降低了嵌入式系統(tǒng)計(jì)算負(fù)擔(dān),使得上層應(yīng)用更加關(guān)注邏輯,提高了嵌入式系統(tǒng)執(zhí)行的效率。
[0045]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,如采用不同的渲染手段等,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其特征在于,包括以下步驟: A、構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn); B、進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染; C、從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列; D、遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中; E、對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
2.根據(jù)權(quán)利要求1所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其特征在于,所述步驟B中,對(duì)所有渲染節(jié)點(diǎn)進(jìn)行更新具體包括以下步驟: B1、從場(chǎng)景模型的根節(jié)點(diǎn)到每一個(gè)子節(jié)點(diǎn)依次進(jìn)行更新,計(jì)算每一節(jié)點(diǎn)對(duì)應(yīng)的物體的位置,并對(duì)所述物體進(jìn)行放縮和旋轉(zhuǎn)處理; B2、自頂層向下判斷每一物體是否被裁剪,若是則進(jìn)行步驟B3,否則不進(jìn)行渲染; B3、將裁剪過后的物體 送入渲染管線進(jìn)行渲染。
3.根據(jù)權(quán)利要求1所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其特征在于,所述步驟A中還包括: 對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)一步包括是否進(jìn)行裁剪和是否裁減掉。
4.根據(jù)權(quán)利要求1所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其特征在于,所述步驟C中具體包括:從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,如果動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作更改了渲染節(jié)點(diǎn),先判斷新修改的值與目前的值是否相等:如果相等,則不進(jìn)行任何標(biāo)記操作;否則將渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列。
5.根據(jù)權(quán)利要求1所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化方法,其特征在于,所述步驟D中更新渲染節(jié)點(diǎn)的裁剪屬性包括: 先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。
6.一種基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其特征在于,包括: 場(chǎng)景構(gòu)建單元,用于構(gòu)建場(chǎng)景模型文件,對(duì)場(chǎng)景模型文件進(jìn)行分層,并按照分層后的場(chǎng)景模型組織渲染節(jié)點(diǎn); 第一幀渲染單元,用于進(jìn)行第一幀渲染時(shí),采用自頂層向下的流式更新方式對(duì)所有渲染節(jié)點(diǎn)進(jìn)行渲染; 更新單元,用于從第二幀渲染開始,監(jiān)聽場(chǎng)景模型中的動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作,將動(dòng)畫更新動(dòng)作和鏡頭更新動(dòng)作改變了的渲染節(jié)點(diǎn)及所述渲染節(jié)點(diǎn)下的下層所有渲染節(jié)點(diǎn)放入更新隊(duì)列; 裁剪單元,用于遍歷所述更新隊(duì)列,按照局部自頂層向下更新渲染節(jié)點(diǎn)的位置和裁剪屬性,若所述渲染節(jié)點(diǎn)沒有被裁剪掉,則將所述渲染節(jié)點(diǎn)添加到渲染隊(duì)列中;渲染單元,用于對(duì)所述渲染隊(duì)列中的渲染節(jié)點(diǎn)進(jìn)行渲染。
7.根據(jù)權(quán)利要求6所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其特征在于,所述場(chǎng)景構(gòu)建單元中還包括: 對(duì)每個(gè)渲染節(jié)點(diǎn)進(jìn)行初始化,設(shè)置渲染節(jié)點(diǎn)的裁剪屬性和更新屬性,所述裁剪屬性進(jìn)一步包括是否進(jìn)行裁剪和是否裁減掉。
8.根據(jù)權(quán)利要求6所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng),其特征在于,所述裁剪單元中更新渲染節(jié)點(diǎn)的裁剪屬性包括: 先裁剪父節(jié)點(diǎn)對(duì)應(yīng)的物體的包圍盒,如果渲染節(jié)點(diǎn)對(duì)應(yīng)的物體被裁剪掉,則對(duì)渲染節(jié)點(diǎn)進(jìn)行裁剪;而以渲染節(jié)點(diǎn)為父節(jié)點(diǎn)的所有子節(jié)點(diǎn)不進(jìn)行裁剪。
9.一種移動(dòng)終端,其特征在于,包括權(quán)利要求6所述的基于預(yù)測(cè)分支的場(chǎng)景渲染優(yōu)化系統(tǒng)。
10.根據(jù)權(quán)利要 求9所述的移動(dòng)終端,其特征在于,移動(dòng)終端為手機(jī)或平板電腦。
【文檔編號(hào)】G06T15/00GK103544727SQ201310259295
【公開日】2014年1月29日 申請(qǐng)日期:2013年6月26日 優(yōu)先權(quán)日:2013年6月26日
【發(fā)明者】趙智寶, 盧偉超 申請(qǐng)人:Tcl集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鱼台县| 浙江省| 金坛市| 贵南县| 淮南市| 山西省| 敦化市| 兴海县| 神木县| 莱州市| 莲花县| 揭西县| 化德县| 铜鼓县| 马龙县| 绥德县| 蒲江县| 藁城市| 泊头市| 集贤县| 海晏县| 上饶县| 榆中县| 右玉县| 邓州市| 温宿县| 周宁县| 大冶市| 岐山县| 子洲县| 郯城县| 将乐县| 武邑县| 精河县| 荣成市| 阳泉市| 措美县| 夏津县| 徐汇区| 尼玛县| 天柱县|