Unityでアニメーション再生中、SkinnedMeshRendererのブレンドシェイプ値をスクリプトから変更できない

[no_toc]

環境

Unity2020.3.36f1
MotionBuilder 2020

問題

Unityでアニメーション再生中、SkinnedMeshRendererのブレンドシェイプ値をスクリプトから変更できない。厳密には変更できるが、変更した次のフレームで0など固定値に戻ってしまう。
※ 大前提として再生中のAnimationClipにブレンドシェイプ値を変化させるキーフレームが存在しないこととする。

原因

AnimatorにImport BlendShapesがONなAnimationClipが含まれている。
再生中のAnimationClipが問題なくても、一つでも含まれている場合同様の結果となる。

補足

Import BlendShapesの有無はMayaなどから出力されたFBXでは有効に機能した気がするが、他の環境では0値扱いされたりあまり有効に機能しない。(うろ覚え)
また、このキーフレームはUnity内で可視化されていないため、一見してブレンドシェイプキー指定がないにも関わらず、値が固定されてしまうなど、混乱につながった。

参考リンク

Animatorで全身のアニメーション再生しながらブレンドシェイプで表情だけ変えたい
Why is my Mechanim Animator overriding my BlendShapes?

同じ現象を取り扱った内容ですが、両方ともBlenderから出力した場合のお話です。
私の場合はMotionBuilder2020だったので、解決方法が少し違いました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です