解思佳,劉志強,唐傳謙,劉曉靜
(青海大學(xué)計算機技術(shù)與應(yīng)用系,青海西寧 810016)
作為中國文化的重要組成部分,壁畫現(xiàn)存數(shù)量眾多,如甘肅敦煌莫高窟共有壁畫4.5 萬m2,山西永樂宮壁畫共約1 000m2等[1]。壁畫不僅反映了不同歷史時期的習(xí)俗、信仰和審美觀念等,而且體現(xiàn)了政治、經(jīng)濟、文學(xué)等發(fā)展水平。壁畫多保存在巖石等壁面上,由于環(huán)境、氣候等多種因素極易被破壞[2]。隨著時間更迭,壁畫情節(jié)內(nèi)涵因傳承斷代化已鮮為人知,亟需通過數(shù)字化技術(shù)對壁畫文化進行保護和傳承。
近年來,采用計算機動畫技術(shù)詮釋壁畫情節(jié)為相關(guān)文化解讀打開了新思路。傳統(tǒng)的逐幀動畫和補間動畫因省略記錄中間過渡幀動畫而導(dǎo)致動作不流暢、內(nèi)容匱乏,使觀眾易產(chǎn)生視覺疲勞。骨骼動畫技術(shù)作為計算機動畫的一個分支,實現(xiàn)了從骨骼變換序列到動畫模型網(wǎng)格的仿射關(guān)系,達到了以骨架驅(qū)動模型產(chǎn)生形變的效果[3],使得動作自然流暢,畫面極具表現(xiàn)力。
本文依托對壁畫文化的深入剖析,利用骨骼動畫技術(shù)研究從圖像到圖元的靜態(tài)數(shù)字化,從單圖元到多圖元情節(jié)動畫交互的動態(tài)數(shù)字化,為壁畫的數(shù)字化保護和傳承提供了新方法,創(chuàng)新了解讀傳統(tǒng)文化精神密碼的方式。
目前,國家大力倡導(dǎo)文化遺產(chǎn)數(shù)字化保護,在壁畫方面的數(shù)字化保護研究也越來越多,主要集中在壁畫圖像拼接算法、色彩管理數(shù)字化、圖像智能修復(fù)等方面。例如,陳濤[4]利用虛擬現(xiàn)實技術(shù)立體成像的特點以數(shù)字化的方式呈現(xiàn)白沙壁畫;賈偉加[5]結(jié)合三維掃描和數(shù)字化技術(shù)構(gòu)建了高仿真克孜爾洞窟立體模型并對洞窟中的壁畫進行了高保真圖像色彩和拼接處理;劉瑋[6]將數(shù)字化壁畫臨摹技術(shù)和色彩演變智能模擬技術(shù)應(yīng)用于陽曲縣寺廟壁畫修復(fù)工作中,對壁畫圖像邊緣進行分割,對大區(qū)域的壁畫圖像進行著色和色彩模擬演變處理,取得了較好的修復(fù)效果;Ma 等[7]利用虛擬現(xiàn)實等多種技術(shù)構(gòu)建了敦煌文化VR 博物館;Yang 等[8]利用高精度數(shù)字信息采集技術(shù)修復(fù)和重建了破損壁畫的細節(jié)和變形之處。然而以上研究主要針對壁畫實體進行數(shù)字化保護,對于壁畫情節(jié)數(shù)字化方面的研究較為缺乏。
隨著骨骼動畫技術(shù)的快速發(fā)展,其應(yīng)用范圍越來越廣泛。例如,金文玥[9]將骨骼動畫技術(shù)應(yīng)用于滅火救援實驗中,實現(xiàn)了三維虛擬教學(xué)場景的模擬;王萍[10]將戲曲元素與二維骨骼動畫技術(shù)相結(jié)合,對非物質(zhì)文化遺產(chǎn)花鼓戲曲的演繹方式進行了創(chuàng)新;謝云飛[11]將骨骼動畫技術(shù)應(yīng)用于兒童電子繪本設(shè)計中,制作了數(shù)字動畫刊物《擁抱》。骨骼動畫技術(shù)為傳統(tǒng)藝術(shù)帶來了全新的數(shù)字化演繹形式。本文將壁畫文化與骨骼動畫技術(shù)相結(jié)合,通過對壁畫文化的深入剖析提取主要圖元,構(gòu)建節(jié)點骨骼動畫模型,研究單圖元到多圖元的情節(jié)動畫交互,以多形式的數(shù)字化手段促進壁畫文化的源遠流長。
首先對壁畫情節(jié)進行分析,根據(jù)情節(jié)特征提取圖元信息[12],實現(xiàn)壁畫圖元的靜態(tài)數(shù)字化。
不同時期、不同地域的文化造就了壁畫風(fēng)格和內(nèi)涵的迥異[13]。在情節(jié)分析階段,首先以壁畫內(nèi)容為基礎(chǔ),從抽象到具象對其題材進行研究;其次分析壁畫中的人物關(guān)系、故事情節(jié)、圖像子元素等;最后從不同角度分析圖像子元素之間的關(guān)系。圖1為壁畫情節(jié)分析流程。
Fig.1 Flow of mural plot analysis圖1 壁畫情節(jié)分析流程
以《文成公主入藏弘佛圖》為例,分析其壁畫情節(jié),結(jié)果如圖2所示。
Fig.2 Plot analysis of Princess Wencheng entering Tibet圖2 《文成公主入藏弘佛圖》情節(jié)分析
在確定壁畫情節(jié)后,需要對原圖像進行增強處理[14],以提升對比度,便于對圖元進行提取。對原圖像色彩還原的準確性決定了圖元邊緣提取的準確性。因此,本文對原圖像的R、G、B 3個色彩通道分別進行相同的調(diào)整運算。
圖像增強算法表示為:
式中,R 表示圖像調(diào)整前的R、G、B 分量,R′表示圖像調(diào)整后的R、G、B 分量,Sd表示圖像色階的黑場閾值,HL表示圖像色階的白場閾值,Mt為圖像色階的中間調(diào),D為改變整個圖像的色階,pi為改變每一個像素點的色階。
基于原圖像色彩和黑白場閾值的圖像增強算法具體步驟為:
圖3 為圖像增強處理前后對比圖(彩圖掃OSID 碼可見,下同)。
Fig.3 Comparison before and after image enhancement processing圖3 圖像增強處理前后比較
在獲取預(yù)處理圖像的亮度和對比度信息后,通過提高前景與背景的對比度細節(jié)得到前景圖像的邊緣信息,以完成對各個圖像子元素的圖元提取。具體實現(xiàn)方法如圖4所示。
在完成壁畫情節(jié)分析和圖元提取的基礎(chǔ)上,對得到的各個圖元進行進一步修復(fù)處理,并通過動畫骨骼動力系統(tǒng)[15]為圖元添加骨架結(jié)構(gòu),構(gòu)建節(jié)點骨骼動畫模型[16],實現(xiàn)壁畫實體的靜態(tài)數(shù)字化。
對提取的破損圖元進行圖像色彩還原處理,即利用圖像中的樣本像素信息處理其他色彩受損區(qū)域。圖5 為圖像破損修復(fù)過程示意圖,其中A 表示圖像色彩未受損區(qū)域,B 表示圖像色彩受損區(qū)域。在初始化階段,隨機在A 區(qū)域選取一個像素塊a,交互式確定以像素塊a 為中心的色彩區(qū)域b;在傳遞階段,計算色彩區(qū)域b 包含的所有像素信息,并將結(jié)果傳遞至色彩受損區(qū)域b′;在反向傳播階段,保持b 區(qū)域中心點與b′區(qū)域中心點之間的距離不變,通過b1′區(qū)域的位移計算更新后b1區(qū)域的所有像素信息,同時傳遞給b1′區(qū)域;在搜索階段,采用隨機像素法以b 區(qū)域中的像素塊為中心點,在全圖范圍內(nèi)隨機搜索新的像素塊區(qū)域b2,提取b2區(qū)域所有像素信息并覆蓋b2′區(qū)域。
Fig.4 Primitives extraction method圖4 圖元提取實現(xiàn)方法
Fig.5 Schematic diagram of image damage repair process圖5 圖像破損修復(fù)過程示意圖
以《文成公主入藏弘佛圖》為例對圖元進行特征分類[17],具有生物特征的圖元為文成公主、松贊干布,具有非生物特征的圖元為鎮(zhèn)魔圖、華蓋。對兩類圖元分別進行切片處理[18],提取各部位基礎(chǔ)體,并整體拼接經(jīng)過處理的圖元各部位,完成對兩類圖元的處理過程。圖6 為圖元預(yù)處理過程。
為仿真壁畫情節(jié),需要對獲取的每個圖元創(chuàng)建骨架并進行綁定,實現(xiàn)骨骼與圖像的關(guān)聯(lián),完成壁畫圖元節(jié)點骨骼動畫模型的構(gòu)建。主要步驟如下:
(1)確定創(chuàng)建的骨骼類型。具有生物特征的圖元需要結(jié)合自然動力學(xué)和運動規(guī)律創(chuàng)建骨骼,具有非生物特征的圖元則需要結(jié)合圖像和動畫風(fēng)格創(chuàng)建骨骼。
(2)確定骨骼長度。根據(jù)圖元大小對骨骼長度進行匹配調(diào)整,簡化動畫計算過程。圖7為圖元骨架結(jié)構(gòu)。
Fig.6 Element preprocessing process圖6 圖元預(yù)處理過程
Fig.7 Element skeleton structure圖7 圖元骨架結(jié)構(gòu)
(3)調(diào)整動畫模型網(wǎng)格頂點和布線。完成骨骼結(jié)構(gòu)的添加后,通過骨骼位置和模型三角面網(wǎng)格頂點位置建立骨骼與頂點之間的仿射關(guān)系以完成骨骼綁定[19]。在該過程中會產(chǎn)生位置和數(shù)量錯誤的網(wǎng)格頂點,需要交互式調(diào)整網(wǎng)格點和布線,使模型網(wǎng)格數(shù)據(jù)點正確依附在骨架節(jié)點上。圖8為網(wǎng)格數(shù)據(jù)點和布線調(diào)整前后比較。
Fig.8 Comparison of grid data points and wiring before and after adjustment圖8 網(wǎng)格數(shù)據(jù)點和布線調(diào)整前后比較
(4)設(shè)置骨骼權(quán)重。為使骨骼能驅(qū)動動畫模型產(chǎn)生移動、旋轉(zhuǎn)和縮放等形變,需要對動畫模型進行權(quán)重調(diào)整。通過設(shè)置骨骼權(quán)重對動畫模型的每個部位進行封套[20],使其能被骨骼驅(qū)動產(chǎn)生形變。當(dāng)部分位置鄰近的骨骼權(quán)重分布重合或影響部位錯誤時,會導(dǎo)致動畫模型產(chǎn)生非正常的扭曲形變,此時需調(diào)整動畫模型網(wǎng)格數(shù)據(jù)點和骨架節(jié)點的權(quán)重重新進行封套,使模型中所有網(wǎng)格節(jié)點正確地依附在骨架節(jié)點上。圖9為骨骼權(quán)重調(diào)整前后比較。
Fig.9 Comparison of bone weight before and after adjustment圖9 骨骼權(quán)重調(diào)整前后比較
在對壁畫圖元進行靜態(tài)數(shù)字化的基礎(chǔ)上,通過節(jié)點骨骼動畫模型和骨骼動畫技術(shù)完成壁畫情節(jié)的仿真設(shè)計,即動態(tài)數(shù)字化。
骨骼動畫利用骨骼記錄物體對象的位移、旋轉(zhuǎn)、縮放等動畫信息,對于物體本身則僅記錄不同部位的骨骼權(quán)重影響,通過控制虛擬骨骼的位置和方向模擬角色的動態(tài)效果[21],使得動畫動作更具真實感。不同于傳統(tǒng)動畫,骨骼動畫通過記錄骨骼及其權(quán)重實現(xiàn)了物體對象與動畫的分離,節(jié)省了資源容量。節(jié)點骨骼動畫模型創(chuàng)建的骨架模型為鉸鏈式結(jié)構(gòu),一般包括骨骼和關(guān)節(jié)兩類元素。圖10 為骨架結(jié)構(gòu)示意圖。
對初始設(shè)定的骨架結(jié)構(gòu)中每根骨骼定義一個骨骼空間的蒙皮矩陣Mi,使得骨骼從世界坐標系轉(zhuǎn)換到骨架坐標系中,旋轉(zhuǎn)了θ角度后的骨骼坐標可以由另一個骨骼空間的旋轉(zhuǎn)矩陣表示??紤]到節(jié)點骨骼動畫模型的一個網(wǎng)格數(shù)據(jù)頂點受唯一的第i根骨骼權(quán)重影響,采用式(2)計算出由初始綁定姿勢的網(wǎng)格數(shù)據(jù)頂點S(x,y,z)旋轉(zhuǎn)θ角度后得到的變換頂點W(x′,y′,z′):
式中,Mi’為第i根骨骼空間的旋轉(zhuǎn)矩陣,Mi-1為骨骼空間的綁定姿勢矩陣,即骨骼空間模型矩陣的逆矩陣。利用Mi的逆矩陣將初始點S 由世界坐標變換到骨骼坐標空間,再采用Mi’通過旋轉(zhuǎn)角度θ變換回世界坐標系,以完成對W頂點的位置求解。圖11為該變換流程。
Fig.10 Skeleton structure diagram圖10 骨架結(jié)構(gòu)示意圖
Fig.11 Flow of controlling the bone rotation to complete the transformation process of graphics vector圖11 控制骨骼旋轉(zhuǎn)完成圖形向量的變換流程
在對節(jié)點骨骼動畫模型進行動畫生成時,不僅需要采用骨骼關(guān)鍵幀記錄骨架節(jié)點的形變信息,還需要考慮骨骼之間的父子鏈接關(guān)系,即父骨骼會帶動子骨骼運動而子骨骼不會影響父骨骼的運動,且子骨骼相對于父骨骼的坐標為相對坐標。圖12為骨骼父子鏈接關(guān)系示意圖。
Fig.12 Bone parent-child link relationship圖12 骨骼父子鏈接關(guān)系
在動畫生成階段,通過式(3)計算出每根骨骼的相對坐標,利用骨骼關(guān)鍵幀記錄每根骨骼的相對坐標,表示為:
式中,Ma為A 骨骼的世界坐標,Mb為B 骨骼的世界坐標,通過逆矩陣計算出A 骨骼相對于B 骨骼的相對坐標Mab。將Mab和Mb代入式(4)可以計算出A 骨骼的世界坐標,表示為:
通過骨骼綁定和封套,將節(jié)點骨骼動畫模型中的每個網(wǎng)格數(shù)據(jù)頂點與一個或多個骨骼進行綁定,使得點完全受骨骼的影響。比較頂點動畫產(chǎn)生前后的坐標發(fā)現(xiàn),頂點的世界坐標發(fā)生了變化,但相對于骨骼的坐標沒有發(fā)生變化。基于上述方法,在動畫生成之前將頂點由模型空間變換到骨骼空間,在動畫生成之后將頂點由骨骼空間變換回模型空間,從而計算出頂點產(chǎn)生動畫后的世界坐標,完成頂點動畫的制作。
一般來說,網(wǎng)格數(shù)據(jù)頂點受多根骨骼的權(quán)重影響,本文假設(shè)一個網(wǎng)格頂點受到A 骨骼和B 骨骼的權(quán)重影響,如圖13所示。
Fig.13 Schematic diagram of vertices affected by the weight of two bones圖13 頂點受兩根骨骼權(quán)重影響示意圖
在動畫生成之前,頂點的世界坐標為S(x,y,z)。為計算出動畫生成后頂點的世界坐標W(x′,y′,z′),首先需要計算出頂點在動畫生成后在A 骨骼完全影響下的世界坐標Mwa,以及在B 骨骼完全影響下的世界坐標Mwb。式(5)為Mwa的計算公式,式(6)為Mwb的計算公式。
式中,Ms為頂點運動前的世界坐標,M0a為頂點運動前世界坐標轉(zhuǎn)換為相對A 骨骼的相對坐標,Ma1為頂點運動后相對A 骨骼的相對坐標轉(zhuǎn)換為的世界坐標。
式中,M0b為網(wǎng)格頂點在運動前世界坐標轉(zhuǎn)換為相對B骨骼的相對坐標,Mb1為頂點運動后相對B 骨骼的相對坐標轉(zhuǎn)換為的世界坐標。
考慮到不同骨骼對節(jié)點骨骼動畫模型網(wǎng)格數(shù)據(jù)頂點的影響權(quán)重不同,將上式計算出的Mwa和Mwb代入式(7)計算出一個網(wǎng)格頂點受兩根骨骼影響下動畫產(chǎn)生后的世界坐標,表示為:
式中,x1為A 骨骼對頂點的權(quán)重影響因子,x2為B 骨骼對頂點的權(quán)重影響因子。
在動畫播放階段,根據(jù)時間軸線獲得的所有骨骼矩陣解析出骨骼坐標,從而計算出網(wǎng)格頂點的世界坐標,完成對動畫的刻畫。二維動畫的傳統(tǒng)制作方式主要為逐幀動畫[22],即在每幀給壁畫圖元預(yù)先設(shè)定動作并進行擺放,使用補間幀動畫的方法完成壁畫圖元的情節(jié)仿真。逐幀動畫要求制作者熟練掌握運動學(xué)原理,以確保制作出的動畫符合人體運動規(guī)律,該方式呈現(xiàn)的動畫效果流暢度不高且只能制作位移動畫,制作過程需要耗費大量時間。圖14為基于逐幀動畫的壁畫圖元情節(jié)刻畫,主要呈現(xiàn)的是壁畫圖元關(guān)鍵幀的動畫制作。圖15 為采用本文方法制作的壁畫圖元情節(jié)刻畫。本文方法花費時間較少,且動畫效果相對流暢,能夠呈現(xiàn)出更多動作細節(jié)。
Fig.14 Mural element plot simulation based on frame-by-frame animation圖14 基于逐幀動畫的壁畫圖元情節(jié)刻畫
Fig.15 Mural element plot portrayal based on the method of this paper圖15 基于本文方法的壁畫圖元情節(jié)刻畫
基于對《文成公主入藏弘佛圖》壁畫情節(jié)和節(jié)點骨骼動畫模型類型的分析,在動作刻畫階段記錄骨骼關(guān)鍵幀,在動畫生成階段以時間軸線為基礎(chǔ)計算骨骼矩陣生成頂點的世界坐標,完成對壁畫情節(jié)的動態(tài)數(shù)字化。實驗平臺配置:操作系統(tǒng)為Windows10,中央處理器為Intel Core i7-9700,內(nèi)存大小為16GB。圖16 為壁畫情節(jié)內(nèi)涵仿真示意圖,可以看出本文方法成功實現(xiàn)了壁畫情節(jié)的動態(tài)數(shù)字化,相較于傳統(tǒng)逐幀動畫制作方法能夠呈現(xiàn)更多動作細節(jié)且更為流暢,更能體現(xiàn)壁畫的情節(jié)內(nèi)涵。
Fig.16 Mural plot connotation simulation圖16 壁畫情節(jié)內(nèi)涵仿真
本文針對壁畫文化的數(shù)字化保護問題,通過構(gòu)建節(jié)點骨骼動畫模型實現(xiàn)了壁畫文化的靜態(tài)數(shù)字化,通過深入剖析壁畫情節(jié)并結(jié)合骨骼動畫技術(shù)實現(xiàn)了壁畫文化的動態(tài)數(shù)字化。與傳統(tǒng)逐幀動畫相比,本文通過分析壁畫情節(jié)進行圖元的提取和特征分類,依據(jù)圖元角色三角面網(wǎng)格特征建立二維骨骼關(guān)系,并通過骨架節(jié)點與角色模型網(wǎng)格頂點的仿射關(guān)系計算頂點的世界坐標完成圖元角色的動作刻畫,所提出的壁畫圖元提取以及從單圖元到多圖元交互的方法實現(xiàn)了壁畫情節(jié)的多元數(shù)字化處理。但本文方法對于圖像缺失嚴重、顏色退化明顯的壁畫支持度存在一定問題,這將是下一步的研究方向。