返回文章
月武的博客

UE4同一结构的骨架之间动画共享

本文阐述在UE4中,如何将多个不同的动画包,以及每一个动画包有不同的骨架,但其骨架结构层级相似的前提下,将多个动画包里的动画关联到一个统一的骨架,以提升项目的可维护性。

v2-0ed333bdfc43e20815f7040c303e0bd9_1440w

目录

罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

2020年2月29日更新时间: 2026年9月13日

前言

工作中需要写个文档给其他美术看,所以顺便写成个文章。

v2-5050016adcfc703c0fe66d2b804efd5c_1440w


这是我们的项目结构,四个点表示这是外部导入的资源包,未打点的则是UE4默认第三人称模板的内容。

这四个包,第一个包是虚幻商城(现Fab)的NPC动画包,包含一个UE4的小白人并带有一套NPC动画,其他三个包是来自Synty Studios的Lowpoly资源包。每个包都包含一个与UE4小白人骨架结构一致的“骨架资源”,每一个骨架资源关联了多个不带动画的人形角色。同时第三人称模板包里包含一个小白人骨架并带有几个基础的运动动画。

目标

我们的目的是让2 3 4包里的所有不带动画的角色都能共享使用第一个包里的npc动画以及第三人称模板包里的走跑跳动画。


同时 2 3 4包里的骨架资源结构与UE4小白人的骨架资源结构一样,所以我们可以使用动画重定向完成此功能。


准备阶段

所有与虚幻骨架结构一致的其他骨架,如果要在他们之间共享动画,首先要保证骨架资源都完成了Humanoid骨架映射,并保持他们的基础姿势一致(有的骨架默认姿势是T字形,有的是A字形),

Humanoid骨架映射是指:将我们自己的模型的骨架的每一根骨头与UE4提供的一个骨架模板(Humanoid Rig)中的骨头一一对应,如果我们自己的模型的骨架结构与UE4的Humanoid骨架结构或者命名很相近/一致,则虚幻会帮我们自动完成此操作,否则只能手动选择骨头一一对应,效率低下,出错率高。

我们的(第三人称模板里的)虚幻小白人基础姿势是A字形,且默认没有完成Humanoid骨架映射,而我们的1234包里的骨架资源都完成了Humanoid骨架映射,除了包1是A(因为包1用的小白人),其他包基础姿势是T字形,所以我们先给小白人设置骨架映射,然后将小白人的基础姿势调整为T字形(少数服从多数,只有2个小白人是A,其他都是T)。

所以首先打开UE4_Mannequin_Skeleton(小白人的骨架资源,有2个,选择第三人称模板里那个),点击重定向管理器,然后在SelectRig下拉列表中选择Select Humanoid Rig,完成后如图所示:


v2-a0be90271b487a327a7a7a6c1dd0e190_1440w


至于骨架映射(即左下角那一堆骨头列表)虚幻会帮我们自动完成(因为虚幻小白人的骨架足够标准)。

其次,我们可以旋转小白人的肩膀和手臂,摆成T字形,然后点击ModifyPost->Use CurrentPose,然后保存资源。如图所示:


v2-7c7e3c5c4fe25b778f47bf0fd4023a31_1440w


映射第三人称模板里的动画到包1

我们分几个步骤来,首先,我想要第三人称模板里的走跑跳动画给迁移到npc包里,这样我们所需要的所有动画都与包1里的骨架资源进行关联,第三人称模板里的骨架就作废了。


v2-f7036f17ab7dd556478851db2cc8e94a_1440w



v2-136b7750458ea3059ec2c5406147f268_1440w


到此为止,第三人称模板里的小白人的骨架所关联的所有资源都被迁移到了包1(GenericNPCAnimPack里的小白人)身上了。这时候包1的小白人拥有第三人称模板里的所有动画,同时还有一堆Npc动画。

将234包里的角色都关联到一个骨架

我们想要将包1的动画共享给234包,但是234包各自包含一个骨架资源,意味着动画重定向过程,我们会做3次,动画资源也会增加三倍。可是234包里的骨架结构几乎与小白人一致(有的骨架会多出ik之类的玩意),因为这三个包的作者是同一个人,所以我们碰巧可以将这3个包里的所有角色都关联到这三个包中的1个骨架(总共3个骨架)即可,每一个SkeletonMesh都可以右键分配骨架,比如我要将包1(PolygonCity里一个角色)分配到包3(PolygonPirates)里的骨架。


v2-c01bce00e78a850494a2e20b66521df8_1440w



v2-d1808f80d9e372fe27b428419a417ad8_1440w


你可以看到上图靠下区域的骨头数量和名字是一致的,这种情况下直接指定是不会有大问题的,但如果骨架名称,数量层级不对,基本会出错。

那么我们就挨个点击点击23包里的所有骨架角色,并分配为包4的骨架资源。多点击几次鼠标总比重复资源占用的好。

迁移包1所有动画到包4的骨架上

找到包1的小白人右键然后点击“重定向到另一个骨架”,然后选择包4里的那个骨架,然后就大功告成啦!


v2-2c64879ecdb475bc5095b53e1ffcfd44_1440w



v2-ef6fc29fc0b29046c8c86487333ae013_1440w


最终结果


v2-e25c698a44839d3da436126dd824c187_1440w

现在包4里的骨架,已经关联了234三个包里的所有人形角色(1),且关联了包1的所有动画(2),现在只需要把第三人称模板的ThirdPersonCharacter蓝图,将角色Mesh替换成我们众多角色就可以跑啦,也可以编辑动画蓝图,加入其他的动画。