Blender 导出的 FBX 模型导入 Unity 后看起来不平滑的原因及解决办法

写在前面

系统版本:Windows 10 专业版 20H2
Blender 版本:2.91.0
Unity 版本:2019.4.2.f1 Personal
注:现已确认不是系统或 Blender 或 Unity 的问题。在三者之前的版本中,该问题仍存在。

Blender 导出的 FBX 模型导入 Unity 后的样貌

如下图。

左侧是 Unity 内置的圆柱体,下称“Unity built-in Cylinder”,是在 Unity 场景中添加的,其表面非常平滑。查看其 MeshFilter.mesh,发现其有 88 个顶点(除去 Unity 生成的重复顶点,实际共 42 个顶点),80 个三角形。

作为对比,右侧是在 Blender 中制作的圆柱体,下称“Blender Cylinder”,制作时与 Unity built-in Cylinder 的规格和几何特征尽量保持一致。该模型设置好“坐标变换”(详见我的上一篇文章)直接导出,导入 Unity 后未做任何材质或 Shader 的修改,均保持默认状态。

显然,Blender Cylinder 除平面外,几乎每个面片看起来都是“独立”而非“连续”的。即使两个角度相差很小的面,依然能够清晰地看出二者之间的棱,而非形成一个光滑的曲面。

在这里插入图片描述

解决办法

先说结论。是 Blender 导出的 FBX 文件的法线有问题,应该是 Blender 自带的 FBX 导出插件的 Bug。

Unity 的 FBXImporter - Model - Geometry 中,将 Normals 设为 Calculate,Apply,让 Unity 重计算模型的法线,模型及其在Project 等窗口的缩略图即显示为平滑。

在这里插入图片描述
在这里插入图片描述

辟谣

网上对此问题一般有下列回答:

  1. 未在 Unity 中重新指定材质并设置法线贴图;
  2. 未使用表面平滑或类似修改器,或在导出 FBX 时未应用相应的修改器。

经测试,上述方法均无效,即使这样做也不能平滑渲染。但显然,Unity 是支持平滑渲染的,因为其内置的含有曲面的模型(圆柱体、胶囊、球体等),仅由数十到数百个三角面构成。而且,使用表面平滑修改器,会轻易增加数百万计的三角面,极大增加渲染压力,但问题并未得到明显解决。

参考资料

http://answers.unity.com/answers/47015/view.html

猜你喜欢

转载自blog.csdn.net/xzqsr2011/article/details/111402614