Unity上でBlendShapesの値を動かすと意図せずSmooth<->Flatシェードに切り替わる問題
Blender 2.82
Unity 2019.3
基本的にSmoothシェードで3Dモデルを作っていた。
同時に作ってた他のモデルは特に問題なかったのに、このモデルだけBlendShapeの値を動かすとFlatシェードになる奇妙な現象が発生。
すべてのShape Keyを削除してから作り直したりしたけど治らない。
そもそもシェーディングについて理解が曖昧だったので簡単に調べた。
シェーディングの「フラット」と「スムーズ」を設定する事は3Dモデルの頂点の法線方向を変える事
つまり、なぜかはわからないがUnityにインポートした際にShape Keyに3Dモデルの頂点の法線方向の変更が加わる何かが起こった?
解決策
抜本的にBlender側で治す方法は分からなかったけど、Unity側の設定でとりあえず解決する方法
FBXの設定のlegacy blend shape normalsにチェック入れると治るかも
— 火村ユウヤ (@Virtual_Himura) 2020年4月14日
Legacy Blend Shape Normalsにチェックを付けてApplyで治る。
あるいはBlend Shape NormalsをImportにすると治ると書かれた記事もあったが、私の場合はBlendShapeを動かした際に若干モデルに歪みが出たので前者で対応した。