Here's a simple example that creates a null for each mask vertex. It assumes: The layer with the mask is the first layer in the active comp The number of mask vertices doesn't change The layer isn't parented, rotated, or 3D { 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
... View more