UE4+DeepMotion 低成本的角色動畫製作
1、前言
- 最近工作中需要在UE4中使用大量的角色動畫,動畫要求如下:
- 絕大部分是肢體動畫
- 大部分動作都是需要定製
- 動畫的製作時間要求比較急、成本要有控制
- 考慮到製作成本及時間要求,而且其實需求對動作的精準度要求不是很高,於是決定採用AI視訊動作捕捉軟體製作動畫,然後匯入到UE4中使用,其主要的轉換工具為DeepMotion,流程有以下幾步:
- 錄製或準備動作視訊
- 使用deepmotion進行視訊解析,生成動作檔案
- 動作檔案匯入到UE4中,並進行骨骼重定向,將動畫適配到目標角色模型上
- 採用動畫blend方案對角色動作進行合成和調整
2、DeepMotion
- DeepMotion的Animate 3D讓你把2D視訊中的人體動作自動轉化為可以在遊戲、動漫、AR/VR應用軟體、社交和移動平臺、以及其它互動式媒體應用程式中使用的3D動畫。
- 支援線上轉換
- 支援視訊和圖片輸入,生成動作或姿勢檔案
- 工具能夠生成肢體動作動畫和表情動畫
- 免費試用,每個月有30s或30個動作的的免費試用
- 收費方式分為包年和包月,高階收費版支援匯出動畫優化(由於我用的是低階版本,優化效果尚不確定)
- 官方網站:https://www.deepmotion.com/
3、錄製或準備動作視訊
- 為了保證系統能夠準確的識別動作姿態,官方對於輸入的動畫視訊有如下建議:
- 視訊的鏡頭需要和捕捉的人物平行
- 捕捉的人物從頭部到腰部的整個身體或上半身都應該可見,並且距離攝像機2-6米
- 被捕捉的人物和背景要有強烈對比便於影象識別
- 鏡頭裡的人物不應該被任何物體遮擋,並且鏡頭裡只有一個人物
- 不要穿寬鬆的或覆蓋膝蓋和肘部等關鍵關節的衣服
- 面部捕捉支援全身和半身模式,但為了獲得更好的結果,建議使用半身模式
4、使用DeepMotion進行動作解析
- 註冊並登入deepmotion官網,點選進入Animate3D產品,點選介面上的create,此時會有空白框提示拖入視訊或圖片檔案,將準備好的視訊拖入,這是會有輸出選項,因為我需要把動作輸出為FBX格式匯入到UE4中,所以要選擇FBXOutput和Root Joint at Origin(根節點在原點,便於匯入UE4後進行重定向),Face Tracking因為當前我不關注角色表情,所以沒有選擇。
- 點選create按鈕,等待一段時間,就會生成角色動畫,同時可以更換不同的角色模型進行預覽
- 點選download,將動作匯出到本地
5、匯入UE4,骨骼重定向
由於UE4裡的角色和Deepmotion匯出的角色使用的不是同一套骨骼,因此需要使用UE4的Retarget功能進行骨骼重定向。
骨骼重定向(Retargeting)
骨骼重定向的實質是通過在相似骨骼間建立對應的關係,建立一個能在另一套骨骼播放的動畫資源。
常用的使用場景
- A:我有一套帶動畫的人物模型,但它們沒使用UE4的Mannequin骨骼,我想把這套動畫應用到UE4的Mannequin上。
- B:我有一個繫結好的人物角色,但它沒有使用UE4的Mannequin骨骼,我想讓它使用Mannequin的動畫。
當前的使用場景就是A的情況,我希望把DeepMotion的動畫應用到UE4的Mannequin上(當然骨骼重定向後,DeepMotion的角色也能Retarget出UE4的動畫)
- 匯入DeepMotion資產動畫
將下載的FBX檔案匯入到UE4,deepMotion下載的FBX包含兩個檔案(A-Pose和T-Pose),建議匯入含有T-pose的fbx檔案,這樣便於重定向時調整姿態。
拖入到UE4中後,彈出匯入選項,注意勾選匯入動畫選項
點選ImportAll後,FBX資產匯入到UE4中,這是應該出現 Mesh、動畫序列、骨骼、物理屬性和紋理等資產
2、將UE4骨骼調整為T-pose
由於UE4自帶的骨骼動畫包的pose為A-pose,而我們匯入的模型是T-pose,因此需要將UE4的動畫骨骼重定向Pose改為TPose。
a.首先下載UE4骨骼自帶的T-Pose動畫,連結如下
連結:https://pan.baidu.com/s/10uTRfANIuLLprGc03isGIA
提取碼:ni2q
b.下載完成後,匯入到UE4中,並選擇UE4自帶的骨骼
右鍵匯入的動畫資產,選擇create/ create poseAsset
c.開啟UE4小白人骨骼,點選Retarget Manager下的ModifyPose
選擇剛才生成的姿態資產,點選import
最後選擇usecurrentPose
最後將UE4的小白人修改為T-Pose
3.設定Rig Map
開啟UE4骨骼和DeepMotion的骨骼,在Set up Rig下的Select Rig中統一選擇Humanoid
可以看到在UE4的骨骼中source和Target是一一對應的關係
但是在DeepMotion骨骼中source和Target還沒有對應,此時需要進行關係對應,雖然autoMap能夠對應部分關係,但是仍有錯誤,這就需要手動操作,否則動畫重定向後由於對應關係錯亂,會出現肢體扭曲的問題。或者直接下載以下連線,將資源拷貝到工程中,點選load載入
連結:https://pan.baidu.com/s/1xxd9RaZmXgLeOKJ2QwGXuw
提取碼:b23p
(手動調節時需要點選show advanced顯示所有資訊,由於UE4自帶一些武器和肢體插槽,但是deepmotion的骨骼中沒有,如twist、ik等,選擇none即可)
以上為對映後的部分截圖
4.微調骨骼姿態
點選骨骼檢視中的Character/bones/All hierarchy,顯示骨骼資訊,對比UE4和DeepMotion的骨骼,發現二者的T-Pose姿態還是有些差異的,此時需要對DeepMotion的骨骼姿態進行微調:
點選deepmotion骨骼檢視左下角的View Pose,選中骨骼,對骨骼進行拖拽調整,是deepmotion的姿態和UE4的基本一致
最後點選Midefy Pose/use currentPose儲存當前姿態
5.生成重定向的動畫
滑鼠右鍵點選DeepMotion生成的動畫檔案,點選複製動畫資產並重定向
此時DeepMotion的動畫預覽看不見,這是因為骨骼預覽的Mesh未設定,需要修復一下
在deepmotion骨骼的編輯介面點選Preview Scene Setting
在右側彈出的Preview Scene Setting面板中點選Apply to Asset
此時在建立重定向動畫資產就可以DeepMotion的動畫預覽,在左側列表欄選擇UE4個骨骼,點選Retarget,生成重定向動畫。
生成的重定向動畫即可用到UE4中的小白人上。
6、採用動畫blend方案對角色動作進行合成和調整
由於DeepMotion進行視訊識別匯出的動畫是AI計算的,不可避免的會出現一些動作bug,最常見的現象是站立時雙腿會不自然的抖動,為解決這一問題,可以採用UE4動畫藍圖的blend進行修復,主要思路是上半身採用DeepMotion的動作,下半身採用其他站立的動作,這樣進行混合,達到動畫修復的目的:
首先新建動畫藍圖
在動畫藍圖的AnimGraph中,將匯出的動畫拖入到面板中,並連線OutPose
此時可以看到動畫預覽介面播放動畫。
再將UE4的Idle動畫拖入到場景中,呼叫Layered blend per bone,最終輸出到outpose
layered blend per bone修改的引數如下
骨骼動畫blend的原理是將多個動畫按照不同的權重進行計算,最終會得出一個混合結果。
這樣,通過blend就能將動畫的上半身動作和下半身動作進行融合,相應的,我們也可以對其他的身體部位進行融合生成新的動畫,但是這周融合只能在特定的動作有效,如果全身協調性的動作,融合起來的最終結果就會顯得任務動作很怪。
目前我們的動畫只是在藍圖動畫裡播放,但是有些需求可能是需要在動畫資產裡播放,UE4裡提供的錄製功能,我們點選動畫視圖裡的Record按鈕,對動畫進行錄製:
點選Stop選擇儲存的路徑,新的動畫資產就生成了
7、後記
以上就是我通過DeepMotion匯出動畫到UE4中並且重定向後,通過blend和UE4自帶的錄製功能生成新的動畫資產的全過程。由於目前需求只要求到肢體動畫,雖然DeepMotion支援表情動畫的匯出,但並未實踐到。另外,個人感覺deepmotion對人物手部動畫沒有支援,這部分後續可能需要通過動畫blend進行修復。