Page 1 of 1

adaptive rotation based on a point

Posted: March 29th, 2008, 4:08 pm
by mihak
Hello!

I'm just working on a little project. I have an object that has animated position, and i wanted it to aim at the certain point. So here is a short amateurish expression i wrote:

Code: Select all

x1 = content("Shape 1").transform.position[0];
y1 = content("Shape 1").transform.position[1];
x2 = -120;
y2 = 130;
value + [radiansToDegrees(Math.atan2(y1-y2, x1-x2))]
x1 and y1 is the object position (i was working with a shape, but you could pickwhip anything), while x2 and y2 are the target point coordinates. And i love that the after effects has built-in protection against division by 0 :P

All suggestions or fixes are welcome.

Re: adaptive rotation based on a point

Posted: April 3rd, 2008, 4:34 am
by curiousturtle
Just a small tweak that I use:

Code: Select all

fromPoint=transform.position;
atPoint=thisComp.layer("Shape Layer 1").transform.position;
delta=sub(fromPoint,atPoint);
angle=Math.atan2(delta[1],delta[0]);
value+radiansToDegrees(angle)
It makes it easier just to select and pickwhip new points. The fromPoint is of course your source layer and the atPoint is where you want it to point.

I think I've seen an even easier way to do this, but I'll be blowed if I can remember it.

Cheers,
Ben

Re: adaptive rotation based on a point

Posted: May 23rd, 2008, 7:35 am
by SpotPost
Ben I think you mean this:

Code: Select all

lookAt(position,thisComp.layer("Target_Layer").transform.position)
Pop that into the 'Orientation' of a layer, and it will keep rotating to face the target layer. It stays aligned along the Z axis, so you may want to rotate the layer by 90 degrees on Y.

Yan Masterson
Spot Post Ltd.
London.