VRMのブレンドシェイプで表情を変えられるが、目(瞳)の位置は変えられない。
何もしなければ正面を向いたままである。
作っているゲームの都合でどうしても目を特定方向に向かせたいのだけど、ブレンドシェイプじゃダメ。
じゃあ考え方を変えて、指定した物(位置)を見るようにすればいいのでは?
ググってみたら視点の指定はUniVRMに最初からある機能でした。
VRM Look At Headコンポーネントを使えばいいらしい。
・参考:VRMモデルの視線制御(目の可動範囲)の設定方法
https://qiita.com/OGOG_Ogura/items/46a1f82553c5f6501636
で、やってみたところ動きませんでした。
なので何となく対象のモデルのAnimator Controllerを外してみたら、視線が動くようになりました。
アニメーションに問題があるのかと思って、ヒューマノイドに適用する際の設定にある目のボーン指定を外してみたけど、それは関係無いらしい。(UniVRM以外のVRMモデルは知らないけど)
ググっても特に情報は無く、最終的にUniVRMのGitHubにバグとして投げてやろうかなとか考えていたところ、既にそういった質問は投げられていたらしい。
で、解決策も書かれていました。
・VRMLookAtHead and VRMLookAtBoneApplyer should prioritize over animator #612
(Google訳:VRMLookAtHead と VRMLookAtBoneApplyer はアニメーターよりも優先する必要があります)
https://github.com/vrm-c/UniVRM/issues/612
で、その中にこの投稿が。
「Animator overwrite all Transform between update and lateUpdate.Please try use lateUpdate.」
(Google訳:Animator は update と lateUpdate の間のすべての Transform を上書きします。lateUpdate を使用してみてください。)
というわけで、VRM Look At HeadのUpdate Typeを「Late Update」に変更したところ、Animator Controllerとかは関係なくちゃんと視線が動くようになりましたとさ。
これで半日潰れた。