不夸张地说,这个问题的出错率,在我接触过的所有DCC到引擎工作流里能排前三。Blender里怎么看怎么对的模型,导出FBX拖进UE5,不是躺平就是扭转,尺寸要么缩成蚂蚁要么变成巨物。我最早从Blender 2.8时代开始折腾FBX导入UE5,前前后后踩过的坑能写满一页笔记,后来花了一个下午做了一堆带颜色标记的测试立方体,把两边的坐标行为彻底摸了一遍,才算真正搞明白这套匹配逻辑。这篇就围绕“Blender模型正常导入UE5 FBX轴向匹配”这件事,把从模型整理、导出参数、导入设置到排查问题的一整套流程完整拆开讲。适合所有用Blender做资产、再进UE5做项目的人,不管你是做静态网格、建筑块还是角色,这套思路都通用。
1. 为什么模型一到UE5就躺倒:坐标系统差异
1.1 Blender和UE5各自默认的坐标“性格”
先别急着记参数,理解两套软件的坐标系差异,后面所有设置都能顺理成章地对上号。
Blender默认是右手坐标系,Z轴朝上,X轴朝右,Y轴朝屏幕里。你在Blender里按小键盘1切到前视图(Front),看到的是模型的-Y面,这也是为什么很多人建模习惯把模型正面朝-Y方向放。
UE5不一样,它虽然也是Z轴朝上,但用的是左手坐标系,默认的前进方向是+X轴,Y轴朝右。也就是说,在UE5的世界里,你想让一个角色“面朝前方”,它的正脸应该对着+X。
FBX作为一个中间交换格式,内部默认以Y轴朝上为基准。这就产生了一个问题:Blender是Z-up,FBX内部是Y-up,UE5虽然是Z-up但前进方向是+X。如果不做任何处理,软件之间对怎么“翻译”轴向会有各自的默认理解,结果就是你看到的模型横躺、翻转或者朝向错乱。
1.2 FBX格式本身的“翻译规则”
FBX内部在描述坐标时,其实不是简单地存一个物体旋转,而是会附带一个坐标转换信息。Blender导出FBX时,如果你不勾选某些转换选项,FBX文件里只会写入Blender原始坐标数据。UE5导入时按自己的规则去解释这些数据,两边对不上,就出问题了。
我举个生活化的例子:你在纸上画了一个箭头朝上的图标,然后把纸寄给朋友,对方收到后默认把纸横过来看,箭头就变成朝右了。除非你在纸上明确标注“请把纸竖着看”,对方才会按正确方向理解。FBX里的轴向设置就是那个“竖着看”的标注。
所以问题的核心不是“Blender和UE5谁对谁错”,而是你导出的FBX有没有把“Blender的坐标约定”完整、明确地传达给UE5。只要这一步信息对齐了,后续就稳了。
1.3 我们最终要达成的目标状态
在做任何操作之前,先把目标定清楚。一个“正常导入”的模型,在UE5里应该满足这些条件:
- Z轴朝上,模型没有躺倒,没有翻转。
- 模型的“正面”朝向UE5的+X方向(也就是玩家默认前进方向)。
- 尺寸和Blender里一致,1米就是1米,不要突然变成100米。
- 模型的旋转值保持规整,不要进来带一个奇怪的 -90 或 180 旋转。
为了达成这个目标,社区里经过大量实践验证出一套通用参数组合:Blender里模型正面朝-Y,导出时Forward设为 -Y、Up设为 Z,勾选Apply Transform。这样导入UE5后,模型的-Y面(也就是你建模时正对前视图看到的面)会映射到UE5的+X方向,Z轴保持朝上,不需要在引擎里做任何额外旋转。
如果你在Blender里建模型时习惯从顶视图或者后视图开工,导致正面朝向不是-Y,那我的建议是先在Blender里把模型转过来,而不是去改导出参数。因为改参数容易让不同物体之间的朝向不统一,后面拼装场景时反而更混乱。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 导出前的模型整理:这一步偷懒,后面全是坑
2.1 为什么必须应用旋转和缩放
很多人的FBX导入问题,根源不在导出设置,而在Blender里的模型本身带有未应用的旋转或缩放值。
你在Blender里对模型做了缩放、旋转后,如果右下角属性面板里还显示着旋转90度、缩放2.5之类的数值,而没有按Ctrl+A把这些变换“烘焙”到模型本身数据里,导出FBX时,这些变换值就会一并写入FBX。UE5导入后可能单独把物体的旋转值算进去,或者在单位转换时把缩放也放大,最终结果就是模型躺倒或者尺寸失真。
正确做法:选中模型,Ctrl+A,然后选择“全部变换”(All Transforms)。这一步会把旋转、缩放、位置全部重置为0、1、0,但模型的视觉状态保持不变。相当于把当前姿态固定成模型的“原始姿态”。
这里有两个细节:
- 如果模型上有修改器(比如镜像、实体化、细分),在导出前记得应用(Apply)需要保留效果的修改器。你可以保留非破坏性的修改器,但FBX导出默认会应用网格修改器,为了保险起见,我习惯手动应用掉。
- 如果你的模型有多个子物体,建议每个物体都单独检查一遍变换,不要只检查父级。
2.2 法线方向、模型原点和命名规范一起处理
法线方向不对,导入UE5后很常见的一个现象就是模型表面发黑,或者光照表现奇怪。在Blender里按快捷键Alt+Z或进入X-Ray模式,把Face Orientation显示打开,如果发现某些面显示成红色(代表法线朝内),选中网格,编辑模式下按Ctrl+Shift+N重算外侧法线。如果模型是自定义法线贴图,还要在网格数据属性里清除自定义法线数据,否则导出时法线可能被自动翻转。
模型原点也值得在导出前整理。对于静态网格,原点最好放在底部中心或者物体中心,这样在UE5里摆放时比较直觉。我见过有人模型本身是好的,但原点在十几米高的空中,导致UE5里拖进场景后模型悬浮。在Blender里右键选择“设置原点”,然后选“原点到几何体”或者“原点到底部”即可。
命名这块,如果你在UE5里做的是正式项目,建议在Blender里就给模型加上前缀。静态网格加SM_,骨骼网格加SK_,材质加M_,贴图加T_。这样批量导出后,在UE5内容浏览器里一眼能分清资源类型,也方便后面用规范管理。
2.3 统一单位与场景比例检查
单位不一致是另一个高频翻车点。Blender默认场景单位是米,UE5默认单位是厘米。理论上UE5导入FBX时会自动读取文件里的单位信息并换算,但前提是Blender里的单位设置是“米”。
在Blender右侧属性面板,切换到“场景”标签,打开“单位”折叠菜单,确保长度单位是“米”。不要在Blender里把Scale改成0.01试图强行对齐厘米,那样做反而会让导出时的缩放值变得混乱。
我自己的习惯是:在Blender里做一个小标志物,比如一个恰好1米见方的立方体,放在场景原点旁边,导出时一并带上。导入UE5后先在场景里对比一下这个小立方体和真实尺寸的差别,一眼就能判断单位有没有转换对。这个土办法帮我避过好几次单位翻车。
2.4 用“颜色立方体”验证轴向,亲眼看到匹配结果
如果你对轴向匹配还没有直观感受,强烈建议做一个带颜色标记的测试立方体。
在Blender里新建一个立方体,给六个面分别赋予不同颜色的材质。比如+X面给红色,+Y面给绿色,+Z面给蓝色。然后按照正常流程导出FBX,导入UE5。在UE5视口里按R键开启坐标轴显示,拖动立方体,观察每个颜色面对着哪个方向。
这个实验做完,你就能完全理解你当前这套导出参数到底在做什么。我当年就是靠着这个测试立方体才彻底弄明白了为什么Forward要选 -Y 而不是 +Y。当你亲眼看到蓝面朝上、红面朝右、绿色面对着自己的时候,心里就有底了。以后模型朝向不对,你立刻就能判断是哪个环节出了问题。
3. Blender侧FBX导出参数:把轴向和单位一次设对
3.1 导出面板的核心参数逐项说明
选中模型,文件菜单选择“导出 - FBX (.fbx)”,右侧导出面板弹出来后,有几个参数是关键中的关键。
第一组是“缩放”。Scale保持1.00,不要随便改。下面的“应用缩放”(Apply Scalings)我推荐选择“FBX单位缩放”(FBX Units Scale)。这个选项会在FBX文件里写入单位信息,UE5导入时会根据这个信息做正确的厘米换算。如果你发现导入后尺寸还是差了100倍,再把“应用缩放”改成“FBX全部”(FBX All)试一次,不同Blender版本对单位处理确实有过调整。
第二组是“轴向”。Forward选择 -Y,Up选择 Z。这套参数配合你在Blender里“正面朝-Y”的建模习惯,导入UE5后正面正好朝向+X,而且Z轴保持垂直。
第三组是“!实验性! 应用变换”(Apply Transform)。这个选项在较老的版本里可能默认关闭,但它是整个轴向匹配的关键。勾选它之后,Blender导出器会把物体的旋转变换烘焙到网格数据里,UE5导入时就不容易再叠加一层多余的旋转。很多模型躺倒问题,都是因为这一项没勾。
还有一个容易被忽视的是“路径模式”(Path Mode)。如果你模型带了贴图,建议选择“复制”(Copy),这样贴图文件会复制到FBX同级的纹理文件夹,UE5导入时路径相对稳定。如果你想FBX文件小一点,也可以选“剥离”(Strip Path),但后续贴图关联需要自己处理。
3.2 导出参数速查表
| 参数项 | 推荐值 | 作用说明 |
|---|---|---|
| Scale | 1.00 | 保持Blender原始尺寸,不做额外缩放 |
| Apply Scalings | FBX Units Scale | 写入单位信息,让UE5正确换算厘米 |
| Forward | -Y | 把Blender的-Y面映射为FBX正向 |
| Up | Z | 保持Z轴垂直向上,模型不倒 |
| Apply Transform | 勾选 | 烘焙变换到网格,避免UE5叠加旋转 |
| Path Mode | Copy | 复制贴图到FBX旁,路径稳定 |
| Object Types | 仅导出需要的类型 | 避免空物体、灯光等垃圾数据进入UE5 |
3.3 材质和贴图的导出策略
关于材质,我个人的建议是:在Blender里不用花太多精力做复杂材质树,除非你是用Datasmith流程。FBX对材质节点的翻译能力有限,Principled BSDF里常用的几个值(金属度、粗糙度、基础色)还能勉强导出,但稍微复杂一点的节点组合,到UE5基本就废了。
最简单的方案是:Blender里给模型用简单材质区分好槽位,导出FBX时正常导出,进UE5后根据模型解算出来的材质槽手动指定材质。对于需要批量处理的资产,这反而比在Blender里费劲做贴图然后期待UE5能自动对应要高效得多。
另外,不要勾选“嵌入纹理”(Embed Textures)。这个选项会把所有贴图打包进FBX单文件,导致文件体积暴涨,而且UE5导入时经常没法正确解析嵌入的纹理路径,最后材质会显示成一片灰白。
4. UE5导入设置与导入后验证
4.1 导入面板里哪些选项要动,哪些千万别动
在UE5内容浏览器里右键选择“导入”,选中你的FBX文件后,弹出来的导入面板里有些选项是坑,有些有用。
“导入变换”(Import Transform)这一组,平移、旋转、缩放保持默认的0、0、0,1.0。之前看到有教程让导入时旋转-90度来纠正躺倒,这属于治标不治本,而且会污染模型本身的变换数据。正确做法是返回Blender那边修正,而不是在UE5导入时找补。
“法线导入方法”(Normal Import Method),一般选“导入法线”(Import Normals)或者“重算法线”(Recompute Normals)。如果你的Blender模型法线是整齐的,选“导入法线”就行;如果导入后模型出现明显的明暗不均或硬边变软边,可以改成“重算法线”试试。这取决于你的模型具体情况,没有绝对正确答案。
“材质导入法”(Material Import Method),如果你不打算用FBX里的材质,建议选“不创建材质”(Do not create material)。这样导入后模型会套用一个默认材质,你在UE5里新建材质再手动指定即可,避免生成一堆没法看的自动材质残留。
4.2 导入后快速检查模型正确性的三个步骤
导入完成后,先别急着拖进场景。双击打开静态网格体编辑器,看右下角的边界框信息,确认模型尺寸跟你预期一致。一个2米高的角色,边界框的Z轴长度应该接近200,而不是0.02或者20000。
然后在预览面板里旋转视角,看模型的轴线是否规整。静态网格体编辑器的左下方会显示模型相对于网格体中心的包围盒,你可以点预览场景里的坐标轴,检查哪个面是正面。正常情况下,你建模时面向Front视图做的那个面,在预览场景里应该朝着+X方向。
最后,把模型拖到UE5场景里,对比之前准备的1米参考立方体。大小对了、方向对了、没有离地悬浮,这就算正常导入了。
4.3 万一导入后方向还是不对,怎么快速修正
如果你按教程做了,导入后发现模型还是朝向不对,不要慌,先判断是哪种不对。
- 模型躺倒(Z轴变成水平方向):几乎可以肯定是Blender那边没有应用旋转,或者Apply Transform没勾。
- 模型前后颠倒(正面朝后):说明Forward那个参数的正负和你的建模方向不匹配。这时候你检查一下模型正面到底朝的是+Y还是-Y,把Forward改成对应的值,或者直接回Blender转一下模型。
- 模型围绕Z轴旋转了90度或180度:通常是模型本身在Blender里就没摆正,或者导出时带有未应用的旋转。
- 模型悬浮或沉入地面:原点位置不对,重置原点。
如果只是临时摆放在场景里,你当然可以手动转Actor的旋转值,但这不是长久之计。你做的是资产库的话,最好保证每个导入进来的模型都是零旋转、零平移的干净状态,这样在后面搭建关卡时效率才高。
5. 常见翻车现场与排查速查表
5.1 我把这几年见过的问题整理成了下面的表
| 现象 | 最常见原因 | 解决方案 |
|---|---|---|
| 模型躺倒,Z轴变水平 | 未应用旋转,或Apply Transform未勾选 | Blender里全选模型Ctrl+A应用全部变换,导出时勾选Apply Transform |
| 模型上下颠倒,翻转180度 | Up轴设置错误 | 检查导出面板Up是否为Z,而不是Y |
| 模型前后颠倒 | Forward正负和建模朝向不匹配 | 看模型正面朝-Y还是+Y,调整Forward为对应值 |
| 模型巨大或缩小100倍 | 单位换算错误 | 确认Blender单位是米,Apply Scalings选FBX Units Scale |
| 模型表面黑块或法线不平滑 | 法线朝向错误或自定义法线数据冲突 | Blender编辑模式重算外侧法线,清除自定义法线数据 |
| 贴图全部丢失或变灰白 | 嵌入纹理导致路径无法解析 | 使用Path Mode = Copy,UE5里手动指定贴图材质 |
| 导入后模型带奇怪旋转值 | 父级空物体带旋转或约束未清除 | 清除父子关系,应用全部变换,确认没有约束 |
| 模型边缘出现碎面或破洞 | 修改器未完全应用,面数过高 | 导出前应用修改器,必要时进行减面处理 |
| 模型在UE5中碰撞不对 | 原点偏移或自定义碰撞缺失 | 重置原点,在UE5自动生成简单碰撞 |
5.2 三个容易被忽略的细节
法线问题是最隐蔽的。有时候在Blender里看起来完全正常,进UE5后某些面就是黑的,翻过来看又正常了。这种情况十有八九是法线朝向错了。Blender的Face Orientation检查一下,红色区域全部重算。
自定义法线也是个坑。如果你的模型之前用过Weighted Normal修改器或者从其他软件导入过带有自定义法线数据的网格,FBX导出时这些法线数据可能和UE5的切线空间计算不兼容。解决方法是选中网格,在数据属性里找到“几何数据”区域,点击“清除自定义法线数据”,然后重新计算一次平滑。
还有一个我印象深刻的问题:你在Blender里做了分组(Collection),然后导出时选了整个集合,集合里有一个隐藏的辅助物体也在场景中,一并导入了UE5,导致模型周围出现奇怪的定位器或者线框。导出前一定要检查场景里有没有多余的辅助物体。可以用导出面板里的“仅导出选中”(Selected Objects)选项,只把自己需要的模型导出,其他乱七八糟的物体一律不带走。
5.3 场景层级和父级关系的隐患
很多人在Blender里会把多个物体组成一个组,然后给空物体加了旋转或缩放来控制整体。这种工作流在Blender里很方便,但导出FBX时,空物体上的变换会像“一层滤镜”一样套在整个层级上。UE5导入后,你看到模型网格体的旋转值可能是0,但它的父级空物体自带一个-90度的旋转,导致整个模型组躺倒。
如果你发现模型单个网格体一切正常,但组合后整体朝向不对,优先检查有没有父级空物体带变换。我建议在导出前把所有需要导出的物体放到一个新建集合里,然后选中这个集合里的所有物体,导出时勾选“仅导出选中”,不要选择父级空物体。
5.4 关于“导入时旋转-90度”的老教程
网上很多老教程会告诉你,在UE5导入面板里把Pitch旋转-90度,或者让UE5自动计算旋转,这样模型就站起来了。这个方法在一些老版本流程里确实能用,但它是在掩盖问题,而不是解决问题。
一旦你哪天需要给模型做动画、做物理模拟,或者多个模型组合拼接,带着-90度旋转的模型会成为噩梦。你在场景里放置时每次都要手动转回来,而且不同模型之间的对齐会很痛苦。我的建议始终是:导入时的旋转保持全零,一切调整都在Blender里完成。UE5导入面板不是用来纠正模型方向的,它是用来导入干净的资产的。
6. 进阶:Python批量导出FBX,省掉重复劳动
如果你跟我一样,经常需要一次导出几十个模型资产,每次手动点导出面板会很崩溃。我写了一个Blender Python脚本,可以在选中多个物体的情况下,为每个物体单独导出一个FBX文件。
python复制import bpy
import os
export_dir = r"D:\FBXExport"
os.makedirs(export_dir, exist_ok=True)
# 当前选中的所有物体
selected_objects = bpy.context.selected_objects
for obj in selected_objects:
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
fbx_path = os.path.join(export_dir, obj.name + ".fbx")
bpy.ops.export_scene.fbx(
filepath=fbx_path,
use_selection=True,
object_types={'MESH'},
axis_forward='-Y',
axis_up='Z',
apply_scale_options='FBX_SCALE_UNITS',
apply_transform=True,
use_mesh_modifiers=True
)
print("导出完成,文件保存在: ", export_dir)
运行前需要确认三件事:
- 脚本开头的export_dir改成你自己的目录。
- 选中的物体名称不能含特殊字符,否则导出的文件名在UE5那边可能出现问题。
- 如果你有些物体带修改器但不想应用,use_mesh_modifiers=True会把修改器效果烘焙到导出网格里,这个正好符合大多数导出需求。
脚本跑完后,所有选中的物体会各自生成一个FBX,命名规则直接沿用Blender里的物体名。配合你在UE5项目里设置的批量导入支持,几十个资产几分钟就能全部进项目。
这个脚本我实际用了很久,唯一要注意的是,如果某个物体属于骨骼网格或者带有复杂约束,还是单独手动导出比较稳妥,纯静态网格批量导出是最适合这个脚本的场景。
最后分享一点我个人的实操体会:这套工作流在Blender 2.93、3.6、4.1这几个版本上我都完整跑过,核心参数没有变过。如果你是从网上看到的参差不齐的教程,记住一个原则——所有修正都尽量在Blender这一端完成,UE5导入参数保持全零是最理想的状态。我后来还把导出参数保存成了Blender的预设,每次导出直接点一下预设,再也不用担心哪次忘了勾参数。如果你在项目里卡在某个导入问题上,建议先做一个1米颜色立方体,用最简单的几何体重现问题,这样比盯着复杂模型排查要高效得多。这套轴向匹配的方法搞定之后,Blender和UE5之间的资产通路就算是彻底打通了。
