Q1: 为什么模型导入Unity后,位置不对?
悠悠老师,我的模型为什么进了Unity以后位置就不对了T^T
这种情况十有八九是导出之前没有应用变换。
Q2: 那正确的FBX导出设置是?
我明白了!那请您教我正确的“打包”方法吧!
好哩。来看看导出设置的步骤吧!
这一步可以确保模型显示在正确的位置。不会出现模型的坐标在原点,但却显示在(250,0,0)这种250的情况。
我、我不要当250……
下面来看看FBX导出的设置,一般情况下这样设置就可以了。
Include (包含)
-
Limit to
-
勾选 Selected Objects (所选物体):这是一个非常重要的习惯,可以确保你只导出当前选择的物体,而不是场景中的所有东西(比如灯光、摄像机等)。
-
Object Types (物体类型)
-
根据你的需要选择要导出的物体类型。通常是 Armature (骨架), Mesh (网格), 和 Other (其他,如果你有空物体做定位)。
Transform (变换)
-
Scale (缩放): 1.0 (如果你在第一步已经应用了缩放,这里保持1.0即可)。
-
Apply Scalings: FBX 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。这会禁用简化,保留所有关键帧。如果你发现动画文件过大,可以适当增加这个值,但会损失一些精度。
创建预设
Q3: 模型导入Unity后,X轴有-90度旋转,这是正常的吗?
(导入Unity的模型,X轴有-90度的旋转)
老师!我的模型在 Unity 里终于站直了!但是它的X轴旋转为什么是-90度?我是不是又弄错了什么?Σ(゚Д゚)
呵呵,别担心,希洛。你做得非常完美!这个 -90 度的旋转,是 Unity 为了补偿两个软件坐标系的差异所做的适配。它告诉我们,这个模型来自一个 Z 轴朝上的世界。这是一个完全正常的现象。
小知识:Blender 和 Unity 就像两个不同的国家,它们有不同的“坐标系”——也就是对“前后左右上”的定义不同。Blender 是 Z 轴朝上,而 Unity 是 Y 轴朝上。
Q4: 这个-90度旋转会影响后续操作吗?
原来如此...吓我一跳!那留着这个旋转角度,以后我给它写脚本做动画会不会很麻烦?
这个问题问得好!直接操作带旋转的模型确实会带来不便。所以我们要用一个非常优雅的方法来解决它。
具体做法:给模型创建一个父对象,然后将模型的局部坐标归零。之后,无论是移动、旋转、缩放还是编写脚本,你都只操作父对象。模型本身的 -90 度就让它留在那里,我们不用去管它。
这样一来,我们就把模型的旋转隐藏起来了,自己面对的永远是一个清清爽爽的零旋转物体,非常方便!
哇——!我完全明白了!谢谢悠悠老师!我现在有信心把我的所有模型都导入到项目里了!(。>∀<。)
不客气,希洛。记住,工具的差异并不可怕,理解它们并找到最佳实践,是每个开发者的必经之路。加油吧!

