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進行修復。