Unity生成碰撞器时模型网格畸变问题求助
Blender导出FBX到Unity后网格畸变&碰撞器适配问题排查
嘿,这个坑我踩过N次了!从Blender导FBX到Unity时出现网格畸变、碰撞器适配失败,基本都是导出环节的几个关键设置没盯紧,或者模型本身有小问题。咱们一步步来梳理:
你可能犯的操作错误
- 没应用模型的缩放/旋转/位置:在Blender里调整模型后直接导出,却没按
Ctrl+A选择Apply Scale/Rotation/Location。Unity会读取模型的变换数据,未应用的缩放会导致导入后网格被错误拉伸,碰撞器自然适配不上。 - 轴向转换设置错误:Blender默认是Z轴向上,而Unity是Y轴向上。导出FBX时如果选错了轴向参数,模型会被错误旋转/翻转,看起来就像畸变了。
- 模型存在非流形几何:比如重叠顶点、未合并的面、孤立边这些“隐形问题”,Blender里预览可能没问题,但导出后Unity处理碰撞器时会因为无法识别正确的网格拓扑而产生畸变。
Blender导出前必查的设置清单
1. 先修复模型本身的拓扑问题
- 进入编辑模式,按
M选择Merge by Distance,合并所有重叠的顶点(可以微调阈值确保不合并不该合并的)。 - 用
Select > Select All by Trait > Non Manifold找出非流形的几何结构,手动修复(比如删除孤立边、合并重叠面)。 - 按
Shift+N重新计算法线,确保法线方向一致(避免Unity里出现面缺失或渲染异常,间接影响碰撞器识别)。 - 复杂的四边面可以先按
Ctrl+T转为三角面,Unity对三角面的兼容性更好,减少自动 triangulate 时的出错概率。
2. 应用所有变换与修改器
- 回到物体模式,选中模型按
Ctrl+A,依次应用Scale、Rotation、Location,确保模型的变换数据都是默认值(缩放1、旋转0、位置0)。 - 检查所有修改器:比如镜像、细分表面这类修改器,要么在Blender里点击Apply应用到网格上,要么在导出FBX时勾选Apply Modifiers(建议直接在Blender里应用,避免导出时出现意外)。
3. 统一单位设置
- 打开
File > Properties > Scene Properties,找到Units面板:- 把Length设置为
Meters,和Unity的默认单位保持一致。 - 确保Scale值为
1.0,避免单位缩放差异导致模型大小异常。
- 把Length设置为
4. 导出FBX时的关键参数
- 导出前选中要导出的模型,点击
File > Export > FBX (.fbx):- Forward选择
-Z Forward,Up选择Y Up,完美匹配Unity的轴向系统。 - 勾选Selected Objects,只导出需要的模型,避免多余数据干扰。
- 取消勾选Add Leaf Bones(除非你需要骨骼动画,否则会增加不必要的骨骼数据,可能影响碰撞器生成)。
- 检查Mesh选项:勾选Smooth Faces(如果你的模型是平滑着色的),取消Optimize Mesh的过度优化(默认的优化一般没问题,但如果模型畸变可以尝试关闭)。
- Forward选择
5. 额外小技巧
- 如果导出后还是有问题,可以先在Blender里导出一个简化版的低模测试,排除复杂拓扑的影响。
- Unity导入时,在模型的Import Settings里,检查Mesh > Scale Factor是否为
1,如果是0.01说明单位没匹配上,改成1即可。
内容的提问来源于stack exchange,提问作者Jajan




