Audio2Face是由nvidia開發的,將音訊轉換為model說話動態的工具,非常好用,只要匯入WAV音檔就能夠自動生成一連串極真實的表情動態,而且通過內建的wrap工具可以套用在任何模型上!
底下就紀錄如何使用這套工作流程!
1.安裝omniverse
首先需要先下載nvidia omniverse!
omniverse安裝完成之後,就可以安裝Audio2Face。
完成之後點選LAUNCH就可以進入到Audio2Face介面。
2.從Maya中匯出模型到Audio2Face
現在準備將model匯出,這邊我使用advanced skeleton提供的模型。
通常安裝完omniverse,就會自動在may或是選中的DCC軟體安裝omniverse這個外掛,要輸出模型到A2F也是要依賴這個外掛!
回到A2F這邊,匯入剛剛輸出的model,另外按下+Skin Templates,這個按鈕會匯入兩個模型,綠色的張嘴模型是用來wrap到我們從maya輸出的model,而灰色的模型則是用來生成說話表情動態!
3.將輸出的模型Wrap到A2F模型
這個步驟就是要將剛剛從maya匯入的模型套用到A2F內建的模型上,概念就跟Zwrap差不多,目的是為了將A2F內建的模型套用到我們自己做的模型上!
流程差不多就是選擇兩個模型相對應的點來配對,然後可以搭配edit、delete模式來調整對位點。
定位點都安插的差不多就可以開始wrap模型。
然後將定位點跟綠色模型隱藏,選取灰色模型後使用+A2F Pipeline這個功能將A2F節點加入進來,按下播放鍵,就可以看到我們匯入的模型完美地跟A2F模型同步!!!
4.使用面板調整各種表情細節+匯入音訊
A2F面板中有很多可以調整說話表情的選項。
除了內建的音訊之外,A2F也支援匯入WAV檔案,所以可以自己錄音之後輸入。
5.輸出動態回到Maya
那麼,當說話動態已經調整得差不多就可以開始輸出匯入到maya。
輸出可以選擇USD或是MAYA Cache,建議使用後者,因為USD檔案頗大,匯入scene會讓檔案變得很重!
進入maya之,選擇模型然後import geometry cache就可以套用輸出的動態!!!
6.選擇輸出ARkit BlendShape Keyframe
A2F還支援ARKIT的動態,所以也可以使用這種方式輸出動態,前提是一開始匯入的模型需要有ARKIT的52組Bs。
這邊示範如何使用這個方式方式來匯出動態!
首先要準備好具備ARkit Blendshape的模型,命名也要正確。
然後新增一個joint skin到這個模型上!
接著一樣使用omniverse的外掛輸出USD到A2F。
輸出選項要使用Skeletal mesh。
進到A2F之後按照影片中的設定即可將動態套用到ARKIT的blendshape上!
接著,可以輸出這些blendshape的數值回到maya,然後使用script將這些數值移植到模型上!
import json
import maya.cmds as mc
file_path = r'檔案位置'
with open(file_path, 'r') as f:
facs_data = json.loads(f.read())
facsNames = facs_data['facsNames']
numposes = facs_data["numPoses"]
numFrames = facs_data['numFrames']
weightMat = facs_data["weightMat"]
bsNode = '模型blendshape節點名稱'
for fr in range(numFrames):
for i in range(numposes):
mc.setKeyframe(bsNode + '.' + facsNames[i], v=weightMat[fr][i], t=fr)
7.匯入音檔檢視
最後,可以將音訊檔案匯入到maya播放一起檢視動態!
0 留言