I discovered Sub Anim Instances today, and they seem like a good way to separate related/reusable parts of anim blueprints (considering that functions are unavailable). However, this has added 2 component-to-local and 2 local-to-component conversions to the graph where these would otherwise be unnecessary, so I was wondering: what is best practice regarding use of Sub Anim Instances? Were they created with a specific use case in mind?
I am not sure I understood you about local to component conversions, but the more I experiment with sub anim instances the less I like them. There are not so many complaints on them here on the answerhub, but most are simple, annoying bugs. For example, reset child on activate flag in blend nodes fails to reach a sub anim instance content and reset it properly. All this means that the technique is still unpolished, maybe even unable to fit perfectly into the engine architecture, though its former absence was shame as well.
What is more concerning is that sub anim instances are not merged into one object, instead multiple objects of UAnimInstance class (or subclass) are constructed, initialized and updated every frame. Moreover, If your UAnimInstance subclass uses heavy algorithms to update data, these routines are duplicated in all sub anim instances based on the same class, be they 2, 3, or 20. Maybe this is by design so that you could make completely different classes for different stages of animation, but all in all it seams unefficient.
So, I would be very careful in using them for aesthetic purposes (e.g. for visual simpicity, where comment bars and cached poses seem more elaborated, or when you can’t help making dozens of tiny patches for the sake of an abstract harmony)