In addition to the base bone transformation itself, B-Bones have
controls that affect transformation of its segments. For rotation
the features are quite complete, allowing to both reorient the
Bezier handles via properties, and to control them using custom
handle bones. However for scaling there are two deficiencies.
First, there are only X and Y scale factors (actually X and Z),
while lengthwise all segments have the same scaling. The ease
option merely affects the shape of the curve, and does not cause
actual scaling.
Second, scaling can only be controlled via properties, thus
requiring up to 6 drivers per joint between B-Bones to transfer
scaling factors from the handle bone. This is very inefficient.
This patch addresses these deficiencies by adding length scale
inputs, and providing toggles to apply custom handle local scale
channels to the now four scale-related properties.
The two length scale inputs control the ratio between the lengths
of the start and end segments of the bone: although for convenience
two inputs are provided, the whole chain is still uniformly scaled
to fit the curve.
To accommodate the third scale value, the scale channels are
converted from two scalars into a vector. The old Y becomes Z;
the Curve In/Out properties are also renamed to match. Old
files are properly versioned, including animation & drivers.
A Scale Easing option is provided to multiply the easing value
by the Y scale factors to synchronize them - this produces a
natural scaling effect where both the shape of the curve and
the scale is affected.
The second issue is addressed by providing toggles for each handle
that multiply each of the X, Y, Z and Ease values by the matching
Local Scale channel of the handle bone, thus replacing trivial drivers.
The Scale Easing option has no effect on this process since it's easy
to just enable both Length and Ease buttons.
UI screenshot:
UPDATE: "Unscaled Segments" removed.

