大数跨境

【游戏智能希洛】Blender 到 Unity 导出指南

【游戏智能希洛】Blender 到 Unity 导出指南 游戏智能希洛
2025-08-04
1
导读:我是希洛,正在努力学习做游戏的高中生机器人,梦想是做出让大家都快乐的游戏!
悠悠老师!救命呀!我用 Blender 做好的模型,导出 FBX 到 Unity 之后,位置总是不对劲(〒▽〒)
嗯哼,希洛,别着急。这就像出国旅行前打包行李,只要我们按照 Unity 的要求打包好就可以了
(左:Blender模型,右:导出到Unity)

Q1: 为什么模型导入Unity后,位置不对?

悠悠老师,我的模型为什么进了Unity以后位置就不对了T^T

这种情况十有八九是导出之前没有应用变换


Q2: 那正确的FBX导出设置是?

我明白了!那请您教我正确的“打包”方法吧!

好哩。来看看导出设置的步骤吧!

1、将模型放置到场景原点,应用旋转缩放。
这有什么用呢?

这一步可以确保模型显示在正确的位置。不会出现模型的坐标在原点,但却显示在(250,0,0)这种250的情况。

我、我不要当250……


2、一般适用的FBX导出设置
下面来看看FBX导出的设置,一般情况下这样设置就可以了。

Include (包含)

  • Limit to
  • 勾选 Selected Objects (所选物体):这是一个非常重要的习惯,可以确保你只导出当前选择的物体,而不是场景中的所有东西(比如灯光、摄像机等)。
  • Object Types (物体类型)
  • 根据你的需要选择要导出的物体类型。通常是 Armature (骨架), Mesh (网格), 和 Other (其他,如果你有空物体做定位)。

Transform (变换)

这是最关键的部分,用来处理 Blender 和 Unity 之间坐标系的差异。
  • Scale (缩放)1.0 (如果你在第一步已经应用了缩放,这里保持1.0即可)。
  • Apply ScalingsFBX All (这是一个保险设置,有助于统一缩放)。
  • Forward (前向)-Z Forward
  • Up (向上)Y Up
  • 取消勾选 !EXPERIMENTAL! Apply Transform

Geometry (几何体)

  • Smoothing (平滑): 设置为 Face (面)。这会使用面的平滑数据,通常在 Unity 中显示效果最好。
  • 勾选 Apply Modifiers (应用修改器):这会将你的修改器(如表面细分、倒角等)烘焙到最终的网格上。如果你想在 Unity 中保留可调整的修改器,就不要勾选,但这通常不是标准流程。

Armature (骨架) - (如果你有动画)

  • 取消勾选 Add Leaf Bones (添加末端骨骼):Unity 不需要这些,勾选了反而可能导致骨骼结构混乱。
  • 勾选 Only Deform Bones (仅导出形变骨骼):这会排除掉那些不直接影响网格变形的控制器骨骼 (IK 控制器等)。

Bake Animation (烘焙动画)

  • 勾选 Bake Animation
  • 取消勾选 NLA Strips 和 All Actions:最简洁的工作流是只导出一个激活的动作。如果你在 NLA 编辑器中有多条轨道,你可能需要勾选 NLA Strips。但对于简单的动画,只烘焙当前动作可以避免混乱。
  • Simplify (简化)0.0。这会禁用简化,保留所有关键帧。如果你发现动画文件过大,可以适当增加这个值,但会损失一些精度。

创建预设

为了方便,你可以将这些设置保存为一个导出预设。在导出窗口的顶部,点击 + 号按钮,给它起个名字(比如 "UnityExport"),以后就可以一键调用这套设置了。

Q3: 模型导入Unity后,X轴有-90度旋转,这是正常的吗?


(导入Unity的模型,X轴有-90度的旋转)

老师!我的模型在 Unity 里终于站直了!但是它的X轴旋转为什么是-90度?我是不是又弄错了什么?Σ(゚Д゚)
呵呵,别担心,希洛。你做得非常完美!这个 -90 度的旋转,是 Unity 为了补偿两个软件坐标系的差异所做的适配。它告诉我们,这个模型来自一个 Z 轴朝上的世界。这是一个完全正常的现象。
小知识:Blender 和 Unity 就像两个不同的国家,它们有不同的“坐标系”——也就是对“前后左右上”的定义不同。Blender 是 Z 轴朝上,而 Unity 是 Y 轴朝上。

Q4: 这个-90度旋转会影响后续操作吗?

原来如此...吓我一跳!那留着这个旋转角度,以后我给它写脚本做动画会不会很麻烦?

这个问题问得好!直接操作带旋转的模型确实会带来不便。所以我们要用一个非常优雅的方法来解决它。

具体做法:给模型创建一个父对象,然后将模型的局部坐标归零。之后,无论是移动、旋转、缩放还是编写脚本,你都只操作父对象。模型本身的 -90 度就让它留在那里,我们不用去管它。
这样一来,我们就把模型的旋转隐藏起来了,自己面对的永远是一个清清爽爽的零旋转物体,非常方便!

哇——!我完全明白了!谢谢悠悠老师!我现在有信心把我的所有模型都导入到项目里了!(。>∀<。)

不客气,希洛。记住,工具的差异并不可怕,理解它们并找到最佳实践,是每个开发者的必经之路。加油吧!

朝着梦想奔跑吧,希洛(>ω<)/

【声明】内容源于网络
0
0
游戏智能希洛
内容 40
粉丝 0
游戏智能希洛
总阅读1
粉丝0
内容40