How to scale a bone without affecting it's children?

Because it’s kinda like asking “is there a way to make 1+1 be something other than 2?”

The way to scale only the geometry that’s affected by a particular bone, without affecting children of that bone, is one of three ways:

  1. You could build a morph target (blend target) that does the inflation/scaling, instead of a bone. This affects particular vertices, in the space of the bind pose.
  2. You could counter-scall each child with the scale of 1/scale, when you scale the bone by scale. This is most applicable when you can’t improve the source asset.
  3. You can create a new bone that’s a child of the bone you want to scale, but that no other bone is a child of. Make this child bone have an identity position/rotation/scale, so it’s essentially a “copy” of the parent bone. For all vertices currently bound to the parent bone, bind them to this child bone instead. When you scale this child bone, only its contribution to vertices will be affected, not any other child of that parent.

Now, it may be that in particular cases, you can finesse it. For example, when you calculate the pose, each output bone matrix can be separate affected AFTER all the children are computed. This doesn’t “scale the bone,” as much as it “scales a particular application of the bone.” Sometimes, that’s good enough. But, also, beware that the effect may be applied in a different coordinate space, so if the scale is not uniform, it may not look the same.