Thread View: adobe.after.effects.expressions
6 messages
6 total messages
Started by Navarro_Parker
Thu, 05 Feb 2009 23:12
Converting a point control to a slider
Author: Navarro_Parker
Date: Thu, 05 Feb 2009 23:12
Date: Thu, 05 Feb 2009 23:12
3 lines
869 bytes
869 bytes
Some old plug-ins like Linear Wipe have a simple percentage slider to control the amount of wipe. However, I'd like to align a linear wipe with a motion tracked point. How can I convert XY data into a 0~100% slider value? Would the expression assume the dimensions of the comp or the layer to ensure proper alignment?
Re: Converting a point control to a slider
Author: Aaron_Cobb
Date: Fri, 06 Feb 2009 05:22
Date: Fri, 06 Feb 2009 05:22
1 lines
670 bytes
670 bytes
Is the idea that the linear wipe should intersect the point at a given angle?
Re: Converting a point control to a slider
Author: Rick_Gerard
Date: Fri, 06 Feb 2009 05:40
Date: Fri, 06 Feb 2009 05:40
9 lines
1215 bytes
1215 bytes
I'm not exactly sure that I follow what you're trying to do. If you want to take the x position value and use that to vary a value between 0 and 100 you might try something like this:
x = transform.position[0];
p = linear(x, 0, thisComp.width, 0, 100);
p
What I've done is to take the x position value of the layer and use the linear interpolation method to interpret the total width of the comp to 100. You could also perform the task by using x position/width*100. This would return the X position as a percentage of the comp width but would not limit the value to 100%.
I hope this helps.
Re: Converting a point control to a slider
Author: Aaron_Cobb
Date: Fri, 06 Feb 2009 17:05
Date: Fri, 06 Feb 2009 17:05
30 lines
1730 bytes
1730 bytes
Here's what I've come up with:
L = thisComp.layer("Null 1");
controlPoint = fromComp(L.toComp(L.transform.anchorPoint)); //sub in target point here
theta = degreesToRadians(effect("Linear Wipe")("Wipe Angle")); //get angle
m = Math.tan(theta)*source.pixelAspect; //get slope of line defined by wipe
//get determinates for anchor line
if(m < 0) { a1 = [0, 0]; a2= [width, height] } else { a1 = [0, height]; a2 = [width, 0]; }
//get determinates for wipe line
b1 = controlPoint;
b2 = b1+[1/m, 1]
//define individual variables for (slightly better) readability
x1 = a1[0];
y1 = a1[1];
x2 = a2[0];
y2 = a2[1];
x3 = b1[0];
y3 = b1[1];
x4 = b2[0];
y4 = b2[1];
//get point of intersection (this was transcribed straight from <http://en.wikipedia.org/wiki/Line-line_intersection)>
P = [ ( (x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) , ( (x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) ]
linear(length(P, a1), 0, length(a1, a2), 0, 100) //now turn the point of intersection into a percentage
Re: Converting a point control to a slider
Author: Aaron_Cobb
Date: Fri, 06 Feb 2009 17:58
Date: Fri, 06 Feb 2009 17:58
45 lines
2030 bytes
2030 bytes
Okay, trying that again.
Here's what I've come up with:
L = thisComp.layer("Null 1");
controlPoint = fromComp(L.toComp(L.transform.anchorPoint)); //sub in target point here
theta = (effect("Linear Wipe")("Wipe Angle")+100000*360)%360; //get angle
m = Math.tan(degreesToRadians(theta))*source.pixelAspect; //get slope of line defined by wipe
//get determinates for anchor line
if(theta < 90) {
a1 = [0, height];
a2 = [width, 0];
} else if(theta < 180) { a1 = [0, 0];
a2= [width, height];
} else if(theta < 270){
a2 = [0, height];
a1 = [width, 0];
} else {
a2 = [0, 0];
a1= [width, height];
}
//get determinates for wipe line
b1 = controlPoint;
b2 = b1+[1/m, 1]
//define individual variables for (slightly better) readability
x1 = a1[0]; y1 = a1[1]; x2 = a2[0]; y2 = a2[1]; x3 = b1[0]; y3 = b1[1]; x4 = b2[0]; y4 = b2[1];
//get point of intersection (this was transcribed straight from <http://en.wikipedia.org/wiki/Line-line_intersection)>
P = [ ( (x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) , ( (x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4) ) / ( (x1-x2)*(y3-y4)-(y1-y2)*(x3-x4) ) ]
if(length(P, a2) < length(a2, a1)) linear(length(P, a1), 0, length(a1, a2), 0, 100) //now turn the point of intersection into a percentage else 0
Sub in your layer name for "Null 1", or make your own assignment to controlPoint.
Re: Converting a point control to a slider
Author: Navarro_Parker
Date: Tue, 10 Feb 2009 22:35
Date: Tue, 10 Feb 2009 22:35
1 lines
632 bytes
632 bytes
Whoa! Thanks man! I'll try it out!
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads