李 豪,程明智,劉 龍
(北京印刷學院新媒體學院,北京 102600)
中國木偶戲源遠流長,提線木偶是中國木偶戲四大種類之一,是通過與木偶相連的提線來控制木偶身體局部,全國多個地方的提線木偶戲都被列入國家非物質文化遺產保護目錄[1]。但提線木偶的操作復雜,傳承人培養(yǎng)周期長,而且隨著新媒體的發(fā)展,觀眾們也更青睞于影視、游戲等視覺聽覺沖擊力更強的娛樂活動,這些原因都導致提線木偶面臨失傳的危險[2]。要想使更多人關注提線木偶,就需要使用更加現(xiàn)代化的展示和交互手段來吸引人們的關注。
移動增強現(xiàn)實技術,是移動智能設備和增強現(xiàn)實技術融合發(fā)展的新產物,它結合了增強現(xiàn)實的3I特性(沉浸性、想象性、交互性)、多技術融合特性和移動智能設備的便攜性、多感知性[3]。它通過將虛擬物體實時疊加生成在真實物體上,并且對于用戶的輸入可以做出實時的反饋,極大地提高了用戶的沉浸感和交互性。使用移動增強現(xiàn)實技術的應用給人帶來全新的體驗,如2016年大火的移動增強現(xiàn)實游戲Pokemon Go[4],讓人們走出家門,上街去捕捉虛擬精靈。而對于通過移動增強現(xiàn)實技術來進行虛擬角色控制的研究也越來越多,如,Anderegg R等人使用智能手機控制角色,就像使用一根桿一頭連著角色,一頭連著手機,來控制角色[5]。該系統(tǒng)只實現(xiàn)了對角色的整體控制,并沒有實現(xiàn)對角色身體局部的控制。因此,本文在此基礎上設計了一款移動增強現(xiàn)實下的十字提線木偶交互系統(tǒng),來實現(xiàn)對虛擬角色身體局部精確的控制。
十字提線木偶是對提線木偶的簡化,將表演時使用的提線木偶的提線由16—30根,簡化為4根提線,作為一種兒童玩具在民間更為普及??梢詷O大地提高普通大眾可體驗性的提線木偶操控,對提線木偶的傳承具有重要意義。
根據(jù)對十字提線木偶交互進行分析后,將該系統(tǒng)分為人機交互、慣性傳感器數(shù)據(jù)管理、模型動畫生成三個模塊進行設計。人機交互模塊,使得系統(tǒng)理解用戶意圖做出合適的響應;慣性傳感器數(shù)據(jù)管理模塊,對傳感器數(shù)據(jù)進行獲取和進一步優(yōu)化處理;模型動畫生成模塊,利用反向動力學動畫原理,使用智能手機姿態(tài)角作為控制木偶模型身體局部關節(jié)點動作,來生成模型局部動畫。系統(tǒng)總體架構,如圖1所示。
為充分利用移動增強現(xiàn)實的交互特性,突破傳統(tǒng)的UI、按鍵、搖桿等交互方式,實現(xiàn)更自然、更人性化的人機交互方式。本文以用戶與手機姿勢的交互作為人機交互方式,并與顯示界面相結合對用戶輸入進行讀取和引導,人機交互模塊結構圖,如圖2所示。用戶通過在橫向縱向兩個方向翻動手機,翻轉時手機中內置的陀螺儀、加速度傳感器將產生手機姿態(tài)變化數(shù)據(jù),再利用相關SDK API接口獲取手機姿態(tài)變化數(shù)據(jù),將數(shù)據(jù)處理后,在顯示界面進行數(shù)據(jù)的顯示和用戶翻轉角度的引導。
圖1 系統(tǒng)總體架構
圖2 人機交互模塊結構
在此模塊中主要對獲取到的手機內置慣性傳感器數(shù)據(jù)進行降低誤差以及增強數(shù)據(jù)健壯性處理。由于陀螺儀和加速度傳感器本身存在測量的誤差,因此需要對得到的數(shù)據(jù)進行處理,減少由于傳感器本身造成的誤差,以及對系統(tǒng)造成的影響[6]。采用數(shù)據(jù)融合領域最為常用的互補濾波和卡爾曼濾波器結合來將陀螺儀和加速度數(shù)據(jù)融合[7],提高手機姿態(tài)測量的精度。如圖3所示。
圖3 互補濾波和卡爾曼濾波相結合原理圖
此模塊是將慣性傳感器數(shù)據(jù)通過互補濾波與卡爾曼濾波聯(lián)合優(yōu)化,來得到一個精度較高的姿態(tài)角數(shù)據(jù),并以姿態(tài)角數(shù)據(jù)此作為虛擬木偶身體局部運動的判斷條件,來決定模型身體如何運動。以正向和逆向旋轉分別控制虛擬木偶的單手或單腳,與現(xiàn)實中十字提線木偶控制方法類似,這樣使用戶交互時,能夠實現(xiàn)實時的交互響應,使系統(tǒng)更具沉浸感。
首先需要為項目搭建AR環(huán)境,整個開發(fā)過程需要在AR環(huán)境中不斷進行調試和改進。將HUAWEIAR SDK插件導入Unity項目中構建AR環(huán)境。如圖4所示。
圖4 構建AR環(huán)境
在Unity內搭建人機交互界面,如圖5所示,左上角的橫滾角和俯仰角用來顯示當前手機姿態(tài)角狀態(tài)。右邊的ψ-1、ψ-2、ψ-3三個選項,表示使用不同算法得到的手機姿態(tài)角。其中ψ-1表示將得到的慣性傳感器數(shù)據(jù)直接進行解算得到手機姿態(tài)角;ψ-2表示將加速度計數(shù)據(jù)直接作為觀測量,將陀螺儀數(shù)據(jù)作為狀態(tài)量,通過卡爾曼濾波得到手機姿態(tài)角;ψ-3表示先使用互補濾波對加速度計數(shù)據(jù)和陀螺儀數(shù)據(jù)進行處理得到經校正的陀螺儀數(shù)據(jù),將其當作狀態(tài)量,將加速度數(shù)據(jù)作為觀測量,再經卡爾曼濾波得到的姿態(tài)角。Set Start Status按鈕表示用戶選定手機的初始姿態(tài)角度。
在慣性傳感器數(shù)據(jù)管理模塊,使用加速度計測量的姿態(tài)角作為觀測值,使用經互補濾波處理后的姿態(tài)角作為狀態(tài)值,則其卡爾曼濾波流程,如圖6所示。
圖5 人機交互界面
圖6 卡爾曼濾波迭代計算流程
卡爾曼濾波更新過程中,相關變量預設參數(shù)分別為:
在模型動畫生成模塊,將木偶模型導入Unity中,并導入Final IK 1.7插件,以此實現(xiàn)對木偶模型骨骼關節(jié)的反向控制,如圖7所示,運行后可以通過控制木偶模型的身體局部來使木偶模型全身做出相應的動畫效果。
圖7 使用Final IK實現(xiàn)反向動畫控制
系統(tǒng)運行的硬件配置:一臺Android版本為10的安卓手機,并且該手機具備:TOF立體深感鏡頭、陀螺儀、重力傳感器等硬件。
移動增強現(xiàn)實下十字提線木偶交互系統(tǒng)的實現(xiàn)結果如下:規(guī)定智能手機的屏幕面對用戶,手機揚聲器在下,為相應方向的正方向。用戶自定義設置初始角度,緩慢轉動手機。以手機為軸,前后轉動,可以通過手機屏幕觀察到提線木偶模型單腳隨著手機的轉動,依次運動,并且身體其他部位做出與之相適應的動作。以手機為軸,左右轉動,可以觀察到提線木偶模型單手隨著手機的轉動,依次運動,并且身體其他部位做出與之相適應的動作。如圖8所示。
圖8 轉動橫滾角控制木偶腳部和手部運動
實驗結果表明,當用戶自定義設定初始角度之后,橫向或縱向緩慢旋轉手機,虛擬角色身體局部會實時響應,做出相應的動作。并且虛擬角色對于用戶交互的響應精度和準確度,隨所選算法遞增(ψ-1<ψ-2<ψ-3)。該應用達到系統(tǒng)設計的預期效果。
本文設計并實現(xiàn)了一個移動增強現(xiàn)實下十字提線木偶交互系統(tǒng)。該系統(tǒng)使用手機姿態(tài)角中的橫滾角和俯仰角來模擬現(xiàn)實中十字提線木偶的十字架控制器,并通過反向動力學動畫控制來模擬提線對虛擬木偶身體局部的控制。本文采用互補濾波和卡爾曼濾波結合的方式對傳感器原始數(shù)據(jù)進行處理,得到一個精度較高的手機姿態(tài)角,從而準確地響應用戶交互,最終達到了類似于現(xiàn)實中控制十字提線木偶的效果。該交互系統(tǒng),目前只實現(xiàn)了對虛擬角色肢體的簡單的控制,并不能控制虛擬角色做出更加復雜的動作,未來需要引入更加精確的控制器和更強大數(shù)據(jù)融合算法,該交互方式也可以從類人形角色擴展到其他更多種類的四足角色上。