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

トラブルシューティング

Unity2019.4.3 HDRP 7.4.1 blender2.8.3

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

スポンサーリンク

原因

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見てください

⚓ T46019 Blender fbx does not export normals correctly for blendshapes

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

対策

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

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

Unity - Manual: Model tab

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