張 進(jìn),汪浩文,板俊榮*
(1. 南京航空航天大學(xué)國(guó)家文化產(chǎn)業(yè)研究中心,江蘇南京211106;2. 南京航空航天大學(xué)藝術(shù)學(xué)院,江蘇南京211106)
由于聲樂教學(xué)實(shí)踐性強(qiáng),演唱過程中的情感體驗(yàn)與表達(dá)極為豐富,在目前的虛擬現(xiàn)實(shí)教育領(lǐng)域中應(yīng)用較少。在一些為數(shù)不多的虛擬現(xiàn)實(shí)教學(xué)應(yīng)用中存在真實(shí)性差、交互體驗(yàn)不夠理想、教學(xué)的可視化內(nèi)容相對(duì)單一,以及流暢度欠佳的情況。這些問題主要?dú)w納如下:
首先是部分研究者通過虛擬全景視頻技術(shù)(ArcSoft Panorama Maker),制作三維全景圖像數(shù)據(jù),使演唱者能夠在全景范圍內(nèi)跟隨預(yù)設(shè)的教學(xué)主線進(jìn)行視聽交互,獲取不同風(fēng)格的視聽體驗(yàn)效果[1-4]。在感知體驗(yàn)上缺少深度交互信息,缺乏將演唱情緒與表情語(yǔ)言惟妙惟肖的進(jìn)行展現(xiàn),難以建立具備深度性的交互功能。
其次是部分研究者通過次世代的引擎技術(shù)(VRPlatform),制作三維場(chǎng)景的深度信息,能夠較全面地為用戶提供關(guān)于演唱交互方面的情景選擇,也能夠?qū)崿F(xiàn)一定的面部表情綁定[5-6],但是在渲染及流暢性上存在真實(shí)性差、圖形算法不夠優(yōu)化,畫面實(shí)時(shí)計(jì)算極易出現(xiàn)卡頓。
基于對(duì)以上技術(shù)優(yōu)缺點(diǎn)加以分析,本研究試圖以虛擬現(xiàn)實(shí)引擎技術(shù)(Unity3D)作為主要制作工具,系統(tǒng)性地針對(duì)建模、面部表情、手勢(shì)捕捉、多角度相機(jī)記錄進(jìn)行全面的優(yōu)化設(shè)計(jì),以此為聲樂演唱提供更加真實(shí)、細(xì)膩、交互多元化的應(yīng)用方法。
在虛擬現(xiàn)實(shí)中,模型嵌入系統(tǒng)是表述虛擬現(xiàn)實(shí)體驗(yàn)效果的前期重要因素,它的幾何分割功能能夠?qū)?chǎng)景交互體驗(yàn)的流暢度起著決定性作用。即將同一模型分為3個(gè)等級(jí)的LOD(levels of detail)精度規(guī)范,以此在不同的視距范圍內(nèi)將模型精度靈活切換[7-10]。這種切換方式應(yīng)遵循的原則是能夠確保前景的模型精度相對(duì)較高,中景的模型精度適中或使用簡(jiǎn)模表達(dá),而遠(yuǎn)景的模型精度相對(duì)較低,甚至可以通過貼圖遮罩或圖像替代的方式進(jìn)行表達(dá),進(jìn)而使虛擬現(xiàn)實(shí)能夠根據(jù)場(chǎng)景的不同視角進(jìn)行實(shí)時(shí)優(yōu)化。
人臉的面部捕捉主要是先確定面部的眼虹膜、鼻翼、嘴角等五官輪廓的大小、位置、距離等屬性,然后計(jì)算出它們的幾何特征量,使其能夠形成整體描述該面部的特征向量[11]。其技術(shù)的核心原則是遵循局部人體特征分析與神經(jīng)識(shí)別算法。主要目的是利用人體面部活動(dòng)的特征去與幾何關(guān)系多數(shù)據(jù)形成的識(shí)別數(shù)據(jù)庫(kù)中所有的原始參數(shù)進(jìn)行比較、判斷及確認(rèn)的一系列過程。
手勢(shì)捕捉系統(tǒng)基于Oculus quest2手部定位追蹤技術(shù),對(duì)人體手部的關(guān)節(jié)部位進(jìn)行關(guān)于空間坐標(biāo)的捕捉,同時(shí)實(shí)時(shí)傳輸?shù)教摂M現(xiàn)實(shí)的動(dòng)畫過程中[12]。其主要原理是采集每根手指的彎曲姿態(tài),通過數(shù)據(jù)歸一算法使所有手指形成統(tǒng)一的單字節(jié)數(shù)據(jù)格式,以減少冗余數(shù)據(jù),同時(shí)利用平滑處理算法將手指之間的時(shí)空參數(shù)進(jìn)行處理,使手勢(shì)的骨骼及肌肉形成自然、柔和的運(yùn)動(dòng)狀態(tài)。此外,手勢(shì)捕捉的過程中會(huì)形成基于明顯特征的分割方法,主要包括膚色分割與手形分割。
1)膚色分割:是一種通過使用集群膚色的方式,在顏色空間中建立精準(zhǔn)坐標(biāo)下的膚色模型,并借助RGB色域?qū)δw色進(jìn)行綜合確認(rèn)。
2)手形分割:是一種基于多模式融合的分割方法,主要是為了克服復(fù)雜環(huán)境對(duì)手部主要結(jié)構(gòu)分割條件的限制,完善手型的表觀特征與運(yùn)動(dòng)信息。常用的策略有分割幾何特征、可變形特征及空間覆蓋型特征等。
虛擬現(xiàn)實(shí)中的相機(jī)系統(tǒng)通常為第一視角輸入,也是一種主動(dòng)視覺標(biāo)定的形式,能夠有效記錄人眼觀察到的動(dòng)態(tài)視景[13-15]。與傳統(tǒng)虛擬相機(jī)不同的是它并不需要使用已知尺寸的標(biāo)定物,通過建立標(biāo)定物上的坐標(biāo)點(diǎn)及圖像點(diǎn)進(jìn)行對(duì)應(yīng)的方式,就可以及時(shí)捕捉動(dòng)態(tài)的序列幀圖像,但是在一定程度上缺少增穩(wěn)功能,如果需要得到穩(wěn)定的攝像功能,需要在虛擬現(xiàn)實(shí)的程序底層做好必要的程序優(yōu)化工作。
基于對(duì)以上系統(tǒng)原理進(jìn)行分析,可以歸納出虛擬現(xiàn)實(shí)在聲樂教學(xué)方面的制作思路應(yīng)從三維建模、面部捕捉、手勢(shì)捕捉、相機(jī)處理等若干方面進(jìn)行應(yīng)用研究:首先,需要借助3ds Max作為模型建立的初始工具,分別完成場(chǎng)景及演唱角色的建模工作,同時(shí)在所有模型完善后應(yīng)將場(chǎng)景模型與角色模型全部導(dǎo)入U(xiǎn)nity3D虛擬現(xiàn)實(shí)制作平臺(tái),利用平臺(tái)中的模型嵌入系統(tǒng)對(duì)模型進(jìn)行適當(dāng)?shù)膸缀畏指?,確定好不同層級(jí)的LOD與場(chǎng)景的應(yīng)對(duì)關(guān)系。其次,配合面部捕捉系統(tǒng)對(duì)演唱角色的面部進(jìn)行識(shí)別及綁定,精準(zhǔn)處理好面部主要肌肉結(jié)構(gòu)的定位點(diǎn)。再次,通過手勢(shì)捕捉系統(tǒng)完成手部骨骼節(jié)點(diǎn)的確認(rèn),將相應(yīng)的數(shù)據(jù)與虛擬現(xiàn)實(shí)引擎接口進(jìn)行聯(lián)立計(jì)算。最后,通過對(duì)相機(jī)系統(tǒng)進(jìn)行程序優(yōu)化的方式,實(shí)時(shí)記錄好演唱者在演唱過程中的具體表現(xiàn),便于后續(xù)能夠借助一定的途徑直觀地分析、評(píng)價(jià)演唱者應(yīng)用虛擬現(xiàn)實(shí)前后的變化??傮w而言,上述流程設(shè)計(jì)是以一種高效、簡(jiǎn)潔的制作思路為主,如圖1。
圖1 工作流程設(shè)計(jì)
模型在虛擬現(xiàn)實(shí)的制作及體驗(yàn)過程中至關(guān)重要。模型的結(jié)構(gòu)準(zhǔn)確性、面片分配狀況、精度等問題將直接影響虛擬現(xiàn)實(shí)的仿真程度與交互程度。
4.1.1 場(chǎng)景模型
以某T型舞臺(tái)場(chǎng)景為例,其主要制作方法為以下3個(gè)步驟:
1)首先,利用3ds Max中樣條線編輯創(chuàng)建3000cm(長(zhǎng))×2200cm(寬)×1000cm(高)的T型舞臺(tái),將其轉(zhuǎn)換為多邊形編輯,將各個(gè)頂點(diǎn)焊接為整體,以便于后續(xù)對(duì)各個(gè)邊界布線連接;
2)其次,利用網(wǎng)格布線對(duì)整體模型的細(xì)節(jié)進(jìn)行處理,配合連接、擠出、倒角、插入等功能細(xì)化舞臺(tái)模型的局部結(jié)構(gòu),對(duì)于舞臺(tái)中心地面、背景、延長(zhǎng)臺(tái)上的造型可以通過獨(dú)立建模后再對(duì)其進(jìn)行整體的橋接處理;
3)最后,利用幾何放樣配合多邊形編輯,對(duì)舞臺(tái)周邊的觀眾席、頂部燈架等輔助模型進(jìn)行創(chuàng)建,建模過程中可以利用鏡像、復(fù)制簡(jiǎn)模的手段為主,逐漸豐富好整體場(chǎng)景,如圖2。
圖2 舞臺(tái)場(chǎng)景模型
4.1.2 角色模型
角色模型應(yīng)在盒體元素下創(chuàng)建,利用多邊形編輯對(duì)角色面部、肢體進(jìn)行整體布線,以四邊形布線為主,盡量確保在面部五官、肢體關(guān)節(jié)等需要虛擬現(xiàn)實(shí)動(dòng)畫運(yùn)動(dòng)的區(qū)域重點(diǎn)布線,細(xì)化結(jié)構(gòu)關(guān)系,在一些不參與動(dòng)畫運(yùn)動(dòng)的區(qū)域可以通過塌陷、面片合并等手段對(duì)模型面數(shù)進(jìn)行有效控制,如圖3。將模型中無(wú)法避免的三角形布線放置在角色不參與動(dòng)畫計(jì)算的隱蔽區(qū)域,避免模型在虛擬現(xiàn)實(shí)的動(dòng)畫過程中出現(xiàn)面片褶皺等不利現(xiàn)象。
圖3 角色模型
將模型整體導(dǎo)入U(xiǎn)nity3D中,設(shè)置預(yù)覽虛擬現(xiàn)實(shí)的幀率FPS幀率為70~90,在引擎中檢測(cè)好模型面片的法線、頂點(diǎn)閉合情況,并在藍(lán)圖接口處,通過代碼植入的方式對(duì)場(chǎng)景的細(xì)微局部進(jìn)行二次優(yōu)化,以滿足模型的幾何分割、空間坐標(biāo)、面片處理、渲染烘焙等幾個(gè)方面的優(yōu)化工作,其程序設(shè)計(jì)如下:
int main(int,char**){
osgProducer::Viewer viewer;∥創(chuàng)建一個(gè)場(chǎng)景
viewer.setUPViewer():
∥加載osga地形模型到節(jié)點(diǎn)變量中
osg::Node* node=osgDB::readNodefile(“Wutai.osga”):
viewer.setSceneData(node);∥加載模型到場(chǎng)景中
∥進(jìn)入渲染循環(huán)
viewer.realize();
while(!viewer.done()){
viewer.sync();∥等待所有cull和draw線程的完成
viewer.update();∥通過遍歷節(jié)點(diǎn)更新場(chǎng)景
viewer.frame();∥渲染更新結(jié)果
}
viewer.sync();∥退出程序前等待所有cull和draw線程的完成
return;
}
由于系統(tǒng)采用的結(jié)構(gòu)光原理,需要通過向面部方向投射光線,再利用讀取物體表面光照信息數(shù)據(jù)來(lái)確定人臉形狀。為此,在選擇面部采集設(shè)備時(shí),除了需要配置距離傳感器、話筒、前置攝像頭外,還需要滿足具備依序排列的紅外鏡頭、泛光照明燈、泛光感應(yīng)元件及點(diǎn)陣投影器。通常情況下,點(diǎn)陣投影器可以向人臉投射3萬(wàn)多個(gè)肉眼不可見的光點(diǎn)所組成的點(diǎn)陣,需要通過紅外鏡頭讀取點(diǎn)陣圖案,并與前置攝像頭拍攝到的人臉進(jìn)行聯(lián)立計(jì)算,進(jìn)而獲得面部表情的深度信息,即真實(shí)的面部三維模型,聯(lián)立計(jì)算需要搭建的4個(gè)數(shù)據(jù)接口分別為:
IFTFaceTracker:人臉追蹤主要接口。
IFTResult:人臉追蹤運(yùn)算結(jié)果。
IFTImage:圖像緩沖區(qū)。
IFTModel:三維人臉模型。
聯(lián)立計(jì)算需要重點(diǎn)獲取的數(shù)據(jù)信息分別為:
FT_CAMERA_CONFIG:彩色或深度傳感器數(shù)據(jù)。
FT_VECTOR2D:二維向量數(shù)據(jù)。
FT_VECTOR3D:三維向量數(shù)據(jù)。
FT_Translate(X Y Z):所有用于人臉追蹤所需的輸入數(shù)據(jù)。
FT_Rotate(X Y Z):三維模型人臉角度數(shù)據(jù)。
FT_Scale(X Y Z):權(quán)重矩陣數(shù)據(jù),如圖4。
圖4 面部捕捉后的效果
與通過二維圖像進(jìn)行面部捕捉的方法相比。Tj的人臉識(shí)別精度在0.1mm,能夠超過圖像2、視頻1及平面0。當(dāng)光線條件Ri不夠理想時(shí),由點(diǎn)陣投影器發(fā)射出來(lái)的光線-σ、接收光線σ這種主動(dòng)獲取面部信息的方法,也不會(huì)影響Tj的識(shí)別效率,其面部捕捉系統(tǒng)的優(yōu)化方法可以改變?nèi)缦?/p>
手勢(shì)捕捉是虛擬現(xiàn)實(shí)中的技術(shù)難點(diǎn),需要通過演唱者戴著虛擬頭顯設(shè)備Oculus quest2,以及手部定位追蹤器與電腦進(jìn)行相連。之后,在頭顯設(shè)備的前端再安裝深度感應(yīng)相機(jī),且向下傾斜13.4°,以此使演唱者可以從虛擬現(xiàn)實(shí)的體驗(yàn)過程中實(shí)時(shí)觀測(cè)到自己的雙手,及時(shí)跟蹤自己的指尖的變化,其手勢(shì)從左到右依次為:向后、停止、向前。若指尖位置在零坐標(biāo)靜止區(qū)域區(qū)(zc)內(nèi),則無(wú)法產(chǎn)生運(yùn)動(dòng);當(dāng)指尖向前伸出至靜止區(qū)域以外時(shí),則被試運(yùn)動(dòng)速度的紅色進(jìn)度條會(huì)隨指尖距離產(chǎn)生線性增加,當(dāng)手指關(guān)節(jié)朝向另一個(gè)方向移動(dòng),且朝向掌心向下時(shí),移動(dòng)到靜止區(qū)以外,紅色進(jìn)度條會(huì)向后產(chǎn)生微妙的運(yùn)動(dòng)。具體表現(xiàn)為一種手掌的自然伸縮變化的過程,該過程是以演唱者右手食指遠(yuǎn)端到手掌中心的距離以mm為單位,根據(jù)每人手掌尺寸按比例擴(kuò)大2.74倍,以此減少在手指彎曲時(shí)所帶來(lái)的噪波,其設(shè)置參數(shù)如下:
1)β--beta coefficient,β表示斜率系數(shù)=速度/γ(表示食指指尖到靜止區(qū)邊界的距離),向前運(yùn)動(dòng)γ=(position×2.74)-(zc+dzw),向后運(yùn)動(dòng)γ=(zc-dzw)-(position×2.74)。
2)靜止區(qū)--dead zone,在實(shí)驗(yàn)開始時(shí),當(dāng)測(cè)試者把他們的手放在一個(gè)放松的、輕輕彎曲的,當(dāng)手指處于舒適的位置時(shí),就可以確定手勢(shì)的零靜止位置,如圖5。
圖5 手勢(shì)的零靜止
3)α--exponent-velocity=(β×γ)^α,當(dāng)一個(gè)參數(shù)發(fā)生改變時(shí),其它參數(shù)固定在它們的中間值。例如,β=21 m/s, dzw=25mm,α=1.0.三個(gè)參數(shù)的測(cè)試順序依次為系數(shù)、靜止區(qū)寬度、指數(shù)α。每個(gè)測(cè)試者在一個(gè)參數(shù)內(nèi)測(cè)試三個(gè)水平的順序是隨機(jī)的。對(duì)于每個(gè)參數(shù)水平,測(cè)試者完成一個(gè)大目標(biāo)(2m)的實(shí)驗(yàn)(30個(gè)目標(biāo))和一個(gè)小目標(biāo)(1m)的實(shí)驗(yàn)(30個(gè)目標(biāo))。這三個(gè)參數(shù)之間的測(cè)試順序不是隨機(jī)的。
該實(shí)驗(yàn)時(shí)間至少需要完成30個(gè)指標(biāo)中的最后24個(gè)指標(biāo)的時(shí)間,使用重復(fù)測(cè)量方差分析不同水平時(shí)間的差異,以此對(duì)小目標(biāo)及大目標(biāo)進(jìn)行細(xì)節(jié)分層,其參數(shù)設(shè)置可見表1、表2。
表1 Beta coefficient (small target)(m/s)
表2 Dead zone width (small target)(mm)
為了更好地提高虛擬現(xiàn)實(shí)相機(jī)的穩(wěn)定性,也為了使使演唱者能夠從多個(gè)攝像機(jī)角度審視自己在虛擬空間中的動(dòng)作與面部表情的綜合表現(xiàn),需要對(duì)虛擬現(xiàn)實(shí)的程序底層進(jìn)行必要的優(yōu)化,其代碼修改如下:
Camera _camera;
∥ Use this for initialization
void Start ()
{
_camera=Camera.main;
}
∥unity前3個(gè)鎖定,由低到高分別是nothing/everything/default/transparentFX/ignore raycast/waterUI
從第1個(gè)到第3個(gè)可以自己設(shè)置
∥第1個(gè)為cube層;第2個(gè)為sphere層;第3個(gè)為capsule層
void Update ()
{
if (Input.GetKeyDown(KeyCode.A))
{
_camera.cullingMask=1<<1; ∥cube 只渲染第1個(gè)
}
if (Input.GetKeyDown(KeyCode.B))
{
_camera.cullingMask=1<<2; ∥sphere 只渲染第2個(gè)
}
if (Input.GetKeyDown(KeyCode.S))
{
_camera.cullingMask=1<<3; ∥capsule 只渲染第3個(gè)
}
通過上述方法,可以觀察出多視角相機(jī)的穩(wěn)定性非常理想,便于后續(xù)對(duì)演唱者的表現(xiàn)進(jìn)行定量分析,如圖6.
圖6 多視角相機(jī)效果
被測(cè)人員:聲樂表演專業(yè) 20名學(xué)生,男、女各10人,5人/次,根據(jù)高、低年級(jí)組及性別分為共4組。
虛擬內(nèi)容:將自定義制作的360°虛擬聲樂視頻的內(nèi)容根據(jù)情緒分類劃分為正性(激動(dòng))、中性(舒適)、負(fù)性(悲傷)共6首歌曲,分別為:正性情緒歌曲《我和我的祖國(guó)》《在希望的田野上》,負(fù)性情緒歌曲《時(shí)間都去哪了》《燭光里的媽媽》,中性情緒歌曲《貝加爾湖畔》《牧歌》。
實(shí)驗(yàn)結(jié)果:以問卷形式與SAM量表來(lái)進(jìn)行數(shù)據(jù)收集及分析測(cè)試結(jié)果良好,如表3。
表3 聲樂交互虛擬系統(tǒng)使用體驗(yàn)數(shù)據(jù)分析
通過SAM情緒自陳量表獲取高仿真度聲樂交互內(nèi)容,對(duì)虛擬現(xiàn)實(shí)介入前后進(jìn)行相應(yīng)的分析,如圖7。
圖7 虛擬現(xiàn)實(shí)介入前后的對(duì)比
從量表數(shù)據(jù)分析可知,使用高仿真度聲樂交互虛擬系統(tǒng)產(chǎn)生的情緒變化要遠(yuǎn)高于傳統(tǒng)聲樂教學(xué)課程表現(xiàn),這主要得益于虛擬現(xiàn)實(shí)技術(shù)帶來(lái)的沉浸性和高仿真度。
與傳統(tǒng)聲樂教學(xué)方法相比,基于虛擬現(xiàn)實(shí)的聲樂教學(xué)平臺(tái)能夠給演唱者更廣泛的空間選擇,也能夠?qū)ρ莩狡鸬椒e極促進(jìn)作用,其優(yōu)勢(shì)如下:
1)能夠不受現(xiàn)實(shí)物理時(shí)空、費(fèi)用等條件限制,有效節(jié)約硬件成本,也是一種以高仿真度環(huán)境為基礎(chǔ)的智能交互性體驗(yàn)過程。
2)能夠構(gòu)建不同的虛擬內(nèi)容元素,能夠較好地實(shí)現(xiàn)大眾參與,且能夠有效刺激演唱者的各項(xiàng)感知器官。
3)能夠?yàn)槁晿方换サ奶摂M現(xiàn)實(shí)體驗(yàn)帶來(lái)更加精確、細(xì)膩、多元化的沉浸感及臨場(chǎng)感。