張 進,方 珂,韓 悅
(南京航空航天大學,江蘇 南京 211106)
昆曲作為中國的戲曲之一,具有纏綿、柔美的特點。昆曲的表演也有其獨特的體系和風格。它最大的特點是抒情性強,動作細膩,歌舞結(jié)合巧妙、和諧。同時注重歌唱技巧的聲音控制,節(jié)奏和速度的起伏,以及發(fā)音的講究[1,2]。昆曲自成功“申遺”后便逐步邁入一個快速發(fā)展的階段。在該階段中,不斷涌現(xiàn)出大量新的昆曲編戲,同時高校中也舉辦很多昆曲進校園的主題活動以及創(chuàng)建一些高校曲社。然而,由于昆曲在傳統(tǒng)的表現(xiàn)形式和傳播方式上具有一定的瓶頸,所以隨著時代的變遷,昆曲面臨著一個重大問題,即如何繼承和發(fā)揚民族戲曲的傳統(tǒng),使其在歲月的長河中能夠繼續(xù)煥發(fā)出新的光彩[3-5]。
傳統(tǒng)的昆曲表演是通過搭建戲曲舞臺來進行表演展示的,觀眾也只能通過去劇院才能觀看一場精彩的昆曲演出。所以正是這種線下單一的傳播形式才造成目前昆曲的受眾人數(shù)較少,昆曲的傳播途徑受到了很大的限制[6]。VR作為一種新興的技術(shù),將其運用到昆曲表演當中,能夠有效的促進昆曲的傳播。
觀眾可以通過VR的頭部顯示,在虛擬空間中隨時隨地體驗昆曲表演舞臺,做到身臨其境。VR在昆曲傳播中具有兩大優(yōu)勢:第一,促進了昆曲表演在空間和時間上的多維更新,能夠吸引新一代觀眾。第二,在藝術(shù)家現(xiàn)場表演的基礎(chǔ)上,通過動作收集和真實記錄,記錄下藝術(shù)家們的表演精髓。最終通過VR的形式將昆曲中的手眼身法步生動地展示給觀眾,便于其反復觀察和模仿,從而能夠更好地傳承戲曲文化。VR讓昆曲以一種新的方式被解讀,而技術(shù)讓文化得以復興和傳承[7,8]。
昆曲的傳承與保護勢必要向創(chuàng)新技術(shù)領(lǐng)域去發(fā)展,VR技術(shù)作為新興數(shù)字媒體的技術(shù)代表,充分發(fā)揮虛擬世界的靈活生動性,可以作為一種新的形式引入昆曲傳統(tǒng)藝術(shù),揭開昆曲保護與傳承的新章程[9,10]。本研究主要基于虛擬現(xiàn)實引擎技術(shù),實現(xiàn)全面系統(tǒng)地優(yōu)化昆曲場景及人物建模、昆曲虛擬角色面部識別、骨骼綁定與跟蹤,試圖為昆曲表演提供一種更真實、更具交互性的應(yīng)用方法。
模型嵌入系統(tǒng)是能夠反映虛擬現(xiàn)實效果的第一個重要因素,對于場景交互的效率及流暢性具有舉足輕重的作用。該系統(tǒng)通過將模型劃分為三個不同的精度等級,實現(xiàn)在不一樣的視距中靈活切換模型。這種轉(zhuǎn)換必須遵循一個基本準則,即能夠確保高精度的前景模型、適中精度的中景模型、低精度的遠景模型。從而能夠使虛擬現(xiàn)實根據(jù)場景的不同視角進行實時優(yōu)化。
面部識別系統(tǒng)主要是獲取人臉的眼虹膜、鼻子、耳朵、嘴巴等五官的特征屬性,比如其位置、大小和距離等。隨后通過獲取后的屬性值來計算其幾何特征向量,用來描述該人臉的整體特征。該系統(tǒng)的核心技術(shù)是基于深度學習算法來識別人體部位并進行特征分析。其具體流程是利用人物面部活動的特征,與幾何相關(guān)的多數(shù)據(jù)形成的識別數(shù)據(jù)庫中的所有原始參數(shù)進行比較、判斷和確認等一系列過程。
骨骼綁定系統(tǒng)是針對已經(jīng)識別好關(guān)節(jié)部位的虛擬人物模型架設(shè)骨骼系統(tǒng),使其能夠按照后續(xù)的指令活動起來。該系統(tǒng)在輸入和輸出介質(zhì)的選擇上要注重真實動作與虛擬現(xiàn)實反饋機制的平衡,即如果虛擬行動者要執(zhí)行一個具體的身體動作,可以通過光學捕獲技術(shù)與虛擬角色的相同動作姿態(tài)進行交互。而且昆曲的身段訓練對身體部位參與度要求極高,動作的細膩程度決定VR展示的效果,所以在輸入介質(zhì)上的選擇往往需要考慮易用性。盡量能夠做到無需借助繁瑣的手持設(shè)備則可以實現(xiàn)真實與虛擬互動的高度一致效果。
渲染系統(tǒng)一般作為虛擬現(xiàn)實系統(tǒng)中的最后一個流程,主要負責驅(qū)動整個渲染管線以及全局配置管理等,使得最后的圖像能夠符合虛擬場景建設(shè)的要求。它可以被認為是將渲染所需的所有資源串在一起,將它們轉(zhuǎn)換為一系列渲染指令到渲染硬件接口,然后交給不同的圖形API來執(zhí)行真實的繪圖。
藍圖系統(tǒng)是引擎中一個面向?qū)ο蟮?、基于?jié)點的界面可視化腳本系統(tǒng)。開發(fā)人員通過在編輯界面去創(chuàng)建所需要的功能模塊節(jié)點,然后根據(jù)規(guī)定的邏輯原則去連接每個功能模塊節(jié)點,從而實現(xiàn)各種行為和功能。相關(guān)的功能模塊節(jié)點可以是每個實例的對象構(gòu)造、功能函數(shù)、事件以及變量。
通過對上述各個分系統(tǒng)的工作原理進行分析,可以清晰得出VR在昆曲交互表演方面的制作思路。本文主要從人物及場景搭建模塊、Kinect數(shù)據(jù)(彩色和深度數(shù)據(jù))采集模塊、骨骼節(jié)點信息獲取和綁定模塊、場景更新模塊、渲染系統(tǒng)等展開研究。首先,在Unity3D平臺上搭建好虛擬角色與場景模型,然后通過Kinect設(shè)備獲取人體深度、彩色以及骨骼關(guān)節(jié)點信息,最后在Unity腳本中采用動態(tài)庫的方式對Kinect數(shù)據(jù)進行調(diào)用和綁定,實現(xiàn)對虛擬人物的關(guān)節(jié)實時更新,整個設(shè)計流程如圖1所示。
圖1 工作流程圖
本文模型的創(chuàng)建過程需要用到的引擎工具是3dsMax和Unity3D,首先是通過使用3dsMax來對舞臺場景以及昆曲表演人物進行建模,然后在構(gòu)建和完善好所有模型后需要將其導入到Unity3D虛擬現(xiàn)實制作平臺中。具體建模流程如下。
4.1.1 場景建模
場景模型主要分為建筑和場景建模兩個部分。建筑建模則是昆曲表演舞臺的構(gòu)建,可以使用3dsMax軟件對其進行構(gòu)建,如圖2所示。圖中昆曲舞臺的設(shè)計模型尺寸設(shè)置為1100cm (L) × 800cm (W) × 300cm (H),該舞臺自上而下可以大致劃分為坡頂、椽子、拱梁、其它道具和鋪裝五個部分。其中道具部分可能會存在一些復雜的道具模型構(gòu)建,比如桌椅、板凳、箱子以及各種裝飾品等,那么在模型布線階段遵循四邊形布線的原則,在道具的轉(zhuǎn)彎區(qū)域通過增加布線數(shù)量來增強輪廓細節(jié),而平整區(qū)域減少布線,確保整個場景的布線疏密有當。
圖2 昆曲舞臺場景建模
場景部分則屬于建筑外部區(qū)域,可以采用3dsMax中自帶的場地繪制功能進行建立,這樣便可以有效地減少創(chuàng)建過程中模型的面數(shù),從而能夠大大減小模型的占據(jù)內(nèi)存空間大小,提高運行的效率。
4.1.2 角色建模
角色建模主要可以劃分為角色模型建立、人體骨架構(gòu)建和蒙皮綁定三個部分。
1)角色模型建立
角色模型的構(gòu)建最重要的步驟就是人物的初始姿態(tài)設(shè)定,即綁定姿態(tài)。初始姿態(tài)的選擇決定蒙皮綁定階段的高效準確性。而且本文創(chuàng)建的是昆曲人物,故初始姿態(tài)的設(shè)置就顯得尤為重要。實驗中發(fā)現(xiàn)假如將人物的初始動作姿態(tài)設(shè)置為手臂自然下垂的狀態(tài),將會存在一個明顯的問題,那就是表演者在將手臂抬起時過程中很容易造成關(guān)節(jié)處的區(qū)域缺損,即“皮膚凹陷”的狀況。所以,本文在角色模型構(gòu)建中選擇了一種‘T-Pose’姿態(tài),也就是表演者的雙腿并攏站立,手臂向兩側(cè)伸直。
圖3 昆曲角色模型
2)人體骨架構(gòu)建
人體有著結(jié)構(gòu)嚴謹而復雜的骨骼框架系統(tǒng),骨骼與骨骼之間共存有200多個關(guān)節(jié)自由度,若在此基礎(chǔ)上對昆曲演員的所有骨骼進行3D建模,則需要對演員的骨骼模型進行分類和簡化。簡化原則主要是把一些活動關(guān)節(jié)和骨骼進行合并。本文運用Maya軟件針對昆曲選段里的演員設(shè)計了一套虛擬骨架結(jié)構(gòu),其中演員的活動關(guān)節(jié)在骨架結(jié)構(gòu)中是以多點狀球形結(jié)構(gòu)呈現(xiàn)的,方便了昆曲演員在運動狀態(tài)下的數(shù)據(jù)綁定。如圖4是本文設(shè)計的人體“T”型骨架模型,共展示了昆曲演員表演時會用到的30個關(guān)節(jié)點,但為了與Kinect采集的骨骼節(jié)點建立起系統(tǒng)內(nèi)部的匹配關(guān)聯(lián),本文僅選用了昆曲演員“T”骨架的20個主要關(guān)節(jié)來進一步建立人體運動學關(guān)系。
圖4 人物骨架結(jié)構(gòu)
3)蒙皮綁定
本文采用對偶四元數(shù)線性蒙皮(DLB)算法來提取虛擬人物的骨骼蒙皮,該算法的流程可以采用式(1)來表示:
(1)
圖5 昆曲人物骨骼蒙皮
Kinect作為一種數(shù)據(jù)集成算法,是直接通過傳感器去獲取記錄人物的彩色、深度及音頻三種數(shù)據(jù),同時可以利用收集來的圖像信息進行骨骼跟蹤、身份識別、語音識別,架構(gòu)如圖6所示。本文主要通過Kinect來采集昆曲表演者的深度圖像信息,并對其進行人體骨骼的識別。
圖6 Kinect架構(gòu)圖
1)深度圖像獲取
Kinect體感裝置是利用光編碼的原理,采用紅外發(fā)射器發(fā)射紅外線鐳射光,然后鏡頭前的衍射鏡片diffuser將透過的鐳射光均勻投射在測量空間當中,從而能夠形成鐳射光散斑。接著與CMOS感光芯片中已經(jīng)標注好的數(shù)據(jù)進行比較,輸出具有深度信息的三維深度圖像,如圖7所示。在獲得圖像的深度信息后,還需要去采集記錄下人體的骨骼信息進行骨骼識別。
圖7 深度信息
2)骨骼數(shù)據(jù)提取
Kinect設(shè)備采集人體骨骼數(shù)據(jù)的流程圖如圖8所示,主要包括三個步驟:人體輪廓識別、人體部位識別、人體骨骼點定位。
圖8 骨骼數(shù)據(jù)提取
第一步,人體輪廓識別。在深度圖像中定位人體輪廓,實現(xiàn)人體目標輪廓完整的識別與分割。Kinect設(shè)備通過人體的肢體動作與手勢,可快速獲取深度信息并優(yōu)先分割出靠近傳感器的一側(cè)。當識別出人體大致輪廓或者檢測到有連體“大”字出現(xiàn),Kinect設(shè)備會開啟對像素點的逐一掃描,建模并統(tǒng)計出整個區(qū)域的深度數(shù)據(jù),然后定位判斷該點是否是隸屬于人體的像素區(qū),最終,進一步檢測像素點陣的邊緣輪廓實現(xiàn)對背景與人體輪廓的區(qū)分。
第二步,人體部位識別。身體各部位的協(xié)調(diào)運作形成了人體的動作。通過第一步對人體和背景進行分割后得到只有人體輪廓的圖像,隨后則要識別并分類出圖像中人體的頭部、四肢、驅(qū)干等主要部位?;贙inect的人體部位識別原理是利用目前主流的機器學習算法,通過收集大量昆曲表演者的圖像信息用于機器學習訓練保存最優(yōu)的模型,通過不同部位的具有不同的特征來實現(xiàn)對各部位的識別,結(jié)果如圖9所示。
圖9 人體部位識別
第三步,人體骨骼點定位。人體骨骼點定位。識別人體部位后,根據(jù)Kinect已識別的人體部位中識別出更多的人體骨骼關(guān)節(jié)點,以提高動作捕捉的準確性。本文采用深度學習的方法來預測出各個部位對應(yīng)的骨骼關(guān)節(jié)點,如圖10所示。
圖10 人體骨骼點定位
經(jīng)過前面的三個步驟,人體各個部位的骨骼點位置可以在坐標中顯示出來并加以記錄,然后使用SDK軟件中的Skeleton功能達到對骨骼的實時跟蹤效果。
為了能夠去控制虛擬人物的運動姿態(tài),本文在Unity3D開源軟件中通過自定義Unity模塊來控制Kinect設(shè)備的數(shù)據(jù)采集及記錄更新,同時采用動態(tài)庫提取人物角色的信息。Unity腳本的部分代碼如表1所示,一共包含了4個端口:Kinect_Init端口的作用是初始化設(shè)備;Kinect_Close端口用來控制數(shù)據(jù)流的開合;Kinect_Update端口具有數(shù)據(jù)流更新的功能;Kinect_GetData端口的作用是采集Kinect數(shù)據(jù)。除此以外,在編寫Unity腳本代碼時,還額外加入了一個Update函數(shù),主要是負責更新Kinect數(shù)據(jù)流,從而能夠得到所需的骨骼、深度以及彩色信息,同時還可以更新模型。
Unity腳本部分代碼:
[Dlllmport(@"KinectDriverDLL")]
private static extern void kinect_Init();[DllImport(@"KinectDriverDLL")]
private static extern void kinect_Close();[Dlllmport(@"kinectDriverDLL")]
private static extern void kinect_Update();[DllImport(@"KinectDriverDLL")]
private static extern void Kinect_GetData(int[] n,float[] skeleton,byte[]depth,byte[] color);
在實驗中可以調(diào)用Unity腳本中的接口來直接獲取Kinect設(shè)備中的數(shù)據(jù)信息,操作較為簡單方便。但是如果想要得到人物的骨骼數(shù)據(jù),則需要在調(diào)用Kinect_GetData()端口前,必須要去先定義一個20*3大小的float類型數(shù)組,便于存儲20個骨骼點對應(yīng)的三個坐標數(shù)據(jù),如表2所示。然后基于Kinect數(shù)來構(gòu)建關(guān)節(jié)點與運動控制節(jié)點之間的模型,進而控制虛擬人物角色。所以在將創(chuàng)建好的人物模型導入到Unity3D中后,必須去求解出人物模型的關(guān)節(jié)點與Kinect設(shè)備采集到的20個骨骼點數(shù)據(jù)進行一一配對。
骨骼點數(shù)據(jù)定義:
float[] SkeletonPosData1f=new float[20 * 3];
Kinect_GetData(i,SkeletonPosData1f,pDepth,pColor);
1)場景渲染
場景渲染是將昆曲舞臺的光影信息烘托到貼圖上,能夠在舞臺場景中沒有虛擬照明燈光的條件下,構(gòu)建的場景模型還能具有真實的感光效果以及真實的表面紋理,最終達到既可以加快渲染速度又能夠有效節(jié)省系統(tǒng)資源的目的。
雖然貼圖能夠在一定程度上提高昆曲舞臺的視覺體驗效果,但是在實際的實驗過程中會出現(xiàn)一些問題,比如表演中動態(tài)的對象往往無法融入到靜態(tài)的場景中,導致場景中的光線很不自然。通常的方法是針對動態(tài)的對象進行實時烘焙,但是這樣會降低模型的工作效率,消耗大量時間。因此本文在場景中靈活地設(shè)置一些Light Probes檢測器,通過去獲取周圍的光和暗信息,然后對動態(tài)對象相鄰的檢測器進行插值,得到插值結(jié)果作用于動態(tài)對象上,從而達到實現(xiàn)靜態(tài)場景與動態(tài)對象的實時融合效果。
2)面部識別優(yōu)化
昆曲演員的頭飾裝扮和面部妝容的修飾是演出前必須重視的部分,尤其是在旦角裝扮中。
因此對于面部的動作捕捉要求提高,針對面部模型進行優(yōu)化從而展現(xiàn)出更加逼真的表演人物。系統(tǒng)采用的結(jié)構(gòu)光原理,將光線投射至面部方向,昆曲演員臉部的形狀是通過向臉部投射光,然后利用設(shè)備讀取反射回的光信息來分析后確定的,所以投射光能夠影響表演者面部形狀的準確度。本文利用點投影儀將肉眼看不見的3萬多個光點投射到人臉上,形成點陣,然后用紅外鏡頭讀取點陣圖案,并結(jié)合前面相機拍攝的人臉進行計算,這樣便可獲取更加真實的人臉表情深度信息,構(gòu)建真實的人臉三維模型。
3)重定向算法設(shè)計
在昆曲表演中,為了能夠直觀地體現(xiàn)不同人物角色的身份以及性格等特征,通常會在服裝中使用水袖、霞帔、點翠等元素,而這些服裝也會隨著表演者的動作變化而發(fā)生擺動。這會導致在進行人物跟蹤的過程中,虛擬畫面中會出現(xiàn)服裝的重影及抖動等相關(guān)的失真現(xiàn)象,如圖11所示。本文模型優(yōu)化的目的是將運動數(shù)據(jù)重定向到虛擬昆曲服裝模型中,同時也要能夠滿足虛擬畫面的實時性要求,設(shè)計了一種基于運動捕捉數(shù)據(jù)的密集重復性的重定向技術(shù)。該技術(shù)的核心之處就是將逆向率控制器與基于逆向運動學的重定向技術(shù)相結(jié)合。
圖11 水袖的重影及抖動
4)后期特效優(yōu)化
光溢出是一種真實的光照現(xiàn)象,所以為了能夠讓虛擬圖像在視覺上更加的真實,可以通過后期特效優(yōu)化得到一種光溢出的效果。比如觀察暗的背景中亮的對象時就會出現(xiàn)光溢出的現(xiàn)象,如圖12所示。但是添加更亮的對象也會產(chǎn)生其它的一些反面效果,比如條紋、鏡頭眩光等,所以導致在渲染非常亮的對象時,并不能很好的呈現(xiàn)出預期的效果。因此,當光源射到薄膜或者相機前時,可以通過模擬在眼睛中出現(xiàn)的效果來幫助表現(xiàn)對象的相對亮度。
圖12 光溢出
VR作為當前新興的數(shù)字媒體技術(shù),其沉浸性、交互性的特點對傳統(tǒng)藝術(shù)的傳承傳播具有積極的推動作用。昆曲藝術(shù)與現(xiàn)代科技的結(jié)合,將傳統(tǒng)文化用虛擬化、數(shù)字化的方式呈現(xiàn),加強VR和昆曲藝術(shù)之間的互動性,促使兩者都得到共同的進步。本文基于高真實度昆曲交互表演系統(tǒng)設(shè)計對昆曲的傳播與教學體驗具有積極的推動作用,其具體優(yōu)勢如下:
1)構(gòu)建以高真實度環(huán)境為基礎(chǔ)的智能交互性體驗系統(tǒng)。使昆曲虛擬演員的服飾、妝容、道具的仿真細節(jié)更逼真。
2)通過引擎中的實時渲染能夠構(gòu)建更逼真的昆曲戲臺場景模型,能夠優(yōu)化昆曲虛擬角色的靜態(tài)造型與動態(tài)肢體動作的連貫性,減少延遲。
3)基于此系統(tǒng)能夠促進昆曲演員排演的積極性,適應(yīng)昆曲表演場景的多元化,擴大昆曲受眾的輻射范圍,發(fā)展昆曲身段教學,數(shù)字化傳播昆曲經(jīng)典劇目,使百戲之祖歷久彌新。