1. 程式人生 > 其它 >UE4+DeepMotion 低成本的角色動畫製作

UE4+DeepMotion 低成本的角色動畫製作

1、前言

  • 最近工作中需要在UE4中使用大量的角色動畫,動畫要求如下:
  1. 絕大部分是肢體動畫
  2. 大部分動作都是需要定製
  3. 動畫的製作時間要求比較急、成本要有控制
  • 考慮到製作成本及時間要求,而且其實需求對動作的精準度要求不是很高,於是決定採用AI視訊動作捕捉軟體製作動畫,然後匯入到UE4中使用,其主要的轉換工具為DeepMotion,流程有以下幾步:
  1. 錄製或準備動作視訊
  2. 使用deepmotion進行視訊解析,生成動作檔案
  3. 動作檔案匯入到UE4中,並進行骨骼重定向,將動畫適配到目標角色模型上
  4. 採用動畫blend方案對角色動作進行合成和調整

2、DeepMotion

  • DeepMotion的Animate 3D讓你把2D視訊中的人體動作自動轉化為可以在遊戲、動漫、AR/VR應用軟體、社交和移動平臺、以及其它互動式媒體應用程式中使用的3D動畫。
  1. 支援線上轉換
  2. 支援視訊和圖片輸入,生成動作或姿勢檔案
  3. 工具能夠生成肢體動作動畫和表情動畫
  4. 免費試用,每個月有30s或30個動作的的免費試用
  5. 收費方式分為包年和包月,高階收費版支援匯出動畫優化(由於我用的是低階版本,優化效果尚不確定)
  • 官方網站:https://www.deepmotion.com/

3、錄製或準備動作視訊

  • 為了保證系統能夠準確的識別動作姿態,官方對於輸入的動畫視訊有如下建議:
  1. 視訊的鏡頭需要和捕捉的人物平行
  2. 捕捉的人物從頭部到腰部的整個身體或上半身都應該可見,並且距離攝像機2-6米
  3. 被捕捉的人物和背景要有強烈對比便於影象識別
  4. 鏡頭裡的人物不應該被任何物體遮擋,並且鏡頭裡只有一個人物
  5. 不要穿寬鬆的或覆蓋膝蓋和肘部等關鍵關節的衣服
  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的動畫)

  1. 匯入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進行修復。