專利名稱:一種實現(xiàn)3d場景中的動畫紋理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的技術(shù)領(lǐng)域?qū)儆赪indows平臺下的3D場景中的紋理貼圖方法。
背景技術(shù):
3D場景都是由很多模型組成,每個模型包括模型頂點數(shù)據(jù)和材質(zhì)紋理數(shù)據(jù)。渲染3D場景的時,把模型的頂點數(shù)據(jù)和與其項對應(yīng)的紋理材質(zhì)數(shù)據(jù)提交到顯卡渲染,即可得到渲染的結(jié)果。
當前模型上的材質(zhì)基本都是靜態(tài)圖片(如常見的BMP格式文件,TGA格式文件等)。而在某些場景中,其中某些模型表面需要有一些視頻動畫效果,例如場景中一臺電視在播放電視節(jié)目。當前實現(xiàn)這種視頻效果的主要途徑就是用一組靜態(tài)材質(zhì)圖片像放幻燈片一樣,不斷切換材質(zhì)圖片。
在3D場景下面,實時渲染的基本流程如下a)設(shè)置渲染當前模型需要的渲染狀態(tài)b)設(shè)置當前模型的頂點數(shù)據(jù)c)設(shè)置當前模型的材質(zhì)紋理數(shù)據(jù)d)渲染當前模型e)轉(zhuǎn)換到(a)步,重復(fù)渲染,直到渲染完所有模型。
從上面可以看出,在實現(xiàn)這種視頻動畫效果時候,對于材質(zhì)紋理的切換時間要求比較精確,才能得到比較流暢的動畫效果,這樣需要很多的時間來編輯每張材質(zhì)的渲染時間;并且一段視頻效果也需要很多材質(zhì)圖片,占用較多的內(nèi)存空間。如果場景中有多個視頻動畫,對于每個動畫都需要編輯其中的材質(zhì)切換的時間,需要很多編輯時間。同時,要實時獲得某些特殊的效果,需要更多材質(zhì)來渲染效果,這樣就增加了實時渲染的時間,也增加了材質(zhì)的數(shù)量。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種實現(xiàn)3D場景中的動畫紋理的方法,該種方法編輯及時間控制容易,動畫片段的切換方便。
本發(fā)明解決其問題,采用的技術(shù)方案是,一種實現(xiàn)3D場景中的動畫紋理的方法,其步驟為a、在3D場景中加載模型;
b、獲取模型需要加載的視頻動畫文件名;并從該動畫文件上獲取其動畫畫面的大小,播放時間長度;c、根據(jù)加載的視頻動畫文件的畫面大小,創(chuàng)建一個同樣大小的紋理材質(zhì);d、渲染的初始化記錄播放結(jié)束時間,并將第一幀視頻數(shù)據(jù)的解碼時間記錄為當前的下一幀解碼時間;將記時器的時間設(shè)置為0并開始記時;e、若記時器的時間,等于播放結(jié)束時間或有外來結(jié)束控制信號,則進行(h)步的操作;f、若記時器的時間,等于或大于當前記錄的下一幀解碼時間;則解碼下一幀的視頻數(shù)據(jù)存儲到紋理材質(zhì)上,并刷新記錄當前的下一幀解碼時間為解碼幀的下一幀的解碼時間;否則,直接進行(g)步的操作;g、渲染提交模型頂點數(shù)據(jù)和當前的紋理材質(zhì)上的視頻數(shù)據(jù)到渲染器進行渲染;h、渲染結(jié)束。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是本發(fā)明用視頻文件進行視頻播放代替現(xiàn)有的多個靜態(tài)圖片以幻燈方式播放,實現(xiàn)3D場景中的動畫紋理,使其動畫效果更流暢。并且1、視頻動畫文件在其錄制或制作過程中,視頻制作或錄制軟件將自動形成視頻文件中的所有幀的解碼時間及其播放長度信息。渲染、解碼時只需從視頻文件中將這些信息讀出,直接與當前播放時間進行比較即可。而無需像現(xiàn)有的靜態(tài)圖片、幻燈播放方式,必須對逐個靜態(tài)圖片的顯示(播放)時間進行逐一的人工編輯、標注處理。本發(fā)明的時間編輯與控制極其簡單,所需編輯及處理的時間、數(shù)據(jù)量明顯減少。
2、可以采用視頻編輯軟件對同一片段中的整個視頻文件的視頻內(nèi)容進行方便地集中統(tǒng)一、編輯操作;較之對一組靜態(tài)圖片中的所有圖片逐一進行圖像內(nèi)容的編輯操作,其內(nèi)容的編輯操作,更為容易、簡單,編輯處理的工作量大大減少。
3、在一個動畫片段中,用單個視頻文件代替了很多張靜態(tài)圖片構(gòu)成的圖片文件組。由于單個視頻文件較之多圖片的文件組,其總?cè)萘看蟠鬁p小,從而使得本發(fā)明占用內(nèi)存空間小,對硬件要求低,動畫播放效果更流暢。
4、切換加載不同的視頻文件即可實現(xiàn)不同動畫片段或紋理片段的切換,其切換動作也簡單、方便。
下面通過具體實施方式
對本發(fā)明作進一步的詳細說明。
具體實施例方式
實施例本發(fā)明的一種具體實施方式
為,一種實現(xiàn)3D場景中的動畫紋理的方法,其步驟為a、在3D場景中加載模型;b、獲取模型需要加載的視頻動畫文件名;并從該動畫文件上獲取其動畫畫面的大小,播放時間長度;c、根據(jù)加載的視頻動畫文件的畫面大小,創(chuàng)建一個同樣大小的紋理材質(zhì);d、渲染的初始化將當前視頻播放記時器的時間設(shè)置為0并開始記時,記錄播放結(jié)束時間,并將第一幀視頻數(shù)據(jù)的解碼時間記錄為當前的下一幀解碼時間;e、若當前視頻播放記時器的時間,等于播放結(jié)束時間或有外來結(jié)束控制信號,則進行(h)步的操作;f、若當前視頻播放記時器的時間,等于或大于當前記錄的下一幀視頻數(shù)據(jù)的解碼時間;則解碼下一幀的視頻數(shù)據(jù)存儲到紋理材質(zhì)上,并刷新記錄當前的下一幀解碼時間為解碼幀的下一幀的解碼時間;否則,進行(g)步的操作;g、渲染提交模型頂點數(shù)據(jù)和當前的紋理材質(zhì)上的視頻數(shù)據(jù)到渲染器進行渲染;h、渲染結(jié)束。
由于下一幀視頻的解碼時間也是當前幀視頻播放的結(jié)束時間,因此,可以將記錄的下一幀視頻解碼時間改為當前幀的播放結(jié)束時間,其余操作完全不變,也可實現(xiàn)本發(fā)明的技術(shù)方案。更進一步,將當前幀的播放結(jié)束時間改為當前幀的起止時間,判斷當前記時器的時間是否在該起止時間段內(nèi),而決定是否需要進行新的圖像幀的解碼,其余操作步驟不變,也可實現(xiàn)本發(fā)明的技術(shù)方案。這些方式均屬于本發(fā)明的簡單等同替換,屬于本發(fā)明的保護內(nèi)容。
本發(fā)明所使用的視頻文件可以是Windows32平臺下各種格式的視頻文件,如常見的AVI、MPEG、ROQ等格式的文件。
權(quán)利要求
1.一種實現(xiàn)3D場景中的動畫紋理的方法,其步驟為a、在3D場景中加載模型;b、獲取模型需要加載的視頻動畫文件名;并從該動畫文件上獲取其動畫畫面的大小,播放時間長度;c、根據(jù)加載的視頻動畫文件的畫面大小,創(chuàng)建一個同樣大小的紋理材質(zhì);d、渲染的初始化記錄播放結(jié)束時間,并將第一幀視頻數(shù)據(jù)的解碼時間記錄為當前的下一幀解碼時間;將記時器的時間設(shè)置為0并開始記時;e、若記時器的時間,等于播放結(jié)束時間或有外來結(jié)束控制信號,則進行(h)步的操作;f、若記時器的時間,等于或大于當前記錄的下一幀解碼時間;則解碼下一幀的視頻數(shù)據(jù)存儲到紋理材質(zhì)上,并刷新記錄當前的下一幀解碼時間為解碼幀的下一幀的解碼時間;否則,直接進行(g)步的操作;g、渲染提交模型頂點數(shù)據(jù)和當前的紋理材質(zhì)上的視頻數(shù)據(jù)到渲染器進行渲染;h、渲染結(jié)束。
全文摘要
一種實現(xiàn)3D場景中的動畫紋理的方法是a.加載模型;b.獲取需要加載的視頻動畫文件名及其畫面的大小、時間長度;c.創(chuàng)建一個與加載視頻文件畫面同樣大小的紋理材質(zhì);d.渲染的初始化記錄播放結(jié)束時間,將第一幀視頻數(shù)據(jù)的解碼時間記錄為當前的下一幀解碼時間;將記時器的時間設(shè)置為0并開始記時;e.若記時器的時間,等于播放結(jié)束時間或有外來結(jié)束控制信號,則結(jié)束渲染;f.若記時器的時間,等于或大于當前記錄的下一幀解碼時間;則解碼下一幀的視頻數(shù)據(jù)存儲到紋理材質(zhì)上,并刷新當前記錄的下一幀解碼時間;否則,進行(g)步的操作;g.渲染;h.結(jié)束。其時間信息與圖像內(nèi)容的編輯簡單方便,時間控制與動畫片段的切換也方便、容易。
文檔編號G06T15/00GK1936964SQ20061002207
公開日2007年3月28日 申請日期2006年10月20日 優(yōu)先權(quán)日2006年10月20日
發(fā)明者龍飛 申請人:珠海金山軟件股份有限公司