modular-avatar
modular-avatar copied to clipboard
AnimationClipで親側を参照するパス("..")を解決したい
出来たら便利なユースケース
1. 衣装prefabの下にメニューを置いて、それぞれのオブジェクトにMerge Animatorをつけて衣装を制御したい
以下のような構造です(AvatarMenuCreaterForMAでメニューprefabを作ると実際下記のようにメニュー個別にprefabになる)
- 衣装
- Armature.1
- Ribbon
- Hoodie
- Menu
- リボン
- Menu Installer
- Parameters
- Merge Animator (../../Ribbonを参照)
- フード
- Menu Installer
- Parameters
- Merge Animator (../../Hoodieを参照)
- リボン
2. 衣装prefabからアバターのBlendShapeなどを制御したい
別AnimatorControllerをつけて絶対パスでやる方法がすでに存在するので、メリットとしてはAnimatorControllerを1つにまとめられるくらい
- アバター
- Armature
- Body
- Skin
- BlendShape: Shrink_Socks
- 衣装
- Merge Animator (../Skin Shrink_Socks を参照)
想定される懸念
- UnityのAnimatorでは動かない(過去にAnimationだと動いていたらしい?)
- Animator Override Controllerを動くようにしたりなど非対応機能への追加対応の一種と言えるかも知れない?
- 2のユースケースで親に侵食すると挙動が分かりづらくなる
- 現状も絶対パスで出来るのでたいしてかわらん説
PRにも書いてみましたけど、ここはSymlink的な思想を検討しています。Animator配下のオブジェクトにSymlinkコンポーネントを入れることで、それを指定したアニメーションの対象先をランタイムではSymlinkに変えるものとする。また、Symlink自体の指定では、..のような指定ができるようにします。
これによりアニメーターUIが使えないなどの問題も回避できるかと思います。