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.
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[i] = 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[i].property("Position").setValueAtTime(t,p + myVerts[i]);
}
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
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?
North America
Europe, Middle East and Africa
Asia Pacific