:從資產(chǎn)編輯到重定向與蒙太奇驅(qū)動)
做UE開發(fā)不管你是做單機玩法、多人在線還是虛擬制片、數(shù)字人遲早會碰上一個繞不開的需求動畫修改與動畫編輯。角色拿來的動作總是“差那么一點意思”——走路顛簸、抬手太高、攻擊判定跟動畫錯位、換個體型骨骼就完全變形……這些都得靠動畫修改來解決。我之前帶一個模擬項目的時候美術(shù)給了一套A角色的近戰(zhàn)連招策劃臨時要求套用到另一個體型完全不一的B角色身上順便把出刀幀提前兩幀還要求跑步時左手能疊加一個舉火把的動作。這三個需求分別走了三條路動畫重定向、曲線關(guān)鍵幀微調(diào)、動畫層疊加。做完這一輪我就發(fā)現(xiàn)所謂的“UE動畫修改”從來不是單點操作而是資產(chǎn)級編輯、播放邏輯編輯、骨骼映射編輯、程序化驅(qū)動四件事的交叉。這篇內(nèi)容把我這些年做UE動畫修改的常用路徑和踩過的坑按順序整理出來。不管你是剛接觸引擎動畫編輯的新手還是已經(jīng)會改狀態(tài)機但遇到重定向或蒙太奇問題的人都可以對著步驟抄。1. 動畫修改的第一步先分清改的是“資產(chǎn)”還是“邏輯”很多人打開UE就急著找動畫編輯器其實動畫修改這件事在動手之前最該做的不是操作而是判斷需求屬于哪一層。我通常把動畫修改拆成四個層次資產(chǎn)層、邏輯層、映射層、驅(qū)動層。分錯層十有八九會白干。1.1 四類常見的動畫修改需求我在項目里遇到的修改需求基本逃不出下面四類資產(chǎn)層修正動畫本身有問題比如關(guān)鍵幀擺得不對、某根骨骼在某一幀穿模、動畫循環(huán)接縫處跳變、播放速率太慢。這類修改直接在動畫資產(chǎn)內(nèi)部動刀改曲線、改關(guān)鍵幀、改循環(huán)屬性。邏輯層重組動畫沒問題但“什么時候播放哪個動畫”需要改。比如角色從站立切到奔跑中間要不要經(jīng)過一個過渡姿勢跑步和走路切換用什么條件判斷。這屬于動畫藍圖狀態(tài)機與混合空間的工作。映射層適配動畫源角色和目標(biāo)角色骨骼結(jié)構(gòu)不同直接把動畫資產(chǎn)拖到新骨架上會扭曲。這時要做的是骨骼重定向讓一套動作適配不同體型的角色。驅(qū)動層程序化疊加基礎(chǔ)動作之上臨時增加效果比如跑步時揮刀、受擊時硬直、根據(jù)角色速度動態(tài)改變播放速率。這類修改通??縿赢媽覣nim Layer、蒙太奇或者藍圖/C實時控制。1.2 三種修改路線的選型邏輯同樣的需求往往有不止一種做法。比如“讓角色跑步時拿手機”你可以直接在動畫資產(chǎn)里把拿手機姿勢K進關(guān)鍵幀資產(chǎn)層也可以在動畫藍圖里疊加一層Additive動畫邏輯層還可以做一個單獨的拿手機姿勢然后按需求混合驅(qū)動層。選哪條路核心看兩點復(fù)用頻率和變化幅度。如果是固定角色、固定動作資產(chǎn)層改最直接改完即所得如果這個動作要套用給多個角色、或者隨時可能被策劃調(diào)參那就要做成邏輯層或驅(qū)動層。我用下面的表格總結(jié)一下修改方式適用場景優(yōu)勢劣勢資產(chǎn)層直接編輯單角色微調(diào)、動作源修復(fù)直觀、可控到逐幀復(fù)用性差改一個角色就要改一遍動畫藍圖狀態(tài)機/混合播放邏輯切換、多狀態(tài)過渡靈活條件可編程需要理解狀態(tài)機概念配條件易混亂重定向一個動畫源套用多個角色一套動作到處用骨骼差異大時誤差明顯需反復(fù)校準(zhǔn)蒙太奇程序化驅(qū)動按事件觸發(fā)動作、動態(tài)疊加與玩法強交互打斷恢復(fù)方便狀態(tài)多了調(diào)度容易亂選型還有一個隱藏標(biāo)準(zhǔn)誰在維護。如果項目里改動畫的是純美術(shù)資產(chǎn)層和重定向優(yōu)先如果維護者是程序或技術(shù)策劃邏輯層和驅(qū)動層更合適。別小看這一點我之前見過美術(shù)改了三個小時的資產(chǎn)結(jié)果策劃用藍圖一疊加全部白改。2. 動畫資產(chǎn)的導(dǎo)入與基礎(chǔ)編輯實操當(dāng)你確定需求落在資產(chǎn)層就需要進動畫編輯器里動關(guān)鍵幀和曲線了。但在動之前動畫資產(chǎn)能不能正常工作取決于導(dǎo)入那一關(guān)設(shè)置得對不對。很多“動畫奇怪”的問題源頭其實在FBX導(dǎo)入時埋下的。2.1 FBX導(dǎo)入動畫時最容易出問題的四個設(shè)置導(dǎo)入動畫時我建議你重點檢查這幾個選項骨骼網(wǎng)格體Skeleton導(dǎo)入動畫前必須指定目標(biāo)骨架。選錯骨架引擎會直接報“骨骼不匹配”或者導(dǎo)入后骨骼名字對不上動畫躺在地上。這個選項在導(dǎo)入面板的“Skeleton”一欄必須選項目中已有的骨架資產(chǎn)。采樣率Sample Rate通常設(shè)為項目的動畫采樣幀率比如30或60。采樣率過低高速動作會丟細節(jié)比如揮劍軌跡抽搐采樣率過高資產(chǎn)體積膨脹運行時性能白損耗。一般游戲項目用30幀足夠講究手感格斗類用60。去除根骨骼運動Remove Root Motion這個選項決定了動畫位移是否保留。如果你想讓角色在動畫播放期間被根骨骼帶著走比如翻滾位移、Boss入場就別勾如果位移是交給角色藍圖里的移動組件算的那就勾上。絕大多數(shù)情況下玩家角色的普通走路、跑步動畫都不要根位移否則會和移動組件“打架”角色會滑步或瞬移。網(wǎng)格體導(dǎo)入Import Meshes in Bone Hierarchy如果只是導(dǎo)入動畫建議關(guān)掉網(wǎng)格體導(dǎo)入否則資產(chǎn)里掛一堆無用網(wǎng)格還會拖慢骨架層級檢查速度。導(dǎo)入完成后雙擊動畫資產(chǎn)進動畫編輯器。如果你的動畫沒按預(yù)期播放先別急著改關(guān)鍵幀去資產(chǎn)詳情面板看“動畫”部分的基礎(chǔ)參數(shù)。2.2 動畫資產(chǎn)屬性面板的基礎(chǔ)關(guān)鍵參數(shù)動畫資產(chǎn)里有一組參數(shù)經(jīng)常被忽略但它們對播放影響極大循環(huán)播放Loop勾選后才能在狀態(tài)機里作為循環(huán)動作使用。不勾的角色進入跑步狀態(tài)播放一次就停下像被人點了暫停。開始/結(jié)束幀Start/End Frame有時候美術(shù)導(dǎo)出的是整段動作序列包含預(yù)備、主動作、收尾。在資產(chǎn)內(nèi)部你可以通過設(shè)置Start Frame和End Frame截取其中一段避免在DCC里二次導(dǎo)出。這個修改很實用但很多人不知道動畫資產(chǎn)里可以直接裁。播放速率Rate Scale整體變速。比如原來動畫是2秒一套揮拳Rate Scale1.5可以讓它1.33秒播完。這個修改適合粗略調(diào)整節(jié)奏。偏移末幀Offset新版本引擎里有“播放偏移”的概念常用于處理動作循環(huán)接縫讓循環(huán)點在動作自然位置而不是資源末尾。2.3 曲線與關(guān)鍵幀的微觀編輯真正的高頻操作是改關(guān)鍵幀。在動畫編輯器的“骨骼樹”里選中某根骨骼右側(cè)曲線面板會列出它的位移、旋轉(zhuǎn)、縮放曲線。你能做的事情包括選中曲線上的關(guān)鍵幀上下拖動調(diào)整數(shù)值在時間軸上右鍵插入或刪除關(guān)鍵幀調(diào)整關(guān)鍵幀的切線類型讓動作更順滑或者更硬朗通過“時間壓縮/拉伸”工具選中一段曲線整體前后移動實現(xiàn)“出刀提前兩幀”這種需求。舉個例子。之前一個項目里策劃說武器判定總比動畫慢半拍表現(xiàn)就是“刀子砍過去了傷害才出來”。這在資產(chǎn)層有兩種改法一是把武器骨骼的出刀關(guān)鍵幀向前挪兩幀二是直接把攻擊判定通知AnimNotify的時間點移動。兩種都行但前者影響動畫表現(xiàn)后者只影響判定事件。如果動畫表現(xiàn)本身沒問題只是判定事件對不上那就只改Notify時間點不要動動畫曲線這樣美術(shù)那邊不會覺得“動畫又變怪了”。實操心得編輯曲線時最好在打開“骨骼樹曲線圖”的布局下進行只看骨骼列表容易丟失時間軸上下文。養(yǎng)成經(jīng)常按快捷鍵“鎖定視圖”的習(xí)慣避免誤選骨骼。3. 動畫藍圖里做邏輯編輯狀態(tài)機與混合空間的組合拳資產(chǎn)層改完下一步是把動畫變成一個“會反應(yīng)”的系統(tǒng)。在UE里這個系統(tǒng)核心就是動畫藍圖。動畫玩得好不好很大程度上看動畫藍圖構(gòu)建得是否干凈。3.1 動畫藍圖的兩個圖EventGraph與AnimGraph動畫藍圖是掛在骨架Skeleton上的特殊藍圖它有兩張主要的圖EventGraph負責(zé)邏輯運算比如獲取角色速度、判定角色是否在地面、讀取自定義變量。這些變量最終會傳給AnimGraph使用。AnimGraph負責(zé)輸出最終姿勢。它是一棵“姿勢計算樹”從最終的輸出姿勢節(jié)點往上回溯會看到一堆混合、分支、狀態(tài)機節(jié)點。初學(xué)者最容易犯的錯是在AnimGraph里直接放大量計算節(jié)點比如每幀獲取角色速度。正確做法是在EventGraph里算好、存成變量然后在AnimGraph里只讀取變量。這既清晰又省性能畢竟AnimGraph里每個節(jié)點都在逐幀評估。3.2 狀態(tài)機讓站立、走路、跑步按規(guī)則切換狀態(tài)機State Machine是動畫邏輯層的核心。你在AnimGraph里拖一個“狀態(tài)機”節(jié)點雙擊進去就能看到狀態(tài)列表和連線。我常用的配置是“Idle / Walk / Run / Jump / Fall”這幾個狀態(tài)連線代表允許切換每條連線上可以寫過渡規(guī)則。寫過渡規(guī)則時有幾個實踐經(jīng)驗過渡時間Blend Time狀態(tài)切換的混合時間決定了動作銜接的順滑度。站立到走路通常0.2秒左右下落落地到站立建議0.1秒以內(nèi)否則會有“飄”的感覺。過渡規(guī)則條件比如Idle→Walk的條件是“速度大于10”Walk→Idle的條件是“速度小于10”。注意兩個條件之間留出滯回區(qū)間否則速度在10附近震蕩時兩個狀態(tài)會瘋狂來回切換動畫一直抽搐。自動過渡Automatic Rule如果兩個狀態(tài)之間不需要特定條件可以使用“自動過渡”適合一些臨時狀態(tài)比如受擊返回到原狀態(tài)。實操過程中我最常排掉的問題是“動畫卡在過渡中間”。這種情況多半是過渡時間過長且目標(biāo)狀態(tài)循環(huán)動畫又和源動畫差距太大。解決方式就是縮短過渡時間或者在過渡規(guī)則里設(shè)置“過渡完成百分比”確保新動畫完全接管后才允許再次切換。3.3 混合空間從離散狀態(tài)走向連續(xù)運動狀態(tài)機適合離散狀態(tài)切換但要讓角色在“走路→跑步”之間連續(xù)變化靠狀態(tài)機去一首一首切動畫是做不到順滑的這時候需要混合空間Blend Space?;旌峡臻g本質(zhì)上是一個坐標(biāo)軸系統(tǒng)。橫軸常設(shè)為速度縱軸常設(shè)為方向角。你在坐標(biāo)平面的不同位置放入不同動畫姿勢樣本引擎根據(jù)坐標(biāo)值自動插值出來一個連續(xù)姿勢。操作上內(nèi)容瀏覽器右鍵→動畫→混合空間1D或2D雙擊進入編輯指定橫軸名稱如“Speed”、范圍0~800、軸分組數(shù)量如5個點把動畫資產(chǎn)拖到坐標(biāo)點上在動畫藍圖AnimGraph里拖出混合空間節(jié)點把“Speed”連接到一個變量上。需要注意混合空間的樣本動畫必須是同一套骨架且姿勢差異不要過大。如果把“轉(zhuǎn)身動畫”放在軸向不一致的位置混合時會看到角色角度跳變。混合空間里坐標(biāo)軸數(shù)值要和游戲內(nèi)實際參數(shù)對應(yīng)比如移動速度單位是cm/s混合空間橫軸就要以cm/s為單位否則角色明明在跑步混合空間卻只采樣到走路姿勢。3.4 動畫層在不破壞基礎(chǔ)動作的前提下疊加內(nèi)容動畫層Animation Layer是動畫藍圖里一個很好用的功能但使用率不高。它的作用恰如標(biāo)題里的“動畫修改”——在已有動畫之上再疊一層效果而不改動原始資產(chǎn)。舉個例子。角色跑步動畫是下位層你要疊一個“掩護舉槍”的上位層??梢孕陆ㄒ粋€動畫層藍圖接口在AnimGraph里放入“分層混合Layered Blend Per Bone”節(jié)點。下層接跑步動畫上層接舉槍姿勢通過“Layer Filter”指定只有上半身骨骼會受到上層影響下半身繼續(xù)保持跑步動作。這樣做出一個“邊跑邊舉槍”的效果原始跑步動畫一個關(guān)鍵幀都不用改。在項目里我經(jīng)常把動畫層用在持槍、持物、表情、附加表情等場景。搭配動畫曲線控制層的權(quán)重比如一條“掩護強度”曲線從0升到1動畫層會平滑地疊加效果比直接切換姿勢好得多。使用動畫層避坑混合骨骼的權(quán)重要注意上層的骨骼如果包含脊椎和頭部要小心動作沖突。比如上層做頭部轉(zhuǎn)向下層跑步動畫本身頭也有擺動兩個權(quán)重疊加會出現(xiàn)頭部抽搐。解決辦法是給上層骨骼設(shè)置高權(quán)重或者直接用“覆蓋”模式而非“疊加”模式。4. 動畫重定向讓一套動畫適配不同的角色骨架做UE動畫編輯最容易讓新手崩潰的就是重定向。你自己項目里的一套角色動畫換到一個長相、比例完全不同的角色上動畫直接變成“喪尸版”或者“面條人版”各個關(guān)節(jié)亂飛。這個環(huán)節(jié)無法靠“調(diào)調(diào)參數(shù)”糊弄過去得理解重定向的本質(zhì)。4.1 重定向的本質(zhì)是映射不是復(fù)制重定向不是簡單地把“目標(biāo)骨骼的坐標(biāo)值”抄過來而是將源動畫的旋轉(zhuǎn)姿態(tài)映射到目標(biāo)骨骼的結(jié)構(gòu)約束上。每個骨骼的朝向、長度、層級都不同引擎要通過一套規(guī)則推算如果源角色把膝蓋抬到某個位置目標(biāo)角色腿更長膝蓋應(yīng)該抬到什么角度。這個推算規(guī)則就是重定向的核心。在UE4時代常見做法是設(shè)置骨骼的“重定向模式”Animation、Retarget、Skeleton配合骨骼重映射表。到了UE5引擎把這塊重做成了IK Rig IK Retargeter操作直觀了很多。我沒有必要教大家回去用老辦法建議直接學(xué)新版流程。4.2 IK Rig與IK Retargeter實操流程這套流程很容易寫錯順序我做項目時總結(jié)了一個固定套路打開目標(biāo)角色的骨架資產(chǎn)選擇“創(chuàng)建IK綁定”在IK綁定里把關(guān)鍵骨骼標(biāo)記出來根骨骼、骨盆、脊柱末端、左右手臂鏈、左右腿鏈。這里必須逐根指定骨骼的位置和朝向給每條鏈設(shè)置“目標(biāo)”也就是IK目標(biāo)骨骼。腿部鏈目標(biāo)一般是腳踝的IK目標(biāo)手臂鏈目標(biāo)是手部的IK目標(biāo)。這一步做的其實是“告訴引擎這套骨架里腳、手、頭在哪怎么轉(zhuǎn)”創(chuàng)建IK重定向器IK Retargeter在面板里選擇源“IK綁定”為一個參考骨架目標(biāo)“IK綁定”為當(dāng)前骨架在重定向器的“重定向姿勢”部分做手動校準(zhǔn)尤其是不同體型差異大的角色需要在Retarget Pose里調(diào)整各骨骼鏈的偏移和朝向讓一幀基礎(chǔ)姿勢對齊校準(zhǔn)完成后就可以拖入源動畫資產(chǎn)到重定向器或者批量選擇多個動畫資產(chǎn)執(zhí)行重定向預(yù)覽確認效果后導(dǎo)出為目標(biāo)骨架下的新動畫資產(chǎn)。4.3 重定向常踩的坑手指、腳踝和根骨位移重定向做出來時效果看起來還可以但只要一細看就問題不斷。最常見的幾個坑手指亂甩目標(biāo)骨架手指骨骼數(shù)和源骨架不一致映射時多一根少一根手部就會抽搐。已經(jīng)映射了仍亂動就要在重定向器里關(guān)閉手指鏈的映射用手部整體旋轉(zhuǎn)代替。腳踝翻轉(zhuǎn)源角色與目標(biāo)角色腳掌骨骼的軸向關(guān)系不同導(dǎo)致重定向后腳尖著地變成腳背著地。需要在Retarget Pose里對腳踝骨骼做局部旋轉(zhuǎn)修正重點看腳尖朝向。根骨位移變成原地踏步源動畫有根骨骼位移Root Motion重定向時沒有把根骨骼鏈正確標(biāo)記。導(dǎo)致重定向后角色原地“跑步”完全不位移。解決方式是在IK Rig里確認根骨骼鏈已包含Performed骨骼同時在重定向器參數(shù)里保留根骨骼的平移數(shù)據(jù)。還有一個容易被忽略的點重定向后動畫資產(chǎn)的根骨骼縮放。目標(biāo)角色比源角色高大很多時即使骨骼比例調(diào)整過地面上看到的膝蓋高度依然不對。這時候需要在重定向器里為骨骼鏈設(shè)置額外的縮放補償而不是在動畫資產(chǎn)里手調(diào)關(guān)鍵幀后者改一幀另一幀又崩了。5. 蒙太奇與程序化驅(qū)動讓動畫響應(yīng)玩法事件動畫修改做到這一步基本已經(jīng)可以應(yīng)付大多數(shù)固定邏輯但玩法里真正難的是“事件驅(qū)動的動畫”比如玩家按下一個鍵觸發(fā)的揮砍、翻滾、處決或者根據(jù)子彈數(shù)量改變裝彈動作。這些通常在動畫藍圖里用蒙太奇AnimMontage和程序化手段來解決。5.1 AnimMontage的基礎(chǔ)操作AnimMontage是一個可被打斷、可跳轉(zhuǎn)、可插入通知的動畫播放容器。它可以是多個動畫片段的組合適合做技能連招、受擊硬直、復(fù)雜演出。創(chuàng)建方式內(nèi)容瀏覽器右鍵→動畫→動畫蒙太奇指定使用的骨架然后雙擊打開。把任意一個動畫資產(chǎn)拖到蒙太奇時間軸上即可。我常用的幾個功能插槽蒙太奇必須掛在動畫藍圖里的一個插槽Slot上才能播放。在AnimGraph里添加“插槽”節(jié)點蒙太奇會自動通過插槽接管輸出。片段分區(qū)把連招動畫分成多個Section比如“攻擊1”“攻擊2”“攻擊3”通過代碼或藍圖在這些Section之間跳轉(zhuǎn)實現(xiàn)連招打斷重排。通知蒙太奇里的通知AnimNotify是攻擊判定的理想觸發(fā)點。跟直接在動畫資產(chǎn)里加通知比蒙太奇的通知可以跟著不同攻擊段變化可控性更高。實操時我習(xí)慣給“受擊蒙太奇”設(shè)置一個較短的Blend Out時間比如0.1秒否則玩家連續(xù)受擊時會看到角色“卡”在過渡里手感很差。5.2 程序化修改播放速率與動態(tài)混合權(quán)重這部分標(biāo)題里的“動畫修改”體現(xiàn)得最直接。經(jīng)常有需求是“根據(jù)角色當(dāng)前狀態(tài)調(diào)整動畫播放速度”比如角色中毒減速時走路動畫也要跟著慢下來。在動畫藍圖EventGraph里聲明一個PlayRate變量通過角色藍圖或Ability Task實時寫入。AnimGraph里把播放動畫的節(jié)點上“播放速率”引腳連接到該變量。注意如果你用了狀態(tài)機和混合空間需要在每個動畫采樣節(jié)點上都接上播放速率變量而不是只在一個節(jié)點上接。C或藍圖驅(qū)動蒙太奇時直接調(diào)用蒙太奇播放節(jié)點并在參數(shù)里指定Start Section和Play Rate。舉一個簡單的藍圖節(jié)點鏈?zhǔn)录_始 → Play Montage蒙太奇ABP_Melee_ComboSectionAttack_1PlayRate1.0 事件中斷 → Stop Montage蒙太奇同上BlendOut0.2 事件連擊 → Montage Jump to SectionSectionAttack_2除了播放速率程序化還能控制混合權(quán)重。比如角色從站立到進入“瞄準(zhǔn)”狀態(tài)可以把瞄準(zhǔn)動畫的權(quán)重從0平滑增加到1。這個權(quán)重可以直接定義為動畫藍圖中的一個變量由角色藍圖根據(jù)輸入實時更新。權(quán)重變化曲線如果想讓美術(shù)調(diào)起來直觀就暴露為曲線資產(chǎn)如果需要程序精確控制就在藍圖里用時間軸節(jié)點插值控制得更細。5.3 蒙太奇配合通知交互把動畫和玩法掛鉤蒙太奇的價值有一半在通知上。攻擊判定、腳步音效、刀光特效、攝像機抖動都可以通過動畫通知掛在蒙太奇時間軸上。修改動畫時這些通知經(jīng)常比關(guān)鍵幀更重要——因為他們在驅(qū)動玩法反饋。一個小經(jīng)驗攻擊判定通知不要放在動畫的第1幀放在“刀鋒達到最大速度”的那一幀。具體是哪一幀可以反復(fù)切換播放速度預(yù)覽。我一般會先放一個臨時通知播放動畫觀察特效和判定時機然后精確挪動通知位置。省時間的方法是直接在時間軸上拖動通知邊拉邊播放幀差控制在±2幀內(nèi)。6. 常見問題排查與避坑清單最后這part是這些年我被問得最多的問題匯總。很多人做好了動畫藍圖但運行起來還是各種詭異我按排查優(yōu)先級列出來。6.1 動畫不播放、播放錯誤的第一排查路徑動畫不播放時我建議按這個順序排查確認動畫藍圖已掛到角色藍圖里角色的網(wǎng)格體組件中Animation該選擇“動畫藍圖”而非“動畫資產(chǎn)”確認骨架匹配角色骨骼、動畫資產(chǎn)骨架、動畫藍圖骨架三者之間必須一致檢查狀態(tài)機是否處于激活狀態(tài)AnimGraph有沒有把輸出節(jié)點連出狀態(tài)機節(jié)點有沒有被拖出來作為最終姿勢檢查播放條件Transition Rule里引用的變量是否被初始化比如角色速度初值是否為0檢查動畫資產(chǎn)是否設(shè)置了Loop非循環(huán)動畫播放一遍就靜止“單獨占住”容易讓狀態(tài)機覺得“還在播放中”。6.2 動畫抖動、滑步、錯位的典型問題速查現(xiàn)象常見原因解決方法角色滑步不匹配動畫根位移與移動速度不一致讓移動組件速度匹配動畫Run Speed或開啟Root Motion切換動畫突然抽搐過渡時間太短且姿勢差異大增加過渡時間或增加“過渡姿勢”狀態(tài)混合空間里姿勢扭曲樣本動畫骨骼比例不一致確認全部樣本來自同一套骨架重定向雙手亂甩手指/手腕骨骼映射錯誤關(guān)閉手指鏈映射或增加手動修正鏈蒙太奇中斷后角色硬邦邦Slot的BlendOut過長或過短根據(jù)動作表現(xiàn)調(diào)整BlendOut通常0.1~0.3秒跑步時上半身左右晃上層疊加層權(quán)重未歸零檢查動畫曲線與層級混合權(quán)重6.3 幾個能讓你少加班的自檢習(xí)慣動畫修改這件事很多時候是“看著小改改著一個大坑”。我自己的習(xí)慣每次改動動畫資產(chǎn)前先復(fù)制一個備份版本。就算改崩了也可以一分鐘內(nèi)切回重要狀態(tài)機的過渡規(guī)則寫上注釋哪怕是給美術(shù)看也要保證半年后再打開這個藍圖能看懂邏輯每次改完關(guān)鍵幀立刻用不同的角色速度、不同視角播放預(yù)覽不要只在編輯器里看一次重定向之前先確認目標(biāo)骨架的骨骼命名規(guī)范和源骨架一致不一致的提前做重命名表。很多重定向的詭異結(jié)果都是“同名骨骼結(jié)構(gòu)不同”導(dǎo)致的。動畫修改不是孤立的“調(diào)動畫”它牽連著角色移動、事件通知、邏輯狀態(tài)。如果你剛開始做建議先別急著做重定向或動畫層哪怕是從最簡單的FBX導(dǎo)入、狀態(tài)機、混合空間走一遍也會對整套體系有直觀認識。這套東西做完一輪以后再拿到“幫我把這套動畫改得XXX一點”的需求就能很快判斷出該動哪一層、怎么動、動了會不會影響別處。