BMS, Movie, Illustrations, Programming

【Maya】なんで Smooth Mesh のチェックを付けると Unity 上で滑らか (smooth) にならないんだよ! 逆だろ!

結論 (TL;DR)

他の方の記事にもあるように、FBX をエクスポートして Unity 等に持って行く際は、 Smooth Mesh のチェックを外してください。

【MAYA】エクスポート時に自動でスムースをかける方法 | ナツヲカケル−兼業クリエイター雑記−

In-Depth Overview: How to Batch Export Using Maya Game Exporter for UE5

何が起きたのか

Maya 2025 で、 Export コマンドや Game Exporter 等で FBX をエクスポートする際に、Smooth Mesh というチェックボックスがある。しかし、このチェックをオンにしてしまうと、 Unity や Unreal Engine などで読み込んだ際に、モデルが滑らか (smooth) にならない。

いや、なんでだよ! 逆だろ! と、直感的には思う。

まあ、「FBX 内に Smooth Mesh というフラグ(アトリビュート)を格納した状態でエクスポートする」という意味なんだとは思うけど(※)、だとしても分かりづらい。

(※個人の想像です。)

実際に確認してみた

実際に FBX ASCII を確認すると、以下のように、 Smoothness という項目が追加されていることがわかった。

cube_1_nosmooth.fbx は 1 番表示で Smooth Mesh のチェックをオフにしたもの。
cube_3_smooth.fbx は 3 番表示で Smooth Mesh のチェックをオンにしたもの。

$ diff -u cube_1_nosmooth.fbx cube_3_smooth.fbx
(中略)
@@ -235,7 +235,15 @@
 ;------------------------------------------------------------------

 Objects:  {
-       Geometry: 1977439768576, "Geometry::", "Mesh" {
+       Geometry: 1991520859440, "Geometry::", "Mesh" {
+               Smoothness: 3
+               PreviewDivisionLevels: 2
+               RenderDivisionLevels: 2
+               DisplaySubdivisions: 0
+               BoundaryRule: 1
+               PreserveBorders: 0
+               PreserveHardEdges: 0
+               PropagateEdgeHardness: 0
                Vertices: *24 {
                        a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5
                }

しかし、これらを Unity で読み込んでも、滑らかにはならない。どちらも Unity では等しくただの cube のように表示される。つまり、 Unity はこの Smoothness のフラグを無視する仕様だということだ。

私たちはどう生きるべきなのか

Unity でメッシュを滑らかにしたい場合は、「モデルを 3 番表示」にした状態で、「Smooth Mesh をオフ」にして Export すれば良いということになる。(冒頭で紹介したリンク先の通りです。)

すると、シカクい Cube がマルくなる。

余談:Read the man page

Maya のヘルプには以下のように書かれている。普通にこれ間違ってないか?

Smooth Mesh
Turning this on bakes the in-viewport subdivision of the polygon mesh into the exported geometry.

Maya Help | Game Exporter | Autodesk