1
$\begingroup$

I want to be able to have a bone locked to a particular slope vector and use another bone to control its length. The image below shows the armature and two bones. The Target Horz bone can be moved on the world X-Axis. The Slope bone's tip should extend/retract to Target Horz's position while holding it's vector orientation.

Blend file here: Fixed Slope Bone

Thanks!

Locked Slope Bone

$\endgroup$

2 Answers 2

1
$\begingroup$

You could use a transformation constraint. Where a copy transform constraint always connects the same axis between bones at a fixed ratio, the transformation constraint allows you to mix axes and ratios.

In this example, I have set the X location of the target bone to control the Y scale of the slope bone.

The mapping in the middle is set to have the X axis affect the destinations Y axis.

The minimum location of 1.0 will map to the minimum scale of 0.5 and the maximum location of 4.0 will map to the scale of 2.0. I chose these amounts visually to keep the alignment of the bone over the distance.

transformation constraint settings

That gives the following result, note that enabling the extrapolate option will extend the result past the given limits.

sample result

Also note that constraints are really just a visual way of configuring a premade list of drivers, you can configure your own drivers to get more control if you wanted to.

$\endgroup$
1
  • $\begingroup$ While the above solution works, it is limited to a specific pre-determined slope. I need a solution that will keep the Slope bone oriented at it's original vector, regardless of what it is. $\endgroup$
    – D. Waschow
    Commented Sep 27, 2017 at 22:33
0
$\begingroup$

This may have been difficult at the time it was asked, due to dependency issues, but in modern versions of Blender (2.91.0+) it's easy to do with a shrinkwrap constraint and a non-rendering plane.

enter image description here

The plane, shown in wire here, is parented bone-relative to slope. ShrinkwrapProject, a child of TargetHorz, acquires the position of this plane via a shrinkwrap constraint on Project mode, with Project Opposite enabled. Deform, a child of Slope here (but of whatever you want, really) then acquires its scale via a stretch-to constraint targeting ShrinkwrapProject.

If ShrinkwrapProject cannot project onto the actual plane mesh, it won't project, so ideally, the plane should be scaled up very, very large. There's nothing wrong with scaling it up a billion times.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .