張超(宿州職業(yè)技術(shù)學(xué)院 計算機信息系,安徽 宿州 234101)
“靈璧三絕”動漫宣傳片中的群體動畫制作技術(shù)
張超
(宿州職業(yè)技術(shù)學(xué)院計算機信息系,安徽宿州234101)
摘要:為了制作“靈璧三絕”特色文化動漫宣傳片的群體動畫場景,在深入研究自治體分布式行為控制理論的基礎(chǔ)上,基于MAYA粒子系統(tǒng)使用MEL語言編寫群體動畫分布式行為控制腳本。該方法解決了粒子間的自碰撞和群體角色的路徑規(guī)劃。同時使用了改進的碰撞檢測避免算法規(guī)劃群體運動路徑,該算法基于力的計算,能夠模擬自然界物體在受力情況下真實躲避障礙物的運動情況,運行速度快,效果良好。實際應(yīng)用結(jié)果表明,使用編寫的腳本能開發(fā)制作出“靈壁三絕”動漫宣傳片的群體動畫,且制作簡單,成本低廉。
關(guān)鍵詞:群體動畫;分布式行為;碰撞檢測與避免;MEL語言;粒子替代
群體動畫是利用計算機技術(shù)模擬生物群體的運動行為。近年來,群體動畫被廣泛應(yīng)用于影視、游戲、計算機圖形學(xué)、虛擬現(xiàn)實、模擬訓(xùn)練等領(lǐng)域[1]。在影視作品中主要輔助呈現(xiàn)大規(guī)模群集數(shù)字角色運動行為的特效鏡頭,例如從《指環(huán)王》中的魔獸奇兵到《僵尸世界大戰(zhàn)》中的僵尸(見圖1),再到《昆蟲總動員》中的螞蟻大軍。具有人工生命特征的數(shù)字角色將群體動畫技術(shù)的應(yīng)用研究推向了新的高度。
圖1 《僵尸世界大戰(zhàn)》群體動畫場景Fig. 1 Crowd animation scene of the WorldWarZ
群體動畫技術(shù)研究的熱點主要集中在人工智能和人工生命兩個領(lǐng)域。1987年,REYNOLDS[2]首次提出模擬自然界生物群集特性的“分布式行為模型”。1999年,REYNOLDS[3]又針對自治角色給出了群體的幾種具體行為的實現(xiàn)方法:尋找和逃離、追捕和躲避、對象躲避等。涂曉媛[4]使用人工生命方法實現(xiàn)了著名的動畫“曉媛的魚”(Xiao Yuan′s fish),“曉媛的魚”具有躲避障礙物、進食、求偶、逃跑等行為。群體動畫研究的核心是對群體行為的控制。無論是使用人工智能“自上而下”還是使用人工生命“自下而上”的控制方法,要解決的核心問題都是路徑規(guī)劃和碰撞避免,很多學(xué)者對此做了大量的工作。
筆者以研究開發(fā)《“靈璧三絕”特色文化動漫宣傳片的創(chuàng)作研究》項目為契機,根據(jù)宣傳片內(nèi)容需要,為宣傳片制作群體動畫特效,增加宣傳片的視覺效果和感染力。傳統(tǒng)“關(guān)鍵幀”技術(shù)制作群體動畫,其工作量頗大?;谌斯ぶ悄艿姆椒ㄐ枰暾闹悄芸刂葡到y(tǒng),難度較高,而現(xiàn)有的群體動畫軟件價格昂貴且操作復(fù)雜。為此,筆者在深入研究了自治體分布式行為控制理論的基礎(chǔ)上,基于MAYA粒子系統(tǒng)使用MEL語言編寫群體動畫分布式行為控制腳本,使用編寫的腳本擬開發(fā)制作“靈璧三絕”特色文化動漫宣傳片中群體動畫特效場景,為群體動畫研究領(lǐng)域提供更多研究思路。該方法制作簡單,成本低廉,易于實現(xiàn),解決了粒子間的自碰撞和群體角色的路徑規(guī)劃。其中使用改進的碰撞檢測避免算法模擬自然界物體在受力情況下的真實躲避障礙的運動情景,最后使用MAYA粒子替代將粒子替代為角色模型,實現(xiàn)真實感的群體動畫場景。
粒子是MAYA動力學(xué)模塊的核心,通過控制粒子的形態(tài)和運動可以模擬水、火、雨、爆炸等特效。粒子對象具有位置、速度、加速度和質(zhì)量等動力學(xué)屬性,還可以使用MEL語言和表達式精確控制粒子屬性。
1.1粒子替代
粒子替代可以讓每個粒子替換成一個具體模型,該模型可以是一組物體,也可以是帶有骨骼綁定和動畫的物體。使用粒子替代方法制作群體動畫簡單快捷,缺點是MAYA粒子不提供粒子間的碰撞交互,不符合自然界生物群體的特征,真實感欠佳。為了真實模擬自然界的群體特性,要解決兩個核心問題:一是粒子間的自碰撞;二是粒子與場景中其他物體的碰撞檢測。針對第一個問題,使用文獻[2]中分布式行為模型解決。針對第二個問題,MAYA提供了各種場(fields)模擬在不同自然力下粒子與物體的碰撞(make collide),通過調(diào)節(jié)屬性面板的參數(shù)如彈力(resilience)、摩擦力(friction)等也可達到需要的效果。由于自然界的真實避障機制是主體基于對環(huán)境的感知自行避開,不是被障礙物的彈力所阻擋,因此我們使用簡單有效的碰撞檢測和避免算法解決第二個問題。
1.2粒子路徑規(guī)劃
路徑規(guī)劃是指在具有障礙物的環(huán)境中,按照一定的評價標準,尋找一條從起始狀態(tài)到目標狀態(tài)的無碰撞路徑。在機器人的自主無碰行動、無人機的避障突防飛行、游戲角色自主尋路等領(lǐng)域有廣泛應(yīng)用[5]。為群體動畫中的角色規(guī)劃運動路徑,是群體動畫模擬過程中非常重要的工作。在MAYA中為粒子規(guī)劃運動路徑有三種方式,即粒子的Goal方式、顏色路徑驅(qū)動方式、智能計算方式。本文實現(xiàn)群體動畫主要使用智能計算的方式,前兩種方式作為輔助。智能計算的方式利用separation(分離)、alignment(調(diào)準)、cohesion(聚集)基本引導(dǎo)行為模擬群集特性,使用尋找(seek)行為規(guī)劃角色運動路徑,在角色運動過程中使用碰撞檢測與避免算法自動躲避障礙。
自然界的生物群體在群體運動過程中呈現(xiàn)兩個重要特性[6-7]:①群集性,即個體之間既要相互靠近又要避免碰撞;②路徑規(guī)劃:整個群體能沿著規(guī)劃的路徑運動并避免與障礙物發(fā)生碰撞。群體動畫的設(shè)計要能夠真實地模擬這兩個特性。REYNOLDS在文獻[2]中提出的separation(分離)、alignment(調(diào)準)、cohesion(聚集)三種基本引導(dǎo)行為,基于對鄰近個體的位置和速度的檢測,實時調(diào)整自己的行為,很好地模擬了群體的群集特性。筆者根據(jù)文獻[8]給出了三種基本引導(dǎo)行為的具體計算公式。對于第二個特性,本文提出使用簡單有效的碰撞檢測與改進的避免算法,模擬數(shù)字角色在預(yù)置的場景中實時躲避障礙物的情景。
2.1引導(dǎo)力的計算與合成
力可以使物體的形狀發(fā)生改變,也可以使物體的運動狀態(tài)發(fā)生改變。使用基于力的計算方式實現(xiàn)群體動畫各分布式行為及碰撞檢測避免算法。首先要解決力的表示,力可以改變?nèi)宋锏乃俣群臀恢?,在?shù)學(xué)上使用向量來表示這些屬性,所以可以通過向量的計算來表示力。
2.1.1引導(dǎo)力的計算[3]一種引導(dǎo)力作用于物體上,會導(dǎo)致物體的速度和位置發(fā)生改變。利用歐拉積分方法可以計算物體新的位置:
position(new)= position(old)+ velocity。
速度向量的方向和大小控制個體朝哪個方向移動和在動畫播放時每幀移動的距離。使用上面的計算方法,可以通過增加一個力來改變?nèi)宋锏囊苿?,不同的力將?dǎo)致物體移向不同的方向。以分布式行為——尋找(seek)為例,演示如何計算力及將力施加到物體上(見圖2),具體算法描述如下。
圖2 尋找Fig. 2 Seek
1)計算力:
desired_velocity = normalize(target_position–current_position)* max_velocity;
steeringforce = desired_velocity-velocity。
2)增加力:在動畫播放的每一幀都計算新的steeringforce控制力,將其添加到物體上,引導(dǎo)其朝目標方向移動。
steeringforce = truncate(steering,max_force);
steeringforce = steering / mass;
velocity = truncate(velocity + steering,max_speed);
position = position + velocity。
2.1.2引導(dǎo)力的合成在群體動畫的模擬過程中,一個角色可能同時受到多種引導(dǎo)力的共同作用。不同的引導(dǎo)力作用于物體上,基于物理學(xué)中力的合成的平行四邊形法則,可以計算最終引導(dǎo)力。
2.2基本引導(dǎo)行為的數(shù)學(xué)計算方法
基本引導(dǎo)行為即separation(分離)、alignment(調(diào)準)、cohesion(聚集)的引導(dǎo)力計算算法演示如圖3所示。
圖3 基本引導(dǎo)行為Fig. 3 Basic guiding behavior
2.2.1分離(separation)分離行為避免群體中的個體之間相互重疊。當一個個體與感知范圍內(nèi)的鄰近個體之間的距離小于最小安全距離時,產(chǎn)生一個排斥力引導(dǎo)個體遠離,直到滿足最小安全距離為止。排斥力的強度與兩個體之間的距離成反比。分離引導(dǎo)力等于所有排斥力之和,計算公式如下:
其中,k為感知范圍內(nèi)的個體數(shù)量,P0為當前檢測個體的位置向量,Pi() i=1, 2,…k為其他個體的位置向量。
2.2.2調(diào)準(alignment)群體中的每個個體總是試圖保持與其他個體的速度一致。首先計算當前個體感知范圍內(nèi)的所有鄰近個體的平均速度作為預(yù)期速度,使用預(yù)期速度減去當前個體速度獲得調(diào)準引導(dǎo)力。調(diào)整引導(dǎo)力計算公式如下:
其中,k為感知范圍內(nèi)的個體數(shù)量,V0為當前檢測個體的速度向量,Vi() i=1, 2,…k為其他個體的速度向量。
2.2.3聚集(cohesion)聚集行為表現(xiàn)角色的群居特性。角色始終會和群體保持一定的距離而避免脫離群體單獨行動。首先計算當前個體感知范圍內(nèi)的所有鄰近個體的平均位置,然后用平均位置減當前個體的位置,產(chǎn)生一個向內(nèi)的引導(dǎo)力引導(dǎo)個體朝平均位置移動。聚集引導(dǎo)力計算公式如下:
其中,k為感知范圍內(nèi)的個體數(shù)量,P0為當前檢測個體的位置向量,Pi() i=1, 2,…k為其他個體的位置向量。
2.3基于力的碰撞檢測與避免算法
碰撞檢測與避免算法已有較長的研究歷史,是機器人的路徑規(guī)劃、游戲、光線跟蹤、分布交互仿真等領(lǐng)域中具有挑戰(zhàn)性的問題,也是群體動畫模擬中最核心最基本的研究問題。
群體動畫中碰撞檢測及避免算法的目標是:效果真實自然,角色能夠在滿足實時交互的情況下完成障礙物檢測,并能很快采取避免措施。為了既不影響實時交互的速度同時又保證其真實性,國內(nèi)外很多學(xué)者針對不同的應(yīng)用領(lǐng)域做了大量研究,提出了一些有效的算法[9]。
筆者仍然基于引導(dǎo)力來實現(xiàn)碰撞檢測與避免算法。當前個體將要與它最近的障礙物模型相撞時,通過一個引導(dǎo)力引導(dǎo)它躲避障礙物?;谝龑?dǎo)力的碰撞躲避算法要解決3個問題:確定最近障礙物、碰撞檢測、計算躲避引導(dǎo)力。確定最近障礙物,使用排序算法,對當前檢測個體與場景中的所有包圍圓圓心的距離排序即可確定。文獻[10]對碰撞檢測、計算躲避引導(dǎo)力使用了有效簡便的方法,本文在文獻[10]的基礎(chǔ)上針對其不足提出了相應(yīng)的改進措施。
2.3.1碰撞檢測算法層次包圍盒算法是碰撞檢測使用比較廣泛的一種算法。層次包圍盒使用基本幾何體作為物體的包圍體(Bounding Volume,BV)進行碰撞測試,減少不必要的碰撞檢測提高檢測效率。而對于不同性質(zhì)、不同形狀的模型,需要根據(jù)情況選擇不同的包圍體,一般來說包圍體分為Sphere、AABB、OBB、8-DOP等。
層次包圍盒算法的開銷主要在計算模型的包圍球體上。影視作品中的群體動畫,一般是在同一平面內(nèi),由單一鏡頭構(gòu)成,持續(xù)時間短,場景中環(huán)境變化不大,障礙物基本固定。為了提高效率,本文考慮直接將障礙物模型包裹在圓(2D空間)或球體(3D空間)中,將包圍圓(球體)的信息記錄在數(shù)組中。
文獻[10]提出的碰撞檢測算法如圖4(a)所示。首先從個體運動方向上引一條直線:向量feeler。向量feeler的長度決定個體離障礙物多遠的距離開始碰撞躲避。然后使用向量feeler再創(chuàng)建向量feeler2,方向與feeler一致,大小為其一半。當前檢測個體是否將要與最近障礙物發(fā)生碰撞,我們只要判斷這兩個點是否落在包裹障礙物的圓(球體)中。只要feeler或feeler 2兩個向量與圓心的距離小于等于圓的半徑,那么點落在圓(球體)中碰撞將要發(fā)生,這時需要產(chǎn)生一個避免引導(dǎo)力,引導(dǎo)當前個體躲避障礙物。除了上述兩個條件外,對于圖4(a)中個體ID3,雖然feeler、feeler 2均未落在圓內(nèi),但碰撞已經(jīng)發(fā)生。為此除考慮上面兩個條件外,還需考慮個體的位置向量,當個體位置向量與圓心的距離小于等于圓的半徑時,碰撞也將要發(fā)生。
圖4 碰撞檢測與避免算法示意圖Fig. 4 Schematic diagram of collision detection and avoidance algorithm
2.3.2碰撞避免算法文獻[10]中使用feeler向量減去圓心向量產(chǎn)生躲避引導(dǎo)力。在個體不是直接朝著障礙物移動時,該計算方法能夠產(chǎn)生很好的躲避效果,但當個體直接朝著障礙物方向移動時,將產(chǎn)生一個與原運動方向相反的躲避引導(dǎo)力,使個體朝后運動,運動不夠平滑不夠真實。為此,筆者依據(jù)REYNOLDS[3]提出的對象躲避思想提出了如圖4(b)所示的改進措施。當檢測到個體將要與障礙物發(fā)生碰撞時,給它一個垂直于速度方向上的躲避引導(dǎo)力。這種處理會產(chǎn)生兩個垂直于速度方向的引導(dǎo)力n1和n2,顯然,當個體運動方向在個體與障礙物中心連線上方時,選擇n1,反之選擇n2??梢酝ㄟ^計算tocenter向量與法線向量的點積來確定,選擇點積小于零的向量作為躲避引導(dǎo)力。
使用2.1~2.3中論述的基于力的分布式行為的算法,基于MAYA粒子系統(tǒng)使用MEL語言編程實現(xiàn)了分布式行為控制腳本,將其應(yīng)用到“靈璧三絕”特色文化動漫宣傳片群體動畫特效的制作中。群體動畫制作主要包括問題定義、建模、群體運動模擬3個環(huán)節(jié)[11]。
3.1問題定義
靈璧縣今隸屬于安徽宿州市。宋元祐年間靈璧置縣,以縣產(chǎn)磐石,珍之如璧,故曰靈璧。靈璧人文薈萃,歷史悠久,曾是楚漢相爭的古戰(zhàn)場,靈璧奇石的主產(chǎn)區(qū),傳說人物鐘馗的故里,素有“虞姬、奇石、鐘馗畫,一美、一奇、一神,靈璧三絕甲天下”之美譽?!办`璧三絕”特色文化動漫宣傳片的創(chuàng)作研究項目,使用動漫技術(shù)開發(fā)“靈璧三絕”動漫宣傳片,宣傳靈璧的人文歷史,服務(wù)地方經(jīng)濟。為了提高宣傳片的視覺沖擊力和感染力,部分鏡頭使用群體動畫技術(shù),呈現(xiàn)千軍萬馬、氣勢磅礴的特效場景。在《霸王別姬》動漫宣傳片中使用分布式行為控制腳本制作垓下之戰(zhàn)千軍萬馬龐大的戰(zhàn)爭場面,在虞姬自刎后,項羽帶著虞姬的尸體向南突圍,漢軍五千騎兵窮追不舍的場景。在《鐘馗傳說與靈璧鐘馗畫》動漫宣傳片中,呈現(xiàn)成千上萬妖魔入侵人間,鐘馗手持蒲劍斬妖除魔的壯觀場面。
3.2建模
群體動畫一般使用遠景鏡頭,表現(xiàn)廣闊范圍的空間環(huán)境。遠景畫面重在渲染氣氛,抒發(fā)情感,與繪畫藝術(shù)中的“遠取其勢,近取其神”一脈相承,對模型細節(jié)要求不高。從渲染層面考慮,群體動畫場景中大都同時出現(xiàn)成千上萬的角色,低分辨率的模型能夠提高實時模擬群體運動效果和渲染速度。根據(jù)問題定義,考慮群體動畫畫面的真實感,為《霸王別姬》動漫宣傳片建立兩套群體角色模型:步兵和騎兵,為《鐘馗傳說與靈璧鐘馗畫》動漫宣傳片創(chuàng)建兩套鬼怪模型,模型參照靈璧鐘馗畫和宋代龔開《中山出游圖》。
3.3群體運動模擬
對群體運動進行模擬主要包括兩個層面:個體運動的設(shè)置和整體運動特征的體現(xiàn)。個體運動可以設(shè)置多套循環(huán)動作如走路、跑步、跳躍等,在MAYA中通過對模型進行骨骼蒙皮,使用關(guān)鍵幀動畫制作。群體運動的整體特征使用編寫的分布式行為控制腳本實現(xiàn)。
因為是基于MAYA粒子的運動模擬,所以在進行粒子替代替換為真實角色模型時,模型最好不帶材質(zhì)、骨骼、蒙皮等節(jié)點信息而只是形狀模型,這樣會提升運動模擬的實時性??梢允褂肕EL語言在動畫播放時,在時間軸上每一幀復(fù)制一個形狀模型來處理。對于粒子替代多套角色動作切換的處理,以兩套為例:第一套動作由10個復(fù)制的模型組成,第二套動作由16個復(fù)制的模型組成。使用如下代碼實現(xiàn)。
++particleShape1.index;
if(particleShape1.particleId%2==0){
particleShape1.index =(frame-particleShape1.BirthFramePP)%10;
particleShape1.goalU +=$move.x;
particleShape1.goalV +=$move.y;}
else{
particleShape1.index = 10+(frame-particleShape1.BirthFramePP)%16;
particleShape1.goalU +=$move.x;
particleShape1.goalV +=$move.y;
}
以《霸王別姬》動漫宣傳片中漢軍騎兵追趕項羽為例,為騎兵設(shè)置多套個體動作,如騎兵的馬在奔跑時呈現(xiàn)不同的姿勢:跳躍、邊跑邊跳躍等,以此呈現(xiàn)豐富的個體運動模擬。騎兵在追趕時又要呈現(xiàn)群體運動的特性,既要彼此不穿插也要自動避開地面上的障礙物(如圖5中的圓錐體),同時又能按規(guī)劃的路徑追趕,以此展現(xiàn)真實宏大的戰(zhàn)爭場面,圖5為漢軍五千騎兵追趕項羽群體動畫運動模擬效果。
圖5 騎兵追趕群體動畫模擬效果Fig. 5 Simulating effects of cavalry crowd animation
1)針對使用MAYA粒子替代方法制作群體動畫真實感欠佳等缺點,提出使用基于MAYA粒子系統(tǒng)的分布式行為控制方法,開發(fā)出了“靈璧三絕”特色文化動漫宣傳片的群體動畫場景。
2)針對文獻[10]中的碰撞檢測和避免算法的不足,對其進行了改進。將其應(yīng)用于群體動畫的制作中。該算法基于力的計算,能夠模擬自然界物體在受力情況下的真實運動情況,效果良好,運行速度有一定提升。
3)以《霸王別姬》和《鐘馗傳說與靈璧鐘馗畫》動漫宣傳片中群體動畫制作為例,介紹了藝術(shù)作品中群體動畫的制作流程和注意事項。
參考文獻(References)
[1]饒云波,陳雷霆,周駿,等.計算機群體動畫中的真實感行為綜述[J].計算機應(yīng)用,2010,30(3):571-578.
[2]REYNOLDS C. Flocks,herds,and schools:a distributed behavioral model[C]// Proceedings of SIGGRAPH,1987:25-34.
[3]REYNOLDS C. Steering behaviors for autonomous characters[C]// Game Developers Conference,1999:763-782.
[4]涂曉媛.人工魚-計算機動畫的人工生命方法[M].北京:清華大學(xué)出版社,2001.
[5]張廣林,胡小梅,柴劍飛,等.路徑規(guī)劃算法及其應(yīng)用綜述[J].現(xiàn)代機械,2011,37(5):85-90.
[6]倪娜.微粒群優(yōu)化算法在群體動畫行為控制中的應(yīng)用[J].科技通報,2014,29(4):222-224,239.
[7]魏麗.群體動畫中路徑自動規(guī)劃方法研究[J].計算機工程與應(yīng)用,2012,48(25):83-87.
[8]李慶.基于maya粒子系統(tǒng)的群體模擬方法研究[D].上海:上海交通大學(xué),2008.
[9]鄒益勝,丁國富,許明恒,等.實時碰撞檢測算法綜述[J].計算機應(yīng)用研究,2008(1):8-12.
[10]FERNANDO B. Understanding steering behaviors:Collision avoidance[EB/OL]2013-05-13[2014-11-19]. http://gamedevelopment.tutsplus.com/tutorials/understanding-steering-behaviors-collision-avoidance--gamedev-7777.
[11]魏三強,朱小萍,張超,等.動漫制作技術(shù)在電視節(jié)目片頭中的應(yīng)用研究[J].江漢大學(xué)學(xué)報:自然科學(xué)版,2013,42 (3):47-50.
(責(zé)任編輯:胡燕梅)
Group Cartoon Technology of the "Three Wonders of Lingbi" Animation Propaganda
ZHANG Chao
(Department of Computer Information,Suzhou Vocational and Technological College,Suzhou 234101,Anhui,China)
Abstract:In order to manufacture the crowd animation scene of the "Three Wonders of Lingbi" anima?tion propaganda with the local characteristics,on the basis of the theory of distributed behavior with au?tonomous characters,through the use of MEL language in MAYA particle system,the script of distribut?ed behavior of group cartoon is realized. This method solves two problems,which are self-collision be?tween particles of MAYA and the path planning of crowd animation role. Using improved collision detec?tion and collision avoidance algorithm to plan path for crowd animation role. This improved algorithm,which is based on the calculation of force can simulate objects naturally avoid obstacles under the action of force and achieve good results in computation speed and effect. The simulation results show the devel?oped script makes the crowd animation of the "Three Wonders of Lingbi" animation propaganda,and the work is simple and low cost.
Keywords:crowd animation;distributed behavior;collision detection and avoidance;MEL language;particles replacement
作者簡介:張超(1980—),男,講師,碩士,研究方向:動漫設(shè)計與制作、計算機應(yīng)用。
基金項目:安徽省高校省級優(yōu)秀青年人才基金重點項目(2013SQRL150ZD);宿州市第三批“551”產(chǎn)業(yè)“宿州特色文化動漫宣傳片創(chuàng)作團隊”人才計劃項目(宿人才[2014]2號)
收稿日期:2014-12-09
DOI:10.16389/j.cnki.cn42-1737/n.2015.01.010
中圖分類號:TP301;J218.7
文獻標志碼:A
文章編號:1673-0143(2015)01-0058-07