Skip to content

Blender 到 Unreal Engine 导出检查清单:FBX 设置、骨骼轴向与缩放(2026) ​

最后更新:2026 年 9 月。

一个绑定了骨架的低多边形角色从 Blender 视口进入 Unreal Engine 关卡

要将 Blender 角色干净地导入 Unreal Engine,关键在于六项 FBX 导出器设置和一项场景设置。在 File > Export > FBX (.fbx) 中:启用 Selected Objects;启用 Apply Unit,并将 Apply Scalings 设为 FBX All(或者保留 All Local,同时将场景的 Unit Scale 设为 0.01);将 Smoothing 设为 Face;关闭 Add Leaf Bones;将 Primary Bone Axis 设为 Y、Secondary Bone Axis 设为 X;启用 Bake Animation,并根据动画片段的存储方式选择 NLA Strips 或 All Actions。按下 Export 前,将骨架对象重命名为 root,因为 Unreal 会把该对象转换成根骨骼。下文将解释每项设置为何重要、跳过后会出现什么问题,以及如何把导入结果重定向到 UE5 Mannequin 或 MetaHuman。

快速答案 ​

  • **缩放:**Unreal 使用厘米,而 Blender 的内部单位是米。你可以将 Scene Properties > Units > Unit Scale 设为 0.01,并按 Unreal 尺寸建模;也可以保留 1.0,然后在导出时启用 Apply Scalings: FBX All,让文件头负责单位转换。如果两者都保留默认值,根骨骼的缩放就会变成 100。
  • **坐标轴:**保持 Forward -Z 和 Up Y(Blender 默认值)。Unreal 的 Convert Scene 导入选项会读取 FBX 文件头,并将其旋转到 Z 轴向上、X 轴向前的坐标系。在 Blender 中让角色面向 -Y(即在小键盘 1 的正视图中看向你),导入 Unreal 后角色就会面向 +X。
  • **骨骼:**Primary Bone Axis 设为 Y,Secondary Bone Axis 设为 X。这既是 Blender 的默认值,也是 Epic 官方 Send to Unreal 插件采用的设置。更改这些值通常会导致“我的骨骼导入后旋转了 90 度”。
  • **根骨骼:**骨架对象会以其对象名称成为 Unreal 中的根骨骼。将其重命名为 root,让髋部骨骼成为它的第一个子级,并且不要为它分配任何蒙皮权重。
  • **末端骨骼和平滑:**关闭 Add Leaf Bones(否则每条骨骼链都会多出一个 _end 骨骼),将 Smoothing 设为 Face(否则 Unreal 会警告缺少平滑组)。
  • **动画:**每个动画片段使用一个 Action,启用 Bake Animation,启用 Key All Bones,并将 Simplify 设为 0。导入到现有 Skeleton 资产时关闭 Import Mesh。
  • 一键方案:Cinevva Rig 插件提供 Unreal 导出预设,可自动应用这些规范,并先显示尺寸分析。它完全离线运行在你自己的电脑上,一次性购买价格为 $29(首发价),支持 Windows、macOS 和 Linux 上的 Blender 4.2 及更高版本。

快速参考 ​

下面是问题对照表。在 Unreal 中找到你遇到的症状,然后横向查看原因和解决方法。

Unreal 中的症状原因Blender 中的解决方法
根骨骼显示 Scale 100,或者重置后角色变得非常小Unit Scale 为 1.0 且 Apply Scalings: All Local,将米到厘米的换算系数烘焙进了骨架对象的变换将 Unit Scale 设为 0.01 并按 Unreal 尺寸建模,或者使用 Apply Scalings: FBX All 导出
角色面向 -X 或侧躺建模时角色面向 +Y,或者 Forward/Up 被改成了不一致的组合在 Blender 中让角色面向 -Y,并应用旋转。保持 Forward -Z、Up Y
骨骼方向错误,动画重定向后发生扭曲Primary/Secondary Bone Axis 不再是 Y/X将 Primary 设为 Y、Secondary 设为 X
髋部上方出现名为“Armature”的骨骼骨架对象被导出为 Null 节点,Unreal 将其转换成根骨骼将骨架对象重命名为 root
手指、头部和脚部出现以 _end 结尾的额外骨骼Add Leaf Bones 已启用(导出器默认设置)关闭 Add Leaf Bones
“在此 FBX 场景中未找到平滑组信息”Smoothing 保持为 Normals Only将 Smoothing 设为 Face
“发现多个根。导入器对每个网格体仅支持一个根。”存在多个顶层骨骼,且没有统一的父级将每个顶层骨骼设为 root 的子级
“场景不包含绑定姿势”文件中缺少绑定姿势数据导入时启用 Use T0 As Ref Pose,或让骨架处于静置姿势后重新导出
材质导入后只连接了 Color 和 NormalUnreal 只会自动连接这两个输入单独导出纹理,并在材质编辑器中重新连接粗糙度和金属度
得到一个很长的动画,而不是多个独立片段所有片段都存放在一个 Action 中,或者 NLA Strips 和 All Actions 均已关闭每个片段使用一个 Action 并启用 All Actions,或者每个片段使用一个 NLA 条带并启用 NLA Strips
动画正在播放,但网格体没有移动网格体未设为骨架的子级,或者 Only Deform Bones 移除了蒙皮所需的骨骼使用 Armature 修改器将网格体设为骨架的子级,并检查骨骼的变形标记

单位与缩放:“缩放 100”从何而来 ​

Unreal 的 FBX 导入器以厘米为单位。其 Convert Scene Unit 选项在 FBX 导入选项参考中被描述为“从 FBX 的测量单位转换为 UE 的测量单位,即厘米”。Blender 的内部单位是米。导出器源代码说得很清楚:“Blender 的默认单位等同于米,而 FBX 的单位是厘米”。因此,某个环节必须乘以 100,问题只在于这个 100 被写到了哪里。

Blender 的导出器(Blender 4.2 中版本为 5.12.4 的 io_scene_fbx)提供了两项相关设置。默认启用的 Apply Unit 表示“考虑当前 Blender 的单位设置”。Apply Scalings 决定换算系数应用到哪里。它的第一个选项 All Local(FBX_SCALE_NONE)会将“自定义缩放和单位缩放应用到每个对象的变换,而 FBX 缩放保持为 1.0”。最后一个选项 FBX All(FBX_SCALE_ALL)则会将“自定义缩放和单位缩放应用到 FBX 缩放”,也就是写入文件头。

阅读代码后,这个著名问题的成因就一目了然。Unit Scale 为 1.0 且使用 All Local 时,导出器会将每个顶层对象的变换乘以 100,并写入值为 1.0 的 UnitScaleFactor。网格体的尺寸正确,是因为它的变换中带有这个 100。骨架对象也一样,而 Unreal 会将骨架对象转换成根骨骼,因此根骨骼在骨架树中的 Scale 会显示为 100.0。Scale 字段自身的工具提示会警告“某些导入器不支持经过缩放的骨架!”,指的正是这种情况。

×100 被写到了哪里从 Blender 米制到 Unreal 厘米制。同一网格体,三种导出路径,一种错误结果。Blender 场景Apply Scalings写入 FBX 的内容Unreal 中的根骨骼Unit Scale 1.01.8 米角色 = 1.8 单位All LocalFBX_SCALE_NONE对象 ×100UnitScaleFactor 1.0Scale 100经典问题Unit Scale 0.011.8 米角色 = 180 单位All LocalFBX_SCALE_NONE对象 ×1UnitScaleFactor 1.0Scale 1按 Unreal 尺寸建模Unit Scale 1.01.8 米角色 = 1.8 单位FBX AllFBX_SCALE_ALL对象 ×1UnitScaleFactor 100Scale 1由 Convert Scene Unit 处理启用 Apply Unit 时,系数 = 100 × Unit Scale。All Local 将其烘焙进变换,FBX All 则将其写入文件头。
导出器会将单位系数计算为场景 Unit Scale 的 100 倍。All Local 会将对象变换乘以该系数,并写入值为 1.0 的文件头系数,因此骨架对象乃至 Unreal 的根骨骼最终会得到 100 的缩放。两种正确路径分别是:让系数变为 1(Unit Scale 0.01),或将系数移入文件头(FBX All),再由 Unreal 的 Convert Scene Unit 处理。

你有两种干净的解决方案,而且两种都可行。 0.01 技巧。 在 Properties > Scene > Units 中,将 Unit Scale 设为 0.01,并将 Length 设为 Centimeters。Blender 手册将 Unit Scale 描述为“在内部单位与用户界面中显示的值之间进行转换时使用的缩放系数”,并指出它“只影响用户界面中显示的值,不会影响内部行为”。此时,一个身高 180 cm 的角色在 Blender 中就是 180 个单位高,导出器的系数变为 100 乘以 0.01,也就是 1,而根骨骼导入后的缩放也为 1。缺点是:现有的米制资产需要放大 100 倍,物理和布料会以错误的尺度运行(手册明确提到了这一点),而且还需要增大视口裁剪距离。以 Unreal 为核心的工作流通常会采用这种方案,因为之后制作的所有内容从一开始就是 Unreal 的尺寸。

FBX All。 将 Unit Scale 保持为 1.0,并把 Apply Scalings 设为 FBX All。此时文件头中的 UnitScaleFactor 为 100,变换保持为 1,而 Unreal 的 Convert Scene Unit 会在导入时将米转换为厘米。工具提示警告说:“Blender 在导入时使用 FBX 缩放来检测单位,但许多其他应用程序并不会以同样的方式处理。”Unreal 可以正确处理,因此该设置能让你继续以米为单位建模。

无论选择哪一种方案,都要将导出器的 Scale 字段保持为 1.0。它会在单位系数之上继续相乘,只会多出一个可能藏着意外 100 倍缩放的地方。

轴向:两者都以 Z 轴向上,但并不是同一种 Z 轴向上 ​

两个应用程序都以 Z 轴向上,因此很多人以为这部分不需要额外处理。事实并非如此,因为两者的前向轴和坐标系手性不同。Blender 手册指出:“Blender 使用 Y Forward、Z Up(因为前视图沿 +Y 方向观察)。”按下小键盘 1 会将摄像机放在 -Y 一侧并朝 +Y 方向观察,因此面向前视图建模的角色实际上朝向 -Y。Unreal 同样以 Z 轴向上,但以 X 轴为前向;其导入器中的 Force Front XAxis 选项被描述为“使用前向 X 轴而非 -Y 轴”转换场景,这说明除非另行指定,否则导入器会假定 FBX 文件的前向是 -Y。

向上轴相同,前向轴不同Blender 使用右手坐标系,前视图沿 +Y 观察。Unreal 使用左手坐标系,以 X 为前向。BlenderUnreal EngineZ 轴向上X+Y(远离)角色朝向 -Y,也就是朝向小键盘 1 的摄像机右手坐标系Z 轴向上Y(向右)X 轴向前角色朝向 +X左手坐标系FBX 文件头Convert Scene
导出器会根据所选的 Forward 和 Up,将文件的向上轴与前向轴写入 FBX 文件头,而 Unreal 的 Convert Scene 会读取该文件头并将其旋转到自己的坐标系中。因此,默认的 -Z Forward、Y Up 可以正常工作,而真正重要的是角色在 Blender 中朝向哪个方向。

下面这部分是大多数教程都会略过的。Forward 和 Up 下拉选项本身不会直接将模型旋转到 Unreal 的坐标系中。导出器会根据它们构建转换矩阵,同时将匹配的 UpAxis 和 FrontAxis 值写入文件的 GlobalSettings。Unreal 的 Convert Scene 被描述为“将场景从 FBX 坐标系转换为 UE 的坐标系”,它会读取这些值,因此任何相互一致的轴向组合都能正常工作。Blender 默认的 -Z Forward、Y Up 会写出一个 Y 轴向上的文件。Epic 的 Send to Unreal 则直接使用 Blender 的轴向,即 Y Forward、Z Up。两者导入后都会朝向同一方向。

真正会改变结果的是角色在 Blender 内部的朝向。让模型朝向 -Y,应用旋转(Ctrl+A > Rotation),导入 Unreal 后它就会朝向引擎的前方,也就是 +X。如果下载的模型朝向 +Y 或 +X,请在 Object Mode 中旋转它,应用变换,然后重新导出。不要尝试通过 Forward 下拉选项修正朝向,否则文件头与几何体会彼此不一致,之后导出的动画也无法匹配。

保持 Use Space Transform 开启,并关闭 Apply Transform。Apply Transform(bake_space_transform)在导出器自己的工具提示中被标注为“警告!实验性选项,使用风险自负,已知无法正确处理骨架/动画”。它适用于需要将轴向转换烘焙进顶点数据的静态道具。绝对不要对绑定了骨骼的角色使用它。

骨骼轴:为什么骨骼导入后发生旋转 ​

Blender 骨骼拥有固定的局部坐标系。手册的骨骼结构页面指出:“Y 轴始终沿骨骼方向对齐,从根部指向末端;它是骨骼的‘滚转’轴。”许多在 Maya 中制作的绑定,以及围绕这些绑定编写的教程,则会让 X 轴沿骨骼方向延伸。FBX 并不在意骨骼沿哪个轴延伸,它会存储每根骨骼的完整变换。真正重要的是,网格的蒙皮权重、绑定姿势和每个动画关键帧都使用同一个坐标系。

哪个轴沿骨骼方向延伸Primary Bone Axis 决定该轴。Blender 自身的坐标系以 Y 轴沿骨骼方向。Primary Y、Secondary X(默认)Primary X(Maya 习惯)Y 轴沿骨骼方向XX 轴沿骨骼方向Y按原样写出。蒙皮、绑定姿势和关键帧完全一致。每根骨骼的坐标系相对于 Blender 旋转 90 度。如果所有内容都以此方式制作则没有问题;在流程中途切换则不行。
导出器的 Primary Bone Axis 和 Secondary Bone Axis 设置定义了每根骨骼写入文件时所使用的坐标系。Y 和 X 是 Blender 自身的约定,也是导出器的默认值。如果仅仅因为面向 Maya 的教程这么说,就将主轴切换为 X,那么文件中每根骨骼的坐标系都会被重新表示;这会表现为 Unreal 骨架视图中的骨骼看起来发生了旋转,并在重定向时导致肢体扭曲。

将 Primary Bone Axis 保持为 Y,并将 Secondary Bone Axis 保持为 X。它们是导出器的默认值,也是 Epic 在 Send to Unreal 的 FBX 设置中提供的默认值。Unreal 会按照文件声明的坐标系导入骨骼,因此采用 Y 轴沿骨骼方向的 Blender 绑定可以正确工作、播放动画并进行重定向。真正会造成问题的是混用:例如导出网格时使用一种主轴,而导出动画时使用另一种;或者为最初在 Maya 中制作的骨架导出 Blender 动画。如果目标是 Unreal 中已经存在的骨架,要么每次都从同一个 Blender 文件导出,要么先将 Unreal 骨架导入 Blender,再基于该骨架制作动画。

根骨骼问题 ​

Unreal 的骨骼网格体流程页面指出,骨骼网格体的枢轴“始终位于骨架的根骨骼/关节处”,并且导入器要求根骨骼必须有且只有一个。FBX 导入错误页面列出了不符合要求时会看到的消息:“发现多个根。导入器每个网格仅支持一个根。”

Blender 导出器会将骨架对象写成一个位于所有骨骼之上的独立节点。Armature FBXNode Type 选项控制该节点的类型:默认值是 Null,“类似于 Blender 的 Empty”,另外还可选择 Root 和 LimbNode;工具提示建议,除非“在其他应用程序中遇到问题”,否则不要使用后两者。Unreal 会将该节点视为骨骼层级的最顶层,并将其作为根骨骼,其名称取自骨架对象。Epic 在 Send to Unreal 的导出设置中记录了这一行为:其中的“Export object name as root bone”选项会“在 Unreal 中使用 Blender 里骨架对象的名称作为根骨骼名称;否则使用骨架层级中的第一根骨骼作为根骨骼”。 这就是为什么一个名为“Armature”的骨骼会出现在髋部上方。解决方法是在大纲视图中将骨架对象重命名为 root,而不是重命名骨架数据块。让它保持在世界原点,缩放为 1、旋转为 0,并取消髋骨(或骨盆)的父级,使其成为该节点的第一个子级,同时不要让任何顶点蒙皮到它。现在,你的骨架就具有与 Epic 骨架相同的结构:地面处有一个 root,其上方是骨盆。这个结构之后很重要,因为 Unreal 的 IK 重定向器 会要求你在两个绑定上分别指定一根骨盆骨骼,以便在角色之间传递根运动。

如果你希望骨架节点彻底消失,Send to Unreal 的“骨架层级中的第一根骨骼”模式正是为此而设,Better FBX Importer & Exporter 也能实现同样的效果。Blender 的内置导出器无法移除它,因此请将其重命名。

末端骨骼与变形骨骼 ​

Add Leaf Bones 默认开启,甚至导出器的源代码注释都注明它应该关闭。其工具提示为:“在每条骨骼链的末端附加一根最终骨骼,以指定最后一根骨骼的长度(当你打算根据导出的数据编辑骨架时使用此选项)。”代码会在每条骨骼链的末端生成一根隐藏骨骼,名称为 <bone>_end。Unreal 会在骨架树中显示所有这些骨骼,包括每根手指末端、头部和双脚脚趾。它们没有实际危害,但会污染层级结构、破坏重定向链的自动匹配,并为每个动画添加骨骼轨道。面向引擎导出时请将其关闭。

如果骨架包含控制骨骼,那么值得开启的是 Only Deform Bones,例如 IK 目标、极向量目标和 Rigify 的控制层。工具提示称它只会写入“变形骨骼(以及拥有变形子骨骼的非变形骨骼)”。Rigify 用户应在开启 Only Deform Bones 的情况下导出生成的绑定,这样会导出变形骨骼,而将控制系统留在 Blender 中。请检查网格所加权到的每根骨骼是否都勾选了 Deform 标志,否则在 Unreal 中,加权到该骨骼的顶点将冻结在原位。

平滑组、法线与三角化 ​

Unreal 的导入器需要平滑组。如果没有找到平滑组,FBX Import Errors 页面会显示明确的警告:“在此 FBX 场景中未找到平滑组信息。请确保在导出文件之前启用 FBX 导出器插件中的‘Export Smoothing Groups’选项。”Blender 导出器的 Smoothing 默认为 Normals Only,其说明为“仅导出法线,而不写入边或面的平滑数据”,并注明“如果目标导入器支持拆分法线,优先使用‘Normals Only’选项”。将 Smoothing 设为 Face 后,警告就会消失。导入时,Preserve Smoothing Groups 的说明是拆分“平滑组不匹配的三角形”,硬边正是通过这种方式得以保留。

骨骼网格管线页面指出,网格“必须经过三角化,因为图形硬件只处理三角形”。勾选导出器中的 Triangulate Faces,可以控制每个四边形沿哪条对角线拆分,这对于在 Blender 中烘焙的法线贴图很重要。Tangent Space 是可选项,而且根据其工具提示,它“只能在仅包含三角形/四边形的网格上正确工作”。如果网格包含多边形,请关闭 Tangent Space,或先进行三角化。

纹理与材质 ​

将 Path Mode 设为 Copy 并勾选 Embed Textures 开关,会把图像打包进 FBX 二进制文件,而 Unreal 的 Import Textures 选项会将其提取为纹理资产。导入的材质只能算半成品。静态网格管线页面称,“只有颜色和法线会自动连接”,骨骼网格页面也以不同措辞表达了同样的意思:“仅漫反射贴图和法线贴图”。粗糙度、金属度、自发光和环境光遮蔽会作为纹理导入,但不会连接到任何输入。Blender 手册也将“材质纹理”列为导出器的已知缺陷。

可行的做法是什么都不嵌入,将 FBX 仅视为几何体加骨架。通过 Blender 的图像编辑器导出纹理,或直接从 Substance 导出,再将它们与 FBX 一起导入 Unreal。然后使用你所需的 Principled BSDF 输入构建一个主材质,并为每个角色创建材质实例。Unreal 的 Material Import Method 提供“Create New Instanced Materials”模式,允许你为此选择一个基础材质。

骨骼网格与静态网格 ​

Unreal 通过检查是否存在蒙皮变形器来判断你发送的内容。一个父级设为骨架且带有 Armature 修改器的网格会被导入为 Skeletal Mesh,并创建 Skeleton 资产(导入对话框中的 Skeleton 选项写明:“如果未选择现有 Skeleton,将创建一个新的 Skeleton”)和 Physics Asset。没有骨架的网格会被导入为 Static Mesh。Import Content Type 选项允许你在骨骼导入时强制仅导入几何体或仅导入蒙皮。

对于静态道具,静态网格管线页面中的两项 Blender 端约定可以节省不少工作。碰撞体方面:Unreal 会把名称以 UBX_、UCP_、USP_ 或 UCX_ 开头,后接渲染网格名称的网格,分别识别为盒体、胶囊体、球体和凸包碰撞体,格式为 [PREFIX]_[RenderMeshName]_##。因此,一个名为 Crate 的道具,如果有一个名为 UCX_Crate_01 的子网格,导入时就会自带碰撞体。该页面还补充了一项限制:“在单个文件中导入多个带自定义碰撞体的网格时,只会导入第一个网格的碰撞体”,因此每个文件只导出一个道具。顶点颜色方面:“静态网格的顶点颜色可通过 FBX 管线传输,无需任何特殊设置。”Blender 会从当前活动的 Color Attribute 写入顶点颜色(导出器默认为 sRGB)。

对于骨骼网格,管线页面确认角色可以是“单个连续网格,也可以是蒙皮到同一骨架的多个独立网格”,因此无需将所有部件合并,但每个部件都必须以同一个骨架为父级。Apply Modifiers 默认开启,其工具提示警告它会“阻止导出形态键”。对于面部形态键,请将其关闭,手动应用非骨架修改器,并在 Unreal 中勾选 Import Morph Targets。

动画:动作、NLA 与 Skeleton 资产 ​

Blender 的导出器始终会烘焙动画:每根带动画的骨骼都会按 Sampling Rate 采样(1.0 表示每帧采样),约束、IK 和驱动器都会被写成普通关键帧。三个开关决定最终导出多少个动画片段。

All Actions 会将“每个动作写为独立的 FBX AnimStack”,手册进一步说明,这些是“与所选骨架兼容的所有动作”。NLA Strips 会将“每个未静音的 NLA 片段写为独立的 FBX AnimStack”。两者都关闭时,你会得到一个覆盖场景帧范围、使用骨架当前动作的动画片段。Unreal 会将每个 AnimStack 导入为独立的 Animation Sequence,而动画导入页面也确认:“Unreal 允许内容创作者从单个 FBX 文件导入多个动画。”因此,每个动画片段使用一个 Action,并按你希望序列使用的名称命名,然后勾选 All Actions。如果你是在 NLA 编辑器中编排动画片段,则勾选 NLA Strips 并关闭 All Actions,否则两者都会被导出。

Key All Bones 会强制“为所有骨骼至少写入一个动画关键帧(某些目标应用程序需要,例如 UE4)”。请保持开启。Force Start/End Keying 会在第一帧和最后一帧添加关键帧,使 Unreal 的 Animation Length 设为 Exported Time 时能够获得预期范围。Simplify 默认为 1.0,工具提示注明“设为 0.0 可禁用”。制作游戏动画时将其设为 0,因为简化后的曲线可能会丢失精确的接触帧。

在 Unreal 端,请分两次导入。第一次导入角色时关闭 Import Animations,这会创建 Skeletal Mesh 和 Skeleton。然后导入动画 FBX(使用相同骨架、相同骨骼轴向和相同缩放设置,不要求包含网格),关闭 Import Mesh,并在 Skeleton 下拉菜单中选择刚才创建的 Skeleton。根据参考文档,Use Default Sample Rate 为每秒 30 帧,而 Custom Sample Rate“设为 0 时,将自动确定最佳采样率”。请使其与 Blender 的帧率一致。如果导入时提示“Scene does not contain a Bind Pose”,请启用 Use T0 As Ref Pose 进行导入,它会使用第 0 帧“替换 Skeletal Mesh 的参考姿势”。

较新的引擎版本可能显示不同的对话框。Epic 的 Interchange Framework 是其“导入和导出框架。它与文件格式无关、支持异步、可自定义,并可在运行时使用”,而 5.5 发行说明称其“用于资产导入时已达到生产就绪状态,用于关卡导入时则处于测试阶段”。其导入参考对熟悉的功能使用了不同名称:Offset Uniform Scale、Use 30Hz to Bake Bone Animation、用于将动画导入现有骨架的 Import Only Animations,以及 Skeleton,其中“留空会创建一个新骨架”。无论使用哪种方式,Blender 端的检查清单都完全相同。

重定向到 UE5 Mannequin 或 MetaHuman ​

你的 Blender 骨架不会与 Epic 的骨架使用相同的骨骼名称,也没有这个必要。Unreal 5 的 IK Retargeter 旨在“在骨骼数量、骨骼名称和朝向各不相同的骨架之间传输动画”。根据 Epic 的 IK Rig 重定向页面,流程如下:

  1. 为导入的 Skeletal Mesh 创建 IK Rig 资产(在内容浏览器中选择 Animation > IK Rig)。在层级中右键单击骨盆骨骼,然后选择 Set Pelvis。点击 Auto Create Retarget Chains。如果目标角色还没有 IK Rig,也为其执行相同操作。
  2. 创建 IK Retargeter,将 Source IK Rig 设为你的绑定,将 Target IK Rig 设为 Mannequin 的绑定(如果要把 Epic 的动画应用到你的角色,则反过来设置)。
  3. 检查骨骼链映射。Epic 使用模糊字符串匹配,因此在没有更合适候选项时,名为 ArmLeft 的骨骼链会匹配 left_arm。修正所有映射错误的骨骼链。
  4. 如果你的角色以 A 字姿势绑定,而目标为 T 字姿势,请打开 Edit Retarget Pose 并对齐手臂,或使用 Auto Align 选项。
  5. 在 Asset Browser 中选择动画,然后单击 Export Selected Animations。你会得到目标骨架上的新 Animation Sequence,并可选择添加前缀或后缀。

Blender 端有两个细节可以让此过程顺利许多。按身体侧别和肢段命名骨骼(upperarm_l、lowerarm_l、hand_l),以便自动映射正确匹配;同时保留上一节所述的 root-then-pelvis 层级,让 Set Pelvis 有明确的骨骼可选,并使根运动如页面所述在角色之间“按比例”传递。采用 Mixamo 命名的绑定也能很好地自动映射,因为骨骼链名称来自 LeftArm 和 LeftForeArm 等骨骼名称,而匹配器能够识别其中的单词。这也是 Cinevva Rig 插件使用 Mixamo 命名进行绑定的原因之一。

Send to Unreal:Epic 插件自动完成哪些工作,以及它在 2026 年的状态 ​

Epic 的 BlenderTools 仓库包含 Send to Unreal——“一种将数据从 Blender 发送到 Unreal Engine 的一键式解决方案”——以及 UE to Rigify。Send to Unreal 封装了 Blender 自带的 FBX 导出器(“Blender FBX 插件中的所有标准 FBX 导出设置都可在此部分进行自定义”),并增加了一整套传输流程:它先写出 FBX,然后使用 Unreal 的 Python 远程执行功能,将其导入当前打开的项目。在 Unreal 端,需要启用 Python Editor Script Plugin,在 Project Settings 中启用远程执行,并关闭“Use Less CPU when in Background”,这样当 Blender 获得焦点时,编辑器仍会保持监听。在 Blender 中,将资产移入名为 Export 的集合,然后运行 Pipeline > Export > Send to Unreal。

它的默认设置是 Epic 的选择,因此很适合作为合理性检查:All Local 缩放、Y Forward 和 Z Up、Face 平滑、Primary Bone Axis Y 与 Secondary X、关闭末端骨骼,并使用骨架对象的名称作为根骨骼。它还能完成内置导出器无法做到的事情:移除骨架节点、导出 LOD,以及将活动 Action 放入 NLA,使每个动画片段成为独立序列。

维护状况是需要注意的问题。最新版本是 2023 年 11 月 9 日发布的 Send to Unreal 2.4.3,其发行说明列出了已通过 Blender 3.3、3.6 与 Unreal 5.3 的测试,而插件元数据将 Blender 3.3 设为最低版本。该仓库未归档,拥有约 3,300 个星标,并在 2026 年 9 月收到过一次文档提交,但最后一次代码合并是在 2024 年 7 月,而且仍有近百个未解决问题。它早于 Blender 4.2 的扩展系统,因此在围绕它构建工作流之前,请先在你的版本上进行测试。如果可用,它就是目前最完整的免费管线。如果不可用,下面的检查清单也能让你得到相同的文件。

CGDive 使用同一个自定义角色对比 Send to Unreal 与手动 FBX 导出,并展示它们在 Unreal 骨架树中的根骨骼和缩放差异。手动设置与本检查清单一致。
在导入端,Better FBX Importer & Exporter 确实名副其实。它是 Mesh Online 推出的一款付费插件,单席位价格约为 \$25,也是 Superhive 上最畅销的产品之一;它之所以存在,正是因为导入流程屡屡出错。其[产品页面](https://mesh-online.net/fbx.html)称,它“使用官方 FBX SDK 从零构建”,“导出的骨架和 3D 模型具有单位缩放和零旋转”,导入时“支持自动骨骼朝向”,且其输出已经“在 Unity Engine 2019、Unreal Engine 4/5 和 Godot Engine v3.2 中验证”。如果你需要将 Epic 的 Mannequin 或 Marketplace 动画导入 Blender,再导回原处,那么自动骨骼朝向就是你花钱购买的核心功能。如果只是把自己的角色从 Blender 单向导入 Unreal,使用内置导出器并采用下面的设置就足够了。

检查清单 ​

请按顺序操作。步骤 1 至 5 每个项目执行一次,步骤 6 至 13 每次导出时执行。

  1. Properties > Scene > Units:Unit System 设为 Metric。可以将 Unit Scale 设为 0.01、Length 设为 Centimeters(然后把现有的米制资源放大 100 倍),也可以将 Unit Scale 设为 1.0,并记得在步骤 9 中选择 FBX All。
  2. 建模时让角色面朝 -Y,双脚落在原点处的地面上。按小键盘 1 时应该能看到角色正面。
  3. 在 Object Mode 中选择网格和骨架,然后执行 Ctrl+A > All Transforms。两者的位置和旋转都应为 0,缩放应为 1。
  4. 在 Outliner 中将骨架对象重命名为 root。确保髋部是唯一的顶层骨骼,或者每根顶层骨骼都有真正的父级。不要给 root 分配任何权重。
  5. 检查每根变形骨骼是否都勾选了 Deform(Bone Properties)。如果使用 Rigify 或控制骨骼,请计划在导出时启用 Only Deform Bones。
  6. 每个动画片段使用一个 Action,并按照你希望 Animation Sequence 使用的名称命名。将场景帧率设为你在 Unreal 中要使用的帧率(Unreal 的默认采样率为 30)。
  7. 选择网格对象和骨架,不要选择其他任何对象。摄像机、灯光和空对象都会变成额外节点。
  8. File > Export > FBX (.fbx)。Include:启用 Selected Objects,并将 Object Types 限制为 Armature 和 Mesh。
  9. Transform:Scale 1.00;Apply Scalings 设为 FBX All(如果 Unit Scale 为 0.01,则可设为 All Local);Forward 设为 -Z;Up 设为 Y;启用 Apply Unit;启用 Use Space Transform;关闭 Apply Transform。
  10. Geometry:Smoothing 设为 Face;启用 Apply Modifiers(如果需要形态键则关闭);启用 Triangulate Faces;关闭 Tangent Space,除非网格全部由三角面和四边面组成。
  11. Armature:Primary Bone Axis 设为 Y;Secondary Bone Axis 设为 X;Armature FBXNode Type 设为 Null;根据步骤 5 的决定设置 Only Deform Bones;关闭 Add Leaf Bones。
  12. Bake Animation:仅当你希望角色导出文件中包含动画片段时才启用;否则在此处关闭,并在第二次仅导出动画时启用。启用 Key All Bones;关闭 NLA Strips;启用 All Actions;启用 Force Start/End Keying;Sampling Rate 设为 1.0;Simplify 设为 0。
  13. 仅当你希望 Unreal 创建占位材质时,才将 Path Mode 设为 Copy 并启用 Embed Textures;否则保持原设置,单独导入纹理。
  14. 在 Unreal 中,将 FBX 拖入 Content Browser。以 Skeletal Mesh 导入,将 Skeleton 留空,关闭 Import Animations,启用 Convert Scene,启用 Convert Scene Unit,并将 Import Uniform Scale 设为 1.0。打开导入结果,确认根骨骼的 Scale 为 1.0、角色面朝 +X,并且骨骼数量与 Blender 中的变形骨骼数量一致。
  15. 导入动画 FBX,关闭 Import Mesh,并将 Skeleton 设为步骤 14 中创建的骨架。播放一个动画片段,观察双脚和双手。

如果步骤 14 中根骨骼的 Scale 显示为 100,请返回检查步骤 1 或 9。如果角色朝向错误,请检查步骤 2。如果出现名为 Armature 的骨骼,请检查步骤 4。如果骨骼树中出现 _end 骨骼,请检查步骤 11。

一键式方案 ​

上面的每项设置都是一种约定,而软件正是用来自动执行约定的。Cinevva Rig 插件内置了 Unreal 导出预设:它会写出前向轴为 -Y、向上轴为 Z 的 FBX,使用 FBX_SCALE_NONE 应用单位缩放,将主骨骼轴设为 Y、次骨骼轴设为 X,不添加叶骨骼,使用面平滑,并嵌入纹理且将其限制在 2048 px 以内。因此,使用该插件绑定的角色无需接触导出器对话框,即可直接导入 Unreal。导出前,文件大小分析功能会把预计的文件大小拆分为几何体、纹理、动画和形态键,让你一眼看出,一个 40 MB、仅含 3,000 个三角面的角色,其中有 36 MB 来自 4K 纹理。与普通的 Blender GLB 导出相比,这些预设在四个真实模型上生成的文件分别小了 68%、89%、92% 和 98%。导出无需密钥、账户或网络连接。其绑定功能可在你自己的计算机上离线将网格绑定到带蒙皮、采用 Mixamo 命名方式的人形骨架;只需一次性下载约 2.4 GB 的引擎,并以 $29 一次性购买(首发价),无需按每次绑定付费。它支持 Windows、macOS 和 Linux 上的 Blender 4.2 及更高版本。在 Blender 中重定向的同一套 260 个 CC0 动画片段,也会作为独立 Action 一并写入 FBX,可直接用于步骤 15。

常见问题 ​

如何从 Blender 导出到 Unreal Engine 5? ​

选择网格和骨架,执行 File > Export > FBX (.fbx),勾选 Selected Objects,将 Apply Scalings 设为 FBX All(或者在 Unit Scale 为 0.01 的场景中使用 All Local),将 Smoothing 设为 Face,关闭 Add Leaf Bones,将 Primary Bone Axis 设为 Y、Secondary Bone Axis 设为 X,并启用 Bake Animation 和 All Actions。首先将骨架对象重命名为 root。在 Unreal 中,将文件拖入 Content Browser,并在导入时启用 Convert Scene 和 Convert Scene Unit。

Blender 导出到 Unreal 的正确 FBX 设置是什么? ​

Scale 设为 1.0,启用 Apply Unit,Apply Scalings 设为 FBX All,Forward 设为 -Z,Up 设为 Y,启用 Use Space Transform,关闭 Apply Transform,Smoothing 设为 Face,启用 Apply Modifiers,Primary Bone Axis 设为 Y,Secondary Bone Axis 设为 X,Armature FBXNode Type 设为 Null,关闭 Add Leaf Bones,启用 Key All Bones,启用 All Actions,Simplify 设为 0。这些设置与 Epic 的 Send to Unreal 插件所提供的设置一致,唯一区别是缩放选项:Send to Unreal 使用 All Local,并要求你按 Unreal 的尺寸单位工作。

为什么我的 Blender 模型在 Unreal 中缩放为 100? ​

因为 Blender 使用米,而 Unreal 使用厘米,两者相差 100 倍。采用导出器默认设置(Unit Scale 1.0、Apply Scalings 设为 All Local)时,这个 100 倍系数会乘入骨架对象的变换中,随后 Unreal 会将其读取为根骨骼的缩放。你可以将场景的 Unit Scale 设为 0.01,并按照 Unreal 的尺寸建模;也可以在导出时将 Apply Scalings 设为 FBX All,让该系数写入文件头,再由 Unreal 的 Convert Scene Unit 应用。

为什么我的骨骼导入 Unreal 后发生了旋转? ​

Blender 骨骼始终沿其局部 Y 轴延伸,而导出器的 Primary Bone Axis Y 和 Secondary X 会按原样写入这一坐标系。如果你因为某个 Maya 教程而把 Primary 改成 X,文件中每根骨骼的坐标系都会相对于蒙皮和动画数据旋转 90 度。将骨骼轴恢复为 Y 和 X,并从同一个文件重新导出网格与动画。

如何去掉 Unreal 中的 Armature 根骨骼? ​

使用 Blender 内置导出器无法删除它,但可以为它命名。Unreal 会以骨架对象的名称将该对象转换成根骨骼,因此请将骨架对象(不是骨架数据)重命名为 root,让它保持在原点,并让髋部成为它的第一个子级。Send to Unreal 和 Better FBX Importer & Exporter 都可以移除该节点,改为将第一根骨骼提升为根骨骼。

2026 年 Send to Unreal Blender 插件仍在维护吗? ​

勉强算是。最后一个版本是 2023 年 11 月发布的 2.4.3,经测试支持 Blender 3.3 和 3.6 以及 Unreal 5.3;最后一次代码合并发生在 2024 年 7 月。该仓库仍然公开且未归档,并在 2026 年 9 月收到过一次文档提交,但一直没有面向 Blender 4.x 的版本。请先在你的 Blender 版本上进行测试,再围绕它构建工作流,并保留手动检查清单作为备用方案。

如何将 Blender 动画重定向到 UE5 Mannequin? ​

将角色作为 Skeletal Mesh 导入,为它创建一个 IK Rig,在髋部骨骼上执行 Set Pelvis,然后点击 Auto Create Retarget Chains。创建一个 IK Retargeter,将你的 IK Rig 设为 Source,将 Mannequin 自带的 IK Rig 设为 Target,检查骨骼链映射;如果你的骨架采用 A-pose,请修正重定向姿势。然后选择动画并点击 Export Selected Animations。反向执行相同步骤,也可以把 Epic 的动画应用到你的角色上。

相关内容 ​