Maya/Runtime: Scale vs. translation limb stretch



In your experience, what are the pro’s and cons of using translation vs. non uniform scaling for limb stretch in Maya?

When I last did a lot of Maya rigging, I always went translation based and used extra bones to even out the stretch (doubles as twist bones). Volume was either a front of chain deformer or those same twist bones doing some scale as well. This is arguably a lot of extra bones to skin and complexity to manage and maybe not everyone’s cup of tea.



Major advantage of using translate is that you don’t have to rely on scale compensation for any child bones. Especially when a lot of other applications don’t support it.


The other thing is that on the engine side any math that operates in local space will have to be bulletproofed against non-uniform scales. For example if you are trying to grab basis vectors from a bone’s transform to create constraint at runtime the code will need to know if the bone matrix is non-uniform – otherwise you can get shearing or inaccurate aim calculations. It’s doable, it’s just extra work throughout the chain of transformations. It’s not an easy thing to add to an existing system, though you can build it in if you are starting from scratch.