高 晶,孟 鹿
(青島農業大學,山東 青島 266109)
隨著大型游戲、影視特效和VR應用的拓展,在動畫制作中經常出現模擬大規模生物群體行為的場景,通常群體行為控制需要具備良好的全局與局部效果[1]才能保證動畫場景的逼真性,因此不能通過簡單的設置直接實現,必須對群體動畫采取引導控制,或者使其實現自主控制[2-3]。為了提高大場景動畫的真實性,高性能群體動畫行為控制成為動畫技術的重要研究方向。
針對群體動畫行為控制在全局表現出的整體趨向性,以及局部表現出的差異性,現有研究大多采用群體智能算法進行建模控制。群體智能算法通過仿生計算,可以很好的模擬自然狀態下群體行為,常被用于處理各類尋優和調度問題。文獻[4]采用FA算法對群體動畫進行建模,根據亮度與距離關系設計運動策略,同時通過速度調節進行躲避。FA算法不存在質量與速度屬性,需要在動畫制作時通過人為添加,實現復雜。文獻[5]采用果蠅算法對群體動畫疏散建模,并引入FA算法的感知機理來改善控制的平滑性。該方法中果蠅的屬性需要全局數據支持,導致其整體控制效果不佳。文獻[6]采用了布谷鳥算法查詢整體最佳行為,并將其和個體行為融合,該方法獲得了較好的控制連貫性。文獻[7]在布谷鳥基礎上融合了Logistic混沌序列,利用Logistic迭代得到鳥巢位置,并根據步長更新實現自主尋優。布谷鳥算法在尋優計算過程中,具有較小的復雜度,容易實現,可是其尋優效率和局部尋優效果一般。人工魚群算法(AFSA)符合群體共性與個性要求,且具有動態感知性能[8],本文在AFSA基礎上進行了優化,改善AFSA的尋優性能,并基于改進AFSA實現群體動畫行為的高性能控制。
在對群體動畫行為進行控制時,內部個體的描述性能很重要。考慮到動畫的平順性,這里依據RGB空間模型對個體進行描述。假定個體動畫圖像區域面積為s,則根據區域內所有像素點的RGB分量得到其色彩度為

(1)
根據RGB進一步得到個體動畫圖像熵為
G=E(log2pi)
(2)
其中,E(·)為熵函數;pi為像素i的出現概率。利用圖像熵G,可以增強個體特征描述的細膩程度。對于個體動畫具有的紋理特征,描述如下
M(i,j)=#{(x1,y1),(x2,y2)∈L×W|f(x1,y1)=i,f(x2,y2)=j}
(3)
M(i,j)為由i灰度與j灰度信息構造的共生矩陣。#{·}用于統計包含的個體動畫量;f(x,y)為群體動畫目標,對應活動的區域范圍是L×W。
群體動畫行為容易出現碰撞,為準確檢測碰撞,同時避免動畫行為控制的不自然,這里根據個體動畫的位置與加權策略,構建如下碰撞檢測模型

(4)
其中,n為群體動畫的規模;li為依據特征判斷出的個體動畫i的頂點位置;wi為個體i的控制權重;Bi,k(t)為B樣條曲線基。碰撞模型參數受個體移動影響,于是,對個體移動檢測如下

(5)


(6)
考慮到群體動畫的方向趨同性,應該保證全部個體的總體趨勢,引入聚合中心,將移動方向的檢測控制優化如下

(7)
其中,cj為個體動畫j的聚合中心。
在群體動畫行為模型中,通過特征與位置信息獲取得到個體動畫目標,并進行了碰撞檢測。為更好的對群體動畫共性與個性行為采取控制,本文采用改進人工魚群模擬群體動畫,通過尋優獲得群體動畫的最佳控制效果。
對ASFA的視野和步長進行分析優化。其中,視野將影響魚群的隨機性與效率,步長將影響收斂性與尋優。為確保它們的合理性,這里設計具有調節系數的更新公式

(8)
其中,horizon、step依次代表視野與步長;λ代表調節系數。在魚群向目標接近的過程中,應該讓調節系數逐漸降低。據此,將調節系數λ公式設計為
λ=exp(-a×(t/Tmax)α)
(9)
其中,a代表常系數;t代表迭代次數;Tmax代表t的上限;α代表調節指數。進行迭代操作時,令調節系數λ不斷降低,從而使個體動畫接近聚合中心的過程中實時保持合理的horizon與step,確保適應性和收斂性。
對ASFA的行為進行分析優化,它們是控制魚群活動的引導要素。傳統ASFA的三種行為更新公式為

(10)


(11)
其中,μ表示調整因子,它的計算公式為
μ=μmax-λ(μmax-μmin)
(12)
其中,μmax、μmin依次代表調整因子的上下閾值,λ為視野與步長的調節系數。據此可知,移動策略的更新與視野、步長有關,從而使得魚群移動的依據更加充分合理,并且調整因子控制了移動的隨機性。在最初更新時,考慮到群體的不確定性較大,采用較小的調整因子,增加當前狀態的保持性,避免局部解的出現。在中后期更新時,考慮到魚群狀態的趨穩,不斷增加調整因子,使其快速收斂。
在考慮群體動畫碰撞時,魚群個體應該具有相互躲避的認知,這里引入R-A模型。在R-A中,包含以r1、r2和r為半徑的三個圓形區域,且r1 在ASFA中,所有的人工魚之間看似具有整體的信息交互,來保證它們具有向心性。但是實際上只具備局部交互,通過不斷調整實現整體平衡效果。考慮到魚群交互的復雜度,這里基于局部交互設計通信策略。將所有人工魚的通信覆蓋區域定義為:以所描述個體動畫質心做為中心,半徑是r的三維空間。將交互對象定義為:處于通信區域中的全部個體。每次迭代,對感知范圍中個體產生的移動信息進行記錄,并向外傳播,從而擴散至全局。關于本文算法的動畫行為控制流程描述如圖1所示。 圖1 改進ASFA的群體動畫行為控制流程 基于Matlab對群體智能算法及其動畫行為控制性能進行仿真。初始化λ計算的常系數a=25,調整因子的上下閾值分別為μmax=0.95、μmin=0.25,視野和步長的閾值分別為horizonmin=0.001、stepmin=0.001。 對改進ASFA的性能進行驗證,同時選擇與傳統ASFA作對比。實驗選取的測試函數如下: f1(x)=-cos(2π|x|)+|x|+1 (13) (14) 測試函數的搜索范圍均為[-100,100],限定算法的迭代次數500,得到算法的收斂曲線與性能對比,如圖2和表1所示。根據收斂曲線與平均時間對比可知,兩種測試函數情況下,改進ASFA算法的收斂性均得到明顯提高,測試函數為f1(x)時大約迭代170次完成最優解搜索,執行時間0.493s;測試函數為f2(x)時大約迭代80次完成最優解搜索,執行時間0.276s,表明改進ASFA算法具有更快的收斂速度,雖然改進ASFA較傳統ASFA存在一定的復雜度增加,但是每一輪迭代全局搜索性能的提升,使得改進ASFA在整體算法上具有更好的收斂性。另外,f1(x)與f2(x)兩種測試函數下,改進ASFA算法的方差分別為0.0841和0.0032,結合收斂曲線的平滑性和收斂效果,顯然比未改進前具有更好的計算精度與穩定性。 圖2 算法收斂曲線 表1 算法性能對比 在驗證群體動畫行為性能時,從耗時、碰撞數量和連貫性三個方面進行實驗分析,并與文獻[5]與文獻[7]中提出的方法作對比。設置群體動畫規模初始值為100,最大規模為1000,以100為步長采取遞增。在群體動畫規模變化過程中,得到群體動畫行為時間曲線如圖3所示。由曲線對比可知,本文方法對應的群體動畫行為時間曲線受群體規模影響較小,且上升率極小,由于改進ASFA算法提高了收斂速度與全局規劃性能,所以在群體動畫規模增加的過程中,行為時間的變化較為線性。 圖3 群體動畫行為時間曲線 在群體動畫規模增長的過程中,群體動畫行為碰撞數量如圖4所示。由曲線對比可知,本文方法的碰撞次數明顯少于對比方法,這得益于本文對碰撞行為的優化,從群體中的個體,到動畫場景中的移動物體、靜止障礙多方面采取了碰撞檢測和躲避策略,顯著降低了群體動畫行為的碰撞發生。 圖4 群體動畫行為碰撞數量曲線 表2統計了三種方法對應的群體動畫行為連貫性,根據結果可知,本文方法的動畫連貫性分別比文獻[5]與文獻[7]方法提高了0.107和0.049。導致該結果的原因是由于改進ASFA優化了視野與步長更新方式,每次迭代搜索時,使個體動畫在接近聚合中心的過程中實時保持合理性,從而令動畫的社會行為具有良好的連貫平順性。 表2 動畫行為連貫性 本文在對群體動畫場景中的個體動畫圖像特征、區域和碰撞分析基礎上,提出了改進ASFA的動畫行為控制方法。利用改進ASFA群體算法模擬群體動畫行為,并分別對算法中視野、步長、行為和碰撞進行了相應優化設計,使改進ASFA能夠快速有效的實現群體動畫行為控制。通過測試函數,驗證了改進ASFA算法顯著改善了穩定性與全局收斂性;通過群體動畫行為仿真,驗證了本文方法控制的高效性,明顯降低了動畫碰撞數量,提高了動畫連貫性。
4 改進ASFA動畫行為控制流程

5 仿真與結果分析
5.1 改進AFSA算法性能驗證



5.2 群體動畫行為性能驗證



6 結束語