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

一種動畫顯示方法

文檔序號:6651430閱讀:411來源:國知局
專利名稱:一種動畫顯示方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)圖像顯示技術(shù),尤其是一種動畫顯示方法。
背景技術(shù)
在游戲中,為了滿足玩家個性化的需求,往往需要設(shè)計大量的圖素,并通過復(fù)雜的換裝系統(tǒng)豐富圖素的輸出。因此,動畫顯示技術(shù)中經(jīng)常要面臨以下問題。
有的畫面包括了大量的圖素,例如一個游戲畫面中包括了多個玩家角色,每個角色具有各不相同的造型,并且同時進(jìn)行各不相同的動作操作?,F(xiàn)有的動畫輸出技術(shù)包括動態(tài)加載和靜態(tài)加載方式。所述動態(tài)加載是指當(dāng)用到某一個圖素時,才把該圖素從硬件存儲空間加載到內(nèi)存;所述靜態(tài)加載是指在程序開始時,把所有的圖素加載到內(nèi)存中,等待應(yīng)用程序調(diào)用。當(dāng)畫面中包含大量圖素的時候,若使用動態(tài)加載的方式輸出畫面,采用動態(tài)加載方式,如果畫面圖素過多,大量的數(shù)據(jù)會導(dǎo)致硬件輸入I/O的阻塞而引起程序阻塞,導(dǎo)致動畫畫面輸出不連續(xù),影響動畫輸出質(zhì)量;若使用靜態(tài)加載的方式輸出動畫,該方法需要預(yù)先加載大量的數(shù)據(jù),而導(dǎo)致啟動程序時間過長和占用內(nèi)存過多的問題。
為了解決上述問題,現(xiàn)有游戲中的動畫顯示技術(shù)多采用如下的方案程序開始時,加載部分圖素到內(nèi)存中,具體的,可以根據(jù)需求,在程序中預(yù)先確定所要加載的圖素;程序過程中,若當(dāng)前要顯示的圖素不再內(nèi)存當(dāng)中,則淘汰內(nèi)存中的部分圖素,釋放空間后加載要使用的圖素。現(xiàn)有的方法的缺陷在于由于在啟動時,需要加載部分圖素,因此導(dǎo)致較長的程序啟動時間;并且,程序運行過程中,現(xiàn)有技術(shù)無法預(yù)知每個圖素的使用頻率,因此有可能有的圖素不經(jīng)常使用卻占用內(nèi)存空間,導(dǎo)致內(nèi)存空間的浪費,或者加載圖素的重復(fù)操作,浪費不必要的系統(tǒng)資源。

發(fā)明內(nèi)容
為解決上述問題,本發(fā)明的目的是提供一種動畫顯示方法,該方法能夠減少動畫加載過程中的硬件I/O阻塞,并減少內(nèi)存占用容量。
為解決上述技術(shù)問題,本發(fā)明提供了一種動畫顯示方法,包括預(yù)置幀顯示規(guī)則,用于選取組成動畫的所有幀中的部分幀進(jìn)行顯示輸出;根據(jù)所述的幀顯示規(guī)則,獲取當(dāng)前顯示循環(huán)中需要加載顯示的幀的編號;判斷所述需要加載顯示的幀是否已被加載到內(nèi)存,若是則直接顯示;否則加載該編號的幀到內(nèi)存并進(jìn)行輸出顯示。
其中,所述規(guī)則為選取動畫中編號為等差排列的幀進(jìn)行顯示。該規(guī)則的一種算法為X1=floor(floor(X/F)*F+mod(X,F(xiàn))/P1)*P1,其中F為動畫總幀數(shù),P1為動畫質(zhì)量系數(shù),X1為當(dāng)前選取顯示的幀編號,X為順序播放F幀時當(dāng)前顯示循環(huán)對應(yīng)于的幀編號。其中,動畫質(zhì)量系數(shù)P1以等比數(shù)列設(shè)置,以對應(yīng)于不同幀縮減數(shù);進(jìn)而在動畫顯示之前通過確定動畫質(zhì)量系數(shù)P1。
在上述方法基礎(chǔ)上,采用C++標(biāo)準(zhǔn)庫提供的MAP儲存所加載圖素的信息,通過遍歷MAP,判斷當(dāng)前要加載的圖素是否已在內(nèi)存中。
在上述方法基礎(chǔ)上,進(jìn)一步限制每一顯示循環(huán)中圖素的加載量。進(jìn)而,若在確定的顯示循環(huán)中需要顯示的圖素未能加載到內(nèi)存,則調(diào)用該動畫在內(nèi)存中最近一次顯示循環(huán)中加載的圖素。具體的,限制圖素加載量的方法可采用判斷已加載圖素的總?cè)萘颗c當(dāng)前要加載的圖素容量之和是否不小于門限值,若大于則停止該顯示循環(huán)中加載圖素的操作。
在上述方法基礎(chǔ)上,加載圖素前判斷內(nèi)存空間大小,若內(nèi)存空間不足,則淘汰內(nèi)存中最久未使用的圖素。
以上技術(shù)方案可以看出,本發(fā)明提供的動畫顯示方法中,對一幅動畫中的幀按照預(yù)置的規(guī)則進(jìn)行刪減,并對幀的流量設(shè)置門限值,進(jìn)而進(jìn)行顯示輸出,達(dá)到了節(jié)省內(nèi)存和控制流量的目的,當(dāng)動畫/程序運行的機(jī)器配置不高時,本發(fā)明保證了動畫輸出的連續(xù)性,避免出現(xiàn)動畫輸出停頓的現(xiàn)象。尤其將本發(fā)明應(yīng)用于游戲中時,該方法能夠降低游戲?qū)τ嬎銠C(jī)配置的要求,使得現(xiàn)有計算機(jī)不會成為要求高配置的游戲運行的瓶頸。
進(jìn)一步,在上述方法基礎(chǔ)上,本發(fā)明還提供多個動畫幀刪減程度選項,可使用戶根據(jù)機(jī)器配置和應(yīng)用需求決定幀刪減程度,即對于機(jī)器配置較低的用戶可選擇刪減更多的幀用于保證動畫輸出的流暢性。優(yōu)選的,本發(fā)明中采用了等比數(shù)列的計算方法確定幀的刪減程度。該算法進(jìn)一步保證了動畫輸出的流暢性,穩(wěn)定動畫輸出質(zhì)量。
進(jìn)一步,本發(fā)明通過對每個顯示循環(huán)中的流量進(jìn)行控制,保證了充分合理的使用內(nèi)存在一個顯示循環(huán)內(nèi)完成圖素的計算,圖素的加載,圖素的繪制,以免進(jìn)行不必要的工作。例如加載圖素后,缺乏足夠的資源繪制圖素,或是在顯示循環(huán)時間內(nèi),沒有加載足夠的圖素,導(dǎo)致資源空閑等該方法進(jìn)一步提高了內(nèi)存使用合理的最大化,保證了動畫顯示的質(zhì)量;并且,由于本發(fā)明調(diào)用最近一次加載的相同圖素以補(bǔ)償當(dāng)前顯示循環(huán)中未能加載的圖素,因而同時保證了畫面的完整性。
本發(fā)明還采用最久未使用淘汰的原則對內(nèi)存進(jìn)行管理,進(jìn)一步降低了系統(tǒng)負(fù)荷,提高了動畫輸出的流暢性。


圖1為本發(fā)明實施例流程圖。
具體實施例方式
本發(fā)明提供了一種動畫顯示的方法。所述動畫由一組連續(xù)的并具有漸變效果的圖片組成,每張圖片稱為一幀,一個動畫通常用于表現(xiàn)一個完整的動作,幀數(shù)越多,動作表現(xiàn)得越平滑。所述幀即為每個顯示循環(huán)中顯示的圖片(圖素)例如,一個蝴蝶翅膀扇動的動畫,由數(shù)幅翅膀位置不同的圖片連續(xù)組成,當(dāng)圖片連續(xù)播放時即顯示為翅膀扇動的效果。在動畫中包含了若干個顯示循環(huán),動畫畫面的繪制是以時間為周期的循環(huán)過程,在每個顯示循環(huán)內(nèi)完成一次畫面展現(xiàn)和必要的邏輯運算;每個顯示循環(huán)內(nèi),畫面內(nèi)所有的動畫都顯示一幀,循環(huán)的時間可根據(jù)需要定制,例如,現(xiàn)有游戲中通常將動畫顯示循環(huán)的周期設(shè)置為50毫秒。
在以上公知概念基礎(chǔ)上,具體說明本發(fā)明的優(yōu)選實施例。為了在動畫顯示輸出過程中達(dá)到減少硬件I/O阻塞以及節(jié)省內(nèi)存空間,以保證動畫顯示流暢的目的,本實施例的核心包括一下三方面的內(nèi)容。
1)對一幅動畫中的幀進(jìn)行刪減,以使動畫輸出過程中節(jié)省內(nèi)存空間。
假設(shè)一幅動畫由編號為1到10的10個幀組成。本發(fā)明的原則是按照一定的規(guī)則在動畫時長不變的情況下,可以只加載并顯示編號為1,3,5,7,9的幀,或者只加載顯示編號為1,5,9的幀。
具體的,如以下給出的算法實例,設(shè)請求繪制一幅動畫的第X幀,按照下面的公式進(jìn)行計算,實際加載顯示的幀X1為X1=floor(floor(X/F)*F+mod(X,F(xiàn))/P1)*P1其中F為該動畫的總幀數(shù),即組成該動畫的圖片總數(shù);floor為取整函數(shù),mod為取余函數(shù),X指代請求繪制的幀,X1指代實際顯示輸出的幀,P1為本實施例中設(shè)置的動畫質(zhì)量系數(shù)。在上述算法中,通過系數(shù)P1實現(xiàn)對動畫幀縮減程度的控制,本實施例中采用等比數(shù)列的算法設(shè)置P1,對P1取值設(shè)置一個范圍;進(jìn)而為用戶提供一個動畫質(zhì)量的選項,例如選項內(nèi)容可包括高級動畫質(zhì)量、中級動畫質(zhì)量、低級動畫質(zhì)量等;該些選項分別對應(yīng)于P1的幾個值。用戶可以根據(jù)自己機(jī)器的配置優(yōu)劣,通過選擇選項內(nèi)容間接修改P1的值,如果機(jī)器配置低,則用戶可以選擇低級動畫質(zhì)量,那么這個動畫最終加載顯示的幀數(shù)就少,即由上文所舉算法公式可知,動畫質(zhì)量越低,X與X1的間隔數(shù)越高,加載顯示的幀數(shù)越少。
上文所舉實例采用等比數(shù)列的算法對不同質(zhì)量要求的進(jìn)行幀的刪減,在本發(fā)明中,依據(jù)業(yè)務(wù)應(yīng)用的具體需求可采用其他算法,例如其他線性或非線性的算法選擇動畫中的部分幀進(jìn)行顯示輸出。具體算法和參數(shù)配置方式本領(lǐng)域技術(shù)人員可以自行定制。
舉例若某動畫中包括展現(xiàn)翅膀扇動的過程,使用10個顯示循環(huán)完成所述翅膀扇動的過程,并且預(yù)置了10幀的畫面,幀編號為1、……10,每幀中翅膀所在畫面位置各不相同,但前后幀中翅膀位置相互連續(xù),進(jìn)而當(dāng)順序輸出顯示1至10幀時即可呈現(xiàn)翅膀扇動的效果。采用上述動畫輸出幀刪減方法,對原有動畫的10幀縮進(jìn)行縮減,動畫質(zhì)量系數(shù)P1等于2時,即顯示第1、3、5、7、9幀,在第2個顯示循環(huán)中,系統(tǒng)通過上述公式計算得出當(dāng)前加載的幀仍是第1幀,此時不需重新進(jìn)行第1幀加載的操作,而直接調(diào)用已加載到內(nèi)存中的第1幀進(jìn)行輸出,即所選每一幀在保持連續(xù)兩個顯示循環(huán)的輸出,依此類推該動畫仍使用10個顯示循環(huán)完成了翅膀扇動過程的展現(xiàn)。下表中是動畫質(zhì)量系數(shù)分別等于2和4時的幀加載情況。

2)控制每個顯示循環(huán)中的圖素加載量。
每個顯示循環(huán)中,都會加載一定容量的圖素到內(nèi)存。所述圖素對應(yīng)著動畫中的一幀,是圖像的最小繪制單元。本發(fā)明中進(jìn)一步通過對每個顯示循環(huán)中的流量進(jìn)行控制,保證了在一個顯示循環(huán)內(nèi)能夠合理的分配資源完成圖素的計算、圖素的加載以及圖素的繪制;并且,如果在確定的顯示循環(huán)中需要顯示的某動畫的圖素未能加載到內(nèi)存,則調(diào)用該動畫在內(nèi)存中最近一次顯示循環(huán)中加載的圖素。
為了實現(xiàn)該目的,具體實現(xiàn)中可設(shè)置一個門限值Q作為每次顯示循環(huán)時可以加載圖素的最大容量,該門限值Q可通過具體的業(yè)務(wù)需求、實際經(jīng)驗值,以及根據(jù)內(nèi)存和硬盤的計算速度確定;設(shè)置一個參數(shù)Q1,用于記錄每次顯示循環(huán)時圖素加載的總?cè)萘俊.?dāng)圖素的加載容量Q1大于或者等于設(shè)定的最大容量Q時,則在當(dāng)前顯示循環(huán)中,停止加載圖素到內(nèi)存。如果在當(dāng)前顯示循環(huán)中需要顯示的圖素未能加載到內(nèi)存中,則查找最近一次的顯示循環(huán)中該動畫所使用的圖素進(jìn)行顯示。當(dāng)本次顯示循環(huán)結(jié)束時,將Q1值清零,開始下一個顯示循環(huán)圖素加載量的計算。
例如,某動畫中包括展現(xiàn)翅膀扇動的過程,使用5個顯示循環(huán)完成所述翅膀扇動的過程,并且每個顯示循環(huán)顯示一幀的畫面,幀編號分別為1、2、3、4、5,每幀中翅膀所在畫面位置各不相同,但前后幀中翅膀位置相互連續(xù),進(jìn)而當(dāng)順序輸出顯示1至5幀時即可呈現(xiàn)翅膀扇動的效果。設(shè)在下一個顯示循環(huán)中將顯示第3幀,則需加載第3幀畫面中的各圖素到內(nèi)存。假設(shè)在采用上述流量控制的情況下,由于第三幀加載到內(nèi)存的圖素量達(dá)到了預(yù)置的門限,使得第3幀中翅膀圖素未能加載到內(nèi)存中,則返回內(nèi)存中已保存的在第2顯示循環(huán)中加載并顯示的翅膀圖素,即第2幀在第3顯示循環(huán)中顯示輸出。
本舉例中,在加載圖素前,判斷已加載圖素的總?cè)萘颗c當(dāng)前要加載的圖素容量之和是否大于或等于門限值,若是,則調(diào)用該動畫在內(nèi)存中最近一次顯示循環(huán)中所加載的圖素。否則,加載顯示當(dāng)前要加載的圖素。本發(fā)明中并不排除其他設(shè)置內(nèi)存占用門限的方法,如內(nèi)存占用率等。
3)對內(nèi)存的管理。
每個顯示循環(huán)都包括往內(nèi)存中加載圖素的操作,當(dāng)內(nèi)存空間不足時,采用最久未使用淘汰的原則卸載那些最久未使用的圖素,以釋放內(nèi)存空間,用于加載新的圖素。
以上具體介紹了本發(fā)明中所采用的部分技術(shù)手段。以下參照圖1,說明本發(fā)明的動畫顯示方法的處理流程。
操作開始進(jìn)行步驟11當(dāng)內(nèi)存空間不足時,卸載內(nèi)存中最久未使用的圖素,以釋放內(nèi)存空間加載新的圖素;步驟12依據(jù)預(yù)置的算法計算當(dāng)前顯示循環(huán)中實際加載的幀X1;判斷幀X1是否已被加載到內(nèi)存,若否則進(jìn)行步驟13,否則之間進(jìn)行輸出顯示;本實施例中采用C++標(biāo)準(zhǔn)庫提供的MAP儲存所加載圖素的信息,通過遍歷MAP,可判斷當(dāng)前要加載的圖素是否已在內(nèi)存中;步驟13計算當(dāng)前顯示循環(huán)中已加載的圖素容量;步驟14判斷當(dāng)前已加載容量是否達(dá)到預(yù)置門限,若否則進(jìn)行步驟15,若時則進(jìn)行步驟16;步驟15繼續(xù)加載動畫第X1幀的圖素;步驟16對于未能加載的圖素,返回最近一次繪制動畫所使用的幀。
操作結(jié)束。
以上為本發(fā)明的優(yōu)選實施例,該實施例中將內(nèi)存管理和流量控制進(jìn)行了有機(jī)的結(jié)合,即采取最久未使用淘汰的原則釋放內(nèi)存空間的同時,依據(jù)預(yù)置的規(guī)則選擇一幅動畫中所要加載并顯示的幀,并在進(jìn)行幀加載的過程中對幀中的圖素加載流量進(jìn)行控制。由于在動畫顯示的多個方面采用所述技術(shù)手段,因而達(dá)到了降低系統(tǒng)運行負(fù)荷,提高動畫輸出流暢性的目的。
以上對本發(fā)明所提供的一種動畫顯示方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種動畫顯示方法,其特征在于預(yù)置幀顯示規(guī)則,用于選取組成動畫的所有幀中的部分幀進(jìn)行顯示輸出;根據(jù)所述的幀顯示規(guī)則,獲取當(dāng)前顯示循環(huán)中需要加載顯示的幀的編號;判斷所述需要加載顯示的幀是否已被加載到內(nèi)存,若是則直接顯示;否則加載該編號的幀到內(nèi)存并進(jìn)行輸出顯示。
2.如權(quán)利要求1所述的動畫顯示方法,其特征在于所述規(guī)則為選取動畫中編號為等差排列的幀進(jìn)行顯示。
3.如權(quán)利要求2所述的動畫顯示方法,其特征在于所述規(guī)則具體為X1=floor(floor(X/F)*F+mod(X,F(xiàn))/P1)*P1,其中F為動畫總幀數(shù),P1為動畫質(zhì)量系數(shù),X1為當(dāng)前選取顯示的幀編號,X為順序播放F幀時當(dāng)前顯示循環(huán)對應(yīng)于的幀編號。
4.如權(quán)利要求2所述的動畫顯示方法,其特征在于所述動畫質(zhì)量系數(shù)P1以等比數(shù)列設(shè)置,以對應(yīng)于不同幀縮減數(shù);以及,動畫顯示之前通過確定動畫質(zhì)量系數(shù)P1。
5.如權(quán)利要求1所述的動畫顯示方法,其特征在于使用C++標(biāo)準(zhǔn)庫提供的MAP儲存所加載圖素的信息,通過遍歷MAP,判斷當(dāng)前要加載的圖素是否已在內(nèi)存中。
6.如權(quán)利要求1所述的動畫顯示方法,其特征在于,進(jìn)一步包括限制每一顯示循環(huán)中圖素的加載量。
7.如權(quán)利要求7所述的動畫顯示方法,其特征在于進(jìn)一步,由于限制每一顯示循環(huán)中圖素加載量,若在確定的顯示循環(huán)中需要顯示的圖素未能加載到內(nèi)存,則調(diào)用該動畫在內(nèi)存中最近一次顯示循環(huán)中加載的圖素。
8.如權(quán)利要求7所述的動畫顯示方法,其特征在于,所述限制圖素加載量的方法為判斷已加載圖素的總?cè)萘颗c當(dāng)前要加載的圖素容量之和是否不小于門限值,若大于則停止該顯示循環(huán)中加載圖素的操作。
9.如權(quán)利要求1所述的動畫顯示方法,其特征在于,進(jìn)一步包括加載圖素前判斷內(nèi)存空間大小,若內(nèi)存空間不足,則淘汰內(nèi)存中最久未使用的圖素。
全文摘要
本發(fā)明涉及一種動畫顯示方法。包括預(yù)置幀顯示規(guī)則,用于選取組成動畫的所有幀中的部分幀進(jìn)行顯示輸出;根據(jù)所述的幀顯示規(guī)則,獲取當(dāng)前顯示循環(huán)中需要加載顯示的幀的編號;判斷所述需要加載顯示的幀是否已被加載到內(nèi)存,若是則直接顯示;否則加載該編號的幀到內(nèi)存并進(jìn)行輸出顯示。本發(fā)明保證了動畫輸出的流暢性,穩(wěn)定動畫輸出質(zhì)量。
文檔編號G06F9/46GK1776746SQ20051013181
公開日2006年5月24日 申請日期2005年12月15日 優(yōu)先權(quán)日2005年12月15日
發(fā)明者李學(xué)武 申請人:北京金山軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
涟水县| 卢氏县| 黔南| 德昌县| 天水市| 肥城市| 水富县| 南宫市| 武冈市| 瑞安市| 安丘市| 临湘市| 武冈市| 衡南县| 广宁县| 桃园市| 贡山| 蕉岭县| 扶绥县| 修文县| 永新县| 吉安市| 营口市| 湾仔区| 开化县| 界首市| 吕梁市| 临桂县| 大埔区| 化德县| 五华县| 赤水市| 锦屏县| 芮城县| 新昌县| 冕宁县| 磴口县| 凭祥市| 镇安县| 泸州市| 荣成市|