# Constrain scale/rotation to two pivot points at vertices?

I'd like to position an object such that its top and bottom are at specific coordinates, but I'm not sure how to transform it to achieve that with the normal rotate/scale parameters.

Essentially, I'm considering having two pivot points that determine the rotation and scale of the object: the top and bottom vertices. (One rotation axis would remain unaffected, since it'd be like spinning it around, not affecting the position of the pivots)

I've already set the origin of my object two one of the pivot points, but I'd like some way of using Empties(?) to constrain the top vertex, without any stretching of the object. The top vertex would first point to the empty, and then the whole object would scale accordingly to match the vertex to the Empty, (or something like this).

Here's a crude animation I've done to show what I'd like to achieve:

• Maybe you'll be interested in my 2nd solution here: [Spiral between Points [GN]](blender.stackexchange.com/a/320159/60486) - even if you don't want geometry nodes, the logic is the same... Commented Jul 16 at 10:27

Essentially, I'm considering having two pivot points that determine the rotation and scale of the object: the top and bottom vertices.

Because of some (pretty arbitrary) limitations in Blender, this is more easily done with bone constraints than with object constraints, so we'll be using bones.

First, we're never really using the vertices of the objects to scale or rotate the object, because the local position of those never change-- in a way, that'd be a dependency loop, because the positions of those vertices depend on the scale and rotation of our object. So we'll start by marking the two points we want to track with empties. I said this is easier to do with bones, so we'll also create an armature object, just a single bone. Doesn't really matter where we make that bone or armature, but the world origin is convenient. Shown with a default cube:

Now we'll set up the bone. It will copy location of one of the bones, then use an IK constraint targeting the second empty. We'll leave stretch enabled and we'll make sure to set stretch to 1.0 on the bone's IK settings.

Finally, we can parent the mesh object to the bone, on "bone relative" mode. We can then move either of the empties, and the cube will scale and rotate to maintain the orientation between those empties. Rotation along the axis between the empties will be unconstrained, and we can set that by rotating the bone. (Here, because my mesh cube doesn't have an origin aligned with the bone. If you'd rather rotate the mesh object rather than the bone, you could set up its origin and axes appropriately and then be able to do that instead.)

Monkey for scale.

The reason we're using bones to do this is because object constraints do not support IK. IK with stretch gives the kind of scaling that I believe you're after, scaling uniformly in all dimensions. An alternative way to scale, available to objects, is a stretch-to constraint, but this only scales in a single axis (or else, scales inversely in other axes.)

There are other ways we could do this without bones. We could use a stretch-to and create drivers to counteract the way a scale works, for example. But doing it with the assistance of a single bone is, IMO, the simplest and easiest way.

• @TheRedstoneShark You need to enable stretching on properties/bone. Look at my second picture: there are two properties viewports displayed. That "IK Stretch" at 1.0 is essential. Commented Jul 18 at 13:23