本文作者:kaifamei

一種動畫效果實現方法及裝置與流程

更新時間:2025-12-26 11:55:39 0條評論

一種動畫效果實現方法及裝置與流程



1.本技術涉及計算機技術領域,具體涉及一種動畫效果實現方法、裝置、電子設備及計算機可讀存儲介質。


背景技術:

2.為了增加游戲視覺特效,使游戲更具趣味性,通常會在游戲場景中加入各種游戲特效,其中,萬箭射擊效果被廣泛應用在很多游戲場景中。
3.在實現萬箭射擊效果的現有方案中,通常先手動創建大量實現不同自轉效果的弓箭旋轉動畫模型;在各弓箭從發射源發出后做自由落體運動的過程中,將各弓箭模型分別切換為上述實現不同自轉效果的弓箭旋轉動畫模型中的任意一個,從而實現在萬箭射擊過程中弓箭的差異化自轉效果。
4.然而,要實現在萬箭射擊過程中各弓箭進行差異化自轉效果,需要手動創建大量具有不同自轉效果的弓箭旋轉動畫模型,導致工作量急劇上升,動畫效果制作效率低下。


技術實現要素:

5.本技術提供一種動畫效果實現方法及裝置,同時也提供了可實施該動畫效果實現方法的電子設備及計算機可讀存儲介質,以解決現有技術中所需工作量大,動畫效果制作效率低下的問題。
6.第一方面,本技術實施例提供一種動畫效果實現方法,所述方法包括:
7.響應于目標粒子在空中飛行,獲取所述目標粒子在當前圖像幀中的速度向量;
8.根據預設單位向量繞所述速度向量旋轉,確定初始旋轉信息;
9.根據所述初始旋轉信息、所述速度向量以及所述目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息;
10.根據所述第一旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
11.可選地,所述目標粒子在當前圖像幀的第一隨機轉動角度由以下步驟得到:
12.在第一數值范圍中,為所述目標粒子確定隨機值;
13.確定所述第一數值范圍與第二數值范圍之間的映射關系,并根據所述映射關系將所述隨機值對應的映射轉動角度確定為所述目標粒子的相對轉動角度;
14.根據所述相對轉動角度和第一預設轉動角度,確定所述目標粒子在所述當前圖像幀的第一隨機轉動角度,所述第一預設轉動角度大于所述第二數值范圍內的轉動角度。
15.可選地,所述初始旋轉信息包括初始旋轉矩陣;
16.所述根據所述初始旋轉信息、所述速度向量以及所述目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息,包括:
17.所述初始旋轉矩陣以所述速度向量為旋轉軸,轉動所述第一隨機轉動角度,得到所述目標粒子在所述當前圖像幀的第一旋轉矩陣。
18.可選地,所述根據所述第一旋轉信息控制所述目標粒子在所述當前圖像幀進行轉
動,包括:
19.將所述第一旋轉矩陣轉換為四元數的表達形式,得到第一四元數;
20.根據所述第一四元數控制所述目標粒子在所述當前圖像幀中進行轉動。
21.可選地,所述方法還包括:
22.響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為靜態物體的情況下,獲取所述目標粒子對應的目標碰撞狀態并控制所述目標粒子的運動狀態符合所述目標碰撞狀態。
23.可選地,所述碰撞狀態包括以下任意一種:從碰撞點插入所述目標障礙物并轉動預設幀數后停止轉動、翻倒在所述目標碰撞物上;
24.在所述目標粒子對應的目標碰撞狀態為從碰撞點插入所述目標障礙物并轉動預設幀數后停止轉動的情況下,所述控制所述目標粒子的運動狀態符合所述目標碰撞狀態,包括:
25.獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
26.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息和所述目標粒子在當前圖像幀中的第二隨機轉動角度,確定第二旋轉信息;
27.根據所述第二旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
28.可選地,在所述預設幀數內所述第二隨機轉動角度的分布狀態至少包括以下任意一種:線性分布、非線性分布以及指數分布;
29.所述根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息和所述目標粒子在當前圖像幀中的第二隨機轉動角度,確定第二旋轉信息,包括:
30.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸;
31.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二旋轉信息。
32.可選地,所述旋轉信息包括四元數;
33.所述根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二旋轉信息,包括:
34.將所述目標粒子在所述碰撞發生前一幀圖像中的四元數轉換為旋轉矩陣的表達形式,得到第二旋轉矩陣并根據所述第二旋轉矩陣確定目標旋轉軸;
35.根據所述第二旋轉矩陣、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二四元數。
36.可選地,所述方法還包括:
37.響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為動態物體的情況下,獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
38.根據所述目標障礙物發生碰撞的位置和所述目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在所述多個關鍵中確定目標關鍵點;
39.根據所述目標關鍵點在當前圖像幀的第一旋轉信息和所述目標粒子在所述碰撞發生前一幀圖像中的旋轉信息,得到所述目標粒子在當前圖像幀的第三旋轉信息;
40.根據所述第三旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
41.可選地,所述旋轉信息包括四元數;
42.所述根據所述目標關鍵點在當前圖像幀的旋轉信息和所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,得到所述目標粒子在當前圖像幀的第三旋轉信息,包括:
43.根據所述目標關鍵點在當前圖像幀的四元數叉乘所述目標粒子在所述碰撞發生前一幀圖像中的四元數,確定所述目標粒子在當前圖像幀的第三四元數。
44.可選地,所述根據所述目標障礙物發生碰撞的位置和所述目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在所述多個關鍵中確定目標關鍵點,包括:
45.在所述目標障礙物中分布在不同位置的多個關鍵點中,將與所述目標障礙物發生碰撞的位置距離最近的關鍵點,確定為目標關鍵點。
46.第二方面,本技術實施例提供一種動畫效果實現裝置,所述裝置包括:
47.獲取模塊,用于響應于目標粒子在空中飛行,獲取所述目標粒子在當前圖像幀中的速度向量;
48.第一處理模塊,用于根據預設單位向量繞所述速度向量旋轉,確定初始旋轉信息;
49.確定模塊,用于根據所述初始旋轉信息、所述速度向量以及所述目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息;
50.控制模塊,用于根據所述第一旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
51.可選地,所述確定模塊具體用于:
52.在第一數值范圍中,為所述目標粒子確定隨機值;
53.確定所述第一數值范圍與第二數值范圍之間的映射關系,并根據所述映射關系將所述隨機值對應的映射轉動角度確定為所述目標粒子的相對轉動角度;
54.根據所述相對轉動角度和第一預設轉動角度,確定所述目標粒子在所述當前圖像幀的第一隨機轉動角度,所述第一預設轉動角度大于所述第二數值范圍內的轉動角度。
55.可選地,所述初始旋轉信息包括初始旋轉矩陣;
56.所述確定模塊具體用于:
57.所述初始旋轉矩陣以所述速度向量為旋轉軸,轉動所述第一隨機轉動角度,得到所述目標粒子在所述當前圖像幀的第一旋轉矩陣。
58.可選地,所述控制模塊具體用于:
59.將所述第一旋轉矩陣轉換為四元數的表達形式,得到第一四元數;
60.根據所述第一四元數控制所述目標粒子在所述當前圖像幀中進行轉動。
61.可選地,所述裝置還包括第二處理模塊,所述第二處理模塊具體用于:
62.響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為靜態物體的情況下,獲取所述目標粒子對應的目標碰撞狀態并控制所述目標粒子的運動狀態符合所述目標碰撞狀態。
63.可選地,所述碰撞狀態包括以下任意一種:從碰撞點插入所述目標障礙物并轉動預設幀數后停止轉動、翻倒在所述目標碰撞物上;
64.在所述目標粒子對應的目標碰撞狀態為從碰撞點插入所述目標障礙物并轉動預
設幀數后停止轉動的情況下,所述第二處理模塊具體用于:
65.獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
66.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息和所述目標粒子在當前圖像幀中的第二隨機轉動角度,確定第二旋轉信息;
67.根據所述第二旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
68.可選地,在所述預設幀數內所述第二隨機轉動角度的分布狀態至少包括以下任意一種:線性分布、非線性分布以及指數分布;
69.所述第二處理模塊具體用于:
70.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸;
71.根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二旋轉信息。
72.可選地,所述旋轉信息包括四元數;
73.所述第二處理模塊具體用于:
74.將所述目標粒子在所述碰撞發生前一幀圖像中的四元數轉換為旋轉矩陣的表達形式,得到第二旋轉矩陣并根據所述第二旋轉矩陣確定目標旋轉軸;
75.根據所述第二旋轉矩陣、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二四元數。
76.可選地,所述方法還包括第三處理模塊,所述第三處理模塊具體用于:
77.響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為動態物體的情況下,獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
78.根據所述目標障礙物發生碰撞的位置和所述目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在所述多個關鍵中確定目標關鍵點;
79.根據所述目標關鍵點在當前圖像幀的第一旋轉信息和所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,得到所述目標粒子在當前圖像幀的第三旋轉信息;
80.根據所述第三旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
81.可選地,所述旋轉信息包括四元數;
82.所述第三處理模塊具體用于:
83.根據所述目標關鍵點在當前圖像幀的四元數叉乘所述目標粒子在所述碰撞發生前一幀圖像中的四元數,確定所述目標粒子在當前圖像幀的第三四元數。
84.可選地,所述第三處理模塊具體用于:
85.在所述目標障礙物中分布在不同位置的多個關鍵點中,將與所述目標障礙物發生碰撞的位置距離最近的關鍵點,確定為目標關鍵點。
86.第三方面,本技術實施例提供一種電子設備,所述電子設備包括:
87.存儲器和處理器、所述存儲器和所述處理器耦合;
88.所述存儲器用于存儲一條或多條計算機指令;
89.所述處理器用于執行所述一條或多條計算機指令,以實現上述第一方面任一項所述的動畫效果實現方法。
90.第四方面,本技術實施例提供一種計算機可讀存儲介質,其上存儲有一條或多條
計算機指令,其特征在于,該指令被處理器執行以實現上述第一方面任一項所述的動畫效果實現方法。
91.第五方面,本技術實施例提供一種計算機程序產品,包括計算機程序,所述計算機程序被處理器執行時實現上述第一方面任一項所述的動畫效果實現方法。
92.與現有技術相比,本技術具有以下優點:
93.本技術公開了一種動畫效果實現方法及裝置,該方法包括:響應于目標粒子在空中飛行,獲取目標粒子在當前圖像幀中的速度向量;根據預設單位向量繞速度向量旋轉,確定初始旋轉信息;根據初始旋轉信息、速度向量以及目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息;根據第一旋轉信息控制目標粒子在當前圖像幀中進行轉動。一方面,通過程序化的控制大大提高了動畫制作的效率;另一方面,在目標粒子在空中做自由落體的過程中每個圖像幀,根據目標粒子在每個圖像幀對應的第一隨機轉動角度確定目標粒子每幀圖像的旋轉信息后,在連續播放圖像幀的過程中,即可實現目標粒子在空中飛行做自由落體運動的過程中同步進行自轉的動畫效果。進一步,通過對于粒子系統發射的成千上萬的目標粒子擁有各自對應的第一隨機轉動角度,成千上萬的粒子的第一隨機轉動角度的不同。因此,根據各目標粒子對應的第一隨機轉動角度,來實現成千上萬的目標粒子在空中做自由落體的過程中進行差異化自轉。
附圖說明
94.此處所說明的附圖用來提供對本發明的進一步理解,構成本技術的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
95.圖1為本技術第一實施例提供的動畫效果實現方法的流程示意圖之一;
96.圖2為本技術第一實施例提供的動畫效果實現方法的流程示意圖之二;
97.圖3為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之一;
98.圖4為本技術第一實施例提供的動畫效果實現方法的流程示意圖之三;
99.圖5為本技術第一實施例提供的目標障礙物包括多個關鍵點的示意圖;
100.圖6為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之二;
101.圖7為本技術第一實施例提供的粒子在空中做拋物線運動的操作流程圖;
102.圖8為本技術第一實施例提供的粒子插中地面后變速旋轉的操作流程圖;
103.圖9為本技術第一實施例提供的粒子在打中并跟隨目標障礙物轉動的操作流程圖;
104.圖10為本技術第一實施例提供的粒子打中地面后倒地的操作流程圖;
105.圖11為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之三;
106.圖12為本技術第二實施例提供的動畫效果實現裝置的結構示意圖;
107.圖13為本技術第三實施例提供的電子設備的硬件結構示意圖。
108.通過上述附圖,已示出本技術明確的實施例,后文中將有更詳細的描述。這些附圖和文字描述并不是為了通過任何方式限制本技術構思的范圍,而是通過參考特定實施例為本領域技術人員說明本技術的概念。
具體實施方式
109.為使本發明的目的、優點和特征更加清楚,以下結合附圖和具體實施方式對本發明進行清楚、完整地描述。在下面的描述中,闡述了很多具體細節以便于充分理解本發明。但是,所描述的實施例是本發明一部分實施例,而不是全部的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
110.需要說明的是,在本技術的描述中,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性,以及特定的順序或先后次序。對于本領域的普通技術人員而言,可以具體情況理解上述術語在本技術中的具體含義。此外,在本技術的描述中,除非另有說明,術語“多個”是指兩個或兩個以上。術語“和/或”,描述關聯對象的關聯關系,表示可以存在三種關系,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。字符“/”一般表示前后關聯對象是一種“或”的關系。術語“包括”和“具有”以及他們的任何變形,旨在覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
111.為了便于理解本技術的技術方案,首先對本技術所涉及的相關概念進行介紹。
112.四元數(或稱為四元素)是由一個實數和三個復數組成的超復數,可用于描述物體旋轉運動的朝向。其中,實數表示物體轉動的大小,三個復數分別表征在三維空間的朝向。四元數常用的表達式可以參考公式一:
113.q=q0+q1i+q2j+q3k
???
公式一
114.其中,q為四元數(即目標粒子在當前圖像幀中的旋轉信息),q0為四元數的實部,i,j,k分別為是四元數的虛數單位,q1,q2,q3分別為是四元數中虛數單數i,j,k的虛部。
115.動畫效果是指連續播放圖像幀而形成運動影像的效果。比如,當應用程序是游戲時,所需實現的動畫效果可以是劇情動畫效果或過場動畫效果。
116.三維動畫制作軟件是用來制作三維動畫特效的軟件。例如,houdini、maya、3dsmax等。其中,作為三維動畫制作軟件之首,houdini是完全基于節點模式設計的產物,其結構、操作方式等和其它的三維動畫制作軟件有很大的差異。
117.粒子系統為三維動畫制作軟件中一項重要功能,它在模仿自然現象、物理現象及空間扭曲上具備得天獨厚的優勢。例如,粒子系統能夠模擬雨、雪、流水和灰塵等。隨著功能的逐步完善,粒子系統幾乎可以模擬任何富于聯想的三維效果:煙云、火花、爆炸、暴風雪或者瀑布。為了增加物理現象的真實性,粒子系統通過空間扭曲控制粒子的行為,結合空間扭曲能對粒子流造成引力、阻擋、風力等仿真影響。通常粒子系統在三維空間中的位置與運動是由發射器控制的。發射器主要由一組粒子行為參數以及其在三維空間中的位置所表示。粒子行為參數可以包括粒子生成速度(即單位時間粒子生成的數目)、粒子初始速度向量(例如什么時候向什么方向運動)、粒子壽命(經過多長時間粒子湮滅)、粒子顏、粒子的形態、在粒子生命周期中的變化以及其它參數等等。
118.典型的粒子系統更新循環可以劃分為兩個不同的階段:參數更新/模擬階段以及渲染階段。每個循環執行每一幀動畫。其中,在模擬階段,根據生成速度以及更新間隔計算新粒子的數目,每個粒子根據發射器的位置及給定的生成區域在特定的三維空間位置生成,并且根據發射器的參數初始化每個粒子的速度、顏、生命周期等等參數。然后檢查每
個粒子是否已經超出了生命周期,一旦超出就將這些粒子剔出模擬過程,否則就根據物理模擬更改粒子的位置與特性。其中,物理模擬例如像將速度加到當前位置或者調整速度抵消摩擦這樣簡單,又例如可能像將外力考慮進去計算正確的物理拋射軌跡那樣復雜。
119.下面,對本技術涉及的現有技術以及現有技術所存在的問題進行說明:
120.在實現萬箭射擊效果的現有方案中,通常先手動創建大量實現不同自轉效果的弓箭旋轉動畫模型;在各弓箭從發射源發出后做自由落體運動的過程中,將各弓箭模型分別切換為上述實現不同自轉效果的弓箭旋轉動畫模型中的任意一個,從而實現在萬箭射擊過程中弓箭的差異化自轉效果。
121.然而,要實現在萬箭射擊過程中各弓箭進行差異化自轉效果,需要手動創建大量具有不同自轉效果的弓箭旋轉動畫模型,導致工作量急劇上升,動畫效果制作效率低下。
122.基于上述存在的問題,為了在減少所需工作量、提高動畫效果制作效率,本技術提供了一種動畫效果實現方法、與該方法相對應的動畫效果實現裝置、可實施該動畫效果實現方法的電子設備以及計算機可讀存儲介質。以下提供實施例對上述方法、裝置、電子設備以及計算機可讀存儲介質進行詳細說明。
123.為了使本技術的目的、技術方案更加清楚直觀,下面將結合附圖及實施例,對本技術實施例提供的方法進行詳細說明。應理解的是,此處所描述的具體實施例僅僅用于解釋本技術,并不用于限定本技術。
124.本技術實施例提供一種動畫效果實現方法、裝置、電子設備及存儲介質。具體地,本技術實施例的動畫效果實現可以由電子設備執行。其中,該電子設備可以為終端或者服務器等設備。該終端可以為智能手機、平板電腦、筆記本電腦、觸控屏幕、游戲機、個人計算機(personal computer,pc)、個人數字助理(personal digital assistant,pda)等終端設備,終端還可以包括客戶端,該客戶端可以是游戲應用客戶端、攜帶有游戲程序的瀏覽器客戶端或即時通信客戶端等。服務器可以是獨立的物理服務器,也可以是多個物理服務器構成的服務器集或者分布式系統,還可以是提供云服務、云數據庫、云計算、云存儲、網絡服務、云通信、中間件服務、域名服務、安全服務、cdn、以及大數據和人工智能平臺等基礎云計算服務的云服務器。
125.需要注意的是,在下述對本技術提供的技術方案進行說明的過程中,是以終端作為執行主體為例進行說明的。在其他可能的實施方式中,也可以由服務器作為執行主體來執行本技術提供的技術方案,本技術實施例對于執行主體的類型不做限定。
126.下面,結合圖1,對本技術實施例提供的動畫效果實現方法進行說明,圖1為本技術第一實施例提供的動畫效果實現方法的流程示意圖之一。
127.如圖1所示,該動畫效果實現方法包括:
128.s101、響應于目標粒子在空中飛行,獲取目標粒子在當前圖像幀中的速度向量。
129.在本實施例中,實現動畫效果所采用的三維動畫制作軟件可以為以下任意一種:houdini、maya、3ds max等,對此不作任何限制。
130.三維動畫制作軟件中包括粒子系統,粒子系統通過發射器來發射成千上萬的粒子來表示不規則模糊物體,來表示各種效果。例如,雨、雪、流水和灰塵等。又例如,當粒子的形狀為弓箭時,粒子系統可實現從通過發射器按照預設粒子生成速度向預設方向發射弓箭,并控制弓箭進行自由落體運動,即實現沿某個方向發射出成千上萬的弓箭,并且該成千上
萬的弓箭在空中做拋物線運動的過程中進行差異化自轉的動畫效果。又例如,當粒子的形狀為雨點時,粒子系統的使用就是實現從既定方向按照預設速度生成預設數量的雨點,即實現在某個方向生成源源不斷的雨點,并且該源源不斷的雨點在空中做拋物線運動的動畫效果。
131.需要說明的是,粒子系統需要根據多個參數來發射粒子,例如發射源方向、粒子的生成速度、各粒子的發射速度、碰撞屬性以及各粒子的形狀、質量、體積大小等參數,對此不做任何限制。另外,為了模擬粒子在真實世界中的飛行效果,需要為整個動畫場景中所有粒子或單個粒子設置重力場,在每個時間步長中所設置重力場的粒子會向下移動以模擬重力效果。其中,重力場中的重力加速度g的具體數值可以根據實際需求進行取值。例如,重力加速度g可以取值為:g=9.8n/kg,以此示例。可以理解的是,預設質量的弓箭以預設速度發射出,在空中做拋物線運動。那么為不同的弓箭設置不同的質量以及不同發射速度,不同的弓箭在空中將實現做不同運動軌跡的拋物線運動。
132.其中,碰撞屬性為是否發生碰撞,例如將一個粒子的碰撞屬性設置為可碰撞,即該粒子可以看作為一個碰撞體。
133.在本實施例中,在粒子系統中設置發射源方向、每秒的粒子發射量、各粒子的發射速度和質量、碰撞屬性以及各粒子的形狀、大小,并為各粒子設置重力場,即粒子系統在發射成千上萬粒子后,各粒子從預設方向射出后在空中做拋物線運動。在每幀中記錄了各個粒子的坐標信息以及各粒子對應的速度向量。其中,當前圖像幀中粒子的速度向量為當前圖像幀中粒子的坐標信息減去上一幀中粒子的坐標信息。其中,目標粒子為粒子系統發射的成千上萬粒子中的任意一個粒子,即成千上萬的粒子中每個粒子的運動設置方法一致,而具體參數設置可以相同也可以不同,這個可以根據實際需求來確定。
134.在響應于目標粒子在空中飛行做拋物線的過程中,獲取目標粒子在當前圖像幀中的速度向量。例如,在第t個圖像幀時,目標粒子的運動狀態為在空中飛行做拋物線運動,那么獲取目標粒子在第t-1個圖像幀中的速度向量。其中,一種可行的確定目標粒子在當前圖像幀中的速度向量的方式可以為:在第t個圖像幀時,目標粒子在三維空間中的坐標為a(x
t
,y
t
,z
t
);以及,在第t-1個圖像幀時,目標粒子在三維空間中的坐標為b(x
t-1
,y
t-1
,z
t-1
)。因此,目標粒子在第t個圖像幀中的速度向量為:
135.可選地,對目標粒子在當前圖像幀中的速度向量進行歸一化處理,獲得目標粒子在當前圖像幀中的單位速度向量。其中,對速度向量進行歸一化處理可以將速度向量等比例縮放為單位速度向量,在后續應用速度向量的計算中則無需考慮速度向量的具體模長所帶來的影響,只考慮速度向量的方向即可。
136.考慮到在實際運動中弓箭在空中做拋物線的運動的過程中,通過以速度方向為旋轉軸進行自轉,進一步增強萬箭射擊的效果,通過為不同的弓箭設置不同的自轉角度,以實現各弓箭在空間中自轉幅度存在差異性,提高了萬箭在空中做拋物線的逼真性,通過程序化控制也提高了實現各弓箭自轉的效率,避免了為實現各弓箭差異自轉而手動key大量不同的弓箭旋轉模型所帶來的巨大工作量,極大地節省了人力。
137.s102、根據預設單位向量繞速度向量旋轉,確定初始旋轉信息。
138.其中,預設單位向量為三維空間中的單位向量。例如,預設單位向量可以從以下幾
個三維單位向量中取:(1,0,0)、(0,1,0)、(0,0,1),對此不做任何限定,只要為三維單位向量即可。
139.在目標粒子在空中飛行做拋物線運動的過程中,為了模擬粒子在真實世界中做拋物線運動的同時會繞自身進行旋轉操作,因此,根據預設單位向量繞速度向量進行旋轉,確定初始的旋轉信息,即以速度向量為軸向量。
140.可選地,根據預設單位向量繞速度向量進行旋轉,確定初始的旋轉信息。
141.可選地,初始旋轉信息包括初始旋轉矩陣。
142.下面,對根據預設單位向量繞目標粒子在當前圖像幀中的速度向量進行旋轉確定初始旋轉矩陣的一種可能的實現方式示例性說明。
143.例如,目標粒子在當前圖像幀中的單位速度向量為預設單位向量為首先,使用預設單位向量叉乘單位速度向量為得到向量即其中,向量與預設單位向量單位速度向量垂直。
144.其次,使用單位速度向量叉乘向量得到向量即
145.由此可知,單位速度向量為向量以及向量兩兩垂直。將向量向量均進行歸一化處理,得到單位向量和那么由單位速度向量單位向量以及單位向量組成初始旋轉矩陣,即
146.s103、根據初始旋轉信息、速度向量以及目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息。
147.其中,第一隨機轉動角度是指目標粒子在當前圖像幀中,繞(單位)速度向量進行旋轉的轉動角度。需要說明的是,對于同一目標粒子在不同的圖像幀中對應的第一隨機轉動角度是不同的,這使得在連續圖像幀播放過程中,目標粒子呈現連續的自轉效果;另外,對于不同的目標粒子,在同一圖像幀時各目標粒子的第一隨機轉動角度是不同的,這有效模擬了成千上萬的粒子在做自由落體的過程中進行差異性自轉,提高了動畫效果的逼真性。
148.可選地,目標粒子在當前圖像幀的第一隨機轉動角度由以下三個步驟得到:
149.步驟一、在第一數值范圍中,為目標粒子確定隨機值。
150.例如,在三維動畫制作軟件houdini中,從發射源發射出的粒子均具有各自的編號id,在houdini中通常通過粒子編號來實現對各個粒子的(差異化)控制。使用rand()函數為目標粒子的編號從0-1的范圍中取一個隨機值。例如,根據rand()函數為目標粒子的編號取得的隨機數為0.45。
151.步驟二、確定第一數值范圍與第二數值范圍之間的映射關系,并根據映射關系將隨機值對應的映射轉動角度確定為目標粒子的相對轉動角度。
152.在步驟一中第一數據范圍為[0,1]的基礎上進行說明,假定第二數據范圍為[n1,n2],那么第一數值范圍與第二數值范圍之間的映射關系:從第一數據范圍中取隨機數r,那么將r映射到第二數據范圍得到的映射轉動角度為:r*(n
2-n1)+n1。又例如,第一數據范圍為
[n3,n4]以及第二數據范圍為[n1,n2],那從第一數據范圍中取隨機數r,那么將r映射到第二數據范圍得到的映射轉動角度為:(r-n3)*d+n1。其中,d=(n
2-n1)
÷
(n
4-n3)。上述兩個例子均為均勻映射的方法,還可以非均勻映射例如指數映射等等,對此不做任何限制。
[0153]
將隨機值對應的映射轉動角度確定為目標粒子對應的相對轉動角度。
[0154]
步驟三、根據相對轉動角度和第一預設轉動角度,確定目標粒子在當前圖像幀的第一隨機轉動角度,第一預設轉動角度大于第二數值范圍內的轉動角度。
[0155]
其中,對于粒子系統發射的成千上萬的粒子擁有相同的第一預設轉動角度,各粒子擁有的相對轉動角度不同,相對轉動角度的確定具有極大的隨機性。因此,根據各粒子對應的相對轉動角度,來實現成千上萬的粒子進行差異化轉動。
[0156]
可選地,將相對轉動角度和第一預設轉動角度之和,確定為目標粒子在當前圖像幀的第一隨機轉動角度。
[0157]
可選地,初始旋轉矩陣以(單位)速度向量為旋轉軸,轉動第一隨機轉動角度,得到目標粒子在當前圖像幀的第一旋轉信息,該第一旋轉信息包括第一旋轉矩陣。
[0158]
可選地,第一預設轉動角度大于第二數值范圍內的轉動角度。由于相對轉動角度的取值取決于第二數值范圍,每個目標粒子的第一預設轉動角度取相同的數值,以及目標粒子對應的第一隨機轉動角度等于相對轉動角度與第一預設轉動角度之和,因此在存在多個目標粒子時,該多個目標粒子之間對應的最小差值為0,多個目標粒子之間對應的最大差值為第二數值范圍中最大值與最小值之差。那么第一預設轉動角度大于第二數值范圍內的轉動角度這樣的設置,可以使得多個目標粒子的轉動角度的整體分布較為集中的同時,可控制多個目標粒子之間存在差異化并且可以控制轉動角度的差異處于一個合理地范圍內。例如,當第二數值范圍為[1-10],第一預設角度為60時,目標粒子對應的相對轉動角度的取值最大為10,最小為1,相對轉動角度加上第一預設角度后得到目標粒子的隨機轉動角度,即目標粒子的第一隨機轉動角度的最大取值為60+10=70,以及目標粒子的第一隨機轉動角度的最小取值為60+1=61。需要說明的是,對于第二數值范圍、第一預設轉動角度的取值,可以根據實際情況來設定,對此不做任何限制。
[0159]
s104、根據第一旋轉信息控制目標粒子在當前圖像幀中進行轉動。
[0160]
第一旋轉信息表示目標粒子在當前圖像幀中的旋轉信息,具體的,在每個圖像幀中目標粒子的旋轉信息可以采用四元數表示。
[0161]
可選地,將第一旋轉矩陣轉換為四元數的表達形式,得到第一四元數;根據第一四元數控制目標粒子在當前圖像幀中進行轉動。
[0162]
需要說明的是,矩陣轉換為四元數的前提為:該矩陣為正交矩陣。因此,旋轉矩陣均為正交矩陣。將第一旋轉矩陣轉換為四元數的表達形式,得到第一四元數的具體實現方法可以參考現有技術中將矩陣轉換為四元數的方法即可。
[0163]
在本實施例中,在目標粒子在空中飛行做自由落體運動的過程中,當前圖像幀的旋轉信息均通過步驟s101-s104來確定,當目標粒子每幀圖像的旋轉信息確定后,在連續播放圖像幀的過程中,即可實現目標粒子在空中飛行做自由落體運動的過程中同步進行自轉的動畫效果。另外,需要強調說明的是,當存在成千上萬個目標粒子同時在空中飛行做自由落體運動時,可以展現出該成千上萬的目標粒子在空中自轉效果均不同,成千上萬的目標粒子進行差異化自轉的動畫效果更加符合實際情況。
[0164]
以目標粒子的形狀為弓箭為例進行說明,當上千上萬的弓箭在空中飛行做自由落體運動的過程中進行自轉,該成千上萬目標粒子之間的差異化自轉,所形成的萬箭射擊的動畫效果符合實際情況,因此這樣的動畫效果更加逼真。進一步,為了提高成千上萬目標弓箭射擊效果的逼真性,為不同的弓箭設置不同的質量以及不同發射速度。考慮到在實際運動中弓箭在空中做拋物線的運動的過程中,通過以速度方向為旋轉軸進行自轉,進一步增強萬箭射擊的效果,通過為不同的弓箭設置不同的自轉角度,以實現各弓箭在空中自轉幅度存在差異性,提高了萬箭在空中做拋物線的逼真性,通過程序化控制也提高了實現各弓箭自轉的效率,避免了為實現各弓箭差異自轉而手動創建大量不同的弓箭旋轉動畫模型所帶來的巨大工作量,極大地節省了人力、提供了動畫效果制作效率。
[0165]
本技術所提供的動畫效果實現方法,響應于目標粒子在空中飛行,獲取目標粒子在當前圖像幀中的速度向量;根據預設單位向量繞速度向量旋轉,確定初始旋轉信息;根據初始旋轉信息、速度向量以及目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息;根據第一旋轉信息控制目標粒子在當前圖像幀中進行轉動。一方面,通過程序化的控制大大提高了動畫制作的效率;另一方面,在目標粒子在空中做自由落體的過程中,根據目標粒子在每個圖像幀對應的第一隨機轉動角度確定目標粒子每幀圖像的旋轉信息后,在連續播放圖像幀的過程中,即可實現目標粒子在空中飛行做自由落體運動的過程中同步進行自轉的動畫效果。進一步,通過對于粒子系統發射的成千上萬的目標粒子擁有各自對應的第一隨機轉動角度,成千上萬的粒子的第一隨機轉動角度的不同。因此,根據各目標粒子對應的第一隨機轉動角度,來實現成千上萬的目標粒子在空中做自由落體的過程中進行差異化自轉。
[0166]
下面,結合圖2,對本技術第一實施例提供的動畫效果實現方法進行說明,圖2為本技術第一實施例提供的動畫效果實現方法的流程示意圖之二。
[0167]
如圖2所示,該動畫效果實現方法還包括:
[0168]
s201、響應于目標粒子與目標障礙物發生碰撞,在目標障礙物為靜態物體時,獲取目標粒子對應的目標碰撞狀態。
[0169]
目標障礙物為與目標粒子發生碰撞的虛擬物體。障礙物包括靜態物體和動態物體。例如,當例如,當目標障礙物為虛擬墻壁等靜態物體時,則將該目標障礙物的運動狀態屬性設置為靜態屬性參數;又例如,當目標障礙物為虛擬人物等動態物體時,該目標障礙物的運動狀態屬性設置為動態屬性參數。
[0170]
該目標障礙物具有碰撞屬性,即目標粒子和目標障礙物發生碰撞后,目標粒子的碰撞狀態包括以下任意一種:從碰撞點插入目標障礙物并轉動預設幀數后停止轉動、翻倒在目標碰撞物上。其中,目標粒子與目標障礙物的碰撞狀態可以根據碰撞狀態需求對目標粒子和目標障礙物的碰撞屬性進行設定。其中,碰撞屬性包括彈性、摩擦力等等。
[0171]
可選地,當目標粒子的目標碰撞狀態為翻倒在目標碰撞物上時,在弓箭與地面發生碰撞時,顯示弓箭與地面進行剛體解算,弓箭倒地效果即可。
[0172]
可選地,目標粒子的目標碰撞狀態可以在目標粒子與目標障礙物發生碰撞之前確定。
[0173]
下面,對確定目標粒子的目標碰撞狀態的一種可能的實現方式進行示例性說明。
[0174]
假定碰撞狀態包括以下兩種:從碰撞點插入目標障礙物并轉動預設幀數后停止轉
動、翻倒在目標碰撞物上。針對目標粒子在第三數值范圍中隨機取一個數(即稱為隨機數),將第三數值范圍分為第四數值范圍和第五數值范圍。若該隨機數位于第四數值范圍,則將目標粒子的目標碰撞狀態確定為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動;若該隨機數位于第五數值范圍,則將目標粒子的目標碰撞狀態確定為翻倒在目標碰撞物上。例如,第三數值范圍為[0,1],第四數值范圍為[0,0.45],第五數值范圍為(0.45,1]。若目標粒子對應的隨機數為0.23,則由于0.23位于第四數值范圍內且第四數值范圍對應的碰撞狀態為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動,因此,將將目標粒子的目標碰撞狀態確定為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動。
[0175]
s202、在目標粒子對應的目標碰撞狀態為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動的情況下,執行步驟s203-s206。
[0176]
s203、獲取目標粒子在碰撞發生前一幀圖像中的第一旋轉信息。
[0177]
可選地,第一旋轉信息的表達形式可以包括以任意一種:旋轉矩陣、四元數。
[0178]
需要強調說明的是,在目標粒子從碰撞點插入目標障礙物后在轉動預設幀的過程中,目標粒子轉動的旋轉軸是以該目標粒子在碰撞前一圖像幀中的旋轉信息來確定目標旋轉軸,即在目標粒子從碰撞點插入目標障礙物后在轉動預設幀的過程中目標粒子的目標旋轉軸可以為目標粒子在碰撞前一圖像幀中的速度方向。可以理解的是,當目標粒子在空中做拋物線運動過程的每一幀中,每一幀均具有目標粒子的速度向量;然而,當目標粒子與目標障礙物發生碰撞時,目標粒子的瞬時速度變為0,無速度方向。在目標粒子在與目標障礙物發生碰撞并插入目標障礙物中時,為了使目標粒子保持插入前的速度方向,因此考慮將在碰撞發生的前一圖像幀中目標粒子的速度向量,確定目標粒子的目標旋轉軸,即速度向量為目標粒子插入目標障礙物后進行轉動的旋轉軸。
[0179]
s204、根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸。
[0180]
基于上述步驟203獲取了目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,下面,針對第一旋轉信息的不同的表達形式,對根據第一旋轉信息來確定目標旋轉軸的可能的實現方式進行示例性說明。
[0181]
在一種可能的實現方式中,當目標粒子在碰撞發生前一幀圖像中的第一旋轉信息的表達形式為旋轉矩陣時,由于目標粒子的動畫制作控件為三維空間,因此目標粒子在碰撞發生前一幀圖像中的旋轉矩陣為三維旋轉矩陣。其中,三維旋轉矩陣有三個旋轉軸。可以將隨機將目標粒子在碰撞發生前一幀圖像中的三維旋轉矩陣中的任意一個旋轉軸或將目標粒子在碰撞發生前一幀圖像中的速度方向(旋轉軸),確定為目標粒子在當前圖像幀中轉動所圍繞的目標旋轉軸。
[0182]
在一種可能的實現方式中,當目標粒子在碰撞發生前一幀圖像中的第一旋轉信息的表達形式為四元數時,首先將目標粒子在碰撞發生前一幀圖像中的四元數轉換為旋轉矩陣的形式,后續可以通過隨機將目標粒子在碰撞發生前一幀圖像中的三維旋轉矩陣中的任意一個旋轉軸或將目標粒子在碰撞發生前一幀圖像中的速度方向(旋轉軸),為目標粒子確定在當前圖像幀中轉動所圍繞的目標旋轉軸。
[0183]
s205、根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息、目標旋轉軸以及第二隨機轉動角度,確定目標粒子在當前圖像幀的第二旋轉信息。
[0184]
可選地,在預設幀數內第二隨機轉動角度的分布狀態至少包括以下任意一種:線
性分布、非線性分布以及指數分布。
[0185]
可選地,在初始旋轉信息為旋轉矩陣的表達形式時(即初始旋轉信息為初始旋轉矩陣),或在初始旋轉信息為四元數的表達形式時將四算數轉換為旋轉矩陣的表達形式得到的旋轉矩陣為初始旋轉矩陣;初始旋轉矩陣以目標旋轉軸為旋轉軸,轉動第二隨機轉動角度,得到目標粒子在當前圖像幀的第二旋轉信息。其中,第二旋轉信息的表達形式包括旋轉矩陣和四元數。
[0186]
需要強調說明是,每個目標粒子在預設幀數內的第二隨機轉動角度的分布狀態可以完全相同,可以部分相同,也可以完全不同,這個可以根據實際需求進行設定,對此不做任何限制。另外,目標粒子在每個圖像幀中的第二隨機轉動角度隨機取值,因此在同時存在成千上萬個目標粒子時,各個目標粒子具有差異化的第二隨機轉動角度。
[0187]
可選地,在第一旋轉信息的表達形式為四元數時,上述“根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息、目標旋轉軸以及第二隨機轉動角度,確定目標粒子在當前圖像幀的第二旋轉信息。”的一種可能的實現方式包括如下步驟:
[0188]
s2051、將目標粒子在碰撞發生前一幀圖像中的四元數轉換為旋轉矩陣的表達形式,得到第二旋轉矩陣并根據第二旋轉矩陣確定目標旋轉軸;
[0189]
可選地,步驟“根據第二旋轉矩陣確定目標旋轉軸”的實現方式可以參考步驟s204中“根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸。”的具體實現方式。
[0190]
s2052、根據第二旋轉矩陣、目標旋轉軸以及第二隨機轉動角度,確定目標粒子在當前圖像幀的第二四元數。
[0191]
可選地,第二旋轉矩陣以目標旋轉軸為旋轉軸,轉動第二隨機轉動角度,得到目標粒子在當前圖像幀的第二四元數。
[0192]
s206、根據第二旋轉信息控制目標粒子在當前圖像幀中進行轉動。
[0193]
可選地,基于上述步驟s205確定了目標粒子在當前圖像幀的第二旋轉信息,根據第二旋轉信息控制目標粒子在當前圖像幀中進行轉動。
[0194]
可選地,在第二旋轉信息的表達形式為四元數時,如步驟s2052中得到目標粒子在當前圖像幀的第二四元數,因此,根據第二四元數控制目標粒子在當前圖像幀中進行轉動。
[0195]
在目標粒子與目標障礙物發生碰撞即結束在空中做自由落體運動,在目標障礙物為靜態物體以及目標粒子的目標碰撞狀態為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動的情況下,目標粒子與目標障礙物發生碰撞后的預設幀數內進行轉動的方式均需要通過步驟s204-s206來確定并進行控制,當目標粒子每幀圖像的旋轉信息確定后,在連續播放圖像幀的過程中,即可實現目標粒子在從碰撞點插入目標障礙物并轉動預設幀數后停止轉動的動畫效果。另外,需要強調說明的是,當存在成千上萬的目標粒子同一時刻或不同時刻從碰撞點插入目標障礙物時,可以展現出該成千上萬的目標粒子從碰撞點插入目標障礙物并轉動預設幀數后停止轉動的動畫效果,以及因旋轉軸、第二隨機轉動角度不同使得各目標粒子在每個圖像幀中的差異化轉動效果,這種成千上萬的目標粒子進行差異化轉動的動畫效果更加符合實際情況。
[0196]
以目標粒子的形狀為弓箭為例進行說明,當成千上萬的弓箭從碰撞點插入目標障礙物(即結束在空中飛行做自由落體運動)后轉動預設幀數后停止轉動,該成千上萬的目標
粒子之間的差異化轉動效果,所形成的萬箭射擊到目標障礙物上各個弓箭進行差異性轉動的動畫效果符合實際情況,因此這樣的動畫效果更加逼真。
[0197]
本技術所提供的動畫效果實現方法,響應于目標粒子與目標障礙物發生碰撞,在目標障礙物為靜態物體時,獲取目標粒子對應的目標碰撞狀態。在目標粒子對應的目標碰撞狀態為從碰撞點插入目標障礙物并轉動預設幀數后停止轉動的情況下,執行以下步驟:獲取目標粒子在碰撞發生前一幀圖像中的第一旋轉信息。根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸。根據目標粒子在碰撞發生前一幀圖像中的第一旋轉信息、目標旋轉軸以及第二隨機轉動角度,確定目標粒子在當前圖像幀的第二旋轉信息。根據第二旋轉信息控制目標粒子在當前圖像幀中進行轉動。
[0198]
下面,結合圖3,以目標粒子為目標弓箭、目標障礙物為地面(地面的運動狀態為靜態)時,對弓箭與地面碰撞后,弓箭插入地面,弓箭倒地效果進行示意說明,圖3為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之一。
[0199]
如圖3所示,包括大量的弓箭以及地面。在圖3中,一部分的弓箭呈現插入地面的畫面效果,一部分的弓箭呈現倒地的畫面效果。需要說明的是,當弓箭插入地面后,在預設時長內做不同幅度的轉動的動態畫面未體現在圖3中。
[0200]
下面,結合圖4,對本技術第一實施例提供的動畫效果實現方法進行說明,圖4為本技術第一實施例提供的動畫效果實現方法的流程示意圖之三。
[0201]
如圖4所示,該動畫效果實現方法還包括:
[0202]
s401、響應于目標粒子與目標障礙物發生碰撞,在目標障礙物為動態物體的情況下,獲取目標粒子在碰撞發生前一幀圖像中的第一旋轉信息。
[0203]
可選地,處于動態的目標障礙物可以為虛擬動漫人物或虛擬植物或在虛擬動物等等,對此不作任何限制,只要其處于運動的運動狀態即可。
[0204]
可選地,關于步驟“獲取目標粒子在碰撞發生前一幀圖像中的第一旋轉信息。”的說明和解釋,可以參照上述針對步驟s203的說明和解釋,且能達到相同的技術效果,為避免重復,這里不再贅述。
[0205]
s402、根據目標障礙物發生碰撞的位置和目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在多個關鍵中確定目標關鍵點。
[0206]
需要說明的是,動態物體上分布多個關鍵點。其中,在每個關鍵點對應的旋轉信息會隨動態物體的運動而發生改變。
[0207]
下面,結合圖5,以目標障礙物為虛擬人物為例,對虛擬人物包括多個關鍵點進行示例性說明,圖5為本技術第一實施例提供的目標障礙物包括多個關鍵點的示意圖。
[0208]
以動態物體為虛擬人物為例進行說明,為了進一步逼真模擬虛擬人物在運動時身體各部位的動態變化,在虛擬人物身體上設置了多個關鍵點,該多個關鍵點分別分布在決定人體變動的關鍵部位處。如圖5所示,虛擬人物上包括大量的關鍵點,每個關鍵點具有旋轉信息。例如,在虛擬人物運動時,各關鍵點的旋轉信息會變化(例如旋轉信息的表達形式為四元數)。其中,關鍵點的旋轉信息能夠表征該關鍵點的運動朝向,即能夠反映在虛擬人物運動時該關鍵點的旋轉朝向狀態信息。
[0209]
在本實施例中,在與目標粒子發生碰撞的目標障礙物的運動狀態處于動態時,要根據該處于動態的目標障礙物為目標粒子確定朝向信息,即目的是想讓插入目標障礙物的
目標粒子跟隨目標障礙物的運動進行跟隨運動。
[0210]
可選地,在目標障礙物中分布在不同位置的多個關鍵點中,將與目標障礙物發生碰撞的位置距離最近的關鍵點,確定為目標關鍵點。
[0211]
s403、根據目標關鍵點在當前圖像幀的旋轉信息和目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,得到目標粒子在當前圖像幀的第三旋轉信息。
[0212]
可選地,旋轉信息的表達形式包括四元數和旋轉矩陣。
[0213]
可選地,在旋轉信息的表達形式為四元數時,獲取目標關鍵點在當前圖像幀的四元數,以及獲取目標粒子在碰撞發生前一幀圖像中的四元數。
[0214]
可選地,在旋轉信息的表達形式為四元數時,根據目標關鍵點在當前圖像幀的四元數叉乘目標粒子在碰撞發生前一幀圖像中的四元數,確定目標粒子在當前圖像幀的第三四元數,即第三四元數為第三旋轉信息。
[0215]
s404、根據第三旋轉信息控制目標粒子在當前圖像幀中進行轉動。
[0216]
基于上述步驟s403確定了第三旋轉信息后,在旋轉信息的表達形式為四元數時(第三四元數即為第三旋轉信息),根據第三四元數控制目標粒子在當前圖像幀中進行轉動。
[0217]
在目標粒子與目標障礙物發生碰撞即結束在空中做自由落體運動,在目標障礙物為動態物體的情況下,目標粒子在當前圖像幀的旋轉信息均通過步驟s402-s404來確定,當目標粒子每幀圖像的旋轉信息確定后,在連續播放圖像幀的過程中,即可實現目標粒子跟隨目標障礙物的運動進行跟隨運動的動畫效果。另外,需要強調說明的是,當存在成千上萬個目標粒子與同一個目標障礙物發生碰撞時,在成千上萬的目標粒子碰撞在目標障礙物的不同位置時,可以展現出該成千上萬的目標粒子在插入目標障礙物進行差異性轉動的動畫效果,成千上萬的目標粒子進行差異化轉動的動畫效果更加符合實際情況。
[0218]
本技術所提供的動畫效果實現方法,響應于目標粒子與目標障礙物發生碰撞,在目標障礙物為動態物體的情況下,獲取目標粒子在碰撞發生前一幀圖像中的第一旋轉信息;根據目標障礙物發生碰撞的位置和目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在多個關鍵中確定目標關鍵點;根據目標關鍵點在當前圖像幀的旋轉信息和目標粒子在碰撞發生前一幀圖像中的第一旋轉信息,得到目標粒子在當前圖像幀的第三旋轉信息;根據第三旋轉信息控制目標粒子在當前圖像幀進行轉動。當目標粒子與動態目標障礙物發生碰撞以及目標粒子插入目標障礙物中,實現了目標粒子跟隨動態目標障礙物的動態效果,進一步提高了動畫效果的逼真度;通過這種程序化的方式控制目標粒子跟隨目標障礙物運動的方式,避免了了因需手動創建所需的動畫模型所帶來的巨大的工作量,大大提高了動畫制作的效率。另外,通過這種程序化的方式,使得目標粒子插入動態目標障礙物中跟隨目標障礙物進行跟隨運動的這個復雜動畫效果實現起來更加簡單。
[0219]
下面,結合圖6,以目標粒子的形狀為弓箭、目標障礙物為虛擬人物(運動狀態為動態)時,對弓箭與地面碰撞后,弓箭插入虛擬人物身體內在預設數量的圖像幀內的轉動效果進行示意說明,圖6為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之二。
[0220]
如圖6所示,包括大量的弓箭、地面以及虛擬人物。在圖6中,一部分的弓箭插入虛擬人物身體的畫面效果。需要說明的是,當弓箭插入虛擬人物身體后,弓箭跟隨虛擬人物進行跟隨轉動的動態畫面未體現在圖6中。
[0221]
下面,結合圖7-圖10以及具體的示例,對本技術提供的動畫效果實現方法進行進一步說明,圖7為本技術第一實施例提供的粒子在空中做拋物線運動的操作流程圖,圖8為本技術第一實施例提供的粒子插中地面后變速旋轉的操作流程圖,圖9為本技術第一實施例提供的粒子在打中并跟隨目標障礙物轉動的操作流程圖,圖10為本技術第一實施例提供的粒子打中地面后倒地的操作流程圖。
[0222]
為了更好的理解本技術的技術方案,在對圖7-圖10進行描述之前,對粒子系統進行簡單的介紹。發射粒子前,通過粒子系統設置多個參數來發射粒子。其中,粒子系統就是一些粒子的集合,通過設定發射源在發射粒子流的同時創建各種動畫效果。也可以理解為,粒子系統是一個對象,而發射的粒子是子對象。將粒子系統作為一個整體來設置動畫,并且隨時調整粒子系統的屬性,以控制每一個粒子的行為。具體地,用于控制粒子行為的屬性包括以下至少一種:發射源方向、每秒的粒子發射量、各粒子的發射速度和質量、碰撞屬性以及各粒子的形狀、大小等參數,對此不做限制。另外,為了模擬粒子在真實世界中的飛行效果,需要為動畫場景中所有粒子或單個粒子添加定向力,例如重力、風力。比如,添加了重力的粒子可以實現自由落體運動的動畫效果、添加了風力的粒子可以實現在風力的作用下進行飄動、飛舞等動畫效果。其中,重力加速度g以及風力大小可以根據實際需求進行取值,例如重力加速度g的取值可以為:g=9.8n/kg。碰撞屬性為是否可發生碰撞,碰撞屬性包括3個參數,分別為:彈力、摩擦力以及偏移量。通過為該三個參數設置不用的值,實現不同的粒子在相互碰撞后展現不同的碰撞并彈開的動畫效果。例如,將一個粒子設置為可碰撞,即該粒子可以看作為一個碰撞體,可實現和其他粒子接觸后碰撞后彈開的動畫效果。需要說明的是,在碰撞體還分為主動碰撞物體和被動碰撞物體,在主動碰撞物體和被動碰撞物體在碰撞后,被動碰撞物體的位置不改變而主動碰撞物體被彈開。
[0223]
在本實施例中,在粒子系統中設置發射源方向、每秒的粒子發射量、各粒子的發射速度和質量、碰撞屬性以及各粒子的形狀、大小,并為各粒子設置重力,即粒子系統在發射成千上萬粒子后,各粒子從預設方向射出后在空中做拋物線運動。在每幀圖像中記錄了各個粒子的坐標信息以及各粒子對應的速度向量。其中,當前圖像幀中粒子的速度向量為當前圖像幀中粒子的坐標信息減去上一幀中粒子的坐標信息。其中,粒子為粒子系統發射的成千上萬粒子中的任意一個粒子。
[0224]
如圖7所示,粒子在空中飛行做拋物線運動的過程中,會記錄或保存歷史幀圖片中粒子的速度向量,例如軟件會記錄并保存粒子在前一圖像幀中的速度向量(步驟701,為了表述的簡潔性,在以下描述中省略“步驟”兩字),對701中記錄的粒子的速度向量進行歸一化處理得到單位速度向量(702),以單位速度向量為旋轉軸,其他兩個軸為自由狀態來確定初始旋轉矩陣(703)。針對粒子編號對應的粒子(707),使用隨機函數rand()實現從0-1中取隨機數(708)。例如,取到的隨機數為0.45。將隨機數作為映射函數(fit()函數中的一個參數。需要說明的是,由于隨機函數rand()其返回值區間的局限性,通過引入fit()函數來擴展返回值的取值范圍。fit()函數包括1個參數稱之為n,該參數n的取值范圍為[0,1],fit()函數內部寫有一個最大值num_max、一個最小值num_min。例如,fit(n)函數中n的取值范圍為[0,1],則fit(n)函數用于將n從數據區間[0,1]均勻映射到數據區間[num_min,num_max]。fit()函數根據參數n的大小,從數據區間[num_min,num_max]中確定一個數作為fit(n)函數的返回值。
[0225]
將步驟708中確定的隨機數作為fit()函數的參數n。根據映射函數(fit函數)中的最大值、最小值以及參數n,確定一個數(709)并將該數作為該粒子對應的相對轉動角度。例如,當隨機數為0.45、fit()函數中的最大值為70、最小值為40,那么該粒子對應的相對轉動角度可以取:40+(70-40)*0.45=53.5。需要理解的是,為了使每個粒子的轉動角度不一樣,將統一設置的第一預設轉動角度(711)與各粒子對應的相對轉動角度相加得到各粒子在當前圖像幀中的轉動角度(710)。之后,將702中得到單位速度向量作為704中的旋轉軸,將703中得到初始旋轉矩陣作為704中的初始旋轉矩陣以及將步驟710得到的轉動角度作為704中的轉動角度,根據旋轉軸、初始旋轉矩陣以及轉動角度確定粒子在空中飛行過程中的旋轉矩陣(704)。將旋轉矩陣轉換為四元數(705),將粒子的四元數存儲為朝向信息(706),根據朝向信息控制粒子在空中飛行的過程中進行轉動,以實現粒子在空中飛行的過程中進行轉動的動畫效果。
[0226]
如圖8所示,當檢測到粒子的運動狀態為靜止(718)時,確認粒子打中目標障礙物(例如,地面),則在719中確定input==1。其中,當input==1時,確定粒子打中目標障礙物并且該目標障礙物為靜態物體;當input==0時,確定粒子未打中目標障礙物并仍處于自由落體運動狀態;將(719)中input的值輸入至選擇模塊對應的狀態參數中,當(719)中input的取值為1時,那么將輸入1作為選擇模塊的選擇結果;當(719)中input的取值為0時,那么將輸入2作為選擇模塊的選擇結果。具體地,當719中input的取值為0時,那么將輸入2作為選擇模塊的選擇結果。之后,那么將717中粒子的四元數作為選擇模塊輸入2的取值(720),根據該四元數控制粒子進行轉動(706);當719中input的取值為1時,那么將輸入1作為選擇模塊的選擇結果。那么將705中粒子的四元數作為選擇模塊輸入1的取值(720),根據該四元數控制粒子進行轉動(706)。
[0227]
下面,對輸入1對應的四元數(705)的確定步驟進行說明。
[0228]
首先,將717中粒子當前的四元數轉換為旋轉矩陣,并從該旋轉矩陣中提取軸向(722),確定出3個軸向分別為軸向1、軸向2、軸向3。從該三個軸向中任意選取一個軸向,作為旋轉軸。例如,將軸2確定為旋轉軸。在粒子打中目標障礙物的同時開始計幀數(例如從1開始計數,如1、2、3等)。(需要說明的是,當存在上千上萬個粒子時,每個粒子各自進行計幀數。)使用映射fit()函數以及對應的參數,使每個粒子在計幀數后開始轉動一定角度且該粒子該固定幀數的轉動角度呈非線性變化,并在到達固定幀數后使粒子停止轉動。例如,fit函數的參數設置為(0,30,0,1),那么當粒子的計幀數(步驟712)在1-30之間時,將該計幀數映射成0-1之間的值(步驟713)。進一步,為了使粒子在該30幀內轉動角度呈非線性變化(714),則通過ramp函數中的非線性數據分布對轉動角度進行映射,得到映射后的轉動角度,將此轉動角度作為723中的輸入1。將(709)得到的相對轉動角度作為(723)的輸入1,以及將(714)步驟得到的轉動角度作為(723)的輸入2,使723中的輸入1和輸入2進行相乘(723),得到粒子在當前圖像幀的轉動角度信息。將該轉動角度信息作為704中的轉動角度、將721中的旋轉矩陣作為704中的初始旋轉矩陣、將722中的任意一個軸向作為704中的旋轉軸,根據初始轉動矩陣、旋轉軸以及轉動角度,確定旋轉矩陣并將該旋轉矩陣轉換為四元數(705)。
[0229]
如圖9所示,在確定粒子卡在目標障礙物內且該目標障礙物為動態物體時(728),確定對比模塊(729)中input的取值為1,則輸出的布爾值為1。在布爾值為1時,將布爾值=1
作為選擇模塊的狀態參數時,則選擇將輸入1作為726中的選擇模塊的結果,并將該結果作為目標四元數朝向信息(727),以控制粒子進行轉動;或者,在確定粒子未卡在目標障礙物內時(728),確定對比模塊(729)中input的取值為0則輸出的布爾值為0。在布爾值為0時,將布爾值=0作為選擇模塊的狀態參數時,則選擇將輸入2作為726中的選擇模塊的結果,并將該輸入結果作為目標四元數朝向信息(727),以控制粒子進行轉動。
[0230]
下面,分別對確定(726)中輸入1對應的四元數和確定輸入2對應的四元數的實現方式進行說明。
[0231]
首先,對確定輸入2對應的四元數的實現方式進行說明。具體地,將724中的四元數朝向信息作為輸入2的值。
[0232]
接下來,對確定輸入1對應的四元數的實現方式進行說明。具體地,首先獲取粒子與目標障礙物發生碰撞并插入目標障礙物時粒子與目標障礙物的碰撞位置(730)。將與粒子發生碰撞事件的目標障礙物作為731的文件源,在目標障礙物對應的多個關鍵點中,將距離該碰撞位置最近的一個關鍵點出(即點云搜索),并將該關鍵點的參數信息過濾出來(732)。參數信息例如可以為四元數朝向信息、速度方向量信息等等。在本技術技術方案中將該關鍵點對應的四元數信息過濾出來,得到過濾結果即該關鍵點對應的四元數信息(732)。將該關鍵點的四元數作為725中的四元數1,以及將724中的四元數作725中的四元數1。在(725)中將四元數1叉乘四元數2得到目標四元數,即725中的叉乘結果。
[0233]
下面,結合圖10,對粒子與目標障礙物發生碰撞后,目標障礙物保持不動且粒子翻倒在目標障礙上的動畫效果的實現方式進行說明。
[0234]
在介紹圖10之前,需要進行以下說明:在三維動畫制作軟件中,一般碰撞動態模擬一般由碰撞物體、解算器以及力組成。其中,碰撞物體包含了用于描述正在模擬某些事物的必備參數,例如幾何信息(如球體、立方體等)、密度、溫度、質量、摩擦力、初始位置、旋轉、速度等。解算器負責計算模擬碰撞體在真實世界中進行運動的行為參數,例如行為參數包括碰撞體的速度向量以及旋轉信息等等物理動力學參數。其中,解算器可以查看碰撞體的運動狀態以及使用其內部的計算邏輯對碰撞體在每個時間時長的運動行為參數進行計算。力是可以施加到物體上的信息(任何屬性的物體均可,不限定于碰撞體)。其中,力可以附加到動畫場景中的所有物體上,或者也可以附加到單個物體上。這意味著受力物體會因為在受力的作用改變其運動行為。例如,將重力作用于碰撞體。當解算器獲知碰撞體的受力包含重力作用力時,那么解算器就要在每個時間步長中將碰撞體向下拉動,以模擬碰撞體在重力下的運動效果。
[0235]
如圖10所示,通過合并節點735對粒子和目標障礙物建立碰撞關系。其中,碰撞關系意味著當粒子和目標障礙物發生碰撞時,會改變其形狀和/或運動行為和/或運動方向。通過合并節點737對剛體解算器736和合并節點735所建立碰撞關系的2個碰撞體進行綁定,以使在粒子和目標障礙物發生碰撞后,剛體解算器736對粒子和目標障礙物的運動狀態參數進行計算。給粒子和目標障礙物均施加了重力,以使剛體解算器736在對粒子和目標障礙物的運動狀態參數進行計算的過程中考慮重力作用,從而實現各碰撞體在重力下的運動效果;根據以上設置,輸出粒子與目標障礙物碰撞后的運動效果(739),即粒子與目標障礙物發生碰撞,隨后粒子翻倒在目標障礙上。
[0236]
下面,結合圖11,以目標粒子的形狀為弓箭,目標障礙物為地面(即靜態物體)、虛
擬人物(即動態物體)為例,對成千上萬的弓箭從發射器發出,在空中做自由落體運動過程中進行自轉、以及弓箭與地面或虛擬人物發生碰撞后的轉動的動畫效果進行示例性說明,圖11為本技術第一實施例提供的萬箭射擊的動畫效果示意圖之三。
[0237]
如圖11所示,包括大量的弓箭、地面以及虛擬人物。在圖11中,一部分的弓箭呈現插入地面的畫面效果,一部分的弓箭呈現翻倒在地面上的畫面效果,一部分的弓箭插入虛擬人物身體的畫面效果。需要說明的是,弓箭在空中飛行做自由落體運動的過程中進行自轉的動態畫面未體現在圖11中,以及弓箭插入地面后,在預設圖像幀數內做不同幅度的轉動的動態畫面未體現在圖11中,以及當弓箭插入虛擬人物身體后,弓箭跟隨虛擬人物進行跟隨轉動的動態畫面未體現在圖11中。
[0238]
下面對本發明提供的動畫效果實現裝置進行描述,下文描述的動畫效果實現裝置與上文描述的動畫效果實現方法可相互對應參照。
[0239]
圖12為本技術第二實施例提供的動畫效果實現裝置的結構示意圖。如圖12所示,該動畫效果實現裝置包括:獲取模塊1201、第一處理模塊1202、確定模塊1203以及控制模塊1204。
[0240]
獲取模塊1201,用于響應于目標粒子在空中飛行,獲取所述目標粒子在當前圖像幀中的速度向量;
[0241]
第一處理模塊1202,用于根據預設單位向量繞所述速度向量旋轉,確定初始旋轉信息;
[0242]
確定模塊1203,用于根據所述初始旋轉信息、所述速度向量以及所述目標粒子在當前圖像幀的第一隨機轉動角度,確定第一旋轉信息;
[0243]
控制模塊1204,用于根據所述第一旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
[0244]
可選地,所述確定模塊1203具體用于:
[0245]
在第一數值范圍中,為所述目標粒子確定隨機值;
[0246]
確定所述第一數值范圍與第二數值范圍之間的映射關系,并根據所述映射關系將所述隨機值對應的映射轉動角度確定為所述目標粒子的相對轉動角度;
[0247]
根據所述相對轉動角度和第一預設轉動角度,確定所述目標粒子在所述當前圖像幀的第一隨機轉動角度,所述第一預設轉動角度大于所述第二數值范圍內的轉動角度。
[0248]
可選地,所述初始旋轉信息包括初始旋轉矩陣;
[0249]
所述確定模塊1203具體用于:
[0250]
所述初始旋轉矩陣以所述速度向量為旋轉軸,轉動所述第一隨機轉動角度,得到所述目標粒子在所述當前圖像幀的第一旋轉矩陣。
[0251]
可選地,所述控制模塊1204具體用于:
[0252]
將所述第一旋轉矩陣轉換為四元數的表達形式,得到第一四元數;
[0253]
根據所述第一四元數控制所述目標粒子在所述當前圖像幀中進行轉動。
[0254]
可選地,所述裝置還包括第二處理模塊,所述第二處理模塊具體用于:
[0255]
響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為靜態物體的情況下,獲取所述目標粒子對應的目標碰撞狀態并控制所述目標粒子的運動狀態符合所述目標碰撞狀態。
[0256]
可選地,所述碰撞狀態包括以下任意一種:從碰撞點插入所述目標障礙物并轉動預設幀數后停止轉動、翻倒在所述目標碰撞物上;
[0257]
在所述目標粒子對應的目標碰撞狀態為從碰撞點插入所述目標障礙物并轉動預設幀數后停止轉動的情況下,所述第二處理模塊具體用于:
[0258]
獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
[0259]
根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息和所述目標粒子在當前圖像幀中的第二隨機轉動角度,確定第二旋轉信息;
[0260]
根據所述第二旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
[0261]
可選地,在所述預設幀數內所述第二隨機轉動角度的分布狀態至少包括以下任意一種:線性分布、非線性分布以及指數分布;
[0262]
所述第二處理模塊具體用于:
[0263]
根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,確定目標旋轉軸;
[0264]
根據所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二旋轉信息。
[0265]
可選地,所述旋轉信息包括四元數;
[0266]
所述第二處理模塊具體用于:
[0267]
將所述目標粒子在所述碰撞發生前一幀圖像中的四元數轉換為旋轉矩陣的表達形式,得到第二旋轉矩陣并根據所述第二旋轉矩陣確定目標旋轉軸;
[0268]
根據所述第二旋轉矩陣、所述目標旋轉軸以及所述第二隨機轉動角度,確定所述目標粒子在當前圖像幀的第二四元數。
[0269]
可選地,所述方法還包括第三處理模塊,所述第三處理模塊具體用于:
[0270]
響應于所述目標粒子與所述目標障礙物發生碰撞,在所述目標障礙物為動態物體的情況下,獲取所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息;
[0271]
根據所述目標障礙物發生碰撞的位置和所述目標障礙物中分布在不同位置的多個關鍵點之間的位置關系,在所述多個關鍵中確定目標關鍵點;
[0272]
根據所述目標關鍵點在當前圖像幀的旋轉信息和所述目標粒子在所述碰撞發生前一幀圖像中的第一旋轉信息,得到所述目標粒子在當前圖像幀的第三旋轉信息;
[0273]
根據所述第三旋轉信息控制所述目標粒子在所述當前圖像幀中進行轉動。
[0274]
可選地,所述旋轉信息包括四元數;
[0275]
所述第三處理模塊具體用于:
[0276]
根據所述目標關鍵點在當前圖像幀的四元數叉乘所述目標粒子在所述碰撞發生前一幀圖像中的四元數,確定所述目標粒子在當前圖像幀的第三四元數。
[0277]
可選地,所述第三處理模塊具體用于:
[0278]
在所述目標障礙物中分布在不同位置的多個關鍵點中,將與所述目標障礙物發生碰撞的位置距離最近的關鍵點,確定為目標關鍵點。
[0279]
本實施例提供的動畫效果實現裝置,可用于執行上述動畫效果實現方法實施例的技術方案,其實現原理和技術效果類似,本實施例此處不再贅述。
[0280]
圖13為本技術第三實施例提供的電子設備的硬件結構示意圖,如圖13所示,本實
施例的電子設備1300包括:處理器1301以及存儲器1302;其中
[0281]
存儲器1302,用于存儲計算機執行指令;
[0282]
處理器1301,用于執行存儲器存儲的計算機執行指令,以實現上述實施例中動畫效果實現方法所執行的各個步驟。具體可以參見前述方法實施例中的相關描述。
[0283]
可選地,存儲器1302既可以是獨立的,也可以跟處理器1301集成在一起。
[0284]
當存儲器1302獨立設置時,該電子設備還包括總線1303,用于連接所述存儲器1302和處理器1301。
[0285]
本技術第四實施例還提供一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有計算機執行指令,當處理器執行所述計算機執行指令時,實現如上電子設備所執行的動畫效果實現方法任一實施例提供的方案。
[0286]
本技術第五實施例還提供一種計算機程序產品,程序產品包括:計算機程序,計算機程序存儲在可讀存儲介質中,電子設備的至少一個處理器可以從可讀存儲介質讀取計算機程序,至少一個處理器執行計算機程序使得電子設備執行上述任一實施例提供的方案。
[0287]
在本技術所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現。例如,以上所描述的設備實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個模塊可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或模塊的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0288]
上述以軟件功能模塊的形式實現的集成的模塊,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能模塊存儲在一個存儲介質中,包括若干指令用以使得一臺電子設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(英文:processor)執行本技術各個實施例所述方法的部分步驟。
[0289]
應理解,上述處理器可以是中央處理模塊(英文:central processing unit,簡稱:cpu),還可以是其他通用處理器、數字信號處理器(英文:digital signal processor,簡稱:dsp)、專用集成電路(英文:application specific integrated circuit,簡稱:asic)等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。結合發明所公開的方法的步驟可以直接體現為硬件處理器執行完成,或者用處理器中的硬件及軟件模塊組合執行完成。
[0290]
存儲器可能包含高速ram存儲器,也可能還包括非易失性存儲nvm,例如至少一個磁盤存儲器,還可以為u盤、移動硬盤、只讀存儲器、磁盤或光盤等。
[0291]
總線可以是工業標準體系結構(industry standard architecture,isa)總線、外部設備互連(peripheral component,pci)總線或擴展工業標準體系結構(extended industry standard architecture,eisa)總線等。總線可以分為地址總線、數據總線、控制總線等。為便于表示,本技術附圖中的總線并不限定僅有一根總線或一種類型的總線。
[0292]
上述存儲介質可以是由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。存儲介質可以是通用或專用計算機能夠存取的任何可用介質。
[0293]
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0294]
最后應說明的是:以上各實施例僅用以說明本技術的技術方案,而非對其限制;盡管參照前述各實施例對本技術進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本技術各實施例技術方案的范圍。


文章投稿或轉載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-1136-0.html

來源:專利查詢檢索下載-實用文體寫作網版權所有,轉載請保留出處。本站文章發布于 2022-11-27 21:24:44

發表評論

驗證碼:
用戶名: 密碼: 匿名發表
評論列表 (有 條評論
2人圍觀
參與討論