圖片處理的方法和裝置的制造方法
【專利摘要】本發明公開了一種圖片處理的方法和裝置。其中,該方法包括:獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,第二對象中的目標對象位于交互區域內;生成與交互區域對應的水波動畫的法線貼圖,其中,法線貼圖中顯示有多條波紋;利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置。本發明解決了現有技術中第一對象和第二對象發生交互時,第二對象的顯示效果比較差的技術問題。
【專利說明】
圖片處理的方法和裝置
技術領域
[0001]本發明涉及圖片處理領域,具體而言,涉及一種圖片處理的方法和裝置。
【背景技術】
[0002]在網絡游戲中,游戲玩家往往會關注游戲主界面中顯示出的游戲玩家與游資場景的交互效果。例如,游戲玩家在草地中行走時,如果在草地中出現搖擺以及拖尾的動畫效果時,可以增加游戲玩家的游戲樂趣。其中,網絡游戲的游戲場景中草的可交互渲染是游戲渲染中非常重要的一部分,如果草不能被交互的話會給人死氣沉沉的感覺;玩家走過草叢或者放技能時,如果草能出現逼真的交互效果(即上述擺動以及拖尾)會給游戲玩家很強的反饋,讓游戲玩家覺得這個游戲世界是受自己影響的,會提高玩家的沉浸感。
[0003]在網絡游戲《FarCry》和《九陰真經》等游戲中,可以實現玩家在移動的時候,草出現交互的動畫效果,但是,出現交互效果的草的交互規模非常小,最多只支持幾個游戲玩家的交互,而且效果非常生硬,無法表現玩家從草叢中移動帶來的拖尾。
[0004]目前,在網絡游戲中存在的實現草的交互效果的主要方法是采用CPU對玩家和草的實體進行相交檢測,然后根據檢測的結果,將受到交互影響的草記錄下來,然后LockVertexBuffer,然后再將交互影響的草逐個清染。
[0005]現有技術方案的缺點主要表現在兩個方面:效率不夠高,因此無法勝任大規模交互;并且在觀感方面草的搖擺動畫表現的不夠自然,因此無法模擬游戲玩家移動時形成的拖尾的動畫效果。
[0006]效率不夠高表現在當游戲玩家和草的數量較多時(例如,200個游戲玩家),此時,上述方案就不能流暢并逼真的實現草與游戲玩家交互的動畫效果。例如,假設游戲玩家的數量為N,草的數量為M,這樣首先需要N*M次相交檢測,該操作在游戲玩家較多的時候會消耗很多性能;對于交互的每顆草都需要有對應的頂點流,這無疑會帶來不少的顯存開銷;每一幀都需要對于受交互的草的頂點流經過加鎖來更新,這也會帶來不少的CHJ開銷;每一顆受交互影響的草的頂點信息是不完全一樣的,因此沒有辦法通過Instancing的方法一次繪制完,只能逐個繪制,這會增加DrawCal I數目,從而會降低性能。
[0007]針對上述的問題,目前尚未提出有效的解決方案。
【發明內容】
[0008]本發明實施例提供了一種圖片處理的方法和裝置,以至少解決現有技術中第一對象和第二對象發生交互時,第二對象的顯示效果比較差的技術問題。
[0009]根據本發明實施例的一個方面,提供了一種圖片處理的方法,包括:獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,所述第二對象中的目標對象位于所述交互區域內;生成與所述交互區域對應的水波動畫的法線貼圖,其中,所述法線貼圖中顯示有多條波紋;利用所述多條波紋中的第一目標波紋將目標對象移動到所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,其中,所述第一目標波紋與所述目標對象相對應。
[0010]根據本發明實施例的另一方面,還提供了一種圖片處理的裝置,包括:第一獲取單元,用于獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,所述第二對象中的目標對象位于所述交互區域內;生成單元,用于生成與所述交互區域對應的水波動畫的法線貼圖,其中,所述法線貼圖中顯示有多條波紋;移動單元,用于利用所述多條波紋中的第一目標波紋將目標對象移動到所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,其中,所述第一目標波紋與所述目標對象相對應。
[0011]在本發明實施例中,采用獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,所述第二對象中的目標對象位于所述交互區域內;生成與所述交互區域對應的水波動畫的法線貼圖,其中,所述法線貼圖中顯示有多條波紋;移動單元,用于利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,其中,第一目標波紋與所述目標對象相對應的方式,通過在第一對象和第二對象發生交互時,生成與交互區域相對應的水波動畫的法線貼圖,并根據該與目標對象對應的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,達到了通過法線貼圖調整目標對象的位置的目的,從而實現了第二對象的位置可以隨水波動畫的法線貼圖發生改變的技術效果,進而解決了現有技術中第一對象和第二對象發生交互時,第二對象的顯示效果比較差的技術問題。
【附圖說明】
[0012]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0013]圖1是根據本發明實施例的硬件結構的架構圖;
[0014]圖2是根據本發明實施例的一種圖片處理的方法的流程圖;
[0015]圖3是根據本發明實施例的一種可選的游戲玩家的交互空間的示意圖;
[0016]圖4是根據本發明實施例的一種可選的第一圖像幀水波高度圖的示意圖;
[0017]圖5是根據本發明實施例的一種可選的像素擴散的示意圖;
[0018]圖6是根據本發明實施例的一種可選的第一圖像幀水波動畫的法線貼圖的示意圖;
[0019]圖7是根據本發明實施例的一種圖片處理的裝置的示意圖;以及
[0020]圖8是根據本發明實施例的終端的硬件結構圖。
【具體實施方式】
[0021]為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0022]需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0023]專業術語解釋
[0024]GPU:顯卡,英文全稱Graphic Process Unit。
[0025]可交互渲染:玩家可以通過對游戲世界中的一些元素進行交互來改變這些元素的外形和觀感,讓玩家感覺游戲世界是可以被他改變或者影響的。
[0026I Vertex Buffer:模型的頂點信息流,包括位置,紋理坐標,切線空間向量等數據。
[0027]DrawCall:繪制調用,當引擎準備數據并通知GPU的過程稱為一次DrawCal I。
[0028]Instancing渲染:GPU將場景中模型數據相同的多個模型實例一次繪制完成。
[0029]水波動畫模型:交互對高度圖產生影響,然后將高度圖衰減后擴散到周圍,生成真實的水波動畫。
[0030]Vertex Texture Fetch:允許在Vertex Shader中讀取紋理貼圖的數據。
[0031]頂點擾動:通過頂點紋理或者隨機的方式對模型頂點進行偏移,從而使模型頂看起來是可以動態變化的。
[0032]實施例1
[0033]根據本發明實施例,提供了一種圖片處理的方法。
[0034]可選地,在本實施例中,上述的圖片處理的方法可以應用于如圖1所示的服務器104和終端102所構成的硬件環境中。圖1是根據本發明實施例的硬件環境的示意圖,如圖1所示,服務器104通過網絡與終端102進行連接,上述網絡包括但不限于:廣域網、城域網或局域網,終端102并不限定于計算機、手機、平板電腦等。
[0035]圖2是根據本發明實施例的圖片處理的方法的流程圖。如圖2所示,該圖片處理的方法包括以下步驟:
[0036]步驟S202,獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,第二對象中的目標對象位于交互區域內。
[0037]具體地,第一對象可以為游戲中的游戲玩家,游戲技能和游戲特效等,第二對象可以為草、花和霧等形態容易受到第一對象影響的對象;第一平面為第二對象所在的平面,例如,草所在的地面。
[0038]在網絡游戲中需要交互的Actor (即,上述第一對象)需要綁定一個交互節點,交互節點根據不同的配置可以產生大小和范圍不同的交互空間,如圖3所示,圖3中白色球體即為交互空間。玩家和非游戲角色(Non-Play Character,簡稱NPC)都會默認添加一個交互節點,游戲技能和游戲特效根據需求進行配置交互節點。當第一對象的交互空間和草所在的地面相交時會形成一個交互區域。其中,在交互空間為一個球體時,該交互空間與第一平面相交得到一個圓形切面。
[0039]步驟S204,生成與交互區域對應的水波動畫的法線貼圖,其中,法線貼圖中顯示有多條波紋。
[0040]具體地,可以根據該交互區域(例如,圓形切面)生成與該圓形切面對應的水波動畫的法線貼圖,并且該法線貼圖中包含多條波紋(即,水波紋)。生成的水波動畫的法線貼圖可以應用到該圓形切面上,生成的法線貼圖中的水波紋的條數是該圓形切面在當前圖像幀中需要展示的條數。
[0041]步驟S206,利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,其中,第一目標波紋與目標對象相對應。
[0042]目標對象是在法線貼圖的影響下移動的對象,可以為處于交互區域中的部分或者全部草。例如,在交互區域中有兩圈草,第一圈草受到第一目標波紋的擾動而移動到當前圖像幀中相應位置上,其中,可以通過第一目標波紋在法線貼圖中的波紋位置來確定上述相應位置,第二圈草沒有受到法線貼圖中第一目標波紋的擾動而移動到第一圈草移動之后的位置,第一圈草為目標對象,第一目標波紋為法線貼圖的多條波紋中用于對第一圈草進行擾動的波紋。
[0043]在本發明實施例中,通過在第一對象和第二對象發生交互時,生成與交互區域相對應的水波動畫的法線貼圖,并根據該與目標對象對應的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,達到了通過法線貼圖調整目標對象的位置的目的,從而實現了第二對象的位置可以隨水波動畫的法線貼圖發生改變的技術效果,進而解決了現有技術中第一對象和第二對象發生交互時,第二對象的顯示效果比較差的技術問題。
[0044]當每個圖像幀都采用與該圖像幀對應的法線貼圖進行調整后,多個調整后的圖像幀連續顯示時,可以顯示出動畫效果。例如,在游戲中,游戲人物從草叢中走過時,顯示草在游戲人物的擾動下搖擺的效果,并且在游戲人物移動時可以形成類似水波紋向一個方向擴散的拖尾效果。
[0045]在一個具體的實施例中,使用上述圖片處理的方法可以應用到《天涯明月刀》等網絡游戲中,在《天涯明月刀》的游戲引擎中完成交互區域中目標對象的渲染。例如,游戲人物在《天涯明月刀》中的任意游戲場景中行走,其中,該游戲場景中為草地,當游戲人物在草地中行走時,游戲人物的交互空間(如圖3所示的球體)與草地所在的地面(S卩,上述第一平面)相交,得到交互區域。《天涯明月刀》的網絡游戲客戶端生成與該交互區域對應的水波動畫的法線貼圖,從而利用該多條波紋中的第一目標波紋,將交互區域中與第一目標波紋相對應的草移動到當前圖像幀中的相應位置,其中,該相應位置為與第一目標波紋在法線貼圖中的波紋位置相對應的位置。當多個圖像幀形成連續的動畫時,就可以在網絡游戲的顯示界面中顯示出人走過草地使得草搖擺的效果,或者草被人走過所形成的拖尾效果,使得提高游戲玩家與游戲場景的交互,使得模擬的游戲場景更加真實,從而提高了游戲的樂趣。
[0046]需要說明的是,在本發明實施例中,游戲人物對草的擾動時通過顯卡(GPU)在頂點著色引擎(Vertex Shader)中采用水波動畫的法線貼圖來實現的,而不是通過中央處理器(Central Processing Unit,簡稱CPU)的來實現游戲人物對草的擾動,提高了處理顯示數據的效率。
[0047]在本發明下述實施例中,第一對象以游戲人物、目標對象均以草為例進行說明。
[0048]可選地,利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置步驟:根據水波動畫的法線貼圖將目標對象從第一形態調整到第二形態,其中,在第二形態中目標對象的頂點位于當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置。
[0049]在本發明實施例中,第一對象與目標對象交互是指第一對象的動作對目標對象的形態產生了影響,例如,游戲人物在草地中行走的過程中與草產生了一個交互,這個交互會導致草出現形態上的變化,具體為前、后、左、右搖擺,或者高低變化。例如,游戲人物在草地中行走,該游戲人物兩側的草由直立(第一形態)變成彎曲(第二形態),也就是由第一形態被調整為第二形態。需要說明的是,第一對象與目標對象的交互并不一定是指與第一對象接觸過的對象,因為,當游戲人物在草地中行走時,即使未接觸到附近的草,也會影響附近草的形態。
[0050]當游戲人物在水中行走時,或者與水接觸時,會在水面產生連續變化的波紋,游戲設計人員聯想到當游戲人物在草地中行走或者穿行時,草的形態變化與水面中波紋的變化具有相關性。因此,在本發明實施例中,可以通過水波動畫的法線貼圖來擾動游戲人物交互的草(B卩,上述目標對象),以使每顆草從第一形態調整至第二形態,從而使得一片草呈現類似水波紋的動態變化的效果。
[0051]可選地,根據水波動畫的法線貼圖將目標對象從第一形態調整到第二形態具體為:獲取法線貼圖中多條波紋的第一分量和第二分量的取值范圍,其中,第一分量為法線貼圖X軸方向上的分量,第二分量為法線貼圖y軸方向上的分量;獲取目標對象在法線貼圖的Z軸方向上的第三分量;根據第一分量和第二分量確定目標對象的頂點坐標的在X軸和y軸所在平面上的第一偏移距離和第一偏移方向,并且根據第三分量確定目標對象在z軸上的第二偏移距離和第二偏移方向,第一偏移距離處于取值范圍內;控制目標對象的頂點坐標在第一偏移方向上偏移第一偏移距離,在第二偏移方向上偏移第二偏移距離。
[0052]在本發明實施例中,可以采用顯卡(GPU)生成的水波動畫的法線貼圖的相關貼圖信息對草的頂點進行擾動,進而,使得草由第一形態變化至第二形態。具體地,可以先獲取法線貼圖中包含的多條波紋在X軸方向上的分量(S卩,上述第一分量)的取值范圍和y軸方向上的分量(即,上述第二分量)的取值范圍,以及獲取草在z軸方向上的投影高度(即,第三分量);進而根據上述X軸方向上的分量、y軸方向上的分量確定X軸和y軸所在平面上的第一偏移距離和第一偏移方向,即確定草此時是向左、右偏移,還是向前、后偏移,以及向左、右偏移的距離和向前、后偏移的距離,并確定每顆草在z軸上的投影高度,以確定每顆草在z軸上的第二偏移距離和第二偏移方向,其中,如果草在z軸上的投影高度較低,則表明法線貼圖對草的擾動較小,也即草的第一偏移距離和第二偏移距離較小,也就是說草的偏移幅度較小;如果草在z軸上的投影高度較高,則表明法線貼圖對草的擾動較大,也即草的第一偏移距離和第二偏移距離較大,也就是說草的偏移幅度較大。具體可以理解為,當草的長度較長時,容易受環境的影響發生較大幅度的擺動,當草的長度較低時,反而并不容易受環境的影響發生較大的擺動。本發明采用上述方法將草由第一形態調整到第二形態,可以更加真實地顯示出草隨游戲人物移動而發生偏移的動態效果。
[0053]在確定對草的擾動大小之后(S卩,上述第一偏移距離、第二偏移距離、第一偏移方向和第二偏移方向),控制目標對象的頂點坐標在第一偏移方向上偏移第一偏移距離,在第二偏移方向上偏移第二偏移距離。當多個圖像幀連續在網絡游戲界面中顯示時,由于水波動畫具有動畫屬性,因此,通過水波動畫的法線貼圖對草進行擾動時也可以使草也具有與水波動畫向類似的動畫效果,可以逼真顯示草在游戲人物的擾動下搖擺的效果,并且在游戲界面中顯示出草被人走過所形成的拖尾效果。
[0054]需要說明的是,上述第一分量的取值范圍可以為[_1,1],第二分量的取值范圍同樣可以為[-1,I],將上述第一分量和第二分量的取值范圍設定為[-1,I]可以保證草能夠向左、右、前、后四個方向擺動。
[0055]可選地,獲取法線貼圖中多條波紋的第一分量和第二分量的取值范圍具體為:獲取法線貼圖中多條波紋中最外層的波紋在X軸方向上的最大值和最小值,以及最外層的波紋在y軸方向上的最大值和最小值;調整多條波紋中每條波紋在X軸和y軸上的坐標,以使X軸方向上的最大值和最小值為預設數值,并且y軸方向上的最大值和最小值處于預設數值;將預設數值所指示的范圍作為取值范圍。
[0056]通過上述描述可知,第一分量的取值范圍可以為[-1,1],第二分量的取值范圍同樣可以選取為[-1,I]。具體地,將上述第一分量和第二分量的取值范圍設定為[-1,I]的方式可以為先獲取水波動畫的法線貼圖中最外層波紋在X軸方向和y軸方向上的最大值和最小值;然后調整每條波紋在X軸和在y軸上的坐標的取值,以使每條波紋在X軸上最大值的取值不大于預設數值(例如,數值I ),每條波紋在X軸上最小值的取值不小于預設數值(例如,數值-1),以及每條波紋在y軸上最大值的取值不大于預設數值(例如,數值I),每條波紋在y軸上最小值的取值不小于預設數值(例如,數值-1)。
[0057]當多個圖像幀連續在游戲界面上顯示時,由于生成的水波動畫具有動畫特性,因此,用生成的水波動畫的法線貼圖來驅動草的頂點坐標也會生成與水波動畫相類似的動畫效果,使得游戲模擬效果更加真實,能夠逼真的顯示出草在受到游戲人物的擾動時的搖擺效果以及游戲人物移動時形成的草的拖尾效果。
[0058]需要說明的是,當該網絡游戲中由多個游戲人物或者特技等與草進行交互時,通過本發明提供的方法可以通過Instancing渲染的方式將多個游戲人物或者特技所擾動的草進行處理,同時將多個游戲人物或者特技所擾動的草的第一形態調整為第二形態。通過本發明提供的方法可以支持200個玩家與草同時交互,并同時完成與該200個玩家交互的草的形態的處理。并且在本發明實施例中,游戲場景中所有的草都是用同一個頂點緩沖區(VertexBuffer),在VertexBuffer中,記錄了每顆草的頂點坐標,每顆草的位置信息等信息。
[0059]可選地,生成與交互區域對應的水波動畫的法線貼圖具體包括:基于與當前圖像幀對應的第一圖像幀的前一個圖像幀的水波動畫高度圖確定第一圖像幀的水波動畫高度圖的水面高度,其中,第一圖像幀為水波動畫中的一個圖像幀,水面高度為第一圖像幀的水波動畫高度圖中多條波紋的最高水面高度;根據水面高度生成當前圖像幀的水波動畫高度圖;根據當前圖像幀的水波動畫高度圖生成水波動畫的法線貼圖。
[0060]在本發明實施例中,采用水波交互算法生成水波動畫的法線貼圖,進而,通過生成的水波動畫的法線貼圖將目標對象從第一形態調整到第二形態,其中,上述水波交互算法是通過GPU來實現的,因為,通過GPU來實現水波交互算法的實現可以提高水波交互效率,實現起來更加直接,避免了通過(PU的大量計算導致的交互效率低下的問題。
[0061]具體地,水波交互算法一共分為四個步驟,分別是:步驟一、復制前一個圖像幀的水波動畫高度圖,并將該高度圖作為第一圖像幀的水波高度圖的初始高度;步驟二、根據交互節點生成第一圖像幀的水波高度圖的高度數據;步驟三、擴散和衰減;步驟四、計算法線。下面對上述步驟一至步驟四進行詳細描述。
[0062]步驟一:將第一圖像幀的前一個圖像幀的水波動畫高度圖進行全屏復制,復制到第一圖像幀水波動畫的高度圖中,作為第一圖像幀的水波動畫高度圖中的起始高度,其中,第一圖像幀中水波動畫的波紋條數與當前圖像幀中水波動畫的法線貼圖的波紋條數相對應。
[0063]步驟二:將游戲人物、技能或者特效作為交互節點,根據交互節點的配置參數的大小來影響第一圖像幀的水面高度,這樣就完成了第一圖像幀的水面高度數據的生成。進而就可以根據該水面高度得到第一圖像幀的水波動畫的高度圖,其中,如圖4所示的為第一圖像幀的水波動畫的高度圖。其中,該配置參數可以設置為默認值,還可以通過技術人員來設置。
[0064]步驟三:以水面高度所在的第二目標波紋為中心,向外擴散第二目標波紋,得到擴散后的多條波紋,其中,擴散后的多條波紋的高度由中心向外逐漸降低。上述水面高度為第一圖像幀的水波動畫高度圖中多條波紋的最高水面高度,當水波動畫中的水波紋向外擴散時,均以最高水面高度所在的水波紋(即,第二目標波紋)開始向外擴散第二目標波紋,并且多條波紋的高度以最高水面高度所在的水波紋(即,第二目標波紋)開始向外逐漸降低。
[0065]需要說明的是,向外擴散第二目標波紋可以具體為第二目標波紋中的每一個像素會擴散到周圍鄰域的像素,具體擴散的分布如圖5所示,(i,j)表示當前要處理的像素,以該像素點開始,向并擴散到鄰近的像素,例如,和(i+l,j)等像素。
[0066]在本發明實施例中,計算第一圖像幀中像素(i,j)的高度可以通過下述公式進行計算,其中,像素(i,j)為第一圖像幀中的任意一個像素點:
[0067]H(i, j) = (H(1-1,j-1)+H(1-1,j+i)+H(i+i,j+i)+H(1-1,j)+H(i+i, j)+H(i,j+i))/8_H’ (i, j)
[0068]其中,!1’(^為第一圖像幀的前一個圖像幀中的像素(1,」)的高度,!1(^為第一圖像幀中像素(i,j)的高度,Η+υ-υ為第一圖像幀中像素(1-l,j-l)的高度,為第一圖像幀中像素(i_l,j+l)的高度,H(i+1,j+1)為第一圖像幀中像素(i+l,j+l)的高度,H(im為第一圖像幀中像素(i_l,j)的高度,H(i+i,j)為第一圖像幀中像素(i+1,j)的高度,H(i,j+i)為第一圖像幀中像素(i,j+l)的高度。
[0069]通過上述方法得到擴散后的多條波紋之后,擴散后的多條波紋的高度可以由中心向外逐漸降低,即每條波紋的高度由中心向外逐漸降低。
[0070]步驟四:對衰減后的第一圖像幀的水波動畫高度圖生成法線貼圖,其中,如果將該法線貼圖和水面的法線進行混合后再作用到水面上,就可以產生真實的水波動畫。如圖6所示的即為第一圖像幀的水波動畫的法線貼圖,在圖6中,可以看出具有明顯的水波波紋,如果當多個圖像幀進行連續播放時,就可以實現水波的動畫特征。
[0071]在一個具體的實施例中,游戲設計人員設置游戲人物或者技能、特技等與草的交互范圍為30m,且像素為256 X 256。游戲設計人員在型號為NV GTX 560Ti的顯卡上進行了測試,測試了當200個游戲人物與草進行交互時的處理速率,經過測試可知,200人與草交互時,對得到草的動畫效果總共消耗不到0.2ms,能夠快速實現游戲人物、技能或者特技與草的交互渲染,并且可以勝任大規模的交互。
[0072]本發明中提出的圖片處理的方法是完全基于GPU,每一個圖像幀將交互信息作為水波高度圖渲染到一張貼圖中,并將水波動畫高度圖衰減后擴散到周圍鄰域,然后生成其對應的法線貼圖;在草的Vertex Shader中訪問這張法線貼圖,用法線圖的x分量和y分量對草的頂點位置進行擾動。由于生成的水波是具有動畫特性,用其來驅動草的頂點也會生成相應的動畫,該動畫視覺感較高,在模擬草的搖擺動畫和玩家移動時形成的拖尾方面表現的非常出色。
[0073]需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明并不受所描述的動作順序的限制,因為依據本發明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作和模塊并不一定是本發明所必須的。
[0074]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網絡設備等)執行本發明各個實施例的方法。
[0075]實施例2
[0076]根據本發明實施例,還提供了一種用于實施上述圖片處理的方法的圖片處理的裝置,該圖片處理的裝置主要用于執行本發明實施例上述內容所提供的圖片處理的方法,以下對本發明實施例所提供的圖片處理的裝置做具體介紹:
[0077]圖7是根據本發明實施例的圖片處理的裝置的示意圖,如圖7所示,該圖片處理的裝置主要包括:
[0078]第一獲取單元71,用于獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,第二對象中的目標對象位于交互區域內。
[0079]具體地,第一對象可以為游戲中的游戲玩家,游戲技能和游戲特效等,第二對象可以為草、花和霧等形態容易受到第一對象影響的對象;第一平面為第二對象所在的平面,例如,草所在的地面。
[0080]在網絡游戲中需要交互的Actor (即,上述第一對象)需要綁定一個交互節點,交互節點根據不同的配置可以產生大小和范圍不同的交互空間,如圖3所示,圖3中白色球體即為交互空間。玩家和非游戲角色(Non-Play Character,簡稱NPC)都會默認添加一個交互節點,游戲技能和游戲特效根據需求進行配置交互節點。當第一對象的交互空間和草所在的地面相交時會形成一個交互區域。其中,在交互空間為一個球體時,該交互空間與第一平面相交得到一個圓形切面。
[0081]生成單元73,用于生成與交互區域對應的水波動畫的法線貼圖,其中,法線貼圖中顯示有多條波紋。
[0082]具體地,可以根據該交互區域(例如,圓形切面)生成與該圓形切面對應的水波動畫的法線貼圖,并且該法線貼圖中包含多條波紋(即,水波紋)。生成的水波動畫的法線貼圖可以應用到該圓形切面上,生成的法線貼圖中的水波紋的條數是該圓形切面在當前圖像幀中需要展示的條數。
[0083]移動單元75,利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,其中,第一目標波紋與目標對象相對應。
[0084]目標對象是在法線貼圖的影響下移動的對象,可以為處于交互區域中的部分或者全部草。例如,在交互區域中有兩圈草,第一圈草受到第一目標波紋的擾動而移動到當前圖像幀中相應位置上,其中,可以通過第一目標波紋在法線貼圖中的波紋位置來確定上述相應位置,第二圈草沒有受到法線貼圖中第一目標波紋的擾動而移動到第一圈草移動之后的位置,第一圈草為目標對象,第一目標波紋為法線貼圖的多條波紋中用于對第一圈草進行擾動的波紋。
[0085]在本發明實施例中,通過在第一對象和第二對象發生交互時,生成與交互區域相對應的水波動畫的法線貼圖,并根據該與目標對象對應的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,達到了通過法線貼圖調整目標對象的位置的目的,從而實現了第二對象的位置可以隨水波動畫的法線貼圖發生改變的技術效果,進而解決了現有技術中第一對象和第二對象發生交互時,第二對象的顯示效果比較差的技術問題。
[0086]可選地,移動單元包括:調整子單元,用于根據水波動畫的法線貼圖將目標對象從第一形態調整到第二形態,其中,在第二形態中目標對象的頂點位于當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置。
[0087]可選地,調整子單元包括:第一獲取模塊,用于獲取法線貼圖中多條波紋的第一分量和第二分量的取值范圍,其中,第一分量為法線貼圖X軸方向上的分量,第二分量為法線貼圖y軸方向上的分量;第二獲取模塊,用于獲取目標對象在法線貼圖的z軸方向上的第三分量;第一確定模塊,用于根據第一分量和第二分量確定目標對象的頂點坐標的在X軸和y軸所在平面上的第一偏移距離和第一偏移方向,并且根據第三分量確定目標對象在z軸上的第二偏移距離和第二偏移方向,第一偏移距離處于取值范圍內;控制模塊,用于控制目標對象的頂點坐標在第一偏移方向上偏移第一偏移距離,在第二偏移方向上偏移第二偏移距離。
[0088]可選地,第一獲取模塊包括:獲取子模塊,用于獲取法線貼圖中多條波紋中最外層的波紋在X軸方向上的最大值和最小值,以及最外層的波紋在y軸方向上的最大值和最小值;調整子模塊,用于調整多條波紋中每條波紋在X軸和y軸上的坐標,以使X軸方向上的最大值和最小值為預設數值,并且y軸方向上的最大值和最小值處于預設數值;確定子模塊,用于將預設數值所指示的范圍作為取值范圍。
[0089]可選地,生成單元包括:第二確定模塊,用于基于與當前圖像幀對應的第一圖像幀的前一個圖像幀的水波動畫高度圖確定第一圖像幀的水波動畫高度圖的水面高度,其中,第一圖像幀為水波動畫中的一個圖像幀,水面高度為第一圖像幀的水波動畫高度圖中多條波紋的最高水面高度;第一生成模塊,用于根據水面高度生成當前圖像幀的水波動畫高度圖;第二生成模塊,用于根據當前圖像幀的水波動畫高度圖生成水波動畫的法線貼圖。
[0090]可選地,第一生成模塊包括:擴散衰減子模塊,用于以水面高度所在的第二目標波紋為中心,向外擴散第二目標波紋,得到擴散后的多條波紋,其中,擴散后的多條波紋的高度由中心向外逐漸降低。
[0091]實施例3
[0092]根據本發明實施例,還提供了一種用于實施上述圖片處理的方法的移動終端,如圖8所示,該移動終端主要包括處理器401、顯示器402、數據接口 403、存儲器404和網絡接口405,其中:
[0093]顯示器402主要用于顯示游戲界面,其中,該游戲界面包括游戲人物以及與游戲人物交互的草地。
[0094]數據接口403則主要通過數據傳輸的方式將用戶輸入的對游戲的控制指令傳輸給處理器401。
[0095]存儲器404主要用于存儲游戲中的具有水波動畫效果的草地,以及用戶的游戲進度等信息。
[0096]網絡接口405主要用于與處理器401進行網絡通信,為圖片的交互渲染提供數據支持。
[0097]處理器401主要用于執行如下操作:
[0098]獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,第二對象中的目標對象位于交互區域內;生成與交互區域對應的水波動畫的法線貼圖,其中,法線貼圖中顯示有多條波紋;利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,其中,第一目標波紋與目標對象相對應。
[0099]處理器401還用于根據水波動畫的法線貼圖將目標對象從第一形態調整到第二形態,其中,在第二形態中目標對象的頂點位于當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置。
[0100]處理器401還用于獲取法線貼圖中多條波紋的第一分量和第二分量的取值范圍,其中,第一分量為法線貼圖X軸方向上的分量,第二分量為法線貼圖y軸方向上的分量;獲取目標對象在法線貼圖的z軸方向上的第三分量;根據第一分量和第二分量確定目標對象的頂點坐標的在X軸和y軸所在平面上的第一偏移距離和第一偏移方向,并且根據第三分量確定目標對象在z軸上的第二偏移距離和第二偏移方向,第一偏移距離處于取值范圍內;控制目標對象的頂點坐標在第一偏移方向上偏移第一偏移距尚,在第二偏移方向上偏移第二偏移距離。
[0101]處理器401還用于獲取法線貼圖中多條波紋中最外層的波紋在X軸方向上的最大值和最小值,以及最外層的波紋在y軸方向上的最大值和最小值;調整多條波紋中每條波紋在X軸和y軸上的坐標,以使X軸方向上的最大值和最小值為預設數值,并且y軸方向上的最大值和最小值處于預設數值;將預設數值所指示的范圍作為取值范圍。
[0102]處理器401還用于基于與當前圖像幀對應的第一圖像幀的前一個圖像幀的水波動畫高度圖確定第一圖像幀的水波動畫高度圖的水面高度,其中,第一圖像幀為水波動畫中的一個圖像幀,水面高度為第一圖像幀的水波動畫高度圖中多條波紋的最高水面高度;根據水面高度生成當前圖像幀的水波動畫高度圖;根據當前圖像幀的水波動畫高度圖生成水波動畫的法線貼圖。
[0103]處理器401還用于以水面高度所在的第二目標波紋為中心,向外擴散第二目標波紋,得到擴散后的多條波紋,其中,擴散后的多條波紋的高度由中心向外逐漸降低。
[0104]實施例4
[0105]本發明的實施例還提供了一種存儲介質。可選地,在本實施例中,上述存儲介質可以用于存儲本發明實施例的圖片處理的方法的程序代碼。
[0106]可選地,在本實施例中,上述存儲介質可以位于移動通信網絡、廣域網、城域網或局域網的網絡中的多個網絡設備中的至少一個網絡設備。
[0107]可選地,在本實施例中,存儲介質被設置為存儲用于執行以下步驟的程序代碼:
[0108]SI,獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,第二對象中的目標對象位于交互區域內;
[0109]S2,生成與交互區域對應的水波動畫的法線貼圖,其中,法線貼圖中顯示有多條波紋;
[0110]S3,利用多條波紋中的第一目標波紋將目標對象移動到當前圖像幀中與第一目標波紋在法線貼圖中的波紋位置相對應的位置,其中,第一目標波紋與目標對象相對應。
[0111]可選地,在本實施例中,上述存儲介質可以包括但不限于:U盤、只讀存儲器(R0M,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0112]可選地,在本實施例中,上述存儲介質可以包括但不限于:U盤、只讀存儲器(R0M,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0113]可選地,本實施例中的具體示例可以參考上述實施例1和實施例2中所描述的示例,本實施例在此不再贅述。
[0114]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
[0115]上述實施例中的集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在存儲介質中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網絡設備等)執行本發明各個實施例方法的全部或部分步驟。
[0116]在本發明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
[0117]在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
[0118]作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
[0119]另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
[0120]以上僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
【主權項】
1.一種圖片處理的方法,其特征在于,包括: 獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,所述第二對象中的目標對象位于所述交互區域內; 生成與所述交互區域對應的水波動畫的法線貼圖,其中,所述法線貼圖中顯示有多條波紋; 利用所述多條波紋中的第一目標波紋將目標對象移動到所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,其中,所述第一目標波紋與所述目標對象相對應。2.根據權利要求1所述的方法,其特征在于,利用所述多條波紋中的第一目標波紋將目標對象移動到所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置包括: 根據所述水波動畫的法線貼圖將所述目標對象從第一形態調整到第二形態,其中,在所述第二形態中所述目標對象的頂點位于所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置。3.根據權利要求2所述的方法,其特征在于,根據所述水波動畫的法線貼圖將所述目標對象從第一形態調整到第二形態包括: 獲取所述法線貼圖中多條波紋的第一分量和第二分量的取值范圍,其中,所述第一分量為所述法線貼圖X軸方向上的分量,所述第二分量為所述法線貼圖y軸方向上的分量; 獲取所述目標對象在所述法線貼圖的z軸方向上的第三分量; 根據所述第一分量和所述第二分量確定所述目標對象的頂點坐標的在所述X軸和所述y軸所在平面上的第一偏移距離和第一偏移方向,并且根據所述第三分量確定所述目標對象在所述z軸上的第二偏移距離和第二偏移方向,所述第一偏移距離處于所述取值范圍內; 控制所述目標對象的頂點坐標在所述第一偏移方向上偏移所述第一偏移距離,在所述第二偏移方向上偏移所述第二偏移距尚。4.根據權利要求3所述的方法,其特征在于,獲取所述法線貼圖中多條波紋的第一分量和所述第二分量的取值范圍包括: 獲取所述法線貼圖中多條波紋中最外層的波紋在所述X軸方向上的最大值和最小值,以及所述最外層的波紋在所述y軸方向上的最大值和最小值; 調整所述多條波紋中每條波紋在所述X軸和所述y軸上的坐標,以使所述X軸方向上的最大值和最小值為預設數值,并且所述y軸方向上的最大值和最小值處于所述預設數值; 將所述預設數值所指示的范圍作為所述取值范圍。5.根據權利要求1所述的方法,其特征在于,生成與所述交互區域對應的水波動畫的法線貼圖包括: 基于與所述當前圖像幀對應的第一圖像幀的前一個圖像幀的水波動畫高度圖確定所述第一圖像幀的水波動畫高度圖的水面高度,其中,所述第一圖像幀為所述水波動畫中的一個圖像幀,所述水面高度為所述第一圖像幀的水波動畫高度圖中多條波紋的最高水面高度; 根據所述水面高度生成所述當前圖像幀的水波動畫高度圖; 根據所述當前圖像幀的水波動畫高度圖生成所述水波動畫的法線貼圖。6.根據權利要求5所述的方法,其特征在于,根據所述水面高度生成所述當前圖像幀的水波動畫高度圖包括: 以所述水面高度所在的第二目標波紋為中心,向外擴散所述第二目標波紋,得到擴散后的所述多條波紋,其中,擴散后的所述多條波紋的高度由所述中心向外逐漸降低。7.—種圖片處理的裝置,其特征在于,包括: 第一獲取單元,用于獲取當前圖像幀中第一對象的交互空間與第二對象所在的第一平面相交的交互區域,其中,所述第二對象中的目標對象位于所述交互區域內; 生成單元,用于生成與所述交互區域對應的水波動畫的法線貼圖,其中,所述法線貼圖中顯示有多條波紋; 移動單元,用于利用所述多條波紋中的第一目標波紋將目標對象移動到所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置,其中,所述第一目標波紋與所述目標對象相對應。8.根據權利要求7所述的裝置,其特征在于,所述移動單元包括: 調整子單元,用于根據所述水波動畫的法線貼圖將所述目標對象從第一形態調整到第二形態,其中,在所述第二形態中所述目標對象的頂點位于所述當前圖像幀中與所述第一目標波紋在所述法線貼圖中的波紋位置相對應的位置。9.根據權利要求8所述的裝置,其特征在于,所述調整子單元包括: 第一獲取模塊,用于獲取所述法線貼圖中多條波紋的第一分量和第二分量的取值范圍,其中,所述第一分量為所述法線貼圖X軸方向上的分量,所述第二分量為所述法線貼圖y軸方向上的分量; 第二獲取模塊,用于獲取所述目標對象在所述法線貼圖的z軸方向上的第三分量; 第一確定模塊,用于根據所述第一分量和所述第二分量確定所述目標對象的頂點坐標的在所述X軸和所述y軸所在平面上的第一偏移距離和第一偏移方向,并且根據所述第三分量確定所述目標對象在所述z軸上的第二偏移距離和第二偏移方向,所述第一偏移距離處于所述取值范圍內; 控制模塊,用于控制所述目標對象的頂點坐標在所述第一偏移方向上偏移所述第一偏移距離,在所述第二偏移方向上偏移所述第二偏移距離。10.根據權利要求9所述的裝置,其特征在于,所述第一獲取模塊包括: 獲取子模塊,用于獲取所述法線貼圖中多條波紋中最外層的波紋在所述X軸方向上的最大值和最小值,以及所述最外層的波紋在所述y軸方向上的最大值和最小值; 調整子模塊,用于調整所述多條波紋中每條波紋在所述X軸和所述y軸上的坐標,以使所述X軸方向上的最大值和最小值為預設數值,并且所述y軸方向上的最大值和最小值處于所述預設數值; 確定子模塊,用于將所述預設數值所指示的范圍作為所述取值范圍。11.根據權利要求7所述的裝置,其特征在于,所述生成單元包括: 第二確定模塊,用于基于與所述當前圖像幀對應的第一圖像幀的前一個圖像幀的水波動畫高度圖確定所述第一圖像幀的水波動畫高度圖的水面高度,其中,所述第一圖像幀為所述水波動畫中的一個圖像幀,所述水面高度為所述第一圖像幀的水波動畫高度圖中多條波紋的最1?水面1?度; 第一生成模塊,用于根據所述水面高度生成所述當前圖像幀的水波動畫高度圖; 第二生成模塊,用于根據所述當前圖像幀的水波動畫高度圖生成所述水波動畫的法線貼圖。12.根據權利要求11所述的裝置,其特征在于,所述第一生成模塊包括: 擴散衰減子模塊,用于以所述水面高度所在的第二目標波紋為中心,向外擴散所述第二目標波紋,得到擴散后的所述多條波紋,其中,擴散后的所述多條波紋的高度由所述中心向外逐漸降低。
【文檔編號】G06T15/00GK105913471SQ201610209641
【公開日】2016年8月31日
【申請日】2016年4月6日
【發明人】解衛博
【申請人】騰訊科技(深圳)有限公司