麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種角色動畫實現方法及系統的制作方法

文檔序號:6348426閱讀:273來源:國知局
專利名稱:一種角色動畫實現方法及系統的制作方法
技術領域
本發明涉及一種角色動畫實現方法及系統,其屬于計算機圖像顯示技術領域。
背景技術
在游戲中,為了滿足玩家個性化的需求,往往需要設計大量的圖素,并通過復雜的換裝系統豐富圖素的輸出。因此,動畫顯示技術中經常要面臨以下問題。有的畫面包括了大量的圖素,例如一個游戲畫面中包括了多個玩家角色,每個角色具有各不相同的造型,并且同時進行各不相同的動作操作。現有的動畫輸出技術包括動態加載和靜態加載方式。所述動態加載是指當用到某一個圖素時,才把該圖素從硬件存儲空間加載到內存;所述靜態加載是指在程序開始時,把所有的圖素加載到內存中,等待應用程序調用。當畫面中包含大量圖素的時候,若使用動態加載的方式輸出畫面,采用動態加載方式,如果畫面圖素過多, 大量的數據會導致硬件輸入I/O的阻塞而引起程序阻塞,導致動畫畫面輸出不連續,影響動畫輸出質量;若使用靜態加載的方式輸出動畫,該方法需要預先加載大量的數據,而導致啟動程序時間過長和占用內存過多的問題。為了解決上述問題,現有游戲中的動畫顯示技術多采用如下的方案程序開始時, 加載部分圖素到內存中,可以根據需求,在程序中預先確定所要加載的圖素;程序過程中, 若當前要顯示的圖素不再內存當中,則淘汰內存中的部分圖素,釋放空間后加載要使用的圖素。現有的方法的缺陷在于由于在啟動時,需要加載部分圖素,因此導致較長的程序啟動時間。專利ZL200510131814. X中提高了采用預置幀顯示規則解決這個問題,但是其在加載圖素前判斷內存空間不足,采用淘汰內存中最久未使用的圖素。但是最久為使用的圖素可能在使用的時候被大量調用過,這樣會導致圖素的重復導入,浪費大量的時間和資源。

發明內容
為解決上述問題,本發明的目的是提供一種角色動畫實現方法及系統,該方法能夠減少動畫加載過程中的硬件I/O阻塞,并減少內存占用容量。為解決上述技術問題,本發明提供了一種角色動畫實現方法及系統,包括預置幀顯示規則,用于選取組成動畫的所有幀中的部分幀進行顯示輸出;根據所述的幀顯示規則, 獲取當前顯示循環中需要加載顯示的幀的編號;判斷所述需要加載顯示的幀是否已被加載到內存,若是則直接顯示;否則加載該編號的幀到內存并進行輸出顯示。其中,所述規則為選取動畫中編號為等差排列的幀進行顯示。該規則的一種算法為=Xl = floor (floor (X/F) *F+mod (X, F)/Pl) *P1,其中F為動畫總幀數,Pl為動畫質量系數,Xl為當前選取顯示的幀編號,X為順序播放F幀時當前顯示循環對應于的幀編號。其中,動畫質量系數Pl以等比數列設置,以對應于不同幀縮減數;進而在動畫顯示之前通過確定動畫質量系數Pl。在上述方法基礎上,采用C++標準庫提供的MAP儲存所加載圖素的信息,通過遍歷 MAP,判斷當前要加載的圖素是否已在內存中。
在上述方法基礎上,進一步限制每一顯示循環中圖素的加載量;進而,若在確定的顯示循環中需要顯示的圖素未能加載到內存,則調用該動畫在內存中最近一次顯示循環中加載的圖素。具體的,限制圖素加載量的方法可采用判斷已加載圖素的總容量與當前要加載的圖素容量之和是否不小于門限值,若大于則停止該顯示循環中加載圖素的操作。在上述方法基礎上,加載圖素前判斷內存空間大小,若內存空間不足,則采用下述方法淘汰圖片,方法如下P = Pl氺a/b+P2氺c/d ;其中P1表示個人對最長時間沒出現圖片的偏好;P2表示個人對出現頻率最少的圖片的偏好;a表示一個圖片出現的總次數;b表示運行總次數;c表示該圖片出現的次數序號之和;d表示運行次數序號之和。本發明在內存空間不足時,采用對最近未出現圖片和出現頻率最低的圖片的權重,同時加入個人偏好,不但很好的降低了系統負荷,提高了動畫輸出的流暢性,同時也滿足了不同人的不同要求,進步提高了此方法的可用性。
具體實施例方式本發明提供了一種角色動畫實現方法及系統;所述動畫由一組連續的并具有漸變效果的圖片組成,每張圖片稱為一幀,一個動畫通常用于表現一個完整的動作,幀數越多, 動作表現得越平滑。所述幀即為每個顯示循環中顯示的圖片(圖素)例如,一個蝴蝶翅膀扇動的動畫,由數幅翅膀位置不同的圖片連續組成,當圖片連續播放時即顯示為翅膀扇動的效果。在動畫中包含了若干個顯示循環,動畫畫面的繪制是以時間為周期的循環過程,在每個顯示循環內完成一次畫面展現和必要的邏輯運算;每個顯示循環內,畫面內所有的動畫都顯示一幀,循環的時間可根據需要定制,例如,現有游戲中通常將動畫顯示循環的周期設置為50毫秒。在以上公知概念基礎上,具體說明本發明的優選實施例。為了在動畫顯示輸出過程中達到減少硬件I/O阻塞以及節省內存空間,以保證動畫顯示流暢的目的,本實施例的核心包括一下三方面的內容。1)對一幅動畫中的幀進行刪減,以使動畫輸出過程中節省內存空間。假設一幅動畫由編號為1到10的10個幀組成。本發明的原則是按照一定的規則在動畫時長不變的情況下,可以只加載并顯示編號為1,3,5,7,9的幀,或者只加載顯示編號為1,5,9的幀。具體的,如以下給出的算法實例,設請求繪制一幅動畫的第X幀,按照下面的公式進行計算,實際加載顯示的幀Xl為Xl = floor (floor (X/F) *F+mod (Χ, F) /Pl) *P1其中F為該動畫的總幀數,即組成該動畫的圖片總數;floor為取整函數,mod為取余函數,X指代請求繪制的幀,Xl指代實際顯示輸出的幀,Pi為本實施例中設置的動畫質量系數。在上述算法中,通過系數P實現對動畫幀縮減程度的控制,本實施例中采用等比數列的算法設置P1,對P取值設置一個范圍;進而為用戶提供一個動畫質量的選項,例如選項內容可包括高級動畫質量、中級動畫質量、低級動畫質量等;該些選項分別對應于P的幾個值。用戶可以根據自己機器的配置優劣,通過選擇選項內容間接修改Pi的值,如果機器配置低,則用戶可以選擇低級動畫質量,那么這個動畫最終加載顯示的幀數就少,即由上文所舉算法公式可知,動畫質量越低,X與Xl的間隔數越高,加載顯示的幀數越少。上文所舉實例采用等比數列的算法對不同質量要求的進行幀的刪減,在本發明中,依據業務應用的具體需求可采用其他算法,例如其他線性或非線性的算法選擇動畫中的部分幀進行顯示輸出。具體算法和參數配置方式本領域技術人員可以自行定制。舉例比如有一個角色的跑步動畫,包含20個關鍵幀。幀數編號從1 一直到20。 在這20幀動畫中,每一幀的位置都與上一幀有著微小的差距。但是從差距大小上來看并不不是很大。對于動畫的質量要求越高,那么對應的關鍵幀也就越多。一般上當每秒播放30個關鍵幀的時候,人對這種微小的差距就么有了什么感覺。對于我們的動畫來說,如果他在一秒中播放了 60幀,這個時候這個動畫必然會占用更多的硬件資源,而且這個效果完全是多余的。所以我們采用上述的方法對動畫的關鍵幀數進行刪減。采用我們的30幀標準, 我們可以對這60幀動畫進行對半的幀數精簡,以達到提高資源利用率,減少內存損耗的目的。如取動畫的質量系數為2時,即顯示的關鍵幀是1,3,5,7,9等。在第二個顯示循環中, 系統通過上述公式計算得出當前加載的幀仍是第1幀,此時不需重新進行第1幀加載的操作,而直接調用已加載到內存中的第1幀進行輸出,即所選每一幀在保持連續兩個顯示循環的輸出,即所選每一幀在保持連續兩個顯示循環的輸出,依此類推該動畫仍使用30個顯示循環完成了主角跑步過程的展現。下表中是動畫質量系數分別等于2和4時的幀加載情況。2)控制每個顯示循環中的圖素加載量。每個顯示循環中,都會加載一定容量的圖素到內存。所述圖素對應著動畫中的一幀,是圖像的最小繪制單元。本發明中進一步通過對每個顯示循環中的流量進行控制,保證了在一個顯示循環內能夠合理的分配資源完成圖素的計算、圖素的加載以及圖素的繪制; 并且,如果在確定的顯示循環中需要顯示的某動畫的圖素未能加載到內存,則調用該動畫在內存中最近一次顯示循環中加載的圖素。為了實現該目的,具體實現中可設置一個門限值Q作為每次顯示循環時可以加載圖素的最大容量,該門限值Q可通過具體的業務需求、實際經驗值以及根據內存和硬盤的計算速度確定;設置一個參數Q1,用于記錄每次顯示循環時圖素加載的總容量。當圖素的加載容量Ql大于或者等于設定的最大容量Q時,則在當前顯示循環中,停止加載圖素到內存。如果在當前顯示循環中需要顯示的圖素未能加載到內存中,則查找最近一次的顯示循環中該動畫所使用的圖素進行顯示。當本次顯示循環結束時,將Ql值清零,開始下一個顯示循環圖素加載量的計算。例如,還是以人物的跑步動畫作為例子,這個動畫,使用5個顯示循環完成角色跑步的過程,并且每個顯示循環顯示一幀的畫面,幀編號分別為1、2、3、4、5。設在下一個顯示循環中將顯示第3幀,則需加載第3幀畫面中的各圖素到內存。假設在采用上述流量控制的情況下,由于第三幀加載到內存的圖素量達到了預置的門限,使得第三幀的動畫為加載到內存中。這個時候根據動畫的連續性,選擇最近一次播放的動畫來作為此次的繪制輸出。本舉例中,在加載圖素前,判斷已加載圖素的總容量與當前要加載的圖素容量之和是否大于或等于門限值,若是,則調用該動畫在內存中最近一次顯示循環中所加載的圖素。否則,加載顯示當前要加載的圖素。本發明中并不排除其他設置內存占用門限的方法, 如內存占用率等。3)對內存的管理。每個顯示循環都包括往內存中加載圖素的操作,當內存空間不足時,采用,則采用下述方法淘汰圖片,方法如下P = Pl*a/b+P2*c/d ;其中P1表示個人對最長時間沒出現圖片的偏好;P2表示個人對出現頻率最少的圖片的偏好;a表示一個圖片出現的總次數;b表示運行總次數;c表示該圖片出現的次數序號之和;d表示運行次數序號之和,以釋放內存空間,用于加載新的圖素。以上具體介紹了本發明中所采用的部分技術手段。本發明的操作步驟1)當內存空間不足時,,則采用下述方法淘汰圖片,方法如下P = Pl*a/b+P2*c/d ;其中P1表示個人對最長時間沒出現圖片的偏好;P2表示個人對出現頻率最少的圖片的偏好;a表示一個圖片出現的總次數;b表示運行總次數;c表示該圖片出現的次數序號之和;d表示運行次數序號之和。2)依據預置的算法計算當前顯示循環中實際加載的幀Xl ;判斷幀Xl是否已被加載到內存,若否則進行步驟3,否則之間進行輸出示;本實施例中采用C++標準庫提供的MAP 儲存所加載圖素的信息,通過遍歷MAP,可判斷當前要加載的圖素是否已在內存中;3)計算當前顯示循環中已加載的圖素容量;4)判斷當前已加載容量是否達到預置門限,若否則進行步驟15,若時則進行步驟 6 ;5)繼續加載動畫第Xl幀的圖素;6)對于未能加載的圖素,返回最近一次繪制動畫所使用的幀。操作結束。
權利要求
1. 一種角色動畫實現方法及系統,包括預置幀顯示規則,用于選取組成動畫的所有幀中的部分幀進行顯示輸出;根據所述的幀顯示規則,獲取當前顯示循環中需要加載顯示的幀的編號;判斷所述需要加載顯示的幀是否已被加載到內存,若是則直接顯示;否則加載該編號的幀到內存并進行輸出顯示;所述規則為選取動畫中編號為等差排列的幀進行顯示;該規則的算法為xi = floor(floor(X/F)*F+mod(X,F)/Pl)*Pl,其中F為動畫總幀數, Pl為動畫質量系數,Xl為當前選取顯示的幀編號,X為順序播放F幀時當前顯示循環對應于的幀編號。其中,動畫質量系數Pl以等比數列設置,以對應于不同幀縮減數;進而在動畫顯示之前通過確定動畫質量系數Pl ;采用C++標準庫提供的MAP儲存所加載圖素的信息, 通過遍歷MAP,判斷當前要加載的圖素是否已在內存中;進一步限制每一顯示循環中圖素的加載量;在確定的顯示循環中需要顯示的圖素未能加載到內存,則調用該動畫在內存中最近一次顯示循環中加載的圖素;限制圖素加載量的方法采用判斷已加載圖素的總容量與當前要加載的圖素容量之和是否不小于門限值,若大于則停止該顯示循環中加載圖素的操作;其特征在于在加載圖素前判斷內存空間大小,若內存空間不足,則采用下述方法淘汰圖片,方法如下P = Pl*a/b+P2*c/d ;其中P1表示個人對最長時間沒出現圖片的偏好;P2表示個人對出現頻率最少的圖片的偏好;a表示一個圖片出現的總次數;b表示運行總次數;c表示該圖片出現的次數序號之和;d表示運行次數序號之和。
全文摘要
本發明涉及一種角色動畫實現方法及系統;其屬于計算機圖像顯示技術領域。本發明在內存空間不足時,采用對最近未出現圖片和出現頻率最低的圖片的權重,同時加入個人偏好,不但很好的降低了系統負荷,提高了動畫輸出的流暢性,同時也滿足了不同人的不同要求,進步提高了此方法的可用性。
文檔編號G06T13/40GK102521866SQ20111036251
公開日2012年6月27日 申請日期2011年11月16日 優先權日2011年11月16日
發明者戚軍 申請人:戚軍
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 汨罗市| 枣阳市| 城步| 大渡口区| 平泉县| 沙雅县| 孙吴县| 泰宁县| 涪陵区| 安义县| 府谷县| 无锡市| 辽宁省| 武邑县| 年辖:市辖区| 儋州市| 漯河市| 西吉县| 西贡区| 泸西县| 大关县| 永平县| 新闻| 乌审旗| 武安市| 上饶市| 财经| 延寿县| 康定县| 神池县| 南雄市| 迁安市| 沈阳市| 阳信县| 秦皇岛市| 黔江区| 泾源县| 阜康市| 肇东市| 微山县| 鄱阳县|