寫在前面
系統版本: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 等視窗的縮略圖即顯示為平滑。
辟謠
網上對此問題一般有下列回答:
- 未在 Unity 中重新指定材質并設定法線貼圖;
- 未使用表面平滑或類似修改器,或在導出 FBX 時未應用相應的修改器。
經測試,上述方法均無效,即使這樣做也不能平滑渲染。但顯然,Unity 是支援平滑渲染的,因為其内置的含有曲面的模型(圓柱體、膠囊、球體等),僅由數十到數百個三角面構成。而且,使用表面平滑修改器,會輕易增加數百萬計的三角面,極大增加渲染壓力,但問題并未得到明顯解決。
參考資料
http://answers.unity.com/answers/47015/view.html