一頻りやってみよう

CG全般についてまとめたり

Smoothing Groupってなんだよ

今更ながらタイトルの件について気になったのでメモがてら共有。MayaのSoft/Hard Edgeは知ってる前提で進めていきます。


Maya使いがUEにモデル持っていった時に1回は引っかかるやつ。

UEにモデル持っていったら怒られたしなんか一部黒ずんでるんだけど!?ってなりますよね。SmoothingGroupをオンにしろと言われるので、指示通りExport時にオンにするとMayaと同じ滑らかな見た目になって一件落着となります。

 

でもなんかモヤモヤしない?

急にFBX出力の時だけSmoothingGroupとか言われて、Soft/HardEdgeの設定どこ行ったねんとなります。

 

Maya FBX plug-in は、エッジ情報をスムージング グループに変換し、ファイルとともにエクスポートします

Mayaで調べるとこれだけ書いてあるのでスムージンググループが何なのかを説明してくれてない。そこでスムージンググループについて観測した範囲で説明します。

 

結論:hard/soft EdgeとSmoothingGroupは、どちらも頂点法線を管理、変更するものだが用語とアプローチと処理結果が異なる。

SmoothingGroup・・・3ds maxなどで使われている概念で、面に1つ以上のgroupidを割り当て、共通のSmoothingGroupを持っていた場合に法線を平均化して滑らかなシェーディングを行う.Mayaでは使っていない

https://help.autodesk.com/view/3DSMAX/2020/JPN/?guid=GUID-1DB2E3C2-CE68-4AF7-899E-01B90F7EB320

hard/soft Edge・・・Mayaで、面やエッジに対して法線を共有するか、分割するかを決める。

hard/soft Edge補足1:SoftEdgeの法線ベクトルを決めるアルゴリズムもSmoothingGroupと違う。面法線、頂点角度、面面積の加重平均になる。

normals[normalIndex] += faceNormal * vertexAngle * faceArea;

www.autodesk.com

hard/soft Edge補足2:頂点法線は実データがありますが面法線は実データはなく頂点の番号から自動で計算されます。UEでは頂点法線のみを使い面法線という概念は出て来ないと思います。

note.com

2つは似た概念だが扱われ方やアルゴリズムが違うんですね。そのためMayaのFBXexporterはそれらを変換してSmoothingGroupを使用するUEなどのゲームエンジンに持っていくわけです。なのでMaya上でソフトエッジ/ハードエッジを指定してあげてSmoothingGroupオンにすれば問題ないはずです。

 

実運用上の注意

SmoothingGroupはオンで問題ないのですが、色んなDCCでゲームエンジン用モデルを作る場合や、ハイポリベイクする場合は注意が必要です。以下引用です

 

  • 基本はソフトエッジ、つながったUVIlandでベイクした方が良い結果を得られる
    • ハードエッジはデータ量も増えるので最小限に
    • 接続面の角度が90度を超える場所は、ベイクした結果に歪みを生むのでハードエッジにしてUVを切り離した方が良い
  • ベイク用の低ポリモデルは、エクスポート時に統一された環境で三角分割を行う
  • Mayaのソフトエッジは他DCCでのスムージング状態と異なる法線結果になる。その為、Mayaをベースとしたワークフローを構築している場合必ずMayaでソフトエッジを適用してエクスポートを行う。

おわりに

間違ってたらご指摘ください・・・

これですっきりしました。SmoothingGroupはなんとなくオンにするという運用で間違ってはないのですが中身を知ることで納得感が出ますね。