在Blender里建好了模型,展好UV,刷好权重,导出FBX拖进UE5,结果模型直接躺在世界里,或者转了90度——这个场景我遇到太多次了。最磨人的不是模型倒了,而是网上搜出来的解决方案互相矛盾:有人说导出前要把模型绕X轴转-90度,有人说勾上Apply Transform就行,有人说在UE5里把Import Rotation改一下,还有人建议用Force Front XAxis。你照着试了一圈,可能静态模型正常了,但角色骨骼又错乱了。后来我把原理理清楚,发现大部分教程只说“按这个设置”,没说“为什么这么设置”,导致Blender一更新版本,旧方案全军覆没。这篇就围绕Blender和UE5之间的FBX轴向匹配,从原理到实操,把这事彻底说清楚。
1. 坐标系差异的真相:不是Blender和UE5在打架,是FBX这个“中间人”在作怪
1.1 三个坐标系的约定
先说一个很多人搞反的事实:Blender和UE5场景内部其实都是Z轴朝上的。在Blender里,你按小键盘7看顶视图,向上的是Z;在UE5里默认也是一样,Z轴指向上方。既然两边都是Z-up,为什么导进UE5会躺倒?问题出在FBX这个中间文件格式上。
FBX是Autodesk制定的通用交换格式,它自己有一套“标准坐标系”:通常约定Y轴朝上。你可以把FBX想象成一个翻译官,Blender说中文,UE5说英文,FBX负责把中文翻译成英文再翻回来。问题是这个翻译官默认的工作语言是Y-up,Blender交出去的时候如果不做转换,UE5那边读到的方向就和原意对不上。
具体流程是这样的:Blender导出FBX时,需要把Blender的Z-up世界“翻译”成FBX的Y-up世界;UE5导入FBX时,再把Y-up世界翻译回UE5的Z-up场景。任何一步的映射对不上,模型就会歪。
这也是为什么如果你从3ds Max或者Maya导出FBX到UE5,问题往往没有Blender这么突出——Maya原生就是Y轴向上的DCC,它和FBX的标准坐标系天然一致。而Blender作为Z-up工具,就必须在导出环节做一次额外的轴变换。这个变换,就是FBX导出面板里那个Forward和Up选项。
1.2 Forward/Up轴向设置真正的含义
Blender导出FBX的时候,导出面板里有一组下拉框,默认是Forward: -Y,Up: Z。很多人天天见但没搞懂它到底在干嘛。
简单说,这两个选项定义了“把Blender世界坐标系里的哪个方向,映射成FBX世界坐标系里的哪个方向”。FBX标准里,Y轴朝上,那Up这个选项就是在告诉导出器:Blender里的哪个轴对齐到FBX的Y轴。你选Up: Z,意思是把Blender的Z轴竖起来放到FBX的Y轴位置。同理,Forward: -Y就是把Blender里-Y方向定义成模型的前方,对应到FBX的某个轴。
为什么这套组合对UE5有效?因为Blender里的模型默认朝向是-Y方向(你在前视图Numpad 1里看到的正面),而UE5场景里模型/角色的默认前方是+X方向。经过Forward: -Y、Up: Z这个映射组合,再加上导出器的轴变换算法,最终进到UE5后,模型的世界坐标和旋转值会保持和Blender里一致。实测下来,静态网格、骨骼网格在这个组合下都是正的,不需要任何额外的旋转。
如果你把这个组合换掉,比如选成Forward: -Z、Up: Y,相当于用另一个“词典”翻译,出来的结果就会跟Blender里的方向差一个90度或更多。这可能就是你的模型躺倒的直接原因。
1.3 手动旋转-90度,为什么是饮鸩止渴
我刚开始搞Blender转UE5的时候,也干过这种蠢事:模型躺倒了,我直接在Blender里把整个模型绕X轴旋转-90度,然后导出,果然在UE5里站起来了。当时还挺得意,觉得找到了“稳定方案”。后来做带骨骼的角色动画,问题全冒出来了。
原因在于:手动旋转模型本身,会让模型网格顶点坐标发生一次“假变换”。如果你只是转网格,没有应用旋转(Ctrl+A),那FBX导出时网格有一个旋转值,骨骼也有一个旋转值,两者之间的相对关系全变了。导入UE5后,网格可能正了,但骨骼仍然按原来的局部坐标计算动画,最终表现就是角色在地面上滑行、骨骼扭曲、动画飘。
更麻烦的是碰撞体。UE5的简单碰撞(盒体、球体、胶囊体)是基于网格包围盒自动生成的,网格旋转了,碰撞体也跟着歪。你以为模型是正的,但一运行物理,角色直接卡在地面里。这种“看着正了,实际上内伤”的问题,比模型躺倒还要难排查。
所以,凡是想靠“导出前旋转模型”来修正轴向的,都是治标不治本。正确做法是在导出和导入设置里把轴向理顺,让模型、骨骼、碰撞、动画的坐标基元保持一致。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 导出前的场景检查:单位、应用变换、隐藏根节点
2.1 单位与缩放:米和厘米的百年恩怨
轴向之外,单位是另一个高频翻车点。Blender的默认单位是米,UE5的默认单位是厘米。这俩单独看都没有问题,但通过FBX交换时,文件里记录的“1个单位”到底等于多少厘米,直接决定了模型导入后的比例。
Blender导出面板里有个“Apply Scalings”选项,默认是“FBX Units Scale”。它的作用是,在导出时根据Blender场景单位与FBX目标单位的比例关系,自动做一次缩放换算。保持这个默认值,你在Blender里建一个2米长的立方体,导入UE5后得到的是200cm,完全正确。
如果你把“Apply Scalings”改成“All Local”,意味着导出时不做任何单位换算,Blender里的1个单位就按FBX的1个单位写出去。而UE5把FBX的1个单位解释为1厘米,结果你那个2米长的方块,到UE5里就变成了2厘米。我在好几年前踩过这个坑,当时导出的场景在UE5里缩成了微缩模型,我还以为是相机设置错了,折腾半天才发现是单位问题。
这里给个建议:除非你明确知道自己在做什么,否则“Apply Scalings”保持默认“FBX Units Scale”就行。如果发现模型导入后比例不对,优先回Blender检查这里,不要直接在UE5导入面板里把Import Uniform Scale调成100之类的值——那不是修复,只是掩盖。
2.2 应用变换(Ctrl+A):哪些对象必须应用旋转和缩放
Blender里编辑模型,经常随手S缩放、R旋转,然后就直接导出了。这些旋转和缩放是记录在对象的Transform属性上的,不是顶点数据的一部分。FBX导出器虽然会写入这些Transform信息,但UE5的FBX导入器对Transform的处理并不总是和你Blender里看到的一样,尤其是存在非均匀缩放(X/Y/Z缩放值不同)的情况,导入后非常容易出现法线错乱、碰撞偏移、旋转值异常。
所以我在导出任何模型前,都会选中所有要导出的Mesh对象,按Ctrl+A,选择“旋转和缩放”(Rotation & Scale)。这一步的作用是把对象的旋转和缩放“烘焙”进网格顶点数据里,让对象的Transform变成干净的单位值。这样导出的FBX里,网格的本地坐标就是最终摆放好的样子,不再依赖外部Transform。
需要提醒的是:如果你有骨骼动画,对骨骼(Armature)应用旋转要非常小心。对Armature使用Ctrl+A——尤其是应用旋转——可能会改变骨骼的局部坐标空间,导致动画曲线全部错乱。静态网格随便应用,骨骼相关的尽量只应用缩放,不要应用旋转,除非你清楚自己为什么这么做。
2.3 根节点与Empty的旋转清理
Blender里习惯用一个Empty作为场景根节点,把所有零件挂进去,方便整体移动和旋转。这本身没问题,但如果你旋转了这个Empty,那导出时FBX会记录这个Empty的旋转值,UE5导入后整个模型会带着这个旋转量。很多人把模型“归正”了,但忘了底下有个Empty是歪的,结果导来导去还是歪。
我的处理习惯是:导出前,把所有模型对应的父级Empty选中,看一眼右侧N面板里的旋转值,确保是0。如果确实需要整体旋转,就在导出前把Empty的旋转清零,或者干脆选中所有子物体,Ctrl+A之后手动把网格对准世界坐标。
这个步骤不复杂,但能省掉后面一堆莫名其妙的导入问题。尤其是你从网上下载的模型,或者别人给的工程文件,里面很可能藏着旋转过的根节点。
2.4 先导一个不对称的测试体
如果你怀疑轴向有问题,不要拿正式模型直接测,那样变量太多。我强烈建议先做一个“轴向测试体”:新建一个Cube,拉成一个细长条,然后在它的某个方向(比如+X方向)加一个小圆柱作为标记,再在+Y方向加一个薄片,这样模型的六个方向都能肉眼区分。
把这个测试体导出成FBX,用和正式模型完全相同的设置,导入UE5,对照Blender里的方向看是不是一致的。如果测试体方向完全正确,说明导出设置没问题,问题出在正式模型自己的Transform或者层级上。如果测试体也是歪的,说明导出或导入参数有问题。
这一步能把你从“玄学调参”里拉出来。我现在的习惯是,每换一个Blender大版本,都会先跑一次测试体,再开始导正式资产。
3. Blender侧导出参数:4.x默认已经够好,旧版本注意这几个开关
3.1 Blender 4.x的默认导出行为
Blender 4.0开始,FBX导出器经历了一次比较大的改动。新版导出器默认勾选了“Apply Transform”,而且默认轴向组合就是Forward: -Y、Up: Z。换句话说,新版本装好之后,你什么都不用改,直接导出FBX到UE5,轴向就是对的。
这一点非常重要,因为你在网上搜索“Blender UE5 FBX”的时候,会搜到大量针对旧版本的教程。这些教程会教你在导出面板里改Forward、Up、勾Apply Transform,甚至说“导出前把模型绕X轴转-90度”。如果你用的是4.x,照着这些旧教程操作,反而会把正确的设置改坏。
我的建议是:先确认自己Blender版本是4.0以上,然后导出面板的参数保持默认,导一个测试体去UE5验证。如果测试体是对的,就不要动任何轴向设置。很多新手恰恰是看了老教程,画蛇添足,把默认正确的配置改成错误的。
3.2 Blender 3.x及更早版本的推荐设置
如果你的工作环境还在用Blender 3.x甚至更早,那就需要手动检查一下导出面板。以下这个组合是多年来被验证过可用于UE5的:
- Forward: -Y
- Up: Z
- Apply Transform: 勾选(静态网格)
- Apply Scalings: FBX Units Scale
这个组合的实际效果,就是把Blender的Z-up世界正确转换为UE5能识别的FBX数据。对于Blender 2.8到3.x之间的版本,这套设置是相对稳妥的。
需要留意的是,Blender 2.79及更早版本,FBX导出器的默认轴向并不是为UE准备的,很多老教程会教“导出后把模型转-90度”。如果你的项目必须停留在2.79,情况会更复杂一些,建议尽量在时间允许的情况下升级Blender,不要在新项目里还用旧版本。
3.3 Apply Transform在静态网格和骨骼模型上的差异
“Apply Transform”是我见过误解最多的一个开关。它的作用是把对象的世界空间变换(旋转、缩放、位移)直接写入网格顶点数据,这样导出的FBX里,网格本身的坐标就是最终的摆放结果。
对静态网格,我几乎总是勾选它。因为静态网格不需要骨骼绑定,烘焙完Transform之后,网格的本地坐标干净利落,UE5导入后就是一个纯粹的Mesh资产,碰撞生成也准确。
对骨骼模型,情况就要复杂一些。在Blender 3.x时代,勾选Apply Transform导出带骨骼的模型,偶尔会出现动画旋转异常的问题,具体表现是模型在UE5里摆着是正的,但一播放动画,整个角色像拧麻花一样。这是因为Apply Transform会把Armature的变换也“烘焙”进去,而旧版本对骨骼的烘焙逻辑有兼容性问题。
如果你遇到这种情况,可以试试取消勾选Apply Transform,重新导出。代价是FBX里会带上一堆Transform数值,但只要Blender这边的骨骼本身没有问题,UE5导入时也能正确解析。
3.4 不同轴向组合的实测结果对照
我整理了一个常见的轴向组合给UE5导入时的实测表现,版本以Blender 4.x为主,旧版本仅供参考。
| Forward | Up | 导入UE5后的表现 |
|---|---|---|
| -Y | Z | 默认正确,模型方向和Blender一致 |
| Y | Z | 模型可能绕某个轴转了180度 |
| -Z | Y | 模型躺倒,X轴旋转-90度(老教程常见) |
| Z | Y | 模型躺倒,旋转方向相反 |
| X | Z | 模型绕Y轴旋转90度 |
| -X | Z | 模型绕Y轴反向旋转90度 |
这个表格只是我实测中的大致规律,FBX导入器对GlobalSettings的解析在不同Blender版本里可能有细微差异。但有一点是肯定的:默认的Forward: -Y、Up: Z是适用范围最广、问题最少的组合。不要轻易换。
4. UE5侧导入设置:哪些开关可以救场,哪些开关别乱动
4.1 Transform区域:默认值最好别改
UE5的FBX导入面板里,有一个“Transform”分类,里面有Import Translation、Import Rotation、Import Uniform Scale。这三个字段默认分别是0、0、0和1.0。
很多人在网上看到“模型躺倒了就改这里”,于是把Import Rotation的X改成-90度。这么做确实能让模型视觉上站起来,但它属于“导入后手工修正”,和我们在Blender里手动转模型是一个性质,只是位置不同。尤其对骨骼模型,改动Import Rotation会导致骨骼根节点的世界旋转发生变化,动画、物理、重定向全都可能跟着出问题。
我的原则是:这三个字段永远保持默认。如果你发现必须改Import Rotation才能让模型正过来,说明问题出在Blender导出端,回去检查Blender设置,而不是在这里打补丁。
4.2 Force Front XAxis的正确使用姿势
很多人不知道,UE5导入骨骼网格体的时候,有一个选项叫“Force Front XAxis”,位于导入面板的“Mesh”分类下面。它的作用是:把FBX文件里的前方轴强制对齐到UE5的+X方向。
这个选项主要解决的是“模型方向对,但角色/物体的前方不是+X”的情况。比如你在Blender里建模的时候,让角色面朝了+X而不是默认的-Y方向,导出后导入UE5,角色就会侧着站。这时候勾选Force Front XAxis,导入器会按照一个预设规则把方向转正。
但我的实际经验是:这个选项是“最后手段”,不是“首选方案”。最干净的做法仍然是在Blender端把模型的前方规范成-Y方向,用默认的Forward: -Y、Up: Z导出。只有当你拿到一个别人做的FBX,没法回到源文件修改轴线的时候,才考虑用Force Front XAxis去救场。
4.3 静态网格的导入修正思路
对于纯静态网格,UE5导入面板没有Force Front XAxis,可用的轴向修正手段更少,所以问题必须在Blender端解决。如果静态网格导入后方向不对,我的排查顺序是:
- 在Blender里确认模型的“前方”是不是-Y方向,顶部是不是+Z方向。
- 检查模型有没有应用旋转和缩放(Ctrl+A -> Rotation & Scale)。
- 确认导出面板的Forward和Up是默认值。
- 导一个测试体去UE5,判断问题出在哪一端。
如果这些都没问题但模型还是歪的,那就要检查模型本身是否有子父级关系,或者是不是有隐藏的空物体影响了FBX的根Transform。静态网格的轴向问题,90%可以通过这些步骤定位到。
4.4 反向流程:从UE5导回Blender
轴向问题不只出现在Blender导出到UE5,反向导入也一样。从UE5里选中一个资产,右键->导出,得到FBX再拖进Blender,你会发现模型经常是躺着的。这是因为UE5导出FBX时,是把自己的Z-up场景转换成了FBX的Y-up标准,但Blender导入时不一定自动执行对应的轴转换。
Blender导入FBX的面板里也有Forward和Up选项,默认值我记得是Forward: -Y、Up: Z,这个组合在导入UE5导出的FBX时可能会让模型旋转90度。遇到这种情况,把导入面板里的Forward和Up改成别的组合,比如Forward: X、Up: Z,通常就能让模型站起来。
我提这个是为了说明一个道理:轴向转换是双向的。如果你在调试Blender到UE5的流程时总是搞不定,不妨反向导一次,尝试理解FBX的轴变换逻辑。很多时候你理解了其中一边,另一边也自然通了。
5. 骨骼模型和动画:轴向问题在这里会加倍放大
5.1 骨骼朝向与T-Pose
静态网格的轴向问题,最多就是模型歪了;骨骼模型的轴向问题,会波及骨骼匹配、动画重定向、物理模拟和IK。所以骨骼模型的导出要求比静态网格严格得多。
我建议所有角色模型在导出前,先确认两件事:一是角色处于T-Pose(或者你项目约定好的A-Pose),二是骨骼朝向是“干净”的。这里的“干净”指的是骨骼自身没有奇怪的roll旋转,Root骨骼和Pelvis骨骼的朝向符合UE5 Mannequin的约定。
很多从Blender刷权重导到UE5做重定向的人,都会遇到骨骼匹配不上或者动画整体偏移的问题。表面看是“旋转”问题,本质上是骨骼的局部坐标系和UE5期望的不一致。如果你不打算做AE重定向或者IK,那骨骼朝向的影响还不大;但如果你要用UE5的IK Retargeter,就一定要在Blender里把骨骼的roll理顺。
5.2 Use T0 as Ref Pose:动画第一帧的巨坑
导入带骨骼和动画的FBX到UE5时,在Animation分类下有一个“Use T0 as Ref Pose”选项。它的作用是:把动画第一帧的姿势当作参考姿势来处理。
这个选项为什么重要?因为很多Blender用户导出的FBX里,动画并不是从T-Pose开始的,而是直接从第一个动作开始的。如果UE5把第一帧误认为参考姿势,它会拿这个姿势去和骨骼绑定做对比,结果就是模型整体扭曲或者骨骼旋转偏移。
我导角色动画的标准做法是:在Blender里把角色的T-Pose放在第1帧,并且确保第1帧有姿势关键帧,然后导出FBX时在UE5导入面板勾选Use T0 as Ref Pose。这样UE5就知道参考姿势是T-Pose,后续动画不会出现基准错乱。
要注意的是,如果你在Blender里只有一个模型文件,动画文件是单独导出的,那么动画FBX的第一帧也应该是一个完整的T-Pose。否则同样会踩Use T0的坑。
5.3 动画导出时NLA和Action的坑
还有一个经常被误认为是轴向问题的坑:Blender的NLA编辑器。Blender里可以用Actions管理多段动画,但导出FBX时,它默认处理的是当前时间线范围内的动画数据。
如果场景里同时存在多个Action,而你在非预期的帧范围导出,FBX里可能包含了一段你根本不想导出的动画,或者只有当前Action的部分片段。导入UE5后,角色播放动画时出现奇怪的角度变化,很多人第一反应是“轴向又不对了”,实际上就是FBX里带了多余的动作数据。
我的做法是:导出前先进入NLA编辑器,把不需要的Action全部移除或者禁用,只保留要导出的动画。然后确认时间线范围刚好覆盖那段动画,再导出。这个习惯让我少踩了很多坑。
5.4 骨骼模型的分步诊断
骨骼模型出问题时,我不用一上来就怀疑轴向,而是分两步走:
第一步,在Blender里把角色摆出T-Pose,删除所有动画关键帧,然后导出成“静态骨骼模型FBX”。导入UE5,先看网格方向对不对,再看骨骼层级和骨骼朝向对不对。如果这一步就歪了,就不用浪费时间排查动画了,问题在基础绑定或者导出设置。
第二步,在Blender里正常导出带动画的FBX,导入UE5,在Animation分类下确认Use T0 as Ref Pose勾选正确。如果静态FBX正常但动画FBX还是怪,再回头检查NLA和动作范围。
这种分步诊断能帮你把“网格轴向问题”和“动画/绑定问题”分开,不至于混在一起越搞越乱。
6. 我的完整排查清单与日常配置
6.1 按顺序执行的诊断步骤
每次遇到Blender模型导入UE5方向不对,我都会按下面这个顺序排查,不跳步:
- 在Blender里选中模型,按N打开右侧面板,查看对象Transform的旋转和缩放,确认旋转是0(或已应用)、缩放是1(或已应用)。
- 确认模型的前方是-Y、上方是+Z。判断方法很简单:在Blender里按小键盘1进入前
