# Supporting uniform/non-uniform scale in hierarchical animation

I have worked with hierarchical blended animation systems for a number of years, but I have never been quite sure how to handle scale correctly. The introduction of non-uniform scale is additionally puzzling. Does anyone have any insight into the right way of doing it? What I am trying to determine is when in the hierarchical concatenation that scale is included. My components are stored as a follows:

vector3 position;
vector3 scale;
quaternion rotation;
quaternion stretch_rotation;


What I am finding is if I include scale into the matrix during concatenation, I run the risk of grossly amplifying the accumulated errors down the hierarchy. Does anyone have any insight or articles here? To be clear - I know how to do hierarchical animation just not the right way to handle scale.

Maybe, in running through the hierarchy, you could multiply scalar scales for each separate axis, to get the distinct world-space scale for each separate axis. Unity's Transform calls this(?) lossyScale, and presumably because it is generated by multiplying the individual axes' scale all the way up the hierarchy, as I recommend, it is a readonly member. One can change the local scale at each level up the tree, individually. The brief doc for their implementation may be informative.