stevesketch
11/4/2016 - 7:25 AM

#AE_Mask

{
    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;
    }
}
{
myLayer = app.project.activeItem.selectedLayers[0]; // top active layer
ratio = .5523;
h = myLayer.width/2;
v = myLayer.height/2;
th = h*ratio;
tv = v*ratio;
newMask = myLayer.Masks.addProperty("ADBE Mask Atom");
newMask.maskMode = MaskMode.ADD;
myProperty = newMask.property("ADBE Mask Shape");
myShape = myProperty.value;
myShape.vertices = [[h,0],[0,v],[h,2*v],[2*h,v]];
myShape.inTangents = [[th,0],[0,-tv],[-th,0],[0,tv]];
myShape.outTangents = [[-th,0],[0,tv],[th,0],[0,-tv]];
myShape.closed = true;
myProperty.setValue(myShape);
}