Copy link to clipboard
Copied
hello,
I believe there is a way to extract XY positions of vertices on animated maskShape. I would love to use this extracted data to drive XY positions on several Null objects in another layers. So every Null object is related to different vertex on maskShape. I found an older Rotoscopy script that work in sort of opposite way I need. Is there anything like that out there? Is it even possible to create?
Thanks for your help.
Jr.
Copy link to clipboard
Copied
Here's a simple example that creates a null for each mask vertex. It assumes:
{
var myComp = app.project.activeItem;
var myLayer = myComp.layer(1);
var myPath = myLayer.property("Masks").property("Mask 1").property("Mask Path");
var numVerts = myPath.valueAtTime(myLayer.inPoint,false).vertices.length;
var myNulls = [];
var myNull;
var myVerts = [];
// create nulls
for (var i = 0; i < numVerts; i++){
myNull = myComp.layers.addNull(myComp.duration);
myNull.name = "Vertex " + (i+1);
myNulls = myNull;
}
var t = myLayer.inPoint;
var p;
while (t <= myLayer.outPoint){
myVerts = myPath.valueAtTime(t,false).vertices;
p = myLayer.property("Position").valueAtTime(t,false) -
myLayer.property("Anchor Point").valueAtTime(t,false);
for (var i = 0; i < numVerts; i++){
myNulls.property("Position").setValueAtTime(t,p + myVerts);
}
t += myComp.frameDuration;
}
}
It gets a bit more complicated if you're dealing with parenting, rotation and/or 3D. You may need to temporarily add a Point Control with a layer space transform expression to do the space conversion and harvest the result.
Dan
Copy link to clipboard
Copied
hey Dan,
Thanks for the example. I found a solution via TrackerViz 3.1 plugin, however your simple script did a better job somehow. No skipped frames. Thanks again!
Jr.
Copy link to clipboard
Copied
Having done this, what's the best way to then make a shape with those nulls via a bezier path between them and then be animating the nodes to "draw" the changes to the shape? Is this possible? And this manner are we then able to "draw by numbers" in that the nulls have full coordinate controllability?
Copy link to clipboard
Copied
Hey Dan. I just wanted to say "thanks"! You're expressions and scripts continue to help me out when I get in a jam.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now