你可能遇到过这种情况:在Blender里明明把模型摆得整整齐齐,导出FBX拖进UE5,结果模型要么躺在地上,要么转了90度,要么放大缩小不成比例。群里问了一圈,有人说改导入设置,有人说改导出设置,还有人建议你用Datasmith,试了一圈折腾半天,最后还是一堆烂摊子。
这篇文章我打算把Blender和UE5之间FBX轴向匹配这件事彻底讲透。我会从两套软件对坐标系的定义差异说起,然后拆解FBX导出导入的完整流程,给出可以直接照抄的导出配置和导入配置,最后把那些最常见的坑列出来,比如模型躺倒、单位不对、法线发黑、骨骼动画错位,逐一说明排查思路。
1. 核心思路:搞懂Blender和UE5各自的空间坐标系
1.1 两种坐标系到底差在哪
先说结论:Blender是Z轴向上的右手坐标系,UE5也是Z轴向上的坐标系。看起来都是Z轴向上,理论上不应该有轴向问题,但实际导入导出总会出幺蛾子,问题出在“如何把Blender的坐标表达转换到UE5能识别的坐标表达”上。
Blender里一个模型,它的前方向对应的是-Y轴,上方向是+Z轴。UE5里一个模型,前方向对应的是+X轴,上方向是+Z轴。两者都是Z轴向上,但“前方”的指向不同,一个是-Y,一个是+X。这个差异直接导致FBX在中间做桥梁时,必须做一次旋转转换,否则模型就会朝向错误。
这个旋转换算关系可以写成:从Blender坐标转到UE5坐标,等价于绕Z轴旋转-90度。也就是Blender的-Y方向变成了UE5的+X方向。FBX格式本身并没有规定“必须用哪个轴作为前方”,它只负责把坐标数据存下来,至于怎么解释这些坐标,就看导出方和导入方各自的约定。
很多教程会让你在导出时直接选“-Y轴为前方”,但这个方法在不同版本的Blender、不同版本的UE5下并不总是可靠。我自己更习惯的做法是:在Blender里把模型摆正,让模型的前方指向Blender的-Y轴,然后导出时使用FBX默认设置,进入UE5后再在导入面板里微调旋转参数。这个流程的可复现性更高,不会因为Blender烘焙动画、骨骼绑定不同而翻车。
1.2 为什么单位不一致会引发连锁问题
轴向和单位这两个问题经常纠缠在一起。Blender默认单位是米,UE5默认单位也是厘米——不对,UE5的单位是厘米,Blender的单位是米。这里的坑在于:FBX文件内部存储的单位是由导出方决定的,导入方会根据文件内的单位换算比例自动做缩放。
具体来说,Blender里如果场景单位是米(默认就是米),导出FBX时会把单位信息写入文件。UE5导入时识别到文件单位是米,就会自动换算成厘米,也就是放大100倍。听起来没问题,但实际经常出问题的情况是:你在Blender里建模时,网格尺寸本身已经不对了。
举例,你在Blender里创建一个Cube,默认边长是2米。导出到UE5,引入后边长变成200厘米,也就是2米,这是对的。但如果你在Blender里用的是“毫米”作为场景单位,那你建的模型如果原本想着“10毫米”的尺寸,结果导出后UE5导入时会把它当成10米来处理——因为FBX单位换算只知道场景单位是毫米,会把10毫米换成1厘米,但如果你在Blender里输入数值时心里想的是“10”,实际网格却是10毫米,到了UE5就变成了1厘米,就完全不对了。
所以推荐的固定做法是:Blender场景单位锁定为米,建模时用真实尺寸,1米就是1米,导出的FBX单位设为厘米,UE5导入时缩放选择1.0,或者让UE5自动检测。把单位这个变量提前锁死,后面所有关于轴向的调整才有意义。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心细节:FBX导出面板里每一项该怎么设
2.1 左侧面板的通用设置项
先说如何调出FBX导出面板。在Blender里选中你要导出的模型(或选中多个模型),按快捷键File > Export > FBX (.fbx),右侧会弹出一个属性面板。这个面板的选项很多,但真正影响轴向匹配的其实就几个关键选项。
第一个是“Path Mode”,这个建议选“Copy”并勾选“Embed Textures”。什么意思?就是把贴图文件复制到FBX同级的textures文件夹里,并把贴图路径写进FBX内部。不勾选的话,UE5导入后材质球会引用原始贴图路径,一旦换台电脑或改了目录,材质就会丢失。
第二个是“Forward”和“Up”这两个下拉框。“Forward”的意思是:在Blender中哪个轴方向应该被解释为“前方向”。“Up”的意思是:哪个轴方向应该被解释为“上方向”。前面说了,Blender默认的“前”是-Y,而UE5的“前”是+X,所以常规情况下需要在这里做一次90度旋转。
我推荐的设置是:-Y Forward,Z Up。这组设置的含义是“告诉FBX,Blender场景里-Y方向是前方,Z方向是上方”。FBX文件写入时,会自动把这些轴信息标记好,UE5导入时就能正确还原。如果你导出后进入UE5发现模型转了90度,通常就是这里的选择不对。
第三是“Apply Transform”和“Apply Unit”这两个选项。很多网上教程会让人勾选Apply Unit,但我不推荐在导出时勾选,因为这会让你在Blender里的模型尺寸被强制换算成厘米再写入FBX。虽然UE5能正确识别,但如果你之后要回到Blender继续修改,会发现模型尺寸全部变了。正确的做法是把单位换算交给UE5导入时处理,导出时保持模型原始尺寸。
2.2 右侧面板的物体类型与烘焙选项
右侧面板有“Object Types”这一栏,默认是勾选了Mesh、Armature、Empty等。实际导出时,建议只勾选你真正需要的内容。如果你导出的只是一个静态Mesh,只勾Mesh即可。如果你要导出骨骼动画,就要勾选Armature和Mesh。把Empty也勾上的话,容易把Blender里的辅助空物体一起导进去,UE5导入时会多出很多无用的Actor,非常糟心。
然后是“Bake Animation”这一项。如果你导出的是动画,这个选项要勾上,并且“Bake Location”你根据动画类型选择。但如果你只是导出静态模型,这个勾选框直接保持不勾即可。真正需要留意的是“Apply Scalings”这个下拉框,我习惯设置为“FBX Units Scale”,这样单位换算会以FBX文件里的Unit Scale为准。如果你在UE5导入时发现模型大小差异巨大,多半是这个下拉框和UE5导入面板里的Scale对不上。
还有一个很多人忽略的选项是“!EXPERIMENTAL! Apply Transform”。这个选项字面意思是“应用变换”,实际上是把物体的旋转、缩放、位置信息烘焙到网格数据里。如果不勾选,而你的模型在Blender里旋转了90度摆放,那导出的FBX里虽然网格数据正确,但物体的Transform里带了一个旋转值。UE5导入时,会把这个旋转值应用上去,于是模型又转了一下,这就是模型位置“看着正确但导入后歪了”的常见原因。
我的建议是:建模阶段尽量养成Ctrl+A应用旋转和缩放的习惯,然后在导出时勾选“Apply Transform”,让FBX文件里的网格数据是干干净净的,不依赖任何父级Transform。这样到UE5里导入,轴向匹配成功率会高很多。
3. 实操过程:从Blender导出到UE5导入的完整走查
3.1 Blender端准备:模型必须“摆正”
在动手导出之前,先花两分钟确认模型状态。这一步值得做,因为很多轴向问题其实是模型在Blender里就没摆正,而不是导出设置的问题。
先在Blender里选中模型,右键 > Set Origin > Origin to 3D Cursor,确保模型原点在合理位置。然后按Ctrl+A,在菜单中选择“All Transforms”——这一步会把模型的旋转和缩放归一化。归一化之后,模型的本地坐标轴会和世界坐标轴对齐,本地缩放变成1.0、1.0、1.0,本地旋转变成0度。这个状态是导出FBX最稳妥的状态。
接着检查模型的朝向。在Blender的顶视图(数字键7)下,如果这是个角色模型,让角色的脸朝向-Y方向;如果是个道具模型,让道具的正前方朝向-Y方向。你可能想问为什么不直接让前朝向+X,因为FBX导出时Forward选项会替你完成从-Y到+X的转换,你只需要在Blender里把模型摆成“前朝-Y”即可。如果模型本身朝向+X,你导出时用-Y Forward设置,导入UE5后就会变成侧着身子朝前,又歪了。
有些时候你发现模型的所有材质、贴图在Blender里看起来都没问题,但导出UE5后材质丢失。排查方向:确认你使用了“Preview”或“Material Preview”模式时能看到材质,否则导出时贴图信息可能没有被写入。然后在导出面板里勾选了“Embed Textures”,路径模式选“Copy”,再进入UE5检查材质球里的贴图引用路径。
3.2 UE5端导入:导入面板的参数细节
在UE5中,把FBX拖到Content Browser里,会弹出FBX Import Options面板。这个面板有几个关键选项。
“Import Uniform Scale”这个值,默认是1.0。如果你在Blender里导出的是米制单位,且导出时没勾Apply Unit,那么这里保持1.0即可。但如果你发现导入后模型大得离谱或小得看不见,可以试试手填0.01或100。这里的逻辑就是:FBX的单位是米,UE5的单位是厘米,米转厘米的换算是100倍。所以理论上FBX导入时,UE5会自动读取文件单位并换算,Import Uniform Scale保持1.0就行。但不同FBX文件里写的单位信息可能不同,所以如果你发现尺寸不对,手动调这个值是最快的办法,虽然不够优雅,但实用。
然后是“Mesh”部分里的“Import Normals”和“Import Tangents”。默认选项是“Compute Normals”或“Import Normals and Tangents”。如果模型在Blender里用了自定义法线或平滑着色,建议选择“Import Normals and Tangents”,保留原始法线信息。否则UE5会自动重算法线,边缘部分的硬边可能会变软,出现不想要的光影。如果你不关心法线问题,用默认设置即可。
接下来是“Transform”区域,里面有“Import Translation”“Import Rotation”“Import Scale”这三个选项。正常情况下保持默认,因为FBX的Forward和Up设置已经帮你解决了轴向转换。但如果出现模型倒了90度的情况,你可以在这里手动填一个旋转值。比如模型倒在地上,躺成XZ平面躺着了,可以在Import Rotation的Z、Y、X里补上-90或90。不过这里我更推荐回到Blender里检查Forward设置,依赖UE5端的硬旋转治标不治本,换一个FBX文件可能又歪了。
骨骼动画的导入有一点不同:需要在Import Options里确认选中“Skeleton”选项,然后指定一个已有的骨骼资产,或让UE5自动生成。骨骼资产的“Bone Naming”建议用默认的,不要开“Use T0 As Ref Pose”之类的选项,否则动画容易错位。
3.3 一个完整的实测案例
我最近做了一个机械臂模型,在Blender里建模,默认场景单位是米,模型整体长度约1.2米,原点在底座中心。导出前我做了这样几步:选中所有部件,Ctrl+A应用全部变换,检查法线朝向,把模型正面朝向-Y,然后File > Export > FBX。
导出面板里我选择“-Y Forward、Z Up”,勾选“Apply Transform”,勾选“Embed Textures”,Path Mode选Copy,Scale设置保持默认(1.0)。然后拖进UE5,导入面板里Uniform Scale保持1.0,Import Normals选“Import Normals and Tangents”,其余默认,点击Import。
导入完成后,模型出现在Content Browser里,双击打开预览,模型立在原点,朝向+X,尺寸约1.2米,材质正常显示。整个过程没有出现躺倒或转90度的问题。这个案例我复现过多次,只要模型在Blender里摆正、导出设置正确、单位锁定,轴向匹配基本不会再出问题。
4. 常见问题与排查技巧实录
4.1 问题速查表
| 问题现象 | 可能原因 | 排查及解决方向 |
|---|---|---|
| 模型躺在地上(XZ平面) | FBX导出Forward设置错误,或模型在Blender里没摆正 | 检查导出Forward是否为-Y,检查模型朝向是否为-Y |
| 模型朝向正确但旋转了90度 | Apply Transform未勾选,或模型有父级旋转 | Ctrl+A应用全部变换,导出时勾选Apply Transform |
| 模型大小放大/缩小100倍 | Blender单位与UE5单位换算不一致 | 统一Blender场景单位为米,UE5导入Uniform Scale保持1.0或手动调整 |
| 素材导入后颜色丢失或材质全黑 | 贴图路径未嵌入,法线设置不对 | 导出勾选Embed Textures,Path Mode选Copy;导入时选择保留法线切线 |
| 模型有动画但导入后动画错乱 | Bake Animation与骨骼配置不对 | 确认导出时勾选Bake Animation,检查Skeleton选择是否正确 |
| 导入后模型分裂成多个部件 | 使用Empty组织了多个Mesh,但没有勾选Mesh合并选项 | 确认导出时选中所有目标Mesh,或把多个部件合并成一个Mesh之后再导出 |
| 导入后UV错乱或贴图拉伸 | 模型在Blender里缩放未应用 | Ctrl+A应用缩放,使UV和网格数据一致 |
4.2 排查思路分享
遇到轴向问题时,不要急着在UE5导入面板里狂改旋转数值,先回到Blender里做三件事:第一,检查场景单位;第二,选中模型按N键查看Transform面板,确认旋转都是0、缩放都是1;第三,在顶视图确认模型正面朝向-Y。三步做完,80%的轴向问题都能定位到源头。
如果这三步都没问题,再检查导出面板里的Forward和Up设置。一个容易被忽略的细节是:FBX导出面板里的Forward和Up选项,只有在Blender 3.0以上才支持直接选择“-Y Forward”这种选项。老版本的Blender只有“Forward: X”和“Up: Z”这种选择,没有负号选项,需要手动在导入时旋转。如果你还在用老版本Blender,建议升级到3.0以上,否则轴向匹配会绕很多弯路。
动画相关的轴向问题要单独说。如果你导出的是带骨骼的角色动画,在Blender里人物的前方是-Y,但在UE5里人物前方是+X,那么FBX导出时Forward选择-Y,骨骼动画的根骨也会跟着做这个旋转,正常情况动画方向和模型方向是一致的。如果动画导入后出现“滑步”或“朝向反了”的情况,优先检查根骨是否被勾选了“Root Motion”,以及UE5里骨骼资产的朝向设置。
4.3 贴图与法线的坑
你可能觉得贴图跟轴向无关,但实际操作中经常出现“在Blender看是好的,进UE5就黑了”的情况。这往往不是轴向问题,而是法线方向不对。
Blender里法线方向可以通过进入Edit Mode,打开Overlay里的Face Orientation来检查。如果法线朝向反了,模型表面会显示为红色。在导出前,选中所有面,按Shift+N重新计算外侧法线,可以解决大部分法线发黑的问题。
另外,如果模型用了Normal Map(法线贴图),要确认Blender里的法线贴图颜色空间是Non-Color。在UE5里,法线贴图需要设置Compression Settings为Normalmap,否则光照会异常。这个和轴向无关,但如果你导出的模型在UE5里光影怪怪的,很可能就是法线贴图设置错了。
4.4 批量导出的注意事项
如果你有大量模型要批量从Blender导到UE5,不可能每个手动设置一次。我的做法是:在Blender里把需要导出的物体统一到一个Collection里,然后用Python脚本遍历Collection里所有对象,逐一导出FBX。脚本里固定设置Forward为-Y、Up为Z、Apply Transform为True、Embed Textures为True,保证每个FBX的导出参数一致。
有一个细节:批量导出时,如果某些物体是实例化对象(Collection Instance),需要先转为独立Mesh,否则FBX导出可能产生空节点或重复节点。这也是个比较隐蔽的坑,批量导出前务必要处理一下。
如果在UE5端也想批量设置,你可以在导入一组FBX后,把FBX Import Options里常用的设置保存为预设,方法是面板右下角的Preset下拉框,选Save As。这样下次批量导入时直接选这个预设,能省去大量重复操作时间。
5. 从Datasmith到原生FBX,一个思路上的取舍
有的读者可能会问,既然Blender和UE5之间的轴向匹配这么麻烦,为什么不用Datasmith插件直接导入?Datasmith确实能保留更多场景信息(比如灯光、相机、蓝图),但它对Blender版本和UE5版本有一定要求,而且很多情况下它会把一个场景导入成一个Actor层级,反而比FBX更复杂。
对于模型资产本身,尤其是需要被蓝图动态生成、被Sequencer调用、被运行时加载的模型,我依然推荐使用原生FBX导入。FBX的好处是格式通用、UE5原生支持好、导入后资产结构简单,方便后续调整碰撞体、LOD和材质实例。Datasmith更适合做“整个场景的迁移”,不适合做“单个资产进入项目”。你能根据需求选对导入方式,比把某个设置调到完美更有价值。
6. 我在实际项目里养成的一套固定流程
上面讲了很多原理和细节,最后分享一个我自己每年都会跟团队强调的固定流程。这个流程不敢说100%适配所有情况,但至少能覆盖绝大多数静态模型和基础骨骼动画的导入,遇到问题时也能快速定位。
- 新建Blender项目,确认场景单位是米,单位缩放为1.0。
- 建模时使用真实尺寸,1米就是1单位。
- 模型完成前,选中所有物体,Ctrl+A应用全部变换。
- 检查法线朝向,Shift+N修正外侧法线。
- 顶视图确认模型正面朝向-Y。
- 导出FBX,选择“-Y Forward、Z Up”,勾选Apply Transform,勾选Embed Textures,Path Mode选Copy。
- 进入UE5,拖入FBX,导入面板保持默认,Uniform Scale为1.0。
- 打开模型预览,检查朝向、尺寸、法线、材质。
- 如果异常,回到第2步到第5步检查,而不是在UE5里硬调旋转。
- 确认无误后,再为模型添加碰撞体、LOD、材质实例等后续资产。
这套流程在团队里跑了大半年,轴向上出问题的次数明显减少。尤其是我要求大家“以Blender端为准,UE5端只做检查”这个原则后,大家不再互相推诿“是不是你导入设置错了”,而是能回到模型源文件里快速修正,效率高了很多。
另外,如果你用的是Blender 4.0以上的版本,有一种新情况需要注意:它在FBX导出面板里默认的Forward选项可能会有UI上的变化,但底层逻辑没变。遇到版本升级后“原来能用现在不能用了”的问题,先看版本更新文档里对FBX导出模块的改动说明,别急着怀疑自己操作有误。
这篇文章不是让你死记硬背某一组参数,而是希望你在理解Blender和UE5坐标差异的基础上,掌握一套可复现、可排查的流程。下次再遇到模型躺倒、转90度、单位爆炸,先回到源文件排查,别让UE5的导入面板替你背锅。
