poi’s tech blog

3D多人数同時接続型球体アクション成人向けゲーム開発のためのアイデア、ナレッジ

Unity上でBlendShapesの値を動かすと意図せずSmooth<->Flatシェードに切り替わる問題

Blender 2.82
Unity 2019.3

基本的にSmoothシェードで3Dモデルを作っていた。

同時に作ってた他のモデルは特に問題なかったのに、このモデルだけBlendShapeの値を動かすとFlatシェードになる奇妙な現象が発生。

f:id:poipoipoip:20210212171405p:plain
作っただけで特にメッシュ変形等の設定はしてないShape Key

f:id:poipoipoip:20210212171152p:plain
←BlendShapesの値100 BlendShapesの値0→

f:id:poipoipoip:20210212172116p:plain
Blender上でShape Key動かしてもSmoothのまま

すべてのShape Keyを削除してから作り直したりしたけど治らない。

そもそもシェーディングについて理解が曖昧だったので簡単に調べた。

bluebirdofoz.hatenablog.com

シェーディングの「フラット」と「スムーズ」を設定する事は3Dモデルの頂点の法線方向を変える事

つまり、なぜかはわからないがUnityにインポートした際にShape Keyに3Dモデルの頂点の法線方向の変更が加わる何かが起こった?

解決策

抜本的にBlender側で治す方法は分からなかったけど、Unity側の設定でとりあえず解決する方法

Legacy Blend Shape Normalsにチェックを付けてApplyで治る。

あるいはBlend Shape NormalsをImportにすると治ると書かれた記事もあったが、私の場合はBlendShapeを動かした際に若干モデルに歪みが出たので前者で対応した。

f:id:poipoipoip:20210212172648p:plain
Legacy Blend Shape NormalsにチェックしてApply