Free Function Friday getMaskPaths
Welcome to Free Function Friday episode 37 getMaskPaths. This week’s function is designed to gather mask path data. You can pass a layer object to this function and it loops through the parent mask property group seeing if there are any mask paths. If at least one mask exists, the function then retrieves the path data for that mask. These definitions below are from the Adobe After Effects CS6 Scripting PDF. One thing to note too, is that the CS6 scripting guide is the most recent guide Adobe has put out. For each new After Effects release since CS6, there has been blog post updates noting the changes to ExtendScript. The information is a bit spread out at the moment, but all links can be located through the Adobe DEV page. ExtendScript allows access to read and right the following attributes of a mask path.
Shape object attributes
closed :When true, the shape is a closed curve.
vertices :The anchor points of the shape.
inTangents :The tangent vectors coming into the shape vertices.
outTangents :The tangent vectors coming out of the shape vertices.
featherSegLocs :The mask path segment (sections of a mask path between vertices) containing each feather point.
featherRelSegLocs :The relative position of each feather point on its mask path segment.
featherRadii :The feather amount (radius) for each feather point.
featherInterps :The feather radius interpolation type for each feather point.
featherTensions :The feather tension at each feather point.
featherTypes :The direction (inner or outer) of each feather point.
featherRelCornerAngles :The relative angle between the two normals on either side of a curved outer feather boundary at a corner on a mask path.
If you haven’t done so already there is a Free Function Friday introduction video located here that has some important information pointing to a few resources that will come in handy when scripting for After Effects.
Episode 37 getMaskPaths:
Legal note: The Adobe ExtendScript code talked about in this article and accompanying embedded video(s), and/or graphic images are not guaranteed to be compatible with every version of After Effects. David Torno, ProVideo Coalition, and Moviola will not be held liable for any misuse or incorrect use of the provided ExtendScript code. Use at your own risk.
All of the code I provide in this series, has been created and tested in After Effects CC 2014. Unless otherwise specified in the episode, the code should be compatible with After Effects CS6 through CC 2015. I’ve done my best to avoid depreciated code (code that Adobe removed at some point), and made these functions as compatible as possible. There will however be the occasional piece of code that is brand new as of a certain version of After Effects and therefore will not be backwards compatible from that version. I will mention these if that is the case.
With that said, all the code I provide in this series is open source and free to use in your scripts. I highly encourage you to expand and improve upon the code I provide and start making your own custom functions as well, but please do not repost the code I show in this series as is and claim it as your own. If you use any of the code provided in this series please give credit where credit is due. This series is meant to provide, what I feel is useful code, as well as to hopefully further explain ExtendScript and it’s quirks. While the functions we build throughout this series can perform a task all on their own, they are not meant to be a solo script. How you combine them together and expand upon them is when you will gain the most from these functions.