[開發日誌][UnrealEngine] 如何將Mixamo的動畫Retarget給Unreal Character

posted in: 未分類, 開發日誌 | 9

這篇文章主要是要記錄自己怎麼把Mixamo中的動畫導出來給Unreal中的Mannequin用,以及除何修正中途遇到的一些坑。

使用版本:5.1

使用的是Third Person Template

第一步當然是先從Mixamo下載看中想使用的動畫。

由於Mixamo的骨架跟Unreal不相容,主要原因Mixamo是少了一個root,這會造成root motion沒辦法正常運作。我們可以下載 mixamo_convert這個Blender Addons來幫我們加上一個root bone。

如下圖,右邊加上root的是我們希望的狀態:

這邊要注意的是,Blender Addons的安裝要使用zip才認的到。

https://github.com/enziop/mixamo_converter

下載完zip之後,從preference選Add-ons安裝,然後把功能打開

接著從右上方打開選單

可以看到Mixamo Rootbaker

可以選擇把bone轉成UnrealEngine公版的bone Name,但我這邊不勾,之後自己再使用UE內建的IK Rig以及IK Retargeter來做map,詳細步驟後面會記錄。另外他的OutputPath目錄不會自己建,所以要自己先開:

之後我們就可以先匯入轉換過後的Mixamo的模型(X Bot.fbx)

接著匯入其他的動畫,記得Import Mesh勾掉,Skeleton選擇剛剛匯入的。

然後就可以開始建立IK Rig,這個檔案的目的是建出組Bone Chain,讓我們可以可以在IK Retargeter中指定Source IK Rig跟Target IK Rig做map。

Source就是剛剛匯進來的Mixamo,我們必須要手動建一個出來(右鍵Animation -> IK Rig 下可以找到),Target則是Unreal內建的Mannequin,路徑是/Game/Characters/Mannequins/Rigs/IK_Mannequin。

我們的IK Rig需要哪些Bone Chain可以參考IK_Mannequin裡面的定義,不過Mixamo的骨架裡並沒有定義Twist跟IK相關的骨架,因此這邊可以先無視。建完的BoneChain如下圖:

接下來在同個IK Rig檔中,把Hips bone設成Retarget Root。

然後就可以建出IK Retargeter來做map了,Copy Animation From選我們剛剛建的IKRig,

Target IKRig則選擇IK_Mannequin,Preview Setting可以調整Mesh offset,讓他們不會疊在一起。只是,這時候我們會發現會發現UE的角色的A-Pose,但Mixamo卻是T-Pose。

在Unreal中它提供了Edit Mode可以讓我們針對Pose的調整,調整完之後可以匯出成Pose Asset,之後就可以重覆利用。不過但可以想見,我們頂多對upperarm_l跟upperarm_r之類比較上層的bone做粗細略的調整,下面的手指還要一個一個調的話實在是太累了,而且會非常難調到完全一模一樣。

這個時候一個想法是,如果是不是有外部工具來幫我們把A-Pose的模型自動轉成T-Pose?研究了一下,發現Mixamo提供上傳自製模型fbx的功能:

下載的時候可以選擇是不是要用T-Pose.:

把這個FBX匯入,裡面會有一個{FileName}_Anim_mixamo_com Animation檔案,會幫我們的骨架調整成T-Pose。

確認完是T-Pose之後,就可以按上方的Create PoseAsset另外存成PoseAsset,如下圖:

接下來打開剛剛創出來的PoseAsset:

調整Pose_0的Weight,看看是不是能從A-Pose過渡到T-Pose

回到Retargeter,就可以套用剛剛建好的Pose Asset,然後就可以完美的把我們的Target調整成T-Pose了。嗯,總算可以不用慢慢的每個bone都去調整,想到就頭暈。

接著做完mapping之後,在把Animation導出之前,記得把Root Bone Chain的translation move設成Globally Scaled,不然retargeter之後的動畫檔,在開root motion時不會正常運作。

按下圖中的Export Selected Animation,就可以把想要的mixamo動畫retarget給unreal中的角色用了。

總結

試了好多種流程,以上的流程大致上可以幫我解決目前自己遇到的幾個坑:

  1. Mixamo進來是T-Pose,但Unreal是A-Pose,可以靠create pose asset的方式幫我們修正而不用每個bone自己細調
  2. 若打開RootMotion後發現retarget後的動畫壞掉,有以下幾個原因: 第一個原因是Mixamo沒有RootBone造成我們在map的時候對不上,可以使用mixamo_converter這個blender addon來幫我們加上去;第二個原因則是Root Bone Chain的translation move要設成Globally Scaled。

9 Responses

  1. paypal scam

    Hi, I do think this is a great blog. I stumbledupon it
    ;) I’m going to revisit yet again since I bookmarked it.
    Money and freedom is the best way to change, may you be rich and continue to guide other people.

  2. pink salt trick

    I just could not depart your website before suggesting that I actually enjoyed the standard info a person provide for your visitors? Is going to be back often to check up on new posts

  3. gelatin trick

    I like what you guys are up also. Such clever work and reporting! Carry on the superb works guys I¦ve incorporated you guys to my blogroll. I think it will improve the value of my site :)

  4. Neurocept

    I would like to thnkx for the efforts you have put in writing this blog. I am hoping the same high-grade blog post from you in the upcoming as well. In fact your creative writing abilities has inspired me to get my own blog now. Really the blogging is spreading its wings quickly. Your write up is a good example of it.

  5. zabornatorilon

    Amazing blog! Do you have any tips for aspiring writers? I’m planning to start my own blog soon but I’m a little lost on everything. Would you recommend starting with a free platform like WordPress or go for a paid option? There are so many choices out there that I’m completely overwhelmed .. Any ideas? Thank you!

Leave a Reply to gelatin trick Cancel reply

Your email address will not be published. Required fields are marked *