BlendShapeで変形させたらシェーディングがおかしくなる(法線が狂う?

トラブルシューティング

Unity2019.4.3 HDRP 7.4.1 blender2.8.3

眉毛を動かしてみたら、頬になぞの陰が…急にいかつくなりましたね…

追記:blender2.9.3以降ならblendshape normalをfbx出力できる?

まだ真面目に検証してないですが、calculateでなくimportにした場合

期待通りの絵になりました

もしかしたら古いバージョンでも出力できたのでしょうか?

スポンサーリンク

原因

Blend Shapes Changing Vertex Normals
Unless I'm misunderstanding, the new blend shape normal calculation options don't have a way to retain the mesh's base normals. This is particularly...

Fbxのblendshapeが法線情報を持っていない場合、Unityはインポート時にblendshapeごとに法線の自動計算します。それが意図しない陰の原因です。(厳密にはBlendShapeNormalsの値ごとにFbxSDKによる再計算か、Unityによる再計算になります。詳細はdoc見てください

Blender fbx does not export normals correctly for blendshapes
**System Information** Win7 x64 **Blender Version** Broken: 2.75 Worked: (optional) **Short description of error** When exporting a model that has blendshapes...

そして、どうやらblenderはfbxに法線情報を持たせていないみたいです(5年前のissueを先月tonがLongTermタスクに移動してます…

対策

BlendShapeNormalsNoneにすることで自動計算を停止し、元の形状の法線をそのまま使います。

当然、変形後の形状によっては法線が不自然になることはあるので理想的対策ではありません。今回はアニメ系のキャラで、法線がほとんど変わらないのでこの方法でうまくいきました。

Unity - Manual: Model tab

Blenderの場合は自動計算に頼るしかないですが、色々調整して最適パラメータを見つけるしかないですね…