新四季網

一種動畫生成方法、裝置、客戶端以及計算機可讀存儲介質與流程

2023-10-09 10:47:34 1


本發明涉及圖像處理技術領域,特別地,涉及一種動畫生成方法、裝置、客戶端以及計算機可讀存儲介質。



背景技術:

unity是由unitytechnologies開發的一個讓玩家輕鬆創建諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。unity類似於director,blendergameengine,virtools或torquegamebuilder等利用交互的圖型化開發環境為首要方式的軟體。其編輯器運行在windows和macosx下,可發布遊戲至windows、mac、wii、iphone、webgl(需要html5)、windowsphone8和android平臺。也可以利用unitywebplayer插件發布網頁遊戲,支持mac和windows的網頁瀏覽。它的網頁播放器也被macwidgets所支持。

使用unity製作的大部分3d遊戲都會使用到其自帶的粒子系統(particlesystem),它的優點有很多,比如美術工具使用起來十分方便,製作特效的效率較快。並且和引擎高度兼容,由於是引擎原生的功能,不需要擔心版本升級帶來的不兼容等問題。但是,隨著3d遊戲的計算量和複雜度不斷提高,unity等3d製作也出現了一些問題。



技術實現要素:

為了解決現有技術中存在的技術問題,本發明實施例提供了一種動畫生成方法、裝置、客戶端以及計算機可讀存儲介質,技術方案如下:

第一方面,本發明提供一種動畫生成方法,包括如下步驟:當第一動作被執行時,判斷對象池管理節點是否包含第一動作特效;若所述對象池管理節點包含所述第一動作特效,從所述對象池管理節點加載所述第一動作特效,並初始化所述第一動作特效;將所述恢復後的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

第二方面,本發明提供一種動畫生成裝置,所述裝置包括如下模塊:判斷模塊,用於在第一動作被執行時,判斷對象池管理節點是否包含第一動作特效;第一條件執行模塊,用於在所述對象池管理節點包含所述第一動作特效時,從所述對象池管理節點加載所述第一動作特效,並初始化所述第一動作特效;激活模塊,用於將所述初始化的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

第三方面,本發明提供一種客戶端,包括前述的客戶端。

第四方面,本發明提供一種計算機可讀存儲介質,其上存儲有電腦程式,其特徵在於,該程序被處理器執行時實現前述的方法。

本發明能夠達到的有益效果:通過對象池管理器(wlpoolmanager)將遊戲對象(gameobject)的動作進行回收,避免由於大量的創建(instantiate)和(destroy)這些粒子特效導致的遊戲整個性能降低,避免遊戲卡頓的出現。

附圖說明

下面結合附圖對本發明的具體實施方式作進一步詳細的說明;

圖1(a)-(c)是本發明實施例提供的人物動畫效果示意圖。

圖2是本發明實施例提供的方法流程示意圖。

圖3是本發明實施例提供的方法流程示意圖。

圖4(a)(b)是本發明實施例提供的方法流程示意圖。

圖5(a)-(c)是本發明另一實施例提供的人物動畫效果示意圖。

圖6是本發明實施例提供的裝置結構原理的框圖。

圖7(a)-(c)是本發明實施例提供的裝置結構原理的框圖。

圖8是本發明實施例提供的終端結構示意圖。

具體實施方式

為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。

本發明實施例涉及的技術術語如下:

unity:是一個用於創建諸如三維電子遊戲、建築可視化、實時三維動畫等類型互動內容的綜合型創作工具。unity類似於director,blender,virtools或torquegamebuilder等利用交互的圖型化開發環境為首要方式的軟體其編輯器運行在windows和macosx下,可發布遊戲至windows,osx,android,ios等多個平臺。

遊戲對象(gameobjects):遊戲中的每個對象都是一個gameobject,gameobject是一種容器。

組件(components):包含在gameobject中,用來控制gameobject的運動,旋轉等等功能。

particles:unity中的粒子系統。

實例化(instantiate):實例化遊戲對象(gameobjects)。

destory:銷毀遊戲對象(gameobjects)或組件(components)。

預設(prefabs):預定義遊戲對象(gameobjects)和組件(components)的集合,可在遊戲中重複使用。

對象池:第一次創建的時候就將對象存儲在一個池子中,當需要銷毀的時候不直接銷毀而是隱藏,當需要時在再次使用,就不需要再次實例化一個新的對象,直接把隱藏的對象顯示並拿出來用。

為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。

如圖1(a)至圖1(c)所示,在一個實施例中,unity粒子系統很方便使用,但是在一般的3d遊戲中,會用到大量的粒子特效。遊戲或者視頻動畫中會頻繁而且相對大量的創建(instantiate)和銷毀(destroy)這些粒子特效,這會導致遊戲整個性能降低,如果創建的數量過多,內存很容易不足,比較典型的,是出現卡頓現象。查看發現主要卡頓點在兩處地方,一是實例化過程(instantiate),尤其是類似rigdbody的組件在激活時會更新一些全局的狀態。二是gc.collect.unity的自動gc發生的時間是無法控制的,可能發生在任何時間點。對於一來說可以通過分批激活的方式來解決,比如使用coroutine來挨個激活就可以避免卡頓。但對於二來說只有避免gc那就要避免大量的銷毀(destory)。

綜上,如果想避免遊戲中的卡頓,首先要使用對象池,重複使用對象,避免對象的銷毀。二是在合適的時候手動gc,比如加載界面。為了避免遊戲中由於持續生成和銷毀特效實體而造成的卡頓,為了重複利用資源,會設計對象池來解決這一問題。但是,unity的粒子系統(particles)和初始化會有一些問題,在實際動畫生成過程中發現,帶trail的遊戲對象(gameobject)在重用後,由於沒有重置,會在舊的位置和新的位置之間產生拖尾。而帶有粒子系統的遊戲對象(gameobject)再重用過程中參數會不斷積累,從而造成粒子縮放問題。

如圖2所示,在一個實施例中,提出一種動畫生成方法,包括:

s210,當第一動作被執行時,實例化第一動作特效,並存儲於第一動作節點下;

s220,所述第一動作結束時,將所述第一動作特效回收至對象池管理節點下,並將所述第一動作特效設置為非激活狀態;

s230,當再次執行所述第一動作時,從所述對象池管理節點加載所述第一動作特效,恢復所述第一動作特效參數;

s240,將所述恢復後的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

綜上所述,本實施例通過對象池管理器(wlpoolmanager)將遊戲對象(gameobject)的動作進行回收,避免由於大量的創建(instantiate)和(destroy)這些粒子特效導致的遊戲整個性能降低,避免遊戲卡頓的出現。

但是在特效回收過程中,還發現了伴隨有拖尾和粒子縮放現象,在圖1(a)-圖1(c)中,圖1(a)是初始化的粒子效果;圖1(b)是第一次重複利用的粒子效果,已經出現了由於的粒子縮放導致的畫面劣化;圖1(c)是第二次重複利用的粒子效果,已經出現了較為嚴重的粒子縮放導致的畫面劣化。

如圖3所示,在一個實施例中,提出一種動畫生成方法,包括:

s310,當第一動作被執行時,判斷對象池管理節點是否包含被實例化的第一動作特效。

第一動作是指遊戲對象(gameobject)預設動作的實例化,可以包含遊戲對象(gameobject)的靜態或者動態的動作,例如,遊戲對象的奔跑、跳躍等類型的肢體性動作;還例如遊戲對象的射擊、蓄力、範圍攻擊等類型的外放型動作;還例如,遊戲對象進行點頭、屈膝等類型的細部動作。當第一動作被執行時,動畫播放界面會對應地播放該動作的動畫特效,動畫特效需要被實例化的動作特效。

在本實施例中,當第一動作被執行,動畫特效需要被播放時,首先不進行動畫特效的實例化,而是檢查是否有已經實例化的第一動作特效被存儲於對象池中。因為,如果在對象池中包含已經被實例化的第一動作特效,那麼就無需重新實例化第一動作特效,這樣可以減少實例的創建(instantiate)次數,同時對動作特效的回收也可以減少對實例的銷毀(destroy)次數,這樣可以節省內容,避免由於大量的創建(instantiate)和銷毀(destroy)這些粒子特效,而導致遊戲性能降低。

s320,若包含被實例化的第一動作特效,從所述對象池管理節點加載所述第一動作特效,並恢復所述第一動作特效。

在步驟s310的判斷之後,如果對象池管理節點包含被實例化的第一動作特效,即,第一動作特效在之前被回收過,那麼可以對第一動作特效進行重新利用。利用的過程的包括從對象池管理節點下加載第一動作特效,以及恢復第一動作特效。之所以要恢復第一動作特效是由於帶trail的遊戲對象(gameobject)在重用後,由於沒有重置,會在舊的位置和新的位置之間產生拖尾。而帶有粒子系統的遊戲對象(gameobject)再重用過程中參數會不斷積累,從而造成粒子縮放問題。

s330,將所述恢復後的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

在對第一動作特效進行恢復,並移動至第一動作節點下之後,相當於新創建了一個第一動作特效,此時只要將第一動作特效進行激活,第一動作特效就會在動畫播放界面上執行播放。

綜上所述,本實施例通過對象池管理器(wlpoolmanager)將遊戲對象(gameobject)的動作進行回收,避免由於大量的創建(instantiate)和(destroy)這些粒子特效導致的遊戲整個性能降低,避免遊戲卡頓的出現。

如圖4所示,在一個實施例中,提出一種動畫生成方法,包括:

s410,當第一動作被執行時,判斷對象池管理節點是否包含被實例化的第一動作特效。

第一動作是指遊戲對象(gameobject)預設動作的實例化,可以包含遊戲對象(gameobject)的靜態或者動態的動作,例如,遊戲對象的奔跑、跳躍等類型的肢體性動作;還例如,遊戲對象的射擊、蓄力、範圍攻擊等類型的外放型動作;還例如,遊戲對象進行點頭、屈膝等類型的細部動作。當第一動作被執行時,動畫播放界面會對應地播放該動作的動畫特效,動畫特效需要被實例化的動作特效。

在本實施例中,當第一動作被執行,動畫特效需要被播放時,首先不進行動畫特效的實例化,而是檢查是否有已經實例化的第一動作特效被存儲於對象池中。因為,如果在對象池中包含已經被實例化的第一動作特效,那麼就無需重新實例化第一動作特效,這樣可以減少實例的創建(instantiate)次數,同時對動作特效的回收也可以減少對實例的銷毀(destroy)次數,這樣可以節省內容,避免由於大量的創建(instantiate)和銷毀(destroy)這些粒子特效,而導致遊戲性能降低。

s420,若包含被實例化的第一動作特效,從所述對象池管理節點加載所述第一動作特效,並恢復所述第一動作特效。

在步驟s410的判斷之後,如果對象池管理節點包含被實例化的第一動作特效,即,第一動作特效在之前被回收過,那麼可以對第一動作特效進行重新利用。利用的過程的包括從對象池管理節點下加載第一動作特效,以及恢復第一動作特效。之所以要恢復第一動作特效是由於帶trail的遊戲對象(gameobject)在重用後,由於沒有重置,會在舊的位置和新的位置之間產生拖尾。而帶有粒子系統的遊戲對象(gameobject)再重用過程中參數會不斷積累,從而造成粒子縮放問題。

在一個實施例中,如圖4(b)所示,當從對象池管理節點加載所述第一動作特效時,恢復所述第一動作特效步驟被激活,包括:

s4201,構建重置對象池管理節點實例組件,獲取特效自身和所有子節點上的粒子系統。

重置對象池管理節點實例組件(resetpoolinstance.cs),會在恢復所述第一動作特效步驟被激活時被喚醒(awake)。在一個示例中,通過獲取粒子系統孩子節點函數getcomponentsinchildren來獲取特效自身和所有子節點身上的粒子系統。

s4202,渲染第一動作特效。

重置對象池管理節點實例組件(resetpoolinstance.cs),在被喚醒後,即處於使能狀態(oneable),通過渲染使能組件開始對第一動作特效進行渲染。

在一個示例中,通過getcomponentenabled=true來開始渲染。

s4203,重置粒子系統時間,清除上一次殘留特效,重新仿真。

由於第一動作特效是從上一次動作中的回收效果,其中的粒子系統時間不為0,因此需要對粒子系統的時間進行歸零。在一個示例中,通過設置粒子系統的系統時間time=0來實現。

由於第一動作特效是從上一次動作中的回收效果,因此需要對回收動作的殘留進行特效清楚。這樣可以防止殘留,拖尾等動畫殘留的出現。

重新仿真步驟是通過simulate函數來實現的。在一個示例中,simulate函數包含三個主要參數,表示為simulate(0f,false,true),第一參數表示仿真初始時間,第二參數表示是否包含孩子節點,第三參數表示是否重新開始。在一個示例中,對於第二參數,由於從之前步驟拿到的是所有粒子系統,所以設置為false,第三個參數表示是否重新開始仿真(restart),設置為true。

重新仿真過程還進一步包含了對粒子系統進行縮放的步驟,該步驟包括記錄粒子初始狀態,包括粒子的初始大小,初始重力因子,初始速度。

在一個示例中,通過粒子控制組件(particlecontroller.cs)進行對粒子系統進行縮放。在此組件被喚醒(awake)時,記錄下粒子初始的狀態。包括,粒子的初始大小(m_forgstartsize),粒子的初始重力因子(m_forggravitymodifier),粒子的初始速度(m_forgstartspeed)等,通過記錄下這些值為縮放粒子提供依據。

在一個示例中,在初始化這些參數後,通過循環對每個粒子的初始參數進行記錄。如下例所示:

m_particles=gameobject.getcomponetsinchildren;

m_forgstartsize=newfloat[m_particles.length];

m_forggravitymodifier=newfloat[m_particles.length];

m_forgstartspeed=newfloat[m_particles.length];

for(inti=0;i<m_particles.length;++i)

{

m_forgstartsize[i]=m_particles[i].startsize;

m_forggravitymodifier[i]=m_particles[i].gravitymodifier;

m_forgstartspeed[i]=m_particles[i].startspeed;

}

在初始化粒子參數後,根據縮放因子的對粒子進行縮放,基於縮放因子對初始參數進行縮放,在一個示例中縮放是同比例的,如下:

m_particles[i].startsize=m_forgstartsize[i]*_scalemultiplier;

m_particles[i].gravitymodifier=m_forggravitymodifier[i]*_scalemultipli-er;

m_particles[i].startspeed=m_forgstartspeed[i]*_scalemultiplier;

在另一個實施例中,對於不同參數的縮放因子是不同的,縮放因子可以是相互獨立的,或者按照的預設的函數呈比例關係、線性關係、指數關係設置的。

縮放因子可以通過編輯器配置,也可以根據預設的程序設置,預設程序可以是自適應的配置。基於上述過程中對縮放因子的配置,可以解決遊戲對象(gameobject)再重用過程中參數不斷積累,從而造成粒子縮放問題。

在一個示例中,編輯器相對於用戶而言是一個黑盒子,用戶可以根據需要對參數進行配置。用戶界面(ui)可以設置成一個可嵌套的特效編輯系統,待配置完成後,轉換為系統所需的配置參數,以在運行時加載。

當然,還可能存在對象池管理節點未包含之前回收的第一動作特效的情況,此時,需要重新實例化第一動作特效,此時執行如下步驟:

步驟s450,若不包含被實例化的第一動作特效,實例化第一動作特效,並存儲於第一動作節點下。

之後,執行步驟s440,在所述第一動作結束時,將所述第一動作特效回收至對象池管理節點下,並將所述第一動作特效設置為非激活狀態。

s430,將所述恢復後的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

所述步驟s430後還進一步包括:

s440,所述第一動作結束時,將所述第一動作特效回收至對象池管理節點下,並將所述第一動作特效設置為非激活狀態。

綜上所述,在上述步驟中,將對象池管理器(wlpoolmanager)和重置粒子的組件(resetpoolinstance.cs)進行結合,能夠將遊戲對象(gameobject)的動作進行回收,避免由於大量的創建(instantiate)和(destroy)這些粒子特效導致的遊戲整個性能降低,並且還能夠解決帶有粒子系統的遊戲對象(gameobject)再重用過程中參數不斷積累,而造成的粒子縮放問題。

如圖5(a)-5(c)所示,在使用了對象池管理器(wlpoolmanager)和重置粒子的組件(resetpoolinstance.cs)進行結合的技術之後,當遊戲對象(gameobject)攻擊時,特效實例化(shellbullet)出來放到角色攻擊節點下,紅框所示。當角色第一次攻擊結束後,我們會回收特效,將其放到對象池管理器(wlpoolmanager)這個根節點下,並且設置其非激活狀態。當角色第二次攻擊時,我們會把特效從對象池管理器(wlpoolmanager)根節點下拿出,通過重置粒子的組件(resetpoolinstance.cs)恢復其參數,再將其放到角色攻擊節點下並激活此特效。此時,第二次重置後的特效和第一次實例化出來的是一致的,不存在遊戲性能降低和粒子縮放問題。圖5(a)是第一次實例化的特效,圖5(b)則是對實例進行回收的過程,在這個過程中,第一動作特效被從第一動作節點下回收至對象池管理節點下。圖5(c)是第二次攻擊恢復特效,第二次攻擊特效與第一次實例化的特效沒有出現拖尾和縮放的效果劣化。

如圖6所示,本實施例提供一種動畫播放裝置,裝置結構如下:

判斷模塊,用於在第一動作被執行時,判斷對象池管理節點是否包含第一動作特效;

第一條件執行模塊,用於在所述對象池管理節點包含所述第一動作特效時,從所述對象池管理節點加載所述第一動作特效,並初始化所述第一動作特效;

激活模塊,用於將所述初始化的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

所述裝置能夠執行步驟s310-s330所述的方法。

如圖7(a)所示,本實施例提供一種動畫播放裝置,裝置結構如下:

判斷模塊,用於在第一動作被執行時,判斷對象池管理節點是否包含第一動作特效;

第一動作是指遊戲對象(gameobject)預設動作的實例化,可以包含遊戲對象(gameobject)的靜態或者動態的動作,例如,遊戲對象的奔跑、跳躍等類型的肢體性動作;還例如,遊戲對象的射擊、蓄力、範圍攻擊等類型的外放型動作;還例如,遊戲對象進行點頭、屈膝等類型的細部動作。當第一動作被執行時,動畫播放界面會對應地播放該動作的動畫特效,動畫特效需要被實例化的動作特效。

在本實施例中,當第一動作被執行,動畫特效需要被播放時,首先不進行動畫特效的實例化,而是檢查是否有已經實例化的第一動作特效被存儲於對象池中。因為,如果在對象池中包含已經被實例化的第一動作特效,那麼就無需重新實例化第一動作特效,這樣可以減少實例的創建(instantiate)次數,同時對動作特效的回收也可以減少對實例的銷毀(destroy)次數,這樣可以節省內容,避免由於大量的創建(instantiate)和銷毀(destroy)這些粒子特效,而導致遊戲性能降低。

第一條件執行模塊,用於在所述對象池管理節點包含所述第一動作特效時,從所述對象池管理節點加載所述第一動作特效,並初始化所述第一動作特效。

在判斷模塊執行判斷操作之後,如果對象池管理節點包含被實例化的第一動作特效,即,第一動作特效在之前被回收過,那麼可以對第一動作特效進行重新利用。利用的過程的包括從對象池管理節點下加載第一動作特效,以及恢復第一動作特效。之所以要恢復第一動作特效是由於帶trail的遊戲對象(gameobject)在重用後,由於沒有重置,會在舊的位置和新的位置之間產生拖尾。而帶有粒子系統的遊戲對象(gameobject)再重用過程中參數會不斷積累,從而造成粒子縮放問題。

激活模塊,用於將所述初始化的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

第二條件執行模塊,用於在所述對象池管理節點不包含第一動作特效時,創建第一動作特效,將所述第一動作特效存儲於第一動作節點下,並將所述第一動作特效設置為激活狀態。

回收模塊,用於在所述第一動作結束時,將所述第一動作特效回收至對象池管理節點,並將所述第一動作特效設置為非激活狀態。

如圖7(b)所示,所述第一條件執行模塊還包括:

粒子系統獲取模塊,用於獲取所述第一特效自身和所有子節點上的粒子系統。重置對象池管理節點實例組件(resetpoolinstance.cs),會在恢復所述第一動作特效步驟被激活時被喚醒(awake)。在一個示例中,通過獲取粒子系統孩子節點函數getcomponentsinchildren來獲取特效自身和所有子節點身上的粒子系統。

渲染子模塊,用於渲染第一動作特效。重置對象池管理節點實例組件(resetpoolinstance.cs),在被喚醒後,即處於使能狀態(oneable),通過渲染使能組件開始對第一動作特效進行渲染。在一個示例中,通過getcomponentenabled=true來開始渲染。

重置和清除模塊,用於重置所述粒子系統的系統時間,清除所述第一動作特效中的殘留特效。由於第一動作特效是從上一次動作中的回收效果,其中的粒子系統時間不為0,因此需要對粒子系統的時間進行歸零。在一個示例中,通過設置粒子系統的系統時間time=0來實現。由於第一動作特效是從上一次動作中的回收效果,因此需要對回收動作的殘留進行特效清楚。這樣可以防止殘留,拖尾等動畫殘留的出現。

仿真模塊,用於對所述第一動作特效重新仿真。重新仿真步驟是通過simulate函數來實現的。在一個示例中,simulate函數包含三個主要參數,表示為simulate(0f,false,true),第一參數表示仿真初始時間,第二參數表示是否包含孩子節點,第三參數表示是否重新開始。在一個示例中,對於第二參數,由於從之前步驟拿到的是所有粒子系統,所以設置為false,第三個參數表示是否重新開始仿真(restart),設置為true。

如圖7(c)所示,所述仿真模塊包括:

初始狀態記錄模塊,用於記錄粒子系統中粒子的初始狀態,該模塊包括記錄粒子初始狀態,包括粒子的初始大小,初始重力因子,初始速度。在一個示例中,通過粒子控制組件(particlecontroller.cs)進行對粒子系統進行縮放。在此組件被喚醒(awake)時,記錄下粒子初始的狀態。包括,粒子的初始大小(m_forgstartsize),粒子的初始重力因子(m_forggravitymodifier),粒子的初始速度(m_forgstartspeed)等,通過記錄下這些值為縮放粒子提供依據。

在一個示例中,在初始化這些參數後,通過循環對每個粒子的初始參數進行記錄。如下例所示:

m_particles=gameobject.getcomponetsinchildren;

m_forgstartsize=newfloat[m_particles.length];

m_forggravitymodifier=newfloat[m_particles.length];

m_forgstartspeed=newfloat[m_particles.length];

for(inti=0;i<m_particles.length;++i)

{

m_forgstartsize[i]=m_particles[i].startsize;

m_forggravitymodifier[i]=m_particles[i].gravitymodifier;

m_forgstartspeed[i]=m_particles[i].startspeed;

}

在初始化粒子參數後,根據縮放因子的對粒子進行縮放,基於縮放因子對初始參數進行縮放,在一個示例中縮放是同比例的,如下:

m_particles[i].startsize=m_forgstartsize[i]*_scalemultiplier;

m_particles[i].gravitymodifier=m_forggravitymodifier[i]*_scalemultipli-er;

m_particles[i].startspeed=m_forgstartspeed[i]*_scalemultiplier;

縮放因子獲取模塊,用於獲取縮放因子。對於不同參數的縮放因子是不同的,縮放因子可以是相互獨立的,或者按照的預設的函數呈比例關係、線性關係、指數關係設置的。縮放因子可以通過編輯器配置,也可以根據預設的程序設置,預設程序可以是自適應的配置。基於上述過程中對縮放因子的配置,可以解決遊戲對象(gameobject)再重用過程中參數不斷積累,從而造成粒子縮放問題。在一個示例中,編輯器相對於用戶而言是一個黑盒子,用戶可以根據需要對參數進行配置。用戶界面(ui)可以設置成一個可嵌套的特效編輯系統,待配置完成後,轉換為系統所需的配置參數,以在運行時加載。

縮放操作模塊,用於根據所述縮放因子對所述粒子的初始狀態進行縮放操作。

所述初始狀態記錄模塊,用於循環記錄粒子系統中每一個粒子的初始大小、初始重力因子和初始速度。

所述裝置能夠執行步驟s410-s450所述的方法。

綜上所述,上述模塊通過將對象池管理器(wlpoolmanager)和重置粒子的組件(resetpoolinstance.cs)進行結合,能夠將遊戲對象(gameobject)的動作進行回收,避免由於大量的創建(instantiate)和(destroy)這些粒子特效導致的遊戲整個性能降低,並且還能夠解決帶有粒子系統的遊戲對象(gameobject)再重用過程中參數不斷積累,而造成的粒子縮放問題。

請參考圖8,其示出了本發明一個實施例提供的終端的結構示意圖。該終端用於實施上述實施例中提供的透明代理方法。具體來講:

終端1000可以包括rf(radiofrequency,射頻)電路110、包括有一個或一個以上計算機可讀存儲介質的存儲器120、輸入單元130、顯示單元140、視頻傳感器150、音頻電路160、wifi(wirelessfidelity,無線保真)模塊170、包括有一個或者一個以上處理核心的處理器180、以及電源190等部件。本領域技術人員可以理解,圖8中示出的終端結構並不構成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

rf電路110可用於收發信息或通話過程中,信號的接收和發送,特別地,將基站的下行信息接收後,交由一個或者一個以上處理器180處理;另外,將涉及上行的數據發送給基站。通常,rf電路110包括但不限於天線、至少一個放大器、調諧器、一個或多個振蕩器、用戶身份模塊(sim)卡、收發信機、耦合器、lna(lownoiseamplifier,低噪聲放大器)、雙工器等。此外,rf電路110還可以通過無線通信與網絡和其他設備通信。所述無線通信可以使用任一通信標準或協議,包括但不限於gsm(globalsystemofmobilecommunication,全球移動通訊系統)、gprs(generalpacketradioservice,通用分組無線服務)、cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、lte(longtermevolution,長期演進)、電子郵件、sms(shortmessagingservice,短消息服務)等。

存儲器120可用於存儲軟體程序以及模塊,處理器180通過運行存儲在存儲器120的軟體程序以及模塊,從而執行各種功能應用以及數據處理。存儲器120可主要包括存儲程序區和存儲數據區,其中,存儲程序區可存儲作業系統、至少一個功能所需的應用程式(比如聲音播放功能、圖像播放功能等)等;存儲數據區可存儲根據終端1000的使用所創建的數據(比如視頻數據、電話本等)等。此外,存儲器120可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁碟存儲器件、快閃記憶體器件、或其他易失性固態存儲器件。相應地,存儲器120還可以包括存儲器控制器,以提供處理器180和輸入單元130對存儲器120的訪問。

輸入單元130可用於接收輸入的數字或字符信息,以及產生與用戶設置以及功能控制有關的鍵盤、滑鼠、操作杆、光學或者軌跡球信號輸入。具體地,輸入單元130可包括圖像輸入設備131以及其他輸入設備132。圖像輸入設備131可以是攝像頭,也可以是光電掃描設備。除了圖像輸入設備131,輸入單元130還可以包括其他輸入設備132。具體地,其他輸入設備132可以包括但不限於物理鍵盤、功能鍵(比如音量控制按鍵、開關按鍵等)、軌跡球、滑鼠、操作杆等中的一種或多種。

顯示單元140可用於顯示由用戶輸入的信息或提供給用戶的信息以及終端1000的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標、視頻和其任意組合來構成。顯示單元140可包括顯示面板141,可選的,可以採用lcd(liquidcrystaldisplay,液晶顯示器)、oled(organiclight-emittingdiode,15有機發光二極體)等形式來配置顯示面板141。

終端1000可包括至少一種視頻傳感器150,視頻傳感器用於獲取用戶的視頻信息。終端1000還可以包括其它傳感器(未示出),比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環境光傳感器及接近傳感器,其中,環境光傳感器可根據環境光線的明暗來調節顯示面板141的亮度,接近傳感器可在終端1000移動到耳邊時,關閉顯示面板141和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用於識別手機姿態的應用(比如橫豎屏切換、相關遊戲、磁力計姿態校準)、振動識別相關功能(比如計步器、敲擊)等;至於終端1000還可配置的陀螺儀、氣壓計、溼度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。

視頻電路160、揚聲器161,傳聲器162可提供用戶與終端1000之間的視頻接口。音頻電路160可將接收到的音頻數據轉換後的電信號,傳輸到揚聲器161,由揚聲器161轉換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉換為電信號,由音頻電路160接收後轉換為音頻數據,再將音頻數據輸出處理器180處理後,經rf電路11以發送給比如另一終端,或者將音頻數據輸出至存儲器120以便進一步處理。音頻電路160還可能包括耳塞插孔,以提供外設耳機與終端1000的通信。

wifi屬於短距離無線傳輸技術,終端1000通過wifi模塊70可以幫助用戶收發電子郵件、瀏覽網頁和訪問流式媒體等,它為用戶提供了無線的寬帶網際網路訪問。雖然圖1示出了wifi模塊170,但是可以理解的是,其並不屬於終端1000的必須構成,完全可以根據需要在不改變發明的本質的範圍內而省略。

處理器180是終端1000的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執行存儲在存儲器120內的軟體程序和/或模塊,以及調用存儲在存儲器120內的數據,執行終端1000的各種功能和處理數據,從而對手機進行整體監控。可選的,處理器180可包括一個或多個處理核心;優選的,處理器180可集成應用處理器和調製解調處理器,其中,應用處理器主要處理作業系統、用戶界面和應用程式等,調製解調處理器主要處理無線通信。

可以理解的是,上述調製解調處理器也可以不集成到處理器180中。

終端1000還包括給各個部件供電的電源190(比如電池),優選的,電源可以通過電源管理系統與處理器180邏輯相連,從而通過電源管理系統實現管理充電、放電、以及功耗管理等功能。電源190還可以包括一個或一個以上的直流或交流電源、再充電系統、電源故障檢測電路、電源轉換器或者逆變器、電源狀態指示器等任意組件。

儘管未示出,終端1000還可以包括藍牙模塊等,在此不再贅述。

具體在本實施例中,終端1000還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲於存儲器中,且經配置以由一個或者一個以上處理器執行。上述一個或者一個以上程序包含用於執行上述發送方客戶端側或者接收方客戶端側的方法的指令。所述指令用於在被處理器執行時實現如下步驟:

當第一動作被執行時,判斷對象池管理節點是否包含第一動作特效;

若所述對象池管理節點包含所述第一動作特效,從所述對象池管理節點加載所述第一動作特效,並初始化所述第一動作特效;

將所述恢復後的第一動作特效移動至第一動作節點下,並將所述第一動作特效設置為激活狀態。

進一步地,所述指令用於執行如下步驟:若所述對象池管理節點不包含第一動作特效,創建第一動作特效,將所述第一動作特效存儲於第一動作節點下,並將所述第一動作特效設置為激活狀態。

進一步地,所述指令用於執行如下步驟:在所述第一動作結束時,將所述第一動作特效回收至對象池管理節點,並將所述第一動作特效設置為非激活狀態。

進一步地,所述指令用於執行如下步驟:獲取所述第一特效自身和所有子節點上的粒子系統;渲染第一動作特效;重置所述粒子系統的系統時間,清除所述第一動作特效中的殘留特效;對所述第一動作特效重新仿真。

進一步地,所述指令用於執行如下步驟:記錄粒子系統中粒子的初始狀態;獲取縮放因子;根據所述縮放因子對所述粒子的初始狀態進行縮放操作。

進一步地,所述指令用於執行如下步驟:循環記錄粒子系統中每一個粒子的初始大小、初始重力因子和初始速度。

應當理解的是,在本文中提及的「多個」是指兩個或兩個以上。「和/或」,描述關聯對象的關聯關係,表示可以存在三種關係,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。字符「/」一般表示前後關聯對象是一種「或」的關係。

上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。

本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬體來完成,也可以通過程序來指令相關的硬體完成,所述的程序可以存儲於一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。

以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀